1. Trang chủ
  2. » Biểu Mẫu - Văn Bản

Sử dụng học máy xác định File AFK chứ Malware

18 0 0
Tài liệu đã được kiểm tra trùng lặp

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Nội dung

Trang 1

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG

KHOA CÔNG NGHỆ THÔNG TIN 1

Nguyễn Hữu Tài MSV: B21DCAT1 69

Bùi Duy Thanh MSV: B21DCAT0 19

Hà Nội – 2024

Trang 2

I Cơ sở lý thuyết

1 Tại sao phân tích File APK có thể phát hiện mã độc

Phân tích file APK có thể phát hiện mã độc bằng cách sử dụng các kỹ thuật phân tích tĩnh và động để kiểm tra các thành phần của ứng dụng và hoạt động của nó Dưới đây là một số lý do giải thích tại sao phân tích file APK có thể phát hiện mã độc:

Phân tích tĩnh (Static analysis): Trong phân tích tĩnh, các thành phần của file

APK được kiểm tra mà không cần chạy ứng dụng Các kỹ thuật phân tích tĩnh tạo ra một cái nhìn tổng quan về cấu trúc, tệp tin, mã nguồn và tài nguyên của ứng dụng Các đặc điểm không bình thường, chẳng hạn như mã độc hoặc các khả năng đe dọa khác, có thể được phát hiện thông qua phân tích tĩnh

Phân tích động (Dynamic analysis): Trong phân tích động, ứng dụng được

chạy trong một môi trường kiểm tra được tạo ra bởi công cụ phân tích Các sự kiện và hoạt động của ứng dụng, chẳng hạn như lời gọi hệ thống, truy cập mạng, và tương tác người dùng, được theo dõi và phân tích Các hành vi đáng ngờ, chẳng hạn như gửi dữ liệu nhạy cảm đến máy chủ từ xa hoặc thay đổi hệ thống mà không có lý do, có thể tiết lộ sự tồn tại của mã độc

2 Công cụ Androguard

Androguard là một công cụ phân tích mã nguồn mở dành cho ứng dụng di động Android Nó được thiết kế để cung cấp các tính năng phân tích mạnh mẽ để hiểu rõ cấu trúc và hành vi của các ứng dụng Android Dưới đây là một số tính năng chính của Androguard:

Phân tích tệp APK: Androguard cho phép phân tích các tệp APK của ứng dụng

Android Nó có thể giải nén và trích xuất nội dung từ các tệp APK để kiểm tra các thành phần như mã nguồn, tài nguyên, và tệp manifest

Phân tích mã nguồn: Công cụ này cung cấp khả năng phân tích mã nguồn

Dalvik và Smali Điều này cho phép người dùng xem mã bytecode và mã nguồn Smali của các ứng dụng Android

Đồ thị luồng điều khiển (Control Flow Graph - CFG): Androguard có thể tạo

ra các đồ thị luồng điều khiển từ mã nguồn hoặc bytecode Điều này giúp hiểu cấu trúc của ứng dụng và cách các phần khác nhau tương tác với nhau

Phân tích bảo mật: Công cụ này cung cấp các tính năng để phát hiện các yếu

điểm bảo mật trong ứng dụng Android Điều này bao gồm việc tìm kiếm lỗ hổng bảo mật, xác định các quyền hạn và khả năng tương tác với hệ thống, và kiểm tra việc sử dụng các thư viện bên thứ ba

Tích hợp với Python: Androguard được triển khai hoàn toàn bằng Python, cho

phép người dùng tích hợp nó vào các quy trình phân tích tự động hoặc các dự án Python khác

Trang 3

Hỗ trợ cho việc phát triển công cụ tùy chỉnh: Ngoài việc là một công cụ phân

tích độc lập, Androguard cũng cung cấp các thư viện và giao diện lập trình ứng dụng (API) cho phép người dùng xây dựng các công cụ phân tích tùy chỉnh dựa trên nền tảng của nó

Androguard là một công cụ quan trọng trong lĩnh vực phân tích malware, nghiên cứu bảo mật ứng dụng di động, và phát triển các giải pháp bảo mật cho hệ điều hành Android Đối với những người làm việc trong lĩnh vực này, Androguard là một công cụ không thể thiếu để hiểu rõ hơn về cấu trúc và tính năng của các ứng dụng Android

