Giới thiệu dự án

Sự bùng nổ của kỷ nguyên số đã đưa điện thoại thông minh trở thành thiết bị thiết yếu trong đời sống thường nhật. Theo số liệu thống kê từ Statista, thế giới hiện có hơn 6,567 tỷ người dùng smartphone, chiếm 83,72% dân số toàn cầu. Trong đó, hệ điều hành mã nguồn mở Android giữ vị trí thống lĩnh với hơn 75% thị phần và hơn 2,8 triệu người dùng hoạt động. Tuy nhiên, tính chất mở cùng cơ chế cho phép cài đặt ứng dụng từ các nguồn bên thứ ba (sideloading) đã khiến Android trở thành mục tiêu hàng đầu của tội phạm mạng. Báo cáo an ninh từ Kaspersky chỉ ra rằng có tới hơn 99% các biến thể mã độc di động nhắm trực tiếp vào hệ điều hành Android, với gần 3,5 triệu gói cài đặt độc hại được ghi nhận mỗi năm.

+-----------------------------------------------------------------------------------+
| THỰC TRẠNG AN NINH MÃ ĐỘC ANDROID                                                |
| - Thị phần hệ điều hành: Android chiếm ~75% toàn cầu                             |
| - Tỷ lệ mã độc di động tập trung vào Android: > 99%                              |
| - Số gói cài đặt độc hại phát hiện mới: ~3.5 triệu gói/năm                       |
| - Hạn chế cốt lõi: Bộ quét chữ ký truyền thống bất lực trước Zero-day & Biến thể  |
+-----------------------------------------------------------------------------------+

Phương pháp phát hiện mã độc truyền thống dựa trên chữ ký (Signature-based Detection) bộc lộ sự bất lực trước các dòng mã độc chưa biết (Zero-day) hoặc các biến thể đã được làm rối mã (obfuscation). Nhằm khắc phục hạn chế này, các giải pháp phòng thủ hiện đại đã chuyển dịch mạnh mẽ sang ứng dụng Học máy (Machine Learning - ML) và Học sâu (Deep Learning - DL). Mặc dù mang lại độ chính xác cao, các mô hình phân loại ML/DL lại tồn tại các "điểm mù" nghiêm trọng: chúng dễ dàng bị đánh lừa bởi các mẫu tấn công đối kháng (Adversarial Examples) được tạo ra từ Mạng sinh đối kháng (Generative Adversarial Networks - GAN).

Đồ án tốt nghiệp chuyên ngành An toàn thông tin tại Trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM với đề tài "Tìm hiểu phương pháp phát sinh mã độc Android bằng mạng sinh đối kháng" (A Study on Android Malware Generation by Using Generative Adversarial Networks) của nhóm tác giả Đoàn Minh Trung và Nguyễn Hoàng Kim Ngân (dưới sự hướng dẫn của TS. Nguyễn Tấn Cầm) đã tập trung nghiên cứu lỗ hổng bảo mật học máy này. Nghiên cứu đề xuất khung hệ thống AdvGAN nhằm tạo ra các mẫu mã độc biến thể có khả năng trốn tránh cực mạnh đối với các hệ thống phân loại hộp đen (Black-box Detectors), đồng thời bảo toàn 100% tính toàn vẹn và hành vi độc hại ban đầu của tập tin APK.

Mục tiêu nghiên cứu cụ thể

  1. Nghiên cứu cơ sở lý thuyết và cơ chế sinh mẫu đối kháng: Khảo sát toàn diện kiến trúc GAN, đánh giá cơ chế sinh dữ liệu nhị phân phục vụ tấn công trốn tránh trên không gian đặc tính Android.
  2. Thiết kế và hiện thực hệ thống AdvGAN hoàn chỉnh: Xây dựng quy trình tự động hóa khép kín từ trích xuất đặc tính tĩnh, sinh vector biến thể, sửa đổi mã nguồn trung gian (Smali), đóng gói và ký số APK đầu ra.
  3. Thực nghiệm và đánh giá độ bền vững của các mô hình phân loại: Kiểm thử 6 thuật toán học máy phổ biến gồm Support Vector Machines (SVM), Decision Tree (DT), Random Forest (RF), Logistic Regression (LR), eXtreme Gradient Boosting (XGBoost) và Convolutional Neural Networks (CNN).
  4. Đề xuất giải pháp tăng cường an ninh: Tái huấn luyện đối kháng (Adversarial Retraining) để lấp các điểm mù phân loại, nâng cao khả năng phát hiện mã độc biến thể trong thực tế.

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 Android hiện nay được chia thành ba hướng tiếp cận chính: Phân tích tĩnh (Static Analysis), Phân tích động (Dynamic Analysis) và Phân tích kết hợp (Hybrid Analysis).

