Bối cảnh và vấn đề nghiên cứu

Trong sự phát triển của công nghệ di động, Android đã trở thành hệ điều hành phổ biến nhất thế giới kể từ khi phiên bản thương mại đầu tiên (Android 1.0) ra mắt vào tháng 9 năm 2008. Số liệu thống kê từ StatCounter giai đoạn từ tháng 5/2022 đến tháng 5/2023 chỉ ra rằng Android chiếm lĩnh 71% thị phần hệ điều hành di động toàn cầu, vượt trội so với mức 28% của iOS. Tuy nhiên, tính chất mã nguồn mở cùng độ phủ rộng lớn khiến Android trở thành mục tiêu hàng đầu của các cuộc tấn công an ninh mạng. Hơn 50 triệu phần mềm độc hại và ứng dụng có khả năng không mong muốn (PUA) đã được ghi nhận trên nền tảng này. Theo Báo cáo về mối đe dọa trên thiết bị di động năm 2021 của McAfee, số lượng ứng dụng độc hại được phát hiện đạt mức cao kỷ lục, các cuộc tấn công mã độc di động tăng 33% và các trang web lừa đảo phát tán mã độc tăng 80% so với năm trước, trong đó phần mềm quảng cáo (adware) và trojan ngân hàng (banking trojan) chiếm tỷ lệ áp đảo. Các họ mã độc phổ biến trên Android bao gồm Trojan, Backdoor, Worms, Spyware, Botnet và Riskwares.

Trước sự bùng nổ của các biến thể mã độc tinh vi, các phương pháp phát hiện truyền thống bộc lộ nhiều hạn chế:

  • Phương pháp dựa trên dấu hiệu nhận dạng (signatures/fingerprints) hoàn toàn bị động trước các mối đe dọa mới chưa từng được cập nhật trong cơ sở dữ liệu.
  • Phương pháp phân tích cú pháp tĩnh hoặc động truyền thống gặp trở ngại lớn khi mã nguồn bị xáo trộn (code obfuscation), mã hóa hoặc nạp mã động.

Khóa luận tốt nghiệp ngành Kỹ sư An toàn thông tin của tác giả Trần Quốc Phong (Trường Đại học Công nghệ Thông tin – ĐHQG TP.HCM, hướng dẫn bởi TS. Lê Kim Hùng, năm 2023) tập trung giải quyết bài toán phát hiện mã độc Android bằng cách kết hợp trích xuất đa đặc trưng tĩnh và áp dụng các framework học máy tự động (AutoML).

Mục tiêu nghiên cứu của đề tài:

  1. Tìm hiểu về hệ điều hành Android, các thành phần kiến trúc trong Android cũng như các loại mã độc thường xuất hiện trên hệ điều hành này.
  2. Tìm hiểu các kỹ thuật và công cụ được sử dụng để phân tích các mẫu phần mềm độc hại trong Android.
  3. Tìm hiểu Machine Learning cùng các phương pháp học máy tự động (AutoML) để xây dựng mô hình phát hiện phần mềm độc hại.
  4. Thực nghiệm và đánh giá mô hình phát hiện dựa trên những đặc trưng của một tệp tin APK như Permissions, Opcodes và API calls.

Đối tượng và phạm vi nghiên cứu:

  • Đối tượng nghiên cứu: Các mô hình máy học được áp dụng trong việc phát hiện phần mềm độc hại trên thiết bị Android.
  • Phạm vi nghiên cứu: Nghiên cứu các thuật toán máy học, các phương pháp học máy tự động và tập đặc trưng tĩnh (Permissions, Opcodes, API calls) được trích xuất từ tệp tin APK.

Cơ sở lý thuyết và phương pháp

Khóa luận xây dựng hệ thống phát hiện mã độc dựa trên nền tảng kiến trúc hệ điều hành Android, cấu trúc gói ứng dụng APK, các giải thuật học máy và kỹ thuật tối ưu hóa đặc trưng.

1. Kiến trúc hệ điều hành Android và cấu trúc gói APK