3 Doc2Vec

Doc2Vec là một cách tiếp cận dựa trên mạng thần kinh để tìm hiểu cách biểu diễn phân tán của các tài liệu Đây là một kỹ thuật học không giám sát, ánh xạ từng tài liệu tới một vectơ có độ dài cố định trong không gian nhiều chiều Các vectơ được học theo cách các tài liệu tương tự được ánh xạ tới các điểm lân cận trong không gian vectơ Điều này cho phép chúng tôi so sánh các tài liệu dựa trên biểu diễn vectơ của chúng và thực hiện các tác vụ như phân loại tài liệu, phân cụm phân tích và độ tương tự

Có hai biến thể chính của phương pháp Doc2Vec: • Distributed Memory (DM)

• Distributed Bag of Words (DBOW) Distributed Memory (DM)

Bộ nhớ phân tán là một biến thể của mô hình Doc2Vec, là phần mở rộng của mô hình Word2Vec phổ biến Ý tưởng cơ bản đằng sau Bộ nhớ phân tán là tìm hiểu cách biểu diễn vectơ có độ dài cố định cho từng phần dữ liệu văn bản (chẳng hạn như câu, đoạn văn hoặc tài liệu) bằng cách tính đến ngữ cảnh mà nó xuất hiện

Kiến trúc DM

Trong kiến trúc DM, mạng nơ-ron có hai loại đầu vào: từ ngữ cảnh và ID tài liệu duy nhất Các từ ngữ cảnh được sử dụng để dự đoán từ mục tiêu và ID tài liệu

Trang 4

được sử dụng để nắm bắt ý nghĩa tổng thể của tài liệu Mạng có hai thành phần chính: lớp chiếu và lớp đầu ra

Lớp chiếu chịu trách nhiệm tạo ra các vectơ từ và vectơ tài liệu Đối với mỗi từ trong chuỗi đầu vào, một vectơ từ duy nhất được tạo và đối với mỗi tài liệu, một vectơ tài liệu duy nhất được tạo Các vectơ này được học thông qua quá trình huấn luyện bằng cách tối ưu hóa hàm mất mát nhằm giảm thiểu sự khác biệt giữa từ được dự đoán và từ mục tiêu thực tế Mạng nơ ron đầu ra lấy biểu diễn phân tán của ngữ cảnh và dự đoán từ đích

Distributed Bag Words (DBOW) of

DBOW là phiên bản đơn giản hơn của thuật toán Doc2Vec, tập trung vào việc tìm hiểu cách phân bổ các từ trong văn bản chứ không phải là ý nghĩa của chúng Kiến trúc này được ưu tiên khi mục tiêu là phân tích cấu trúc của văn bản hơn là nội dung của nó

Kiến trúc DBOW

Trong kiến trúc DBOW, một biểu diễn vectơ duy nhất được gán cho mỗi tài liệu trong kho văn bản, nhưng không có vectơ từ riêng biệt Thay vào đó, thuật toán lấy một tài liệu và học cách dự đoán xác suất của mỗi từ trong tài liệu chỉ dựa vào vectơ tài liệu

Mô hình không tính đến thứ tự của các từ trong tài liệu, coi tài liệu như một tập hợp hoặc “túi” từ Điều này làm cho kiến trúc DBOW được đào tạo nhanh hơn DM nhưng có khả năng kém hiệu quả hơn trong việc nắm bắt ý nghĩa của tài liệu

4 GCN – Graph Convolutional Network

Theo thường lệ, mạng lưới thần kinh được thiết kế cho các đồ thị có kích thước cố định Ví dụ: chúng ta có thể coi hình ảnh là biểu đồ lưới hoặc một đoạn văn bản dưới dạng biểu đồ đường Tuy nhiên, hầu hết các đồ thị trong thế giới thực đều có kích thước tùy ý và cấu trúc tôpô phức tạp Vì vậy, chúng ta cần định nghĩa đồ thị tính toán của GCN một cách khác nhau

Trang 5

Triển khai GCN:

+ Cho một đồ thị 𝐺 = ( , , ), 𝑉 𝐴 𝑋 trong đó:

▪ 𝑉 là tập đỉnh của đồ thị ▪ 𝐴 là ma trận kề của đồ thị

▪ 𝑋∈𝑅𝑚×|𝑉| là ma trận đặc trưng của đồ thị Đồ thị tính toán và tích chập tổng quát:

V i mớ ột đồ thị mẫu ở trên là M𝐺 ục tiêu chính là xác định đồ thị tính toán của GCN trên 𝐺 Đồ thị tính toán ph i gi nguyên c u trúc cả ữ ấ ủa 𝐺 và k t hế ợp các tính năng lân c n c a các nút cùng m t lúc Ví dậ ủ ộ ụ: vectơ nhúng của nút bao g𝐴 ồm các đỉnh lân cận c a nó là {ủ 𝐵, 𝐶, 𝐷} và không ph thu c vào th t c a {ụ ộ ứ ự ủ 𝐵, , 𝐶 𝐷} Một cách để làm điều này là chỉ c n lầ ấy trung bình các đặc điểm của {𝐵, , 𝐶 𝐷} Nói chung, việc t ng ổhợp cần ph i là b t biả ấ ến theo thứ t (theo tự ối đa hoặc trung bình, v.v.) Đồ thị tính toán trên 𝐺 với hai lớp sẽ trông như sau:

Theo hình trên, mỗi nút xác định m t biộ ểu đồ tính toán d a trên các nút lân cự ận của nó Đặc biệt, biểu đồ tính toán cho nút có th𝐴 ể được xem như sau (Lớp 0 là lớp đầu vào gồm các đặc trưng của các đỉnh là 𝑋𝑖):

Việc tính toán các nút trên đồ thị theo từng lớp có thể được tính như sau:

Trang 6

Tại lớp 0 (lớp đầu vào): ℎ𝑣= 𝑥𝑣 Đây là trưng của các đỉnh ban đầu Tại lớp thứ k: ℎ𝑣= 𝜎 𝑊( 𝑘∑ ℎ|𝑁(𝑣)|𝑢𝑘−1

𝑢∈𝑁(𝑣) + 𝐵𝑘ℎ𝑣𝑘−1) , ∀𝑘 ∈ 1, …, 𝐾{ } + Với ℎ𝑣𝑘−1 là nhúng của đỉnh 𝑣 từ lớp trước

+ |𝑁(𝑣)| là s nh lân c n cố đỉ ậ ủa đỉnh 𝑣+ ∑ ℎ𝑢𝑘−1

Vì Random Forest được tạo thành từ nhiều cây quyết định, nên có thể hữu ích nếu bắt đầu bằng cách mô tả thuật toán cây quyết định một cách ngắn gọn Cây quyết định bắt đầu với một câu hỏi cơ bản, như "Tôi có nên lướt sóng không?" Từ đó, bạn có thể đặt một loạt các câu hỏi để xác định một câu trả lời, chẳng hạn như "Đó có phải là sóng dài hạn không?" hoặc "Gió có thổi từ phía biển vào không?" Những câu hỏi này tạo thành các nút quyết định trong cây, hoạt động như một cách để chia nhỏ dữ liệu Mỗi câu hỏi giúp một cá nhân đạt được một quyết định cuối cùng, được đề cập bởi nút lá Các quan sát phù hợp với tiêu chí sẽ đi theo nhánh "Có" và những cái không phù hợp sẽ đi theo con đường thay thế Cây quyết định cố gắng tìm ra phân chia tốt nhất để chia nhỏ dữ liệu, và chúng thường được huấn luyện thông qua thuật toán Classification and Regression Tree (CART) Các chỉ số, như độ không thuần khiết của Gini, Information Gain hoặc sai số bình phương trung bình (MSE), có thể được sử dụng để đánh giá chất lượng của phân chia

Cây quyết định này là một ví dụ về một vấn đề phân loại, trong đó các nhãn lớp là "lướt sóng" và "không lướt sóng"

