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

Hệ điều hành Android hiện là nền tảng chiếm lĩnh thị phần thiết bị di động toàn cầu. Dữ liệu từ Statcounter tính đến tháng 12 năm 2022 cho thấy Android chiếm 72.37% thị phần hệ điều hành di động. Đi kèm với quy mô người dùng lớn, các nguy cơ về an ninh thông tin trên nền tảng này liên tục gia tăng. Theo báo cáo của Kaspersky công bố vào tháng 2 năm 2023 về các mối đe dọa trên Android trong năm 2022, đơn vị này đã phát hiện 1.661.743 gói cài đặt độc hại (malicious installers), 196.476 ứng dụng trojan ngân hàng (banking trojans) mới và 10.543 ứng dụng trojan tống tiền (ransomware trojans) mới. Về phân bố tấn công, tỷ lệ các cuộc tấn công sử dụng mã độc quảng cáo (adware) đã tăng từ 16.92% (năm 2021) lên 26.38% (năm 2022), trong khi các loại mã độc khác chiếm tỷ lệ chi phối. Người dùng Android chủ yếu tải và cài đặt ứng dụng từ các kho ứng dụng như Google Play, Apkcombo, Apkpure hoặc các nguồn phân phối bên thứ ba trên Internet, đặt ra yêu cầu cấp thiết về việc kiểm duyệt, phát hiện và phân loại chính xác các ứng dụng độc hại.

Để giải quyết vấn đề này, các nghiên cứu trong thập kỷ qua chia thành hai hướng tiếp cận chính: phân tích truyền thống (phân tích tĩnh hoặc phân tích động đơn lẻ) và ứng dụng học máy/học sâu. Phân tích tĩnh cho phép trích xuất quyền (permissions), mã thao tác (opcodes), lời gọi API mà không cần thực thi ứng dụng, có ưu điểm tốc độ nhanh nhưng bất lực trước kỹ thuật làm rối mã nguồn (code obfuscation) và không thể phát hiện các hành vi tải mã động hoặc gọi tài nguyên mạng trong quá trình chạy. Ngược lại, phân tích động giám sát ứng dụng trong môi trường hộp cát (sandbox) hoặc máy ảo để thu thập hành vi thời gian thực, nhưng tốn nhiều thời gian, khó kích hoạt toàn bộ các nhánh thực thi mã và dễ bị các dòng mã độc phát hiện môi trường giả lập để tự vô hiệu hóa hành vi nguy hiểm. Ngoài ra, hướng tiếp cận chuyển đổi tệp APK thành hình ảnh để phân loại bằng thị giác máy tính cũng bộc lộ khiếm khuyết khi không thể phát hiện các cuộc tấn công chèn mã (injection attacks) và không thích ứng tốt với các ứng dụng hiện đại xây dựng trên các nền tảng đa framework (như Flutter, React Native, Xamarin) vốn lưu trữ mã thực thi trong các thư viện liên kết thay vì chỉ trong tệp DEX đơn lẻ. Do đó, việc xây dựng một giải pháp kết hợp phân tích tĩnh và động đa tầng là yêu cầu cốt lõi được đặt ra.

Đề tài xác định mục tiêu tổng quát là xây dựng phương pháp phân tích kết hợp ứng dụng Android để phát hiện và phân loại ứng dụng độc hại đạt độ chính xác cao. Cụ thể, các nhiệm vụ nghiên cứu được phân định như sau:

  1. Đề xuất framework mang tên AndroAnalyzer cho phép trích xuất tự động đa dạng các đặc trưng tĩnh và động của ứng dụng Android từ tệp tin APK.
  2. Đề xuất mô hình học sâu để giải quyết bài toán phát hiện ứng dụng độc hại (phân loại nhị phân giữa tệp lành tính - Benign và tệp độc hại - Malware).
  3. Đề xuất mô hình học sâu để giải quyết bài toán phân loại đa lớp ứng dụng độc hại thành 5 nhóm: Adware, Banking Malware, SMS Malware, Mobile Riskware và Benign.
  4. Triển khai ứng dụng Web hoàn chỉnh phục vụ việc phân tích tệp APK tải lên và tra cứu kết quả nhận diện.