Tiêu chí Phân tích tĩnh (Static) Phân tích động (Dynamic) Phân tích kết hợp (Hybrid) Đề xuất AdvGAN (Adversarial ML)
Cơ chế hoạt động Dịch ngược APK, phân tích Manifest & Bytecode Thực thi APK trong sandbox/máy ảo để theo dõi hành vi Kết hợp trích xuất đặc tính tĩnh và log thực thi động Dùng GAN tự động tối ưu hóa vector đặc tính để trốn tránh
Tốc độ xử lý Rất nhanh (vài giây/APK) Chậm (cần thời gian timeout thực thi) Trung bình Rất nhanh sau khi mô hình hội tụ
Độ an toàn Tuyệt đối an toàn (không chạy mã) Tiềm ẩn nguy cơ thoát máy ảo (sandbox escape) Cần môi trường cách ly nghiêm ngặt An toàn trong môi trường kiểm thử hộp đen
Khả năng bị trốn tránh Rất cao trước Obfuscation & GAN Bị vượt qua bởi kỹ thuật Anti-VM/Evasion Trung bình Tối ưu hóa chuyên biệt để bẻ gãy ranh giới phân loại
+------------------------------------------------------------------------------------+
| YÊU CẦU HỆ THỐNG THEO MÔ HÌNH MOSCOW                                               |
| - Must Have:                                                                       |
|   + Trích xuất tự động 4 nhóm đặc tính tĩnh từ AndroidManifest.xml.                |
|   + Bộ sinh (Generator) tạo vector đối kháng nhị phân chính xác.                   |
|   + Bảo toàn tính toàn vẹn thực thi: APK sau đột biến không bị crash khi cài đặt.  |
| - Should Have:                                                                     |
|   + Tương thích kiểm thử đa mô hình (SVM, DT, RF, LR, XGBoost, CNN).               |
|   + Tự động hóa kiểm tra hành vi ứng dụng thông qua Android Monkey runner.         |
| - Could Have:                                                                      |
|   + Mở rộng trích xuất đồ thị luồng điều khiển (Control Flow Graph).               |
| - Won't Have:                                                                      |
|   + Can thiệp trực tiếp vào mã khai thác nhị phân gốc (C/C++ Native NDK).          |
+------------------------------------------------------------------------------------+

Thiết kế hệ thống

Kiến trúc hệ thống AdvGAN được tổ chức thành 4 phân hệ liên hoàn, xử lý chuyển đổi dữ liệu từ không gian đặc tính (Feature Space) sang không gian bài toán thực tế (Problem Space).

graph TD
    A["Tập tin APK Mã độc Gốc"] --> B["Phân hệ Trích xuất Đặc tính"]
    B -->|"AndroidManifest.xml / Smali"| C["Vector Đặc tính Nhị phân x"]
    D["Vector Nhiễu Ngẫu nhiên z"] --> E["Bộ Sinh Generator (G)"]
    C --> E
    E -->|"Vector Đối kháng x_adv"| F["Bộ Phân biệt Surrogate (D)"]
    E -->|"Vector Đối kháng x_adv"| G["Trình Phát hiện Hộp đen (Black-Box)"]
    G -->|"Nhãn Phân loại (Benign/Malware)"| F
    F -->|"Tín hiệu Gradient / Loss Feedback"| E
    E -->|"Vector Tối ưu Hóa"| H["Phân hệ Đóng gói (Repackager)"]
    A --> H
    H -->|"apktool & smali injector"| I["Tập tin APK Đối kháng Mới"]
    I --> J["Phân hệ Kiểm định (Monkey / Emulator)"]
    J --> K["Báo cáo Tính Toàn vẹn & Tỷ lệ Trốn tránh"]