Mặc dù cây quyết định là các thuật toán học có giám sát phổ biến, nhưng chúng có thể dễ bị thiên vị và overfitting Tuy nhiên, khi nhiều cây quyết định hình thành một tập hợp trong thuật toán Random Forest, chúng dự đoán kết quả chính xác hơn, đặc biệt là khi các cây con không tương quan với nhau

Thuật toán Random Forest là một phần mở rộng của phương pháp bagging vì nó sử dụng cả bagging và tính ngẫu nhiên của đặc điểm để tạo ra một rừng cây quyết định không tương quan Feature randomness hay gọi là tính ngẫu nhiên của đặc điểm, còn được biết đến với tên gọi feature bagging, tạo ra một tập con ngẫu nhiên của các đặc

Trang 7

điểm, đảm bảo sự tương quan thấp giữa các cây quyết định Điều này là một điểm khác biệt quan trọng giữa các cây quyết định và Random Forest Trong khi các cây quyết định xem xét tất cả các phân chia đặc điểm có thể có, Random Forest chỉ chọn một tập hợp con của các đặc điểm đó

Nếu chúng ta quay lại ví dụ "tôi có nên lướt sóng không Bằng cách tính toán ?”tất cả sự biến thiên tiềm năng trong dữ liệu, chúng ta có thể giảm thiểu rủi ro dự đoán , chính xác hơn

Thuật toán Random Forest có ba tham số chính cần được thiết lập trước khi huấn luyện Đó là kích thước nút, số cây, và số tính năng được lấy mẫu Từ đó, bộ phân loại Random Forest có thể được sử dụng để giải quyết các vấn đề hồi quy hoặc phân loại

Thuật toán Random Forest được tạo thành từ một tập hợp các cây quyết định, và mỗi cây trong tập hợp này bao gồm một mẫu dữ liệu được lấy từ một tập huấn luyện với việc thay thế, gọi là mẫu bootstrap Trong tập huấn luyện đó, một phần ba của nó được dành làm dữ liệu kiểm tra Sau đó, mô hình sẽ lấy ngẫu nhiên và sắp xếp ngẫu nhiên các tập mẫu các tính năng, tạo ra sự đa dạng hóa trong tập dữ liệu và giảm sự tương quan giữa các cây quyết định Tùy thuộc vào loại vấn đề, cách xác định dự đoán sẽ thay đổi

Lợi ích chính:

Giảm nguy cơ overfitting: Với sự đa dạng của các cây quyết định trong Random

Forest, nguy cơ overfitting được giảm bớt do việc trung bình hóa các cây không tương quan

Trang 8

Tính linh hoạt: Random Forest có thể xử lý cả hai nhiệm vụ hồi quy và phân

loại một cách chính xác, cùng với khả năng ước lượng giá trị bị thiếu trong dữ liệu

Dễ dàng xác định tính quan trọng của tính năng: Các phương pháp như Gini

importance và permutation importance giúp xác định mức độ quan trọng của các tính năng trong mô hình

Thách thức chính:

Quá trình tốn thời gian: Xử lý dữ liệu cho mỗi cây quyết định trong Random

Forest có thể mất thời gian, đặc biệt là với các tập dữ liệu lớn

Yêu cầu nhiều tài nguyên: Do xử lý tập dữ liệu lớn, Random Forest cần nhiều tài nguyên hơn để lưu trữ và tính toán

Phức tạp hơn: So với việc dự đoán của một cây quyết định đơn lẻ, việc hiểu và

giải thích dự đoán của một rừng cây có thể phức tạp hơn

II Xây dựng Model 1 Giới thiệu về tập dữ liệu

Tập dữ liệu được sử dụng trong dự án này là một bộ sưu tập các tệp Android Package (APK) được lấy từ Androzoo Androzoo là một kho lưu trữ lớn chứa hàng triệu ứng dụng Android thu thập từ nhiều nguồn khác nhau trên internet Tập dữ liệu này cung cấp một đa dạng các ứng dụng từ nhiều nguồn và thể loại khác nhau, bao gồm cả các ứng dụng chính thống từ Google Play Store và các ứng dụng từ các nguồn không đáng tin cậy

Tập dữ liệu được chia thành 2 phần bao gồm: ile APK chứa Malware và f file APK sạch sẽ