Đối tượng và phạm vi nghiên cứu của khóa luận được xác lập rõ ràng:

  • Đối tượng nghiên cứu: Các tệp APK Android thuộc 5 nhóm phân loại: Adware (hiển thị quảng cáo độc hại/bất thường trong ứng dụng hợp pháp), Banking Malware (đánh cắp thông tin đăng nhập và dữ liệu tài khoản ngân hàng), SMS Malware (lợi dụng dịch vụ tin nhắn văn bản để thực hiện các cuộc tấn công hoặc trừ cước), Mobile Riskware (ứng dụng hợp pháp tiềm ẩn lỗ hổng hoặc hành vi gây hại khi bị khai thác), và Benign (ứng dụng lành tính đã được xác minh qua nền tảng VirusTotal).
  • Phạm vi nghiên cứu: Tập trung vào các ứng dụng phân phối trên các kho ứng dụng di động; chỉ giới hạn trong môi trường hệ điều hành Android và 5 nhóm phân loại kể trên, không mở rộng sang các hệ điều hành di động khác hay các họ mã độc nằm ngoài phạm vi thiết kế.

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

Khóa luận thiết lập nền tảng lý thuyết dựa trên cấu trúc phân tầng của hệ điều hành Android và các kỹ thuật mô hình hóa mạng nơ-ron học sâu:

  • Kiến trúc hệ điều hành và thành phần ứng dụng Android: Khóa luận hệ thống hóa ngăn xếp phần mềm Android gồm nhân Linux (Linux Kernel), lớp trừu tượng phần cứng (HAL), môi trường thực thi Android Runtime (ART - thay thế Dalvik Virtual Machine từ phiên bản 5.0), các thư viện gốc (Native C/C++ Libraries), khung Java API (Java API Framework) và các ứng dụng hệ thống (System Apps). Về mặt ứng dụng, tác giả phân tích các thành phần cốt lõi được khai báo trong AndroidManifest.xml gồm Activities, Services, Broadcast Receivers, Content Providers và hệ thống cơ chế phân quyền (Permissions). Phân loại ứng dụng được tham chiếu theo hướng dẫn kiểm thử của OWASP gồm Native App, Web App, Hybrid App và Progressive Web App (PWA).
  • Các kỹ thuật học sâu (Deep Learning): Tác giả tổng quan và phân tích nguyên lý hoạt động của các kiến trúc mạng nơ-ron: Multi-Layer Perceptron (MLP), Recurrent Neural Network (RNN), Gated Recurrent Unit (GRU), Convolutional Neural Network (CNN), Long Short-Term Memory (LSTM), Bidirectional Long Short-Term Memory (BiLSTM), và kiến trúc kết hợp Convolutional Neural Network - Multi-Layer Perceptron (CNN-MLP). Trong đó, mô hình CNN-MLP được lựa chọn làm nòng cốt nhằm tận dụng khả năng tự động học trích xuất đặc trưng cục bộ thông qua các phép tích chập (Convolutional layers) kết hợp khả năng mô hình hóa quan hệ phi tuyến phức tạp của các lớp kết nối đầy đủ (Dense layers).
  • Công cụ phân tích và trích xuất thực nghiệm:
    • Androguard: Thư viện Python phục vụ dịch ngược (reverse engineering) tệp APK, đọc tệp AndroidManifest.xml và mã Smali trong tệp classes.dex để thu thập dữ liệu tĩnh.
    • Frida Tools: Bộ công cụ dynamic instrumentation hỗ trợ chèn mã hook vào tiến trình ứng dụng đang chạy trên thiết bị để giám sát và chặn bắt lời gọi API.
    • DroidBot: Công cụ kiểm thử tự động tạo sự kiện giao diện người dùng dựa trên mô hình đồ thị chuyển đổi giao diện (UI Transition Graph - UTG), đảm bảo mô phỏng thao tác người dùng có ngữ cảnh thay vì gửi sự kiện ngẫu nhiên.
    • Môi trường giả lập (Emulator x86): Vận hành hệ thống giám sát phân tích động theo cơ chế reboot hai pha, kế thừa nguyên lý từ framework EntropLyzer và DIDroid.
  • Phương pháp lựa chọn đặc trưng (Feature Selection): Thuật toán Boruta dựa trên bộ phân loại Rừng ngẫu nhiên (Random Forest). Phương pháp này nhân bản không gian đặc trưng bằng cách xáo trộn ngẫu nhiên giá trị của các đặc trưng gốc để tạo đặc trưng bóng ma (shadow features), hợp nhất dữ liệu và tính toán điểm Z-score qua 10 vòng lặp nhằm loại trừ các đặc trưng gây nhiễu.
  • Nguồn dữ liệu thực nghiệm: Tập dữ liệu gồm 6.000 mẫu tệp APK được gán nhãn, tích hợp và đối sánh với các tập dữ liệu công khai tiêu chuẩn gồm CICAndMal2017, CCCS-CIC-AndMal2020 và MiniMalDroid Dataset.