Kiến trúc Android được tổ chức thành các tầng:

  • Linux Kernel: Cung cấp lớp trừu tượng phần cứng và quản lý tiến trình, bộ nhớ, mạng và trình điều khiển (drivers).
  • Hardware Abstraction Layer (HAL): Giao diện chuẩn cho các nhà cung cấp phần cứng kết nối với framework.
  • Native Libraries & Android Runtime (ART/Dalvik): Thư viện viết bằng C/C++ và môi trường thực thi máy ảo. ART hỗ trợ biên dịch trước thời hạn (AOT - Ahead-of-Time) và đúng lúc (JIT - Just-in-Time), tối ưu hóa thu dọn rác (GC) cho các tệp thực thi Dalvik Executable (.dex).
  • Application Framework: Cung cấp các API viết bằng Java như Activity Manager, Content Providers, Notification Manager.
  • System Apps: Bộ ứng dụng tích hợp sẵn của hệ thống.

Bốn thành phần cấu thành ứng dụng Android gồm: Activities (giao diện người dùng), Services (tác vụ nền), Content Providers (chia sẻ dữ liệu liên ứng dụng), và Broadcast Receivers (lắng nghe và xử lý sự kiện toàn hệ thống).

Cấu trúc một tệp tin APK bao gồm: thư mục META-INF (chứa MANIFEST.MF, CERT.SF, CERT.RSA phục vụ xác minh chữ ký số), thư mục lib (chứa thư viện native .so), thư mục res (tài nguyên XML nhị phân, hình ảnh), thư mục assets (tài nguyên không biên dịch), tệp AndroidManifest.xml (khai báo quyền và siêu dữ liệu ứng dụng), tệp classes.dex (mã bytecode thực thi), và tệp resources.arsc (tài nguyên đã biên dịch).

2. Các nhóm đặc trưng tĩnh

  • Quyền truy cập (Permissions): Trích xuất từ tệp AndroidManifest.xml, bao gồm quyền hệ thống (System Permissions) để truy cập tài nguyên phần cứng như GPS, máy ảnh, SMS và quyền ứng dụng (App Permissions).
  • Lời gọi hàm hệ thống (API calls): Thể hiện tương tác giữa ứng dụng và framework hệ thống thông qua cơ chế Binder. Lời gọi API được trích xuất từ các tệp mã nguồn trung gian .smali.
  • Mã thao tác (Opcodes): Các chỉ thị mã máy Dalvik bytecode trong tệp classes.dex (ví dụ: chỉ thị 62 đại diện cho lệnh sget-object).

3. Phương pháp nghiên cứu và công cụ sử dụng

  • Kỹ thuật lựa chọn đặc trưng: Phương pháp loại bỏ đặc trưng đệ quy (Recursive Feature Elimination - RFE) kết hợp với các mô hình Logistic Regression, Random Forest; phương pháp hồi quy Lasso (chuẩn hóa L1).
  • Phương pháp học máy tự động (AutoML):
    • TPOT (Tree-based Pipeline Optimization Tool): Sử dụng lập trình di truyền (Genetic Programming) để tự động khám phá và tối ưu hóa các pipeline xử lý dữ liệu và mô hình Scikit-learn.
    • Auto-Sklearn: Tối ưu hóa dựa trên xác suất Bayesian trên không gian giả thuyết gồm 15 bộ phân loại, 14 phương pháp tiền xử lý đặc trưng, 4 phương pháp tiền xử lý dữ liệu với 110 tham số.
  • Công cụ phân tích và trích xuất dữ liệu: Sử dụng Apktool để dịch ngược mã nguồn ra định dạng .smali, thư viện Androguard để trích xuất quyền và opcodes, và tinh chỉnh mã nguồn của công cụ AndroPyTool nhằm phục vụ trích xuất tĩnh có chọn lọc. Tập dữ liệu nghiên cứu ban đầu gồm 4.245 mẫu với 4.322 đặc trưng.

Thiết kế và triển khai

Hệ thống phát hiện mã độc Android được thiết kế theo quy trình xử lý khép kín gồm 7 bước chính:

[Tệp APK đầu vào] 
[Mã nguồn .smali & classes.dex]
[Tập dữ liệu thô: 4.245 mẫu, 4.322 đặc trưng]
[Tập đặc trưng tối ưu: 2.603 đặc trưng]
[Mô hình huấn luyện tốt nhất (.pkl)]
[Đánh giá độ chính xác, F1-Score, Confusion Matrix]
[Web Application (Flask/Python, Giao diện Upload & Phân tích)]
[Hiển thị kết quả: Thông tin tệp, Hashes, Nhãn Benign/Malware]