Công nghệ sử dụng

  • Ngôn ngữ & Thư viện lõi: Python 3.8, TensorFlow 2.x, Scikit-Learn, NumPy, Pandas.
  • Công cụ dịch ngược & Ký số: Apktool 2.6.x, Androguard 3.3.5, keytool, jarsigner, zipalign.
  • Môi trường giả lập & Kiểm định động: Android Studio Emulator, Genymotion, Android Debug Bridge (ADB), Android UI/Application Exerciser Monkey.

Cơ chế hàm mất mát (Loss Function)

Mô hình huấn luyện đối kháng tối ưu hóa thông qua bài toán cực tiểu - cực đại (Min-Max Game):

$$\min_{G} \max_{D} V(D, G) = \mathbb{E}{x \sim p{data}(x)}[\log D(x)] + \mathbb{E}{z \sim p{z}(z)}[\log(1 - D(G(z)))]$$

Trong bài toán phát sinh mã độc hộp đen, hàm mất mát của Bộ sinh $G$ được tùy biến nhằm tối đa hóa xác suất Trình phát hiện hộp đen gắn nhãn mẫu độc hại thành mẫu lành tính (Benign):

$$\mathcal{L}{G} = \mathbb{E}{z \sim p_{z}, x \sim p_{mal}} [\log(1 - D(x \oplus G(z, x)))] + \lambda \cdot \mathcal{L}_{reg}$$

Trong đó toán tử $\oplus$ biểu thị phép bổ sung đặc tính (chỉ cho phép chuyển bit $0 \rightarrow 1$, tuyệt đối không xóa đặc tính $1 \rightarrow 0$ nhằm duy trì chức năng phá hoại của mã độc).

import tensorflow as tf
from tensorflow.keras import layers

def build_generator(feature_dim, noise_dim):
    """
    Xây dựng kiến trúc Generator cho AdvGAN
    Đầu vào: Vector đặc tính gốc (feature_dim) + Vector nhiễu z (noise_dim)
    Đầu ra: Vector đột biến nhị phân x_adv (giá trị 0 hoặc 1)
    """
    input_feat = layers.Input(shape=(feature_dim,), name="malware_features")
    input_noise = layers.Input(shape=(noise_dim,), name="noise_vector")
    
    # Kết hợp vector đặc tính và vector nhiễu
    x = layers.concatenate([input_feat, input_noise])
    x = layers.Dense(256, activation="relu")(x)
    x = layers.BatchNormalization()(x)
    x = layers.Dense(512, activation="relu")(x)
    x = layers.BatchNormalization()(x)
    x = layers.Dense(feature_dim, activation="sigmoid")(x)
    
    # Phép toán logic OR: Đảm bảo chỉ thêm tính năng (0 -> 1), không xóa tính năng gốc
    output_adv = layers.Maximum(name="feature_addition")([input_feat, x])
    
    model = tf.keras.Model(inputs=[input_feat, input_noise], outputs=output_adv, name="AdvGAN_Generator")
    return model

Methodology

Quy trình phát triển được xây dựng dựa trên mô hình nghiên cứu lặp Agile-Security với 4 giai đoạn chính:

+------------------------------------------------------------------------------------+
| LỘ TRÌNH THỰC HIỆN DỰ ÁN (PROJECT TIMELINE)                                        |
| [Giai đoạn 1] Thu thập & Tiền xử lý dữ liệu APK (Drebin, InSecLab Repository)      |
| [Giai đoạn 2] Xây dựng Pipeline Trích xuất Vector & Huấn luyện 6 Baseline Classifiers|
| [Giai đoạn 3] Thiết kế mạng AdvGAN, Tối ưu hóa Bộ sinh & Bộ phân biệt Surrogate     |
| [Giai đoạn 4] Đóng gói APK tự động, Kiểm thử hộp đen & Đánh giá Tái huấn luyện      |
+------------------------------------------------------------------------------------+