Thiết kế và triển khai

Hệ thống được thiết kế theo quy trình khép kín mang tên framework AndroAnalyzer, kết hợp giữa trích xuất dữ liệu, tiền xử lý vector hóa, tinh lọc đặc trưng và mạng nơ-ron phân loại, cùng một giao diện Web cho người dùng cuối.

Giai đoạn trong framework Công nghệ / Công cụ sử dụng Đầu vào Đầu ra
1. Feature Extraction NodeJS, Python, Androguard, Frida Tools, DroidBot Tệp APK gốc Tệp văn bản tĩnh, dữ liệu động trước và sau reboot
2. Feature Preprocessing Python, NumPy, Pandas Tệp báo cáo trích xuất Vector đặc trưng $C_{final} \in \mathbb{R}^{9841}$
3. Feature Selection Thuật toán Boruta, Random Forest (10 iterations) Ma trận $6000 \times 9841$ Ma trận tinh lọc $6000 \times 232$
4. Deep Learning Classifier TensorFlow, Keras Vector đặc trưng 232 chiều Nhãn dự đoán (Nhị phân hoặc 5 nhóm mã độc)
5. Triển khai Web Application Ứng dụng Web hoàn chỉnh Tệp APK do người dùng tải lên Báo cáo chi tiết và kết quả phân loại

1. Phân tích và trích xuất đặc trưng tĩnh và động (Feature Extraction)

Thành phần này được xây dựng với ngôn ngữ điều phối chính là NodeJS và các kịch bản thực thi viết bằng Python:

  • Static Feature Extraction: Sử dụng Androguard dịch ngược tệp APK, tham khảo kịch bản từ công trình DIDroid để bóc tách 6 nhóm thông tin: Activities, Services, Receivers/Providers, Intent actions & categories, Permissions, Meta-data, cùng số lượng các tệp tài nguyên đa phương tiện (hình ảnh, âm thanh, video) chứa bên trong gói cài đặt.
  • Dynamic Feature Extraction: Cài đặt tệp APK lên thiết bị giả lập Android kiến trúc x86. DroidBot tự động tương tác giao diện và Frida Tools ghi nhận các lời gọi API. Hệ thống ghi lại dữ liệu hành vi theo 2 giai đoạn riêng biệt: giai đoạn trước khi khởi động lại máy ảo (before reboot data) và giai đoạn thực thi lại sau khi khởi động lại máy ảo (after reboot data). Kỹ thuật đo lường hai pha kế thừa từ nghiên cứu EntropLyzer nhằm phát hiện những biến đổi tài nguyên tiềm ẩn và các tiến trình mã độc cố tình lẩn tránh sandbox trước khi hệ thống tái khởi động.

2. Tiền xử lý dữ liệu (Feature Preprocessing)