Ở cuối mỗi file, ta cần phân loại sẵn các file bằng cách điền loại file vào cuối tên mỗi file Ví dụ:

2 Tiền xử lý dữ liệu

2.1 Dịch ngược File APK sang đồ thị FCG sử dụng Androguard

Phần này của dự án tập trung vào việc sử dụng Androguard để thực hiện dịch ngược (reverse engineering) các tệp APK thành các đồ thị luồng điều khiển (Function Call Graph - FCG) Điều này giúp hiểu cấu trúc và logic của ứng dụng Android bằng cách biểu diễn các luồng điều khiển của chương trình dưới dạng đồ thị

Trang 9

Đầu tiên, Phân tích APK File bằng hàm AnalyzeAPK():

Hàm trả về dx là Analysis object nên nó có phương thức get_call_graph():

Hàm sẽ tạo ra đồ thị có hướng, loại đồ thị là networkx.MultiDiGraph Networkx.MultiDiGraph có tính chất như là nếu 2 hàm call nhau nhiều lần thì sẽ có nhiều cạnh chứ k phải 1 cạnh Mỗi Node của đồ thị là meta information, ở đây ta phân loại các phương thức ExternalMethod Sử dụng thư viện matplotlib để vẽ đồ thị :

Ta được đồ thị:

2.2 Dùng Doc2Vec để nhúng từng hàm thành vector a Xây dựng model Doc2vec

Thông qua công cụ Androguard, ta có thể dịch ngược file APK sang đồ thị FCG với các đỉnh là các hàm của file APK và các cạnh là các lời gọi hàm Các đỉnh của đồ thị FCG được chia ra làm 2 loại External Method và Internal Method Bằng việc sử dụng Doc2vec, ta xây dựng 2 model tương ứng 2 loại trên để nhúng các hàm thành vector

External Method:

Bước 1: Chuẩn bị dữ liệu: Dữ liệu là chuỗi các api của android, mỗi api được gán nhãn và được tách thành các từ đơn

Trang 10

Bước 2: Xây dựng model và huấn luyện

Đầu tiên, ta tạo một đối tượng mô hình Doc2vec với các tham số: - Vector_size: kích thước vector nhúng trong văn bản

- Min_count: số lần xuất hiện tối thiểu của một từ để được coi là quan trong sử dụng trong quá trình huấn luyện

- Epochs: Số vòng lặp trong quá trình huấn luyện, mỗi vòng lặp tương ứng với việc mô hình sẽ được huấn luyện trên toàn bộ dữ liệu một lần

Trang 11

Tiếp theo, ta xây dựng từ vựng cho mô hình Doc2Vec: modelAPI2.build_vocab() với dữ liệu đã chuẩn bị trước đó Quá trình này cho phép mô hình tạo ra một bản đồ từ vựng và gán một chỉ mục duy nhất cho mỗi từ

Tiếp đó, huấn luyện mô hình:

modelAPI2.train(taggedDataExternal, total_examples=modelAPI2.corpus_count, epochs=modelAPI2.epochs)

các tham số:

- taggedDataExternal: tập dữ liệu đã được gán nhãn

- total_examples: số lượng tài liệu (do tài liệu có cùng kho dữ liệu đã được cung cấp trước đó nên ta sử dụng modelAPI2.corpus_count)

- Epochs: số vong lặp trên tập dữ liệu.

Cuối cùng, lưu model tại đường dẫn “model\doc2vec_external_model” để có thể dễ dàng sử dụng cho các lần tiếp theo

Internal Method:

Bước 1: Chuẩn bị dữ liệu

Sử dụng một số file APK đã được chuẩn bị trước, tạo thành các đồ thị FCG Sau đó duyệt qua các node của đồ thị, nếu node nào là các hàm External thì bỏ qua, còn đối với node nào là hàm Internal ta trích xuất nhóm các mã máy từ các hàm Internal Sau đó gán nhãn cho tập mã máy đã được trích xuất để tạo dữ liệu xây dựng model Doc2vec

Bước 2: Xây dựng model và huấn luyện (tương tự như model External)

Ngày đăng: 26/06/2024, 17:26