Implementation và kết quả

Development process

Quá trình trích xuất đặc tính bóc tách tự động 4 không gian đặc tính tĩnh cốt lõi từ AndroidManifest.xml:

  1. Permissions: Các quyền nhạy cảm (SEND_SMS, READ_PHONE_STATE, INTERNET, RECORD_AUDIO).
  2. Intents Actions: Chuỗi hành động phát tín hiệu (ACTION_POWER_DISCONNECTED, BOOT_COMPLETED).
  3. Services: Các thành phần chạy nền phục vụ duy trì kết nối C2 (LocationService, FCMMessageService).
  4. Intents Categories: Danh mục định tuyến intent (DEFAULT, LAUNCHER).
# Trích đoạn mã Smali được chèn tự động vào APK đột biến để thỏa mãn đặc tính mới
.class public Lcom/sec/adversarial/DummyReceiver;
.super Landroid/content/BroadcastReceiver;
.source "DummyReceiver.java"

.method public onReceive(Landroid/content/Context;Landroid/content/Intent;)V
    .registers 3
    # Dummy logic to bypass dead-code pruning
    return-void
.end method
+------------------------------------------------------------------------------------+
| BẢO TOÀN CẤU TRÚC KHI ĐỘT BIẾN APK (CASE STUDY: FLU_BOT MALWARE)                   |
| Số dòng mã trước sửa đổi: 139 dòng                                                 |
| Số dòng mã sau sửa đổi   : 140 dòng                                                 |
| Số dòng khác biệt        : 2 dòng (~1.44% độ lệch)                                  |
| Trạng thái kiểm định     : Cài đặt thành công, kích hoạt payload độc hại chính xác  |
+------------------------------------------------------------------------------------+

Testing và validation

Nghiên cứu tiến hành đánh giá hiệu năng phát hiện trên hai chỉ số then chốt:

  • ODR (Original Detection Rate): Tỷ lệ phát hiện trên tập mẫu mã độc nguyên bản ban đầu.
  • ADR (Adversarial Detection Rate): Tỷ lệ phát hiện sau khi mẫu mã độc được đột biến bởi AdvGAN.
+-----------------------------------------------------------------------------------+
| SO SÁNH TỶ LỆ PHÁT HIỆN TRƯỚC VÀ SAU ĐỘT BIẾN ADVGAN                              |
|                                                                                   |
|  100% |============================== ODR: 96.8% - 99.2%                          |
|   80% |                                                                           |
|   60% |                                                                           |
|   40% |                                                                           |
|   20% |                                                                           |
|    0% |___._______.___._______.___._______.___._______.___._______.___. ADR: 0% - 1.2%
|        SVM         DT          RF          LR        XGBoost      CNN             |
+-----------------------------------------------------------------------------------+
Thuật toán Phân loại Độ chính xác gốc (ODR %) Tỷ lệ phát hiện đối kháng (ADR %) Tỷ lệ đánh lừa thành công (%) Độ chính xác sau Tái huấn luyện (%)
Support Vector Machines (SVM) 97.45% 0.00% 100.00% 98.12%
Decision Tree (DT) 96.10% 1.20% 98.80% 97.05%
Random Forest (RF) 99.15% 0.45% 99.55% 99.30%
Logistic Regression (LR) 96.80% 0.00% 100.00% 97.80%
eXtreme Gradient Boosting (XGBoost) 98.90% 0.15% 99.85% 99.10%
Convolutional Neural Networks (CNN) 98.50% 0.00% 100.00% 98.95%

Kết quả đạt được

  1. Hiệu quả triệt tiêu năng lực phát hiện: Các mẫu sinh bởi AdvGAN đã hạ gục toàn bộ 6 mô hình phân loại máy học từ mức nhận diện trên 96% xuống xấp xỉ 0.00% - 1.20%, chứng minh điểm mù của ranh giới quyết định tuyến tính và phi tuyến tính.
  2. Khả năng thực thi 100%: Kiểm thử tự động qua Android Monkey với 1,000 sự kiện ngẫu nhiên trên các dòng mã độc thực tế (FluBot, Banker Spy, Banker BRATA) xác nhận các tệp APK đầu ra không bị lỗi cú pháp, vượt qua cơ chế xác thực chứng chỉ của hệ điều hành.
  3. Phòng thủ vững chắc thông qua Tái huấn luyện: Sau khi cập nhật các mẫu đối kháng vào tập dữ liệu và tái huấn luyện mô hình, độ chính xác nhận diện tổng thể phục hồi vượt ngưỡng 98%, loại bỏ hoàn toàn các vector trốn tránh trước đó.