Toàn bộ dữ liệu thô được chuyển đổi thành vector số học một chiều:

  • Đặc trưng tĩnh: Số lượng tài nguyên đa phương tiện, activities, receivers, providers, services và metadata tạo thành vector $C_{res} \in \mathbb{R}^{13}$. Các thuộc tính permissions, actions, categories và services được mã hóa nhị phân (one-hot binary encoding: nhận giá trị 1 nếu tồn tại trong APK, 0 nếu không tồn tại). Không gian đặc trưng tĩnh hợp nhất thành vector $C_{static} \in \mathbb{R}^{9523}$.
  • Đặc trưng động: Gồm 36 chỉ số thống kê tài nguyên hệ thống (tiến trình Process, mức độ logcat: verbose/debug/info/warning/error/total, pin Battery: wakelock, mạng Network: bytes/packets gửi và nhận, bộ nhớ Memory: PSS, Private/Shared dirty/clean, Heap, Views, Binders, Sockets, WebViews). Vector $C_{dyn_before} \in \mathbb{R}^{36}$ và $C_{dyn_after} \in \mathbb{R}^{36}$ được trích xuất. Độ biến thiên tài nguyên được tính qua hiệu số: $$C_{reb} = C_{dyn_after} - C_{dyn_before} \in \mathbb{R}^{36}$$ Đối với 105 loại lời gọi API, phương pháp mã hóa nhị phân được áp dụng trước và sau reboot tạo ra hai vector kích thước 105 chiều ($C_{api_before}$, $C_{api_after}$). Toàn bộ đặc trưng động hợp nhất thành vector: $$C_{dynamic} = C_{api_before} \oplus C_{api_after} \oplus C_{dyn_before} \oplus C_{dyn_after} \oplus C_{reb} \in \mathbb{R}^{318}$$
  • Vector tổng hợp: Mỗi tệp APK được đại diện bởi vector kết hợp $C_{final} = C_{static} \oplus C_{dynamic}$ với tổng chiều dữ liệu ban đầu là $N = 9841$ đặc trưng.

3. Lựa chọn đặc trưng (Feature Selection)

Không gian 9841 đặc trưng chứa nhiều thuộc tính dư thừa gây ảnh hưởng đến thời gian huấn luyện và độ chính xác của mạng học sâu. Tác giả áp dụng thuật toán Boruta kết hợp bộ phân loại Random Forest qua 10 vòng lặp:

  1. Tạo không gian đặc trưng bóng ma $SF = {So_1, So_2, ..., So_N}$ bằng cách xáo trộn giá trị ngẫu nhiên từ tập đặc trưng gốc $OF = {O_1, O_2, ..., O_N}$.
  2. Hợp nhất thành bảng dữ liệu mở rộng $U = OF \cup SF$ có kích thước $2N = 19682$ cột.
  3. Huấn luyện Random Forest trên $U$, tính toán độ quan trọng $imp_i$ và quy đổi thành điểm chuẩn hóa $Zscore_i = \frac{imp_i - \mu_{imp}}{\sigma_{imp}}$. Ngưỡng quyết định được xác lập là giá trị $Zscore$ lớn nhất trong toàn bộ tập bóng ma: $threshold = \text{Max}(Zscore_{shadow})$.
  4. Chỉ những đặc trưng gốc thỏa mãn $Zscore_i > threshold$ mới được giữ lại; các đặc trưng còn lại bị loại bỏ. Quá trình này sàng lọc từ 9841 đặc trưng xuống còn đúng 232 đặc trưng cốt lõi trên 6000 mẫu dữ liệu.

4. Kiến trúc mô hình học sâu CNN-MLP

Vector 232 đặc trưng được đưa vào mô hình học sâu kết hợp gồm hai khối: khối tích chập 1D (CNN Layer) chịu trách nhiệm rút trích mẫu đặc trưng cục bộ và khối nơ-ron đa tầng (MLP Layer) đảm nhận phân loại.

