Giới thiệu dự án
Sự bùng nổ của các thiết bị di động thông minh đã đưa hệ điều hành Android trở thành nền tảng phổ biến nhất toàn cầu, chiếm hơn 86.6% thị phần smartphone và sở hữu trên 2.8 triệu ứng dụng trên Google Play. Tuy nhiên, kiến trúc mở và cơ chế cấp quyền phân mảnh của Android đã tạo ra bề mặt tấn công rộng lớn cho các tác nhân độc hại. Thống kê an ninh mạng ghi nhận hơn 3.25 triệu ứng dụng Android chứa mã độc được phát hiện chỉ trong một năm (trung bình cứ 10 giây xuất hiện một mẫu mã độc mới), với hơn 12,000 biến thể xuất hiện mỗi ngày. Các biến thể mã độc hiện đại liên tục sử dụng các kỹ thuật làm rối mã (obfuscation), đóng gói (packing) và mã hóa (encryption) nhằm vượt qua các giải pháp phòng chống virus truyền thống dựa trên chữ ký (signature-based).
Vấn đề cốt lõi đặt ra là các phương pháp phân tích tĩnh truyền thống dựa trên trích xuất đặc trưng bảng (dạng CSV) hoặc vector hóa tần suất từ (N-gram, One-Hot Encoding) thường gặp hiện tượng bùng nổ số chiều (curse of dimensionality) và mất mát ngữ cảnh nghiêm trọng khi đối mặt với mã độc bị làm rối. Đồ án "Nhận diện mã độc Android dựa trên xử lý văn bản" (Text-Based Android Malware Classification) do sinh viên Trần Hoàng Khang và Nguyễn Đoàn Xuân Bình thực hiện dưới sự hướng dẫn của TS. Lê Kim Hùng và ThS. Thái Huy Tân (Khoa Mạng máy tính và Truyền thông, Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM) đề xuất giải pháp ứng dụng mô hình Deep Learning trong Xử lý Ngôn ngữ Tự nhiên (Natural Language Processing - NLP) để phân loại hành vi mã độc Android.
+-----------------------------------------------------------------------------+
| MỤC TIÊU VÀ ĐẦU RA DỰ ÁN |
+-----------------------------------------------------------------------------+
| 1. Nghiên cứu cơ chế mã độc: Phân tích quyền (Permissions), Opcode, API |
| Calls, luồng thực thi động trên Dalvik Virtual Machine (DVM) / ART. |
| 2. Xây dựng Dataset chuẩn hóa: Trích xuất tĩnh & động từ >10,000 file APK. |
| 3. Thiết kế mô hình NLP Deep Learning: Ứng dụng Neural Network Language |
| Model (NNLM) cùng các mô hình đối chuẩn (CNN, BiLSTM, CNN-GRU). |
| 4. Xây dựng nền tảng Web Detection: Tự động hóa quét APK với End-to-End API.|
+-----------------------------------------------------------------------------+
Cách tiếp cận của đề tài là coi toàn bộ dữ liệu phân tích thuộc tính tĩnh và log thực thi động của tệp APK như một ngữ đoàn văn bản (textual corpus). Thay vì ép buộc cấu trúc dữ liệu thành các bảng vector rời rạc, hệ thống tận dụng lớp nhúng từ không gian liên tục (continuous-space word embedding) để nắm bắt quan hệ ngữ nghĩa sâu giữa các chuỗi hành vi. Mô hình đạt độ chính xác 99.02% trên tập dữ liệu thực nghiệm gồm các họ mã độc phổ biến (SMS malware, Banking trojan, Adware, Riskware) và ứng dụng lành tính (Benign).
Phạm vi nghiên cứu: Tập trung chuyên sâu vào tệp thực thi Android Package (.apk), không mở rộng sang các định dạng nhị phân máy tính (như Windows PE, Linux ELF) hoặc nền tảng iOS.
Phân tích và thiết kế giải pháp
Phân tích hiện trạng
Các kỹ thuật phân tích mã độc hiện hành được chia thành ba nhóm chính: phân tích tĩnh (Static Analysis), phân tích động (Dynamic Analysis) và phân tích lai (Hybrid Analysis).
| Tiêu chí |
Phân tích Tĩnh (Static Analysis) |
Phân tích Động (Dynamic Analysis) |
Giải pháp Đề xuất (Text-Based Hybrid NLP) |
| Công cụ đại diện |
ANASTASIA, DroidAPIMiner, AndroGuard |
DroidScope, DroidADDMiner, DroidBox |
AndroPyTool + NNLM Continuous Embedding |
| Thời gian phân tích |
Cực nhanh (< 30 giây/APK) |
Chậm (2 - 5 phút/APK do chạy Sandbox) |
Cân bằng (Trích xuất đa luồng + Dự đoán tức thì) |
| Khả năng chống Obfuscation |
Kém (Dễ bị bypass bởi reflection, packing) |
Cao (Bắt được hành vi runtime) |
Rất cao (Học biểu diễn ngữ nghĩa từ log JSON) |
| Bùng nổ số chiều |
Rất cao với N-gram/One-hot |
Trung bình |
Thấp (Nhúng vector cố định 128 chiều) |
| Tỷ lệ chính xác (Accuracy) |
88.0% - 94.5% |
95.0% - 98.0% |
99.02% |
Hệ thống xác định các yêu cầu kỹ thuật theo mô hình MoSCoW:
- Must have: Khả năng trích xuất đồng thời Permissions, Opcodes, API REST Call, Strace logs; mô hình phân loại đạt Accuracy > 98%; hệ thống Web upload và trả kết quả nhị phân (0: Benign, 1: Malware).
- Should have: Giao diện theo dõi log trích xuất thời gian thực (Real-time extraction log stream); hiển thị biểu đồ loss/accuracy.
- Could have: Khả năng gắn nhãn chi tiết họ mã độc (Family Classification: Banking, Adware, SMS).
- Won't have: Phân tích mã nguồn kernel-level rootkit không thể thực thi trong sandbox tiêu chuẩn.
Thiết kế hệ thống
Kiến trúc hệ thống được xây dựng theo mô hình module hóa khép kín:
+----------------------------------------------+
| NGƯỜI DÙNG / CLIENT GIAO DIỆN |
+----------------------------------------------+
| (Upload APK qua REST API)
v
+---------------------------------------------------------------------------------+
| MODULE TRÍCH XUẤT THUỘC TÍNH (ANDROPYTOOL) |
| +-------------------------+ +--------------------------+ +----------------+ |
| | AndroGuard & FlowDroid | | DroidBox & Strace | | VirusTotal API| |
| | (Permissions, Opcodes) | | (System Calls, NetLog) | | (Antivirus Rep)| |
| +-------------------------+ +--------------------------+ +----------------+ |
+---------------------------------------------------------------------------------+
|
v (Xuất file log thuộc tính JSON)
+---------------------------------------------------------------------------------+
| MODULE TIỀN XỬ LÝ & NHÚNG NGÔN NGỮ (NLP) |
| - Loại bỏ ký tự nhiễu, chuẩn hóa text stream |
| - Continuous-Space Word Embedding qua NNLM (128 Dimensions) |
+---------------------------------------------------------------------------------+
|
v (Dense Feature Vector)
+---------------------------------------------------------------------------------+
| MÔ HÌNH HỌC SÂU (DEEP LEARNING CLASSIFIER) |
| - Fully Connected Dense Layers + Activation ReLU |
| - Output Sigmoid Layer + Hàm quyết định ngưỡng mean() |
+---------------------------------------------------------------------------------+
|
v (Kết quả: Benign / Malware)
+----------------------------------------------+
| DATABASE & FRONTEND DASHBOARD |
+----------------------------------------------+
Technology Stack và Phiên bản
- Môi trường lõi: Python
3.8.10, Anaconda Environment.
- Deep Learning Framework: TensorFlow
2.10.1, TensorFlow Hub 0.12.0, Keras 2.10.0.
- Thao tác & Tính toán dữ liệu: NumPy
1.22.4, Pandas 1.4.3, Scikit-Learn 1.1.2.
- Công cụ phân tích APK: AndroPyTool (Tích hợp DroidBox, FlowDroid, Strace, AndroGuard
3.4.0a1).
- Cơ sở dữ liệu & Triển khai: MongoDB
5.0, Docker Engine 20.10.21, Flask Framework 2.2.2.
Thiết kế Schema Dữ liệu và API
Cấu trúc file JSON trích xuất đặc trưng từ APK:
{
"app_name": "Sample_Malware.apk",
"static_analysis": {
"permissions": ["android.permission.SEND_SMS", "android.permission.RECEIVE_BOOT_COMPLETED"],
"opcodes": ["const/4", "invoke-virtual", "move-result-object", "return-void"],
"api_calls": ["Landroid/telephony/SmsManager;->sendTextMessage", "Ljava/lang/Class;->forName"]
},
"dynamic_analysis": {
"system_calls": ["sys_open", "sys_read", "sys_connect"],
"network_http": ["POST /api/v1/c2_server HTTP/1.1"]
},
"label": 1
}
Hệ thống cung cấp hai REST API endpoints chính:
POST /api/v1/scan: Nhận file binary APK, đẩy vào hàng đợi phân tích của AndroPyTool.
GET /api/v1/report/{task_id}: Trả về trạng thái phân tích, log chi tiết và xác suất mã độc từ mô hình Deep Learning.
Methodology
Quy trình phát triển tuân thủ phương pháp Agile Scrum chia thành 5 giai đoạn (Milestones):
- Giai đoạn 1 (09/2022 - 10/2022): Thiết lập môi trường Anaconda, cấu hình GPU CUDA, khảo sát các công cụ trích xuất mã độc.
- Giai đoạn 2 (10/2022 - 12/2022): Thu thập tập mẫu APK thô, thiết kế kiến trúc tiền xử lý NLP ban đầu.
- Giai đoạn 3 (12/2022 - 02/2023): Pipeline trích xuất đặc trưng với AndroPyTool chạy trên môi trường giả lập DroidBox.
- Giai đoạn 4 (02/2023 - 04/2023): Tinh chỉnh cấu trúc mạng NNLM, xây dựng các mô hình đối chứng (CNN, BiLSTM, CNN-GRU).
- Giai đoạn 5 (05/2023 - 06/2023): Đánh giá hiệu năng, đóng gói hệ thống Web dashboard và viết tài liệu nghiệm thu.
Quản trị rủi ro: Xử lý nguy cơ tệp APK chứa mã khai thác thoát khỏi sandbox (sandbox escape) bằng cách cô lập toàn bộ quá trình trích xuất động trong Docker Container không có quyền truy cập root vào máy chủ lưu trữ.
Implementation và kết quả
Development process
Quá trình tiền xử lý chuyển đổi trực tiếp các file JSON đặc trưng thô thành dòng văn bản thuần túy (text stream). Lớp hub.KerasLayer nạp trực tiếp mô hình ngôn ngữ đã được tiền huấn luyện từ TensorFlow Hub (google/nnlm-en-dim128/2), ánh xạ mỗi chuỗi thuộc tính thành một vector 128 chiều mà không cần duy trì từ điển từ vựng rời rạc (vocabulary-free mapping).
import tensorflow as tf
import tensorflow_hub as hub
from tensorflow.keras import layers, models
def build_text_malware_detector():
# Sử dụng pre-trained Neural Network Language Model từ TensorFlow Hub
embedding_layer = hub.KerasLayer(
"https://tfhub.dev/google/nnlm-en-dim128/2",
input_shape=[],
dtype=tf.string,
trainable=True,
name="nnlm_embedding"
)
model = models.Sequential([
embedding_layer,
layers.Dense(64, activation='relu', kernel_regularizer=tf.keras.regularizers.l2(0.001)),
layers.Dropout(0.3),
layers.Dense(16, activation='relu'),
layers.Dense(1, activation='sigmoid', name="malware_probability")
])
model.compile(
optimizer=tf.keras.optimizers.Adam(learning_rate=0.001),
loss='binary_crossentropy',
metrics=['accuracy', tf.keras.metrics.Precision(), tf.keras.metrics.Recall()]
)
return model
Hàm quyết định nhị phân cuối cùng dựa trên ngưỡng trung bình động:
$$\hat{y} = \begin{cases} 1 & \text{nếu } P(\text{Malware} \mid x) \ge \text{threshold} \ 0 & \text{nếu } P(\text{Malware} \mid x) < \text{threshold} \end{cases}$$
Testing và validation
Tập dữ liệu thực nghiệm gồm 10,240 tệp APK (5,120 mẫu Malware lấy từ Drebin, VirusShare, MalwareDB và 5,120 mẫu Benign thu thập từ Google Play Store) được phân chia theo tỷ lệ: 80% Training (8,192 mẫu), 10% Validation (1,024 mẫu), 10% Testing (1,024 mẫu).
Mô hình NNLM:
Training Accuracy : [==============================] 99.45% - Loss: 0.021
Validation Accuracy : [==============================] 99.02% - Loss: 0.038
False Positive Rate : 0.48% | False Negative Rate : 0.50%
| Mô hình Deep Learning |
Training Accuracy (%) |
Validation Accuracy (%) |
Training Time / Epoch (s) |
Kích thước Model (MB) |
| NNLM (Proposed) |
99.45 |
99.02 |
14.2 |
18.4 |
| Simple CNN-GRU |
97.80 |
96.45 |
45.8 |
32.6 |
| Standard CNN |
96.20 |
95.10 |
22.5 |
24.1 |
| BiLSTM |
98.10 |
97.30 |
78.4 |
46.2 |
BIỂU ĐỒ SO SÁNH ĐỘ CHÍNH XÁC VÀ THỜI GIAN
Accuracy (%) Training Time/Epoch (s)
100 +--------------------------+ 99.02% 80 +--------------------------+ 78.4s
98 | ====== | 60 | ======|
96 | ====== | 40 | ====== |
94 | ====== | 20 | ====== | 14.2s
0 +--------------------------+ 0 +--------------------------+
CNN CNN-GRU NNLM NNLM CNN CNN-GRU BiLSTM
Kết quả đạt được
- Vượt trội về độ chính xác: Mô hình NNLM đạt độ chính xác 99.02%, cải thiện từ 1.72% đến 3.92% so với các cấu trúc Deep Learning thông thường (CNN, BiLSTM) nhờ khả năng xử lý ngữ cảnh chuỗi văn bản không bị giới hạn độ dài.
- Tối ưu tài nguyên: Thời gian huấn luyện mỗi epoch của NNLM chỉ mất 14.2 giây (nhanh hơn BiLSTM gấp 5.5 lần) và kích thước lưu trữ chỉ 18.4 MB, hoàn toàn khả thi để nhúng vào các hệ thống quét biên (Edge Security Appliances).
- Hoàn thành hệ thống Web: Xây dựng thành công hệ thống Web Dashboard cho phép người dùng kéo thả file APK, theo dõi log phân tích trực tiếp và nhận kết luận mã độc kèm mức độ tin cậy trong thời gian dưới 90 giây đối với chế độ phân tích đầy đủ.
Đổi mới và đóng góp
- Chuyển đổi Paradigm trong biểu diễn đặc trưng APK: Thay thế hoàn toàn cách tiếp cận trích xuất đặc trưng bảng (Tabular Feature Matrix) truyền thống bằng cơ chế Continuous-Space Text Embedding. Điều này loại bỏ hoàn toàn chi phí tính toán khi không gian mẫu thay đổi hoặc xuất hiện quyền/API mới.
- Tích hợp đa nguồn phân tích toàn diện: Sử dụng AndroPyTool kết hợp sức mạnh phân tích tĩnh của AndroGuard, phân tích luồng dữ liệu của FlowDroid, theo dõi cuộc gọi hệ thống thời gian chạy của Strace và môi trường DroidBox.
- Giảm thiểu tỷ lệ báo động giả (False Positive Rate): Đạt tỷ lệ FPR cực thấp (0.48%) so với mức 1.2% của các nghiên cứu tương đương như Blanc et al. (Random Forest) hay 0.8% của ANASTASIA.
- Đóng góp mã nguồn và bộ dữ liệu: Xây dựng tập dữ liệu log thuộc tính JSON chuẩn hóa phục vụ cho các nghiên cứu tiếp theo của sinh viên và chuyên gia an toàn thông tin tại Đại học Công nghệ Thông tin - ĐHQG TP.HCM.
Ứng dụng thực tế và triển khai
Kịch bản ứng dụng (Use Cases)
- Cổng kiểm duyệt ứng dụng tự động (App Store Security Gate): Tích hợp vào quy trình CI/CD của các kho ứng dụng doanh nghiệp nhằm tự động rà quét các tệp
.apk trước khi phát hành.
- Hệ thống phân tích mã độc tại Trung tâm SOC (Security Operation Center): Hỗ trợ các kỹ sư phân tích mã độc (Malware Analysts) tự động trích xuất thuộc tính và phân loại nhanh các mẫu nghi vấn thu thập từ thiết bị người dùng.
QUY TRÌNH TRIỂN KHAI VỚI DOCKER COMPOSE
+----------------------+ +----------------------+
| NGINX Web Server | ----------> | Flask API Controller |
| (Port 80 / 443) | | (Gunicorn WSGI) |
+----------------------+ +----------------------+
|
+----------------------------+----------------------------+
v v
+----------------------+ +----------------------+
| AndroPyTool Worker | | TensorFlow Serving |
| (Docker Sandbox Env) | | (NNLM Model Engine) |
+----------------------+ +----------------------+
| |
+----------------------------+----------------------------+
v
+----------------------+
| MongoDB Cluster |
| (Log & Scan Data) |
+----------------------+
Hướng dẫn cài đặt và cấu hình
# 1. Clone repository và chuẩn bị môi trường
git clone https://github.com/alexMyG/AndroPyTool.git
cd AndroPyTool
# 2. Xây dựng môi trường sandbox Docker cho phân tích APK
docker build -t andropytool_env .
# 3. Chạy container trích xuất dữ liệu
docker run --volume /path/to/apks:/apks andropytool_env -s /apks/ -all
# 4. Khởi động Web Application & Inference Engine
python app.py --host=0.0.0.0 --port=5000 --model_path=./models/nnlm_malware.h5
Phân tích Hiệu quả Đầu tư (ROI)
Triển khai hệ thống tự động giúp giảm thời gian phân tích thủ công của chuyên gia an ninh từ trung bình 45 phút/mẫu xuống dưới 2 phút/mẫu (tiết kiệm hơn 95% thời gian xử lý), giảm thiểu chi phí vận hành cho trung tâm giám sát an toàn thông tin (SOC).
Hạn chế và hướng phát triển
Hạn chế kỹ thuật
- Chi phí thời gian của Sandbox động: Quá trình phân tích động bằng DroidBox/Strace yêu cầu khởi động emulator Android, dẫn đến thời gian xử lý kéo dài (từ 60 đến 180 giây cho mỗi tệp APK).
- Cơ chế chống giả lập tinh vi (Anti-Emulation): Một số biến thể mã độc thương mại có khả năng phát hiện môi trường QEMU/DroidBox và ngừng thực thi các hành vi độc hại, dẫn đến việc thiếu hụt log động.
Hướng phát triển tương lai
- Nghiên cứu áp dụng kiến trúc Transformer (BERT, RoBERTa) được tiền huấn luyện chuyên biệt trên tập dữ liệu mã máy Dalvik (Smali / Bytecode).
- Mở rộng hệ thống để phân loại đa lớp (Multi-class Classification) nhằm chỉ định chính xác họ mã độc (vd: Ransomware, Spyware, Banking Trojan, Botnet).
- Tối ưu hóa pipeline trích xuất động bằng các kỹ thuật hooking thời gian thực như Frida hoặc eBPF trên thiết bị Android vật lý để tăng tốc độ xử lý.
Đối tượng hưởng lợi
+-----------------------------------------------------------------------------------+
| ĐỐI TƯỢNG HƯỞNG LỢI |
+-----------------------------------------------------------------------------------+
| 1. Sinh viên ngành An toàn Thông tin / Khoa học Máy tính: |
| - Tài liệu tham khảo toàn diện về ứng dụng NLP trong phân tích mã độc. |
| - Pipeline mẫu kết hợp công cụ trích xuất mã độc với TensorFlow Hub. |
| |
| 2. Kỹ sư Phát triển Ứng dụng & An ninh mạng (Security Devs): |
| - Kiến trúc phân tích APK tự động hóa, dễ dàng tích hợp qua REST API. |
| - Cung cấp mô hình Deep Learning nhỏ gọn (18.4 MB) với độ trễ thấp. |
| |
| 3. Doanh nghiệp và Tổ chức Tài chính: |
| - Giải pháp phòng chống rủi ro gian lận và đánh cắp dữ liệu người dùng. |
| - Cắt giảm 95% thời gian thẩm định an ninh ứng dụng di động nội bộ. |
| |
| 4. Nhà nghiên cứu (Researchers): |
| - Bộ số liệu thực nghiệm chuẩn xác so sánh giữa NNLM, CNN, BiLSTM, CNN-GRU. |
| - Hướng tiếp cận mới trong việc xử lý văn bản phi cấu trúc từ log nhị phân. |
+-----------------------------------------------------------------------------------+
Câu hỏi thường gặp
1. Yêu cầu phần cứng tối thiểu để triển khai hệ thống là gì?
Máy chủ cần tối thiểu CPU 4 Cores, 16GB RAM (đáp ứng việc chạy đồng thời Android Emulator DroidBox trong Docker), 50GB dung lượng ổ cứng SSD. Để huấn luyện lại mô hình với 10,000+ mẫu APK, khuyến nghị sử dụng GPU hỗ trợ CUDA (như NVIDIA GTX 1660 hoặc Tesla T4 trở lên).
2. Mô hình xử lý thế nào đối với các ứng dụng bị làm rối mã (Obfuscated APK)?
Hệ thống sử dụng phương pháp phân tích lai (Hybrid Analysis). Khi mã nguồn tĩnh bị làm rối (làm mất tên hàm, mã hóa chuỗi), phân tích động thông qua Strace và DroidBox vẫn ghi nhận toàn bộ các lệnh gọi hàm hệ thống thực tế (system calls), truy vấn mạng và hành vi cấp quyền thời gian chạy. Toàn bộ log này được bộ nhúng NNLM ánh xạ thành chuỗi ngữ nghĩa, giúp mô hình nhận diện chính xác ý đồ tấn công.
3. Có thể tích hợp mô hình này vào hệ thống kiểm thử tự động (CI/CD) không?
Hoàn toàn có thể. Nhờ thiết kế theo kiến trúc Microservices với REST API chuẩn hóa, bạn có thể gọi endpoint POST /api/v1/scan ngay trong các pipeline Jenkins, GitHub Actions hoặc GitLab CI để tự động chặn các bản build APK không an toàn.
4. Chi phí bản quyền phần mềm và công cụ sử dụng trong đề tài là bao nhiêu?
Toàn bộ giải pháp được xây dựng trên nền tảng mã nguồn mở (Python, TensorFlow, AndroGuard, AndroPyTool, Docker, MongoDB) nên chi phí bản quyền phần mềm là 0 VNĐ. Doanh nghiệp chỉ cần đầu tư hạ tầng phần cứng hoặc máy chủ đám mây (Cloud Server) để vận hành.
5. Tại sao mô hình NNLM lại có tốc độ huấn luyện nhanh hơn đáng kể so với BiLSTM?
BiLSTM phải xử lý tuần tự từng bước thời gian (time-step) theo cả hai chiều tiến và lùi, gây nghẽn cổ chai tính toán song song trên GPU. Ngược lại, mô hình NNLM chiếu trực tiếp toàn bộ chuỗi văn bản vào không gian nhúng liên tục (Continuous-space Embedding) thông qua bảng tra cứu vector và mạng truyền thẳng (Feed-Forward Neural Network), tối ưu hóa triệt để khả năng xử lý song song của phần cứng.
Kết luận
Đồ án "Nhận diện mã độc Android dựa trên xử lý văn bản" đã chứng minh tính khả thi và hiệu quả vượt trội của việc ứng dụng các mô hình xử lý ngôn ngữ tự nhiên Deep Learning trong lĩnh vực an toàn thông tin di động. Bằng cách kết hợp cơ chế trích xuất đặc trưng lai toàn diện với mô hình nhúng ngôn ngữ NNLM, hệ thống đạt độ chính xác ấn tượng 99.02% trên tập dữ liệu hơn 10,000 mẫu APK, đồng thời khắc phục triệt để hiện tượng bùng nổ số chiều của các phương pháp truyền thống.
Công trình không chỉ mang giá trị học thuật cao trong việc đổi mới phương pháp biểu diễn dữ liệu mã độc mà còn đem lại giá trị thực tiễn to lớn thông qua nền tảng Web quét mã độc tự động, sẵn sàng triển khai bảo vệ người dùng và doanh nghiệp trước các hiểm họa an ninh mạng phức tạp trên nền tảng Android.