1. Quy trình xử lý dữ liệu và huấn luyện

  • Bước 1 - Dịch ngược: Tệp APK được giải nén và dịch ngược bằng công cụ Apktool để lấy các tệp .smali và AndroidManifest.xml.
  • Bước 2 - Trích xuất đặc trưng: Thư viện Androguard trích xuất danh sách Permissions và tần suất xuất hiện của các Opcodes Dalvik. Các API calls được trích xuất từ tệp .smali và được lọc đối chiếu với hai danh mục chuẩn: class_index.txt (danh sách tên lớp) và package_index.txt (danh sách tên gói) nhằm loại bỏ các API bên thứ ba không liên quan. Toàn bộ thông tin được tổng hợp thành cấu trúc JSON và vector hóa thành tệp Dataset.csv (gán nhãn 1/0 cho Permissions, ghi nhận tần suất cho Opcodes và API calls).
  • Bước 3 - Lựa chọn đặc trưng: Áp dụng kỹ thuật RFE với bộ ước lượng Logistic Regression để đánh giá xếp hạng tầm quan trọng. Ngưỡng xếp hạng (rank) $\ge 0.8$ được chọn để giữ lại 2.603 đặc trưng có giá trị cao nhất từ 4.322 đặc trưng ban đầu.
  • Bước 4 - Tối ưu hóa bằng AutoML: Chạy song song TPOT và Auto-Sklearn trên tập đặc trưng đã tinh lọc để tự động tìm kiếm bộ phân loại và siêu tham số tối ưu.
  • Bước 5 - Đánh giá mô hình: So sánh hiệu năng giữa pipeline của TPOT và Auto-Sklearn thông qua các độ đo Accuracy, F1-Score và ma trận nhầm lẫn (Confusion Matrix).

2. Triển khai ứng dụng Web phân tích mã độc

  • Kiến trúc ứng dụng: Hệ thống được xây dựng dưới dạng ứng dụng web chạy trên máy chủ nội bộ (localhost:8000).
  • Quy trình hoạt động:
    1. Người dùng tải lên tệp tin APK nghi ngờ qua giao diện web.
    2. Phía server nhận tệp, kích hoạt module trích xuất tĩnh để tạo vector đặc trưng dựa trên danh mục từ điển đặc trưng (Dictionary) gồm 2.603 thuộc tính đã chọn trước.
    3. Vector dữ liệu được đưa vào mô hình máy học đã lưu trữ (Model.pkl) để suy luận phân loại.
    4. Giao diện hiển thị kết quả phân tích trong mục Uploaded, cung cấp chi tiết: Tên gói (Package Name), Kích thước tệp (File size), các giá trị băm (MD5, SHA1, SHA256) và kết quả phân loại cuối cùng (nhãn benign - lành tính hoặc malware - độc hại).

Nội dung chính theo từng chương

Chương 1. Giới thiệu

Chương mở đầu trình bày tính cấp thiết của đề tài xuất phát từ sự bùng nổ của thiết bị di động chạy hệ điều hành Android và nguy cơ mất an toàn thông tin do các họ mã độc ngày càng gia tăng. Tác giả tổng quan 6 nhóm mã độc phổ biến (Trojan, Backdoor, Worms, Spyware, Botnet, Riskwares) cùng hai hướng tiếp cận phân tích chính: phân tích tĩnh (Static Analysis) và phân tích động (Dynamic Analysis). Từ đó, đề tài xác định mục tiêu nghiên cứu, đối tượng nghiên cứu (các mô hình máy học phát hiện mã độc Android) và phạm vi nghiên cứu (thuật toán ML, AutoML, trích xuất đặc trưng tĩnh từ APK).

Chương 2. Cơ sở lý thuyết