Tên tầng (Layer) Cấu hình tham số Kích thước đầu ra (Output Shape) Chức năng kỹ thuật
Input Matrix Vector đặc trưng tinh lọc $(232, 1)$ Tiếp nhận dữ liệu đầu vào
Conv1D #1 32 filters, kernel size = 3, stride = 1, padding = 0, activation ReLU $(230, 32)$ Trích xuất 32 feature maps cục bộ, chống vanishing gradient
AveragePooling1D #1 Pool size = 2 $(115, 32)$ Lấy trung bình cửa sổ trượt, giảm một nửa chiều không gian
Conv1D #2 64 filters, kernel size = 3, stride = 1, padding = 0, activation ReLU $(113, 64)$ Nâng cao mức biểu diễn trừu tượng của đặc trưng
AveragePooling1D #2 Pool size = 2 $(56, 64)$ Giảm kích thước dữ liệu, hạn chế nguy cơ quá khớp (overfitting)
Flatten Trải phẳng ma trận $(3584)$ Chuyển ma trận 2D thành vector 1 chiều $(56 \times 64 = 3584)$
Dense #1 128 nơ-ron, activation ReLU $(128)$ Lớp ẩn kết nối đầy đủ đầu tiên
Dropout Tỷ lệ ngắt kết nối nơ-ron ngẫu nhiên $(128)$ Ngăn chặn hiện tượng quá khớp
Dense #2 64 nơ-ron, activation ReLU $(64)$ Lớp ẩn kết nối đầy đủ thứ hai
Output Layer 1 nơ-ron (Binary) hoặc 5 nơ-ron (Multi-class) $(1)$ hoặc $(5)$ Đưa ra xác suất phát hiện nhị phân hoặc phân loại 5 lớp

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

Chương 1. Mở đầu

Chương này tập trung trình bày bối cảnh thực tiễn của sự phát triển hệ sinh thái di động Android và sự gia tăng của các mối đe dọa an ninh mạng qua các thống kê của Statcounter và Kaspersky năm 2022-2023. Tác giả phân tích điểm nghẽn của các phương pháp phát hiện mã độc truyền thống, nêu bật tính cấp thiết của việc phối hợp phân tích tĩnh và động. Chương này xác lập 4 mục tiêu nghiên cứu cụ thể, xác định đối tượng là tệp APK thuộc 5 nhóm mã độc (Adware, Banking Malware, SMS Malware, Mobile Riskware, Benign) và giới hạn phạm vi nghiên cứu trên hệ điều hành Android.

Chương 2. Kiến trúc và Ứng dụng Android

Chương 2 cung cấp cơ sở lý luận toàn diện về hệ điều hành Android, bao gồm 6 lớp trong ngăn xếp phần mềm và 4 thành phần ứng dụng nền tảng (Activities, Services, Content Provider, Broadcast Receiver). Tác giả phân loại ứng dụng theo chuẩn kiểm thử bảo mật của OWASP thành 4 biến thể: Native App, Web App, Hybrid App, PWA. Tiếp đó, chương sách trình bày chi tiết toán học và cơ chế hoạt động của 7 thuật toán học sâu: MLP, RNN, GRU, CNN, LSTM, BiLSTM và kiến trúc tích hợp CNN-MLP. Phần cuối giới thiệu thư viện TensorFlow cùng cú pháp cấu hình cơ bản, và phân tích chức năng của 3 công cụ phân tích mã nguồn mở: Androguard (phân tích tĩnh), Frida Tools (can thiệp bộ nhớ động), DroidBot (tự động hóa kích hoạt sự kiện giao diện người dùng).

Chương 3. Công trình liên quan

Tác giả hệ thống hóa các nghiên cứu tiêu biểu theo 4 hướng tiếp cận:

  • Phân tích tĩnh: Điển hình là DroidSieve (Suarez et al., 2017) đạt độ chính xác 99.26% trên tập mẫu xáo trộn; NADM (Duc et al., 2018) dùng MLP đạt F1-score 92%; mô hình DNN của Naway et al. (2019) đạt độ chính xác 95.4%; hệ thống của Rahali et al. (2020) trên 400.000 mẫu đạt độ chính xác 93.3%.
  • Phân tích động: DroidScribe (Dash et al., 2016) nâng độ chính xác từ 84% lên 94% nhờ Conformal Prediction; CANDYMAN (Martin et al., 2018) kết hợp chuỗi Markov đạt precision 81.8%; phương pháp của Dinh et al. (2019) trên Cuckoo sandbox đạt 95.49%; DL-Droid (Alzaylaee et al., 2020) thử nghiệm trên 30.000 ứng dụng; EntropLyzer (Keyes et al., 2021) phân tích 6 loại đặc trưng đạt F1-score 98.3% với Decision Tree.
  • Phân tích kết hợp: Nghiên cứu của Ferrante et al. (2017) phát hiện ransomware; bộ dữ liệu CICAndMal2017 của Lashkari et al. (2018); công trình của Taheri et al. (2019) trích xuất n-gram API calls; kiến trúc hai nhánh LSTM của Chaulagain et al. (2020).
  • Xử lý ảnh: MalNet (2020) và công trình của Sun et al. (2020). Chương này đúc kết 5 hạn chế còn tồn tại của các nghiên cứu trước: thiếu vắng các tính năng phân tích then chốt; phương pháp xử lý ảnh không tương thích với các framework di động hiện đại (Flutter, Xamarin); số lượng nghiên cứu về bài toán phân loại đa lớp họ mã độc còn hạn chế; nhiều công trình thiếu quy trình kiểm thử thực nghiệm rõ ràng; và khả năng thích ứng kém với các biến thể mã độc mới.