Đổi mới và đóng góp

  • Cầu nối hoàn chỉnh giữa Feature Space và Problem Space: Khắc phục nhược điểm của các nghiên cứu lý thuyết trước đây (chỉ biến đổi vector số học trên giấy mà không sinh được file APK chạy được). AdvGAN tự động sửa đổi mã nguồn Smali, cập nhật tệp Manifest và ký số APK thực tế.
  • Bảo toàn hàm độc lực tuyệt đối (Functionality Preservation): Áp dụng phép toán hạn chế gradient chỉ cho phép bổ sung tính năng giả lập vô hại (Dead-code / Dummy components), đảm bảo mã độc không bao giờ bị mất đi quyền hạn hay hành vi ban đầu.
  • Khung đánh giá độ bền vững học máy toàn diện: Cung cấp bộ tiêu chuẩn thực nghiệm chuẩn hóa giúp các trung tâm SOC và nhà cung cấp phần mềm diệt virus kiểm tra độ bền vững của mô hình AI trước khi đưa vào sản xuất.

Ứng dụng thực tế và triển khai

Kịch bản ứng dụng

  • Tăng cường năng lực Red Team & SOC: Tự động tạo hàng ngàn biến thể mã độc phục vụ diễn tập thực chiến, đánh giá khả năng phản ứng của hệ thống giám sát SIEM/EDR di động.
  • Kiểm thử tự động trên Kho ứng dụng (App Store Auditing): Hỗ trợ Google Play Protect và các chợ ứng dụng doanh nghiệp phát hiện sớm các kỹ thuật trốn tránh tinh vi.
  • Tăng cường tập dữ liệu huấn luyện (Data Augmentation): Bổ sung mẫu đối kháng vào tập huấn luyện của các công cụ Antivirus để nâng cao khả năng miễn dịch của hệ thống.
+------------------------------------------------------------------------------------+
| CẤU HÌNH HỆ THỐNG YÊU CẦU ĐỂ TRIỂN KHAI PIPELINE                                   |
| - Phần cứng: CPU Intel Core i7/Xeon 8 Cores, 32GB RAM, GPU NVIDIA RTX 3080 / T4   |
| - Hệ điều hành: Ubuntu Linux 20.04 LTS / 22.04 LTS                                 |
| - Môi trường: Java OpenJDK 11, Python 3.8 Virtualenv, Android SDK Build Tools 30+ |
| - Hiệu năng xử lý: ~15 - 25 giây cho toàn bộ chu trình xử lý 1 APK                |
+------------------------------------------------------------------------------------+

Hạn chế và hướng phát triển

Hạn chế kỹ thuật

  1. Phụ thuộc vào đặc tính tĩnh: Chưa tích hợp biến đổi đồ thị lệnh gọi hệ thống động (System Call Traces) trong thời gian thực.
  2. Kích thước file APK tăng nhẹ: Việc chèn thêm các class Smali giả lập làm tăng dung lượng file APK từ 2% đến 8%.

Hướng phát triển tương lai

  • Kết hợp kỹ thuật Học tăng cường (Deep Reinforcement Learning) để tối ưu hóa chuỗi biến đổi mã nhị phân.
  • Mở rộng phạm vi trích xuất đặc tính sang đồ thị luồng điều khiển (Control Flow Graphs - CFG) và phân tích hành vi mạng thời gian thực.

Đối tượng hưởng lợi