Nội dung chương này hệ thống hóa toàn bộ nền tảng lý thuyết phục vụ việc xây dựng giải pháp:

  • Nguyên lý hoạt động của các thuật toán học máy có giám sát: Linear Regression, Decision Trees, Random Forest, và K-Nearest Neighbors (KNN) cùng 3 hàm đo khoảng cách (Euclidean, Manhattan, Minkowski).
  • Kiến trúc hệ điều hành Android từ tầng Linux Kernel đến System Apps, chu trình biên dịch mã nguồn Java thành Dalvik bytecode (.dex), và cơ chế cấp quyền trong AndroidManifest.xml.
  • Cơ chế gọi API trong Android qua Binder và phân tích mã lệnh Dalvik bytecode thông qua Opcodes.
  • Kỹ thuật giảm chiều dữ liệu và lựa chọn đặc trưng: RFE (Recursive Feature Elimination) và Lasso.
  • Nguyên lý hoạt động của các nền tảng học máy tự động: TPOT (tối ưu hóa pipeline bằng thuật toán di truyền) và Auto-Sklearn (tối ưu hóa siêu tham số bằng suy luận xác suất Bayesian).

Chương 3. Hệ thống phát hiện

Chương 3 mô tả chi tiết phương pháp xây dựng hệ thống phát hiện mã độc qua từng giai đoạn:

  • Tiền xử lý và trích xuất đặc trưng: Sửa đổi mã nguồn công cụ AndroPyTool, tích hợp Androguard và Apktool để trích xuất 3 nhóm thuộc tính (Permissions, Opcodes, API calls) dựa trên tệp kiểm chuẩn class_index.txt và package_index.txt. Xây dựng tập dữ liệu gồm 4.245 mẫu và 4.322 đặc trưng.
  • Lựa chọn đặc trưng: Thử nghiệm RFE trên các bộ ước lượng khác nhau và chọn RFE kết hợp Logistic Regression với ngưỡng rank $\ge 0.8$, rút gọn tập dữ liệu còn 2.603 đặc trưng trong 1879.1 giây.
  • Huấn luyện và tối ưu hóa AutoML: TPOT đề xuất pipeline tối ưu kết hợp StackingEstimator (GradientBoostingClassifier), bộ lọc VarianceThreshold(threshold=0.1) và phân loại chính bằng RandomForestClassifier. Auto-Sklearn đề xuất mô hình Gradient Boosting kết hợp bộ tiền xử lý cân bằng trọng số (balancing: weighting) và chọn lọc đặc trưng feature_type_select_percentile_classification.
  • Hiện thực hóa ứng dụng Web: Thiết kế giao diện và luồng xử lý tải tệp APK, trích xuất vector đặc trưng thời gian thực, nạp mô hình Model.pkl để trả về nhãn nhận dạng cùng các mã băm toàn vẹn tệp.

Chương 4. Thực nghiệm mô hình đề xuất

Chương 4 thiết lập môi trường đánh giá mô hình:

  • Trình bày hệ thống chỉ số đo lường hiệu năng: True Positive (TP), False Positive (FP), True Negative (TN), False Negative (FN), Precision (P), Recall (R), F1-Score, False Positive Rate (FPR), False Negative Rate (FNR).
  • Đánh giá phân bố tần suất xuất hiện của Top 10 Permissions và Top 10 Opcodes phổ biến nhất trên tập mẫu lành tính so với tập mẫu độc hại.
  • Thực nghiệm so sánh giữa mô hình tối ưu của TPOT và Auto-Sklearn trên tập kiểm thử độc lập gồm 1.000 ứng dụng, phân tích ma trận nhầm lẫn (Confusion Matrix) và đối chiếu hiệu năng với các nghiên cứu khác trên cùng bộ dữ liệu.

Chương 5. Tổng kết và hướng phát triển

Tóm tắt các kết quả đạt được của khóa luận trong việc xây dựng quy trình tự động hóa phát hiện mã độc từ tệp APK. Đồng thời, chương này chỉ ra các điểm còn tồn tại của phương pháp phân tích tĩnh và vạch ra định hướng nghiên cứu mở rộng trong tương lai.


Kết quả và đóng góp

1. Kết quả thực nghiệm lựa chọn đặc trưng

Quá trình thực nghiệm lựa chọn đặc trưng với tập dữ liệu gốc (4.245 mẫu, 4.322 đặc trưng) cho thấy hiệu quả vượt trội của RFE kết hợp Logistic Regression:

Phương pháp lựa chọn đặc trưng Số lượng đặc trưng được chọn Thời gian thực thi (giây)
RFE - LogisticRegression 2.603 1879.1
RFE - RandomForestClassifier 2.603 Tốn nhiều thời gian hơn
RFE - RandomForestRegressor Không khả thi Tiêu tốn quá nhiều tài nguyên tính toán
Lasso Số lượng quá ít Nhanh nhưng bỏ sót nhiều đặc trưng quan trọng

2. Kết quả so sánh giữa hai nền tảng AutoML

Sau khi rút gọn còn 2.603 đặc trưng, hai framework AutoML đưa ra các mô hình có hiệu năng cao:

Phương pháp AutoML Mô hình tối ưu được đề xuất Độ chính xác (Accuracy) F1-Score
TPOT RandomForestClassifier (kèm Stacking GradientBoosting) 0.9859 0.9845
Auto-Sklearn Gradient Boosting (kèm cân bằng trọng số) 0.9847 0.9831

Pipeline tối ưu do TPOT xuất ra có cấu trúc:

  • StackingEstimator: Ước lượng phụ sử dụng GradientBoostingClassifier(learning_rate=0.5, max_depth=5, max_features=0.7, min_samples_leaf=10, min_samples_split=17, n_estimators=100, subsample=0.1).
  • VarianceThreshold: Loại bỏ đặc trưng có phương sai nhỏ hơn 0.1.
  • RandomForestClassifier: Bộ phân loại chính với bootstrap=False, criterion='gini', max_features=0.5, min_samples_leaf=5, min_samples_split=12, n_estimators=100.

3. Đóng góp chính của đề tài

  • Đóng góp về phương pháp luận: Xây dựng thành công quy trình kết hợp 3 nhóm đặc trưng tĩnh đại diện toàn diện cho ứng dụng Android (Permissions mô tả quyền truy cập, API calls mô tả hành vi giao tiếp hệ thống, và Dalvik Opcodes mô tả cấu trúc lệnh thực thi), giúp khắc phục nhược điểm của các phương pháp chỉ sử dụng đơn lẻ một loại đặc trưng.
  • Đóng góp về kỹ thuật: Ứng dụng thành công các công cụ học máy tự động (TPOT, Auto-Sklearn) để giải quyết bài toán lựa chọn mô hình và tinh chỉnh siêu tham số phức tạp, loại bỏ thao tác thử-sai thủ công và đạt độ chính xác thực nghiệm trên 98.4%.
  • Đóng góp về ứng dụng thực tiễn: Hiện thực hóa mô hình lý thuyết thành một ứng dụng web hoàn chỉnh, có khả năng tiếp nhận tệp APK, tự động trích xuất vector đặc trưng và trả về kết quả phân tích trong thời gian ngắn.

Hạn chế và hướng nghiên cứu tiếp

Hạn chế

  • Đề tài tập trung hoàn toàn vào kỹ thuật phân tích tĩnh (Static Analysis), do đó gặp khó khăn trong việc phát hiện các hành vi độc hại được kích hoạt trong thời gian chạy thông qua kỹ thuật nạp mã động (dynamic code loading) hoặc mã hóa payload phức tạp.
  • Phương pháp lựa chọn đặc trưng bằng RFE đòi hỏi năng lực tính toán lớn và thời gian thực thi kéo dài (1879.1 giây đối với Logistic Regression).
  • Danh mục API trích xuất phụ thuộc vào các tệp chỉ mục định sẵn (class_index.txt, package_index.txt), có nguy cơ bỏ sót các API mới phát sinh từ các bản cập nhật framework Android tiếp theo.

Hướng nghiên cứu tiếp

  • Tích hợp thêm module phân tích động (Dynamic Analysis) hoặc phân tích lai (Hybrid Analysis) bằng cách chạy ứng dụng trong môi trường sandbox/máy ảo để theo dõi lưu lượng mạng thực tế và các cuộc gọi hệ thống thời gian thực.
  • Mở rộng tập dữ liệu huấn luyện với các biến thể mã độc mới xuất hiện từ các phiên bản Android 13, 14.
  • Tối ưu hóa tốc độ của module trích xuất đặc trưng trên server web để giảm độ trễ phản hồi khi tiếp nhận các tệp APK dung lượng lớn.