Chương 4. Framework đề xuất

Trình bày cấu trúc tổng thể và chi tiết giải thuật của framework AndroAnalyzer qua 4 giai đoạn logic: Static Feature Extraction và Dynamic Feature Extraction (sử dụng Androguard, Frida, DroidBot và kỹ thuật reboot giả lập); Feature Preprocessing (biểu diễn vector hóa đặc trưng thống kê và nhị phân tạo nên không gian $C_{final}$ gồm 9841 chiều); Feature Selection (thuật toán Boruta kết hợp Random Forest qua 10 vòng lặp, rút gọn xuống 232 chiều); và Deep Learning Classifier (mô hình mạng kết hợp CNN-MLP xử lý vector 232 chiều qua các lớp Conv1D, AveragePooling1D, Flatten và Dense). Kết quả đánh giá sơ bộ cho thấy việc tinh giảm từ 9841 xuống 232 đặc trưng giúp mô hình Random Forest tăng xấp xỉ 4% ở cả Accuracy và F1-score, đồng thời rút ngắn đáng kể thời gian huấn luyện và thời gian dự đoán.

Chương 5. Trình bày, đánh giá kết quả thực nghiệm

Chương 5 công bố cấu hình máy chủ tính toán, các chỉ số đánh giá kỹ thuật (Accuracy, Precision, Recall, F1-score, Confusion Matrix), và kết quả thực nghiệm chi tiết trên tập dữ liệu 6.000 mẫu tệp APK. Tác giả đối sánh hiệu năng của mô hình CNN-MLP đề xuất với các mô hình học sâu phổ biến (MLP, CNN, LSTM, BiLSTM) và các công trình liên quan trên tập dữ liệu AndroAnalyzer Dataset và MiniMalDroid Dataset. Phần cuối chương trình bày kiến trúc và giao diện hoàn chỉnh của ứng dụng Web, cho phép tải lên tệp APK, tự động điều phối phân tích tĩnh/động ngầm và hiển thị trực quan các đặc trưng trích xuất cùng kết luận phát hiện/phân loại mã độc.

Chương 6 & Chương 7. Kết luận và Hướng phát triển

Tổng kết toàn bộ các kết quả đạt được về mặt phương pháp luận, kiến trúc phần mềm và hiệu năng của mô hình phân loại. Đồng thời, tác giả vạch ra các định hướng mở rộng nghiên cứu nhằm nâng cấp hệ thống trong tương lai.


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