+------------------------------------------------------------------------------------+
| GIÁ TRỊ MANG LẠI CHO CÁC NHÓM ĐỐI TƯỢNG                                            |
|                                                                                    |
| [Sinh viên & Học viên]                                                             |
|   -> Nắm vững phương pháp luận kết hợp giữa An toàn thông tin và Trí tuệ nhân tạo. |
|                                                                                    |
| [Kỹ sư An toàn thông tin & Malware Analysts]                                       |
|   -> Sở hữu công cụ tự động hóa kiểm thử mã độc và đánh giá độ bền vững AI.        |
|                                                                                    |
| [Doanh nghiệp & Đơn vị phát triển Antivirus]                                      |
|   -> Tối ưu hóa chi phí R&D, nâng cao tỷ lệ phát hiện biến thể lên > 98%.          |
+------------------------------------------------------------------------------------+

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

1. Yêu cầu kỹ thuật cốt lõi để triển khai hệ thống AdvGAN là gì?

Hệ thống yêu cầu máy chủ chạy hệ điều hành Linux (khuyến nghị Ubuntu 20.04+), trang bị GPU NVIDIA có hỗ trợ CUDA, môi trường Python 3.8+ cài đặt TensorFlow/Keras, Java Development Kit (JDK 11) cùng các công cụ dịch ngược apktoolandroguard.

2. Làm thế nào hệ thống đảm bảo ứng dụng sau khi đột biến không bị hỏng cấu trúc (crash)?

AdvGAN áp dụng cơ chế đột biến một chiều (One-way Feature Addition) thông qua việc chỉ chèn thêm các khai báo thành phần hợp lệ vào AndroidManifest.xml và tạo mã Smali rỗng (dummy classes) tương ứng, tuyệt đối không xóa bỏ các thành phần và quyền hạn hiện hữu của tệp APK gốc.

3. Phương pháp AdvGAN có áp dụng được cho mã độc trên hệ điều hành iOS không?

Về mặt lý thuyết, kiến trúc GAN đối kháng hoàn toàn có thể áp dụng cho iOS. Tuy nhiên, do cấu trúc đóng gói .ipa và cơ chế phân quyền, kiểm duyệt mã nghiêm ngặt của Apple, kỹ thuật trích xuất đặc tính và công cụ đóng gói lại sẽ cần được thiết kế lại chuyên biệt cho nền tảng iOS.

4. Tái huấn luyện đối kháng (Adversarial Retraining) có làm giảm độ chính xác trên các ứng dụng lành tính không?

Thực nghiệm chứng minh rằng khi đưa tập mẫu đối kháng vào huấn luyện lại với tỷ lệ phân bổ cân bằng, mô hình phân loại không những duy trì được độ chính xác trên tập dữ liệu lành tính (> 98.5%) mà còn gia tăng đáng kể khả năng nhận diện các biến thể trốn tránh mới.

5. Chi phí và thời gian cần thiết để sinh một mẫu APK đối kháng là bao nhiêu?

Sau khi mô hình GAN hoàn tất quá trình huấn luyện (mất khoảng 2 - 4 giờ trên GPU đơn nhiệm), thời gian để tạo vector đột biến, chèn mã Smali, đóng gói và ký số cho một tệp APK chỉ mất trung bình từ 15 đến 25 giây.


Kết luận

Đề tài khóa luận tốt nghiệp "Tìm hiểu phương pháp phát sinh mã độc Android bằng mạng sinh đối kháng" đã giải quyết thành công bài toán đánh giá độ bền vững của các mô hình học máy phát hiện mã độc di động. Bằng việc xây dựng thành công khung hệ thống AdvGAN hoàn chỉnh, nhóm nghiên cứu đã chứng minh rằng các mô hình học máy hiện đại hoàn toàn có thể bị vô hiệu hóa nếu không được thiết kế có tính toán đến các kịch bản tấn công đối kháng.

Kết quả nghiên cứu không chỉ mang giá trị học thuật xuất sắc trong việc kết hợp giữa AI và An toàn thông tin, mà còn cung cấp giải pháp thực tiễn giúp các chuyên gia an ninh mạng, kỹ sư bảo mật và các nhà cung cấp giải pháp Antivirus chủ động nâng cao năng lực phòng thủ, bảo vệ người dùng trước các mối đe dọa mã độc thế hệ mới.