Giá trị tham khảo

  • Đối tượng thụ hưởng:
    • Sinh viên chuyên ngành An toàn thông tin, Mạng máy tính và Truyền thông, Khoa học máy tính làm đồ án hoặc nghiên cứu về mã độc Android và ứng dụng Machine Learning trong an ninh mạng.
    • Các kỹ sư phân tích mã độc và phát triển hệ thống bảo mật ứng dụng di động.
  • Nội dung giá trị:
    • Quy trình kỹ thuật chi tiết về việc dịch ngược APK, trích xuất và chuẩn hóa 3 nhóm đặc trưng tĩnh (Permission, Opcode, API calls) bằng Androguard, Apktool và AndroPyTool.
    • Phương pháp áp dụng và so sánh các framework AutoML (TPOT và Auto-Sklearn) trong việc tối ưu hóa pipeline học máy phân loại nhị phân.
    • Mã nguồn và kiến trúc tích hợp mô hình máy học vào ứng dụng web phục vụ phân tích tệp tin thực tế.

Câu hỏi thường gặp

1. Khóa luận sử dụng những nhóm đặc trưng tĩnh nào từ tệp APK để huấn luyện mô hình?

Tác giả trích xuất và kết hợp 3 nhóm đặc trưng tĩnh: danh sách quyền yêu cầu trong tệp kê khai (Permissions), tần suất xuất hiện của các lệnh bytecode Dalvik (Opcodes), và danh sách các lời gọi hàm hệ thống (API calls) được chuẩn hóa qua hai tệp class_index.txt và package_index.txt.

2. Phương pháp lựa chọn đặc trưng nào được tác giả lựa chọn và mang lại kết quả ra sao?

Tác giả chọn phương pháp RFE (Recursive Feature Elimination) kết hợp với bộ ước lượng Logistic Regression (max_iter=1000). Từ tập dữ liệu gốc gồm 4.322 đặc trưng, phương pháp này đã lọc ra 2.603 đặc trưng quan trọng có thứ hạng (rank) $\ge 0.8$ với thời gian xử lý là 1879.1 giây.

3. Hai công cụ AutoML (TPOT và Auto-Sklearn) đề xuất những mô hình nào và đạt hiệu năng ra sao?

  • TPOT: Đề xuất mô hình RandomForestClassifier (kết hợp StackingEstimator với GradientBoostingClassifier và bộ lọc VarianceThreshold=0.1), đạt Accuracy 0.9859 và F1-Score 0.9845.
  • Auto-Sklearn: Đề xuất mô hình Gradient Boosting (kết hợp bộ tiền xử lý cân bằng weighting và lọc đặc trưng theo phân vị), đạt Accuracy 0.9847 và F1-Score 0.9831.

4. Ứng dụng web được xây dựng trong khóa luận hoạt động như thế nào khi người dùng tải lên một tệp APK?

Khi nhận tệp APK, máy chủ (chạy tại localhost:8000) tự động decompile và trích xuất vector đặc trưng dựa trên bộ từ điển 2.603 thuộc tính đã chọn trước, sau đó nạp tệp mô hình đã huấn luyện (Model.pkl) để dự đoán. Kết quả trả về giao diện gồm Tên gói (Package Name), Dung lượng tệp (File size), các chuỗi mã băm (MD5, SHA1, SHA256) và kết luận ứng dụng là benign (lành tính) hoặc malware (độc hại).


Kết luận

Khóa luận của tác giả Trần Quốc Phong đã xây dựng thành công giải pháp phát hiện phần mềm độc hại trên hệ điều hành Android thông qua việc kết hợp đa đặc trưng tĩnh gồm Permissions, Opcodes và API calls. Bằng cách ứng dụng kỹ thuật lựa chọn đặc trưng RFE và các nền tảng học máy tự động TPOT, Auto-Sklearn, nghiên cứu đã tối ưu hóa được pipeline phân loại đạt độ chính xác thực nghiệm trên 98.4%. Toàn bộ giải pháp đã được hiện thực hóa thành ứng dụng web hoàn chỉnh, cung cấp công cụ trực quan hỗ trợ phân tích và cảnh báo mã độc Android một cách nhanh chóng và hiệu quả.