Nghiên cứu mang lại những kết quả định lượng cụ thể được kiểm chứng trên tập dữ liệu thực nghiệm:

  • Hiệu quả phát hiện ứng dụng độc hại (bài toán nhị phân): Mô hình đề xuất đạt độ chính xác (Accuracy) là 98.08%, vượt trội so với các công trình nghiên cứu đối sánh trước đây (đạt độ chính xác cao nhất ở mức xấp xỉ 96%).
  • Hiệu quả phân loại loại ứng dụng độc hại (bài toán đa lớp 5 nhóm): Mô hình đạt độ chính xác là 94.83%, trong khi các công trình liên quan đạt mức cao nhất là 87% (kết quả của đề tài cao hơn khoảng 7%).
  • Đóng góp về phương pháp lựa chọn đặc trưng: Chứng minh thực nghiệm hiệu quả của thuật toán Boruta trong việc tối ưu hóa không gian biểu diễn dữ liệu mã độc Android. Việc sàng lọc từ 9841 đặc trưng ban đầu xuống 232 đặc trưng cốt lõi giúp mô hình tăng xấp xỉ 4% ở cả độ chính xác (Accuracy) lẫn chỉ số F1-score, đồng thời giảm thiểu đáng kể chi phí tài nguyên tính toán (thời gian huấn luyện và thời gian dự đoán).
  • Đóng góp về kiến trúc hệ thống: Đề xuất thành công framework AndroAnalyzer tự động hóa toàn bộ chu trình từ trích xuất đặc trưng tĩnh (Androguard), phân tích hành vi động 2 pha trước/sau reboot (Frida Tools, DroidBot trên máy ảo x86), tiền xử lý vector hóa, trích chọn đặc trưng và phân loại học sâu bằng mô hình CNN-MLP. Hệ thống được đóng gói hoàn chỉnh dưới dạng ứng dụng Web có tính ứng dụng thực tiễn cao.

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

Khóa luận ghi nhận các hạn chế kỹ thuật dựa trên dữ kiện văn bản và phạm vi thực nghiệm:

  • Thời gian và chi phí tính toán của phân tích động: Quá trình phân tích động đòi hỏi cài đặt tệp APK lên môi trường giả lập kiến trúc x86, tương tác giao diện qua DroidBot và thực hiện reboot hệ thống hai pha. Quy trình này chiếm nhiều thời gian và tài nguyên phần cứng hơn đáng kể so với phân tích tĩnh đơn lẻ.
  • Rào cản môi trường giả lập: Dù đã áp dụng kỹ thuật thu thập dữ liệu trước và sau khi reboot, một số dòng mã độc tinh vi vẫn có khả năng nhận biết môi trường sandbox hoặc máy ảo để ẩn giấu hành vi nguy hiểm, hoặc đòi hỏi các điều kiện kích hoạt đặc thù mà kịch bản tự động chưa thể bao quát toàn bộ các nhánh thực thi mã.
  • Giới hạn phạm vi phân loại: Nghiên cứu mới chỉ tập trung phân loại trên 5 nhóm ứng dụng (Adware, Banking Malware, SMS Malware, Mobile Riskware, Benign) trên nền tảng Android, chưa mở rộng sang các nền tảng di động khác hoặc phân loại chi tiết đến cấp độ từng họ mã độc (malware families).

Hướng nghiên cứu tiếp theo (trình bày tại Chương 7):

  • Nghiên cứu tối ưu hóa thời gian phân tích của thành phần Dynamic Feature Extraction.
  • Bổ sung các kỹ thuật che giấu môi trường giả lập nhằm ứng phó với các kỹ thuật anti-sandbox/anti-emulator của mã độc mới.
  • Mở rộng tập dữ liệu thực nghiệm và nâng cao khả năng phân loại chi tiết các họ mã độc chuyên biệt.

Giá trị tham khảo

Tài liệu này cung cấp nguồn tư liệu học thuật và kỹ thuật giá trị cho:

  • Sinh viên và học 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: Khóa luận là tài liệu tham khảo chi tiết về quy trình dịch ngược tệp APK, kỹ thuật phân tích mã độc di động kết hợp tĩnh và động, và phương pháp ứng dụng học máy/học sâu trong an ninh mạng.
  • Các nhà nghiên cứu phát triển mô hình Machine Learning / Deep Learning trên dữ liệu bảng kích thước lớn: Phần nghiên cứu về thuật toán Boruta (Chương 4) là tài liệu tham khảo điển hình về kỹ thuật giảm chiều dữ liệu (từ 9841 xuống 232 đặc trưng) mà vẫn cải thiện hiệu năng mô hình.
  • Kỹ sư bảo mật và phân tích mã độc di động: Cung cấp tài liệu chi tiết về cách thức phối hợp các công cụ Androguard, Frida Tools, DroidBot để thiết lập hệ thống sandbox tự động giám sát 36 thông số hệ thống (Memory, Network, Battery, Logcat, Process) và 105 lời gọi API trước và sau khi reboot thiết bị.

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

1. Tại sao nghiên cứu cần thu thập dữ liệu động ở cả 2 pha: trước khi reboot và sau khi reboot trình giả lập?
Nhiều ứng dụng độc hại hiện đại có cơ chế nhận biết môi trường phân tích hoặc chỉ kích hoạt hành vi độc hại nguy hiểm tiềm ẩn sau khi thiết bị khởi động lại (như đăng ký tiến trình chạy ngầm, duy trì quyền kiểm soát). Việc thu thập dữ liệu trước và sau reboot, đồng thời tính toán vector biến thiên $C_{reb} = C_{dyn_after} - C_{dyn_before}$, giúp hệ thống ghi nhận rõ nét sự biến đổi của các thông số tài nguyên (Memory, Network, Process, Battery) và API calls, từ đó vạch trần các hành vi lẩn tránh sandbox.

2. Thuật toán Boruta đã giảm số lượng đặc trưng từ bao nhiêu xuống bao nhiêu và mang lại hiệu quả gì?
Thuật toán Boruta (chạy qua 10 vòng lặp kết hợp bộ phân loại Random Forest) đã sàng lọc không gian vector đầu vào từ 9841 đặc trưng ban đầu xuống còn đúng 232 đặc trưng quan trọng nhất. Thực nghiệm trên 6.000 mẫu cho thấy tập 232 đặc trưng này giúp mô hình Random Forest tăng xấp xỉ 4% ở cả chỉ số Accuracy lẫn F1-score, đồng thời rút ngắn đáng kể thời gian huấn luyện và thời gian dự đoán.

3. Kiến trúc mô hình học sâu CNN-MLP được tác giả thiết kế như thế nào?
Mô hình tiếp nhận đầu vào là vector kích thước (232, 1). Khối tích chập gồm tầng Conv1D #1 (32 bộ lọc, kích thước kernel 3, hàm kích hoạt ReLU), tầng AveragePooling1D #1 (pool size = 2), tầng Conv1D #2 (64 bộ lọc, kernel size 3, ReLU) và tầng AveragePooling1D #2 (pool size = 2). Dữ liệu sau đó được duỗi qua tầng Flatten thành vector 3584 chiều và đưa qua khối MLP gồm tầng Dense 128 nơ-ron, tầng Dropout chống quá khớp, tầng Dense 64 nơ-ron và tầng Output cuối cùng (1 nơ-ron cho bài toán phát hiện hoặc 5 nơ-ron cho bài toán phân loại).

4. Khóa luận đạt được kết quả độ chính xác cụ thể là bao nhiêu trong các bài toán thử nghiệm?
Trong bài toán phát hiện ứng dụng độc hại (phân loại nhị phân giữa Benign và Malware), mô hình đề xuất đạt độ chính xác là 98.08% (so với mức cao nhất của các nghiên cứu trước là xấp xỉ 96%). Trong bài toán phân loại loại ứng dụng độc hại (phân loại đa lớp 5 nhóm), mô hình đạt độ chính xác là 94.83% (vượt trội hơn mức cao nhất 87% của các công trình đối sánh trước đó, cao hơn khoảng 7%).


Kết luận

Khóa luận tốt nghiệp của tác giả Nguyễn Ngọc Trưởng đã giải quyết trọn vẹn bài toán phát hiện và phân loại ứng dụng Android độc hại thông qua việc xây dựng framework AndroAnalyzer kết hợp toàn diện giữa phân tích tĩnh và phân tích động hai pha. Bằng việc ứng dụng thuật toán Boruta để tinh giảm tối ưu không gian đặc trưng từ 9841 xuống 232 chiều và triển khai mạng học sâu kết hợp CNN-MLP, đề tài đã đạt độ chính xác 98.08% trong bài toán phát hiện mã độc và 94.83% trong bài toán phân loại 5 nhóm ứng dụng độc hại. Toàn bộ giải pháp đã được tích hợp thành công vào một ứng dụng Web hoàn chỉnh, minh chứng cho tính khả thi, tính khoa học và giá trị ứng dụng thực tiễn trong lĩnh vực an toàn thông tin di động.