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

Trong bối cảnh công nghệ thông tin phát triển nhanh chóng, Android đã trở thành hệ điều hành phổ biến hàng đầu trên các thiết bị di động thông minh. Do các thiết bị di động ngày càng lưu trữ nhiều thông tin cá nhân và dữ liệu nhạy cảm, chúng trở thành mục tiêu tấn công của tin tặc thông qua phần mềm độc hại (Malware), ứng dụng lừa đảo (Phishing) và các lỗ hổng bảo mật (Vulnerabilities). Mặc dù kho ứng dụng chính thức Google Play Store cung cấp mức độ an toàn cao, người dùng vẫn thường xuyên cài đặt ứng dụng từ các nguồn bên thứ ba thông qua tệp APK vì nhiều lý do thực tế: ứng dụng bị giới hạn khu vực địa lý, chưa phát hành chính thức, ứng dụng tính phí cao, các bản sửa đổi (mod) trò chơi, hoặc phục vụ kiểm thử trong quá trình phát triển phần mềm. Việc cài đặt trực tiếp các tệp APK không qua kiểm duyệt tiềm ẩn nguy cơ an ninh nghiêm trọng. Do đó, việc xây dựng các công cụ hỗ trợ kiểm thử xâm nhập (Penetration Testing) và đánh giá mức độ an toàn của ứng dụng Android là một nhu cầu cấp thiết.

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

  1. Nghiên cứu, đánh giá và kế thừa công cụ mã nguồn mở RiskInDroid để xây dựng phiên bản mở rộng mang tên RiskInDroid+.
  2. Phát triển hệ thống tính toán chỉ số rủi ro (Risk score) của các tệp APK dựa trên cơ chế phân tích quyền truy cập (Permissions) và ứng dụng các mô hình học máy.
  3. Bổ sung các tính năng tương tác trực tiếp với thiết bị di động Android thông qua giao diện web, hỗ trợ người dùng trích xuất và kiểm thử nhanh các ứng dụng đã cài đặt.

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

  • Đối tượng nghiên cứu: Các chỉ số đo lường mức độ nguy hại của ứng dụng Android từ tệp APK; hệ thống quyền truy cập (Permissions) của ứng dụng Android và mối liên hệ của chúng với rủi ro bảo mật.
  • Phạm vi nghiên cứu:
    • Phân tích quyền truy cập: Thực hiện dịch ngược và trích xuất danh mục quyền trong tệp APK, phân loại thành 4 nhóm quyền đặc trưng.
    • Mô hình tính toán rủi ro: Kế thừa và sử dụng các mô hình học máy đã được huấn luyện trên tập dữ liệu gồm 112.425 ứng dụng lành tính và hơn 6.000 mẫu mã độc.
    • Triển khai hệ thống: Tích hợp thuật toán vào ứng dụng web sử dụng ngôn ngữ Java và Python, bổ sung tính năng giao tiếp thiết bị qua Android Debug Bridge (ADB) và nâng giới hạn kích thước tệp tải lên đến 300MB.
    • Đánh giá thực nghiệm: Thống kê, phân tích đặc trưng quyền truy cập trên cơ sở dữ liệu có sẵn và so sánh chức năng với công cụ tiền nhiệm.

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

Khung lý thuyết và mô hình sử dụng

Khóa luận xây dựng nội dung dựa trên các nền tảng lý thuyết cốt lõi sau:

  • Kiến trúc hệ điều hành Android: Cấu trúc phân lớp 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 (ART/Dalvik), Thư viện Native C/C++, Java API Framework và Tầng ứng dụng hệ thống (System Apps).
  • Cấu trúc tệp APK: Tệp định dạng nén chứa mã nguồn đã biên dịch (classes.dex), tệp kê khai cấu hình (AndroidManifest.xml), tệp tài nguyên biên dịch (resources.arsc), thư viện liên kết (lib/), tài nguyên ứng dụng (res/, assets/) và chữ ký số (META-INF).
  • Lý thuyết kiểm thử xâm nhập (Pentest): Phân tích các khái niệm lỗ hổng (Vulnerability), mối đe dọa (Threat), khai thác (Exploit), rủi ro (Risk); quy trình kiểm thử 6 giai đoạn (Lập kế hoạch, Thu thập thông tin, Quét/Phân tích lỗ hổng, Khai thác lỗ hổng, Đánh giá mức độ tổn thương, Báo cáo/Đề xuất); phân loại pentest theo phạm vi tiếp cận (Black Box, White Box, Grey Box) và theo mục tiêu kiểm thử (Application, Network, Hardware, Personnel).
  • Mô hình học máy phân loại rủi ro: Kế thừa các thuật toán học máy giám sát từ thư viện Scikit-learn bao gồm Support Vector Machines (SVM), Multinomial Naive Bayes (MNB), Gradient Boosting (GB) và Logistic Regression (LR).

Các nghiên cứu liên quan được tham chiếu

  • Android Permissions Demystified (Adrienne Porter Felt et al.): Giới thiệu công cụ Stowaway phát hiện ứng dụng đòi hỏi quyền vượt mức (over-privilege) trên tập 940 ứng dụng.
  • FlowDroid (Arzt et al.): Phương pháp phân tích luồng dữ liệu tĩnh (Static Taint Analysis) chính xác theo ngữ cảnh và vòng đời ứng dụng Android, đi kèm bộ kiểm thử DroidBench.
  • DroidSafe (Gordon et al.): Phân tích luồng thông tin tĩnh chuyên sâu, kiểm thử trên 24 ứng dụng chứa 69 luồng độc hại từ các đội Red-Team.
  • Drebin (Arp et al.): Giải pháp nhận diện mã độc nhẹ, kết hợp phân tích tĩnh và học máy tuyến tính có khả năng giải thích kết quả trực tiếp trên thiết bị di động.

Phương pháp nghiên cứu và nguồn dữ liệu

  • Phương pháp thu thập và xử lý dữ liệu: Trích xuất quyền ứng dụng từ tệp APK thông qua kỹ thuật phân tích tĩnh, mã hóa dữ liệu thành các vector nhị phân đại diện cho 4 tập quyền:
    1. $DP_A$ (Declared Permissions): Quyền được khai báo trong AndroidManifest.xml.
    2. $EP_A$ (Required and Used Permissions): Quyền thực sự được mã nguồn yêu cầu và sử dụng.
    3. $GP_A$ (Not Required but Used Permissions): Quyền ứng dụng thực tế có sử dụng nhưng không khai báo với hệ thống.
    4. $UP_A$ (Required but Not Used Permissions): Quyền được khai báo nhưng không dùng đến trong mã thực thi.
  • Nguồn dữ liệu: Tập dữ liệu gốc từ RiskInDroid với 112.425 ứng dụng thu thập từ Google Play Store, Aptoide, Uptodown và 6.000 mẫu phần mềm độc hại tổng hợp từ các bộ dữ liệu Drebin, Contagio, Husted và Bhatia.

Thiết kế và triển khai hệ thống

Hệ thống RiskInDroid+ được thiết kế theo mô hình ứng dụng web tích hợp các module xử lý tự động giữa Frontend, Backend máy chủ và các thiết bị Android kết nối ngoại vi.

+---------------------+        +--------------------+
| Điện thoại Android  |        |    Tệp APK tải lên  |
+----------+----------+        +---------+----------+
           |                             |
           v                             v
+---------------------+        +--------------------+
|  Device connector   |        |   APK collector    |
+----------+----------+        +---------+----------+
           |                             |
           +-------------->+<------------+
                           |
                           v
               +-----------------------+
               |   Metadata extractor  |
               +-----------+-----------+
                           |
                           v
               +-----------------------+
               |     Risk analyzer     |
               +-----------+-----------+
                           |
                           v
               +-----------------------+
               |    Report creator     |
               +-----------+-----------+
                           |
                           v
               +-----------------------+
               |   Báo cáo chỉ số Risk  |
               +-----------------------+

Kiến trúc các thành phần

  1. Device Connector & APK Collector: Kết nối với thiết bị di động hoặc máy ảo Android qua tiện ích dòng lệnh ADB (yêu cầu bật chế độ USB Debugging trên thiết bị). Module thực hiện quét danh sách các gói cài đặt (packages), lấy đường dẫn tệp trên thiết bị và thực hiện lệnh adb pull để sao chép APK về thư mục lưu trữ cục bộ của hệ thống.
  2. Metadata Extractor: Giải nén và phân tích tĩnh tệp APK bằng Java để trích xuất danh sách các quyền thuộc 4 phân nhóm ($DP_A$, $EP_A$, $GP_A$, $UP_A$).
  3. Risk Analyzer: Tiếp nhận vector đặc trưng nhị phân $FV_A^S$ (với $S \in {DP_A, EP_A, GP_A, UP_A}$), đưa qua các mô hình phân loại học máy đã huấn luyện trong môi trường Python để trích xuất xác suất dự đoán thuộc lớp mã độc (malware), từ đó tính toán giá trị trung bình xác suất và chuyển đổi thành điểm rủi ro từ 0 đến 100.
  4. Report Creator & Web Interface: Xây dựng giao diện bằng HTML, CSS, JavaScript kết hợp máy chủ backend. Hệ thống tiếp nhận các request dạng GET để truy xuất kết quả có sẵn trong cơ sở dữ liệu và POST khi người dùng tải tệp APK mới lên kiểm tra (giới hạn hỗ trợ tối đa 300MB) hoặc chọn tệp vừa lấy từ điện thoại.

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

Chương 1: Tổng quan đề tài

Chương mở đầu phân tích bối cảnh phát triển của hệ điều hành Android, sự gia tăng của các nguy cơ bảo mật di động và tầm quan trọng của kiểm thử xâm nhập. Tác giả tổng hợp các công trình nghiên cứu tiêu biểu về phân tích quyền và phân tích tĩnh luồng dữ liệu (Stowaway, FlowDroid, DroidSafe, Drebin). Chương 1 xác định rõ mục tiêu xây dựng công cụ RiskInDroid+, đối tượng nghiên cứu là chỉ số rủi ro và quyền ứng dụng, cùng phạm vi thử nghiệm trên tập dữ liệu lớn kế thừa từ nghiên cứu tiền nhiệm.

Chương 2: Các cơ sở lý thuyết liên quan

Chương 2 trình bày chi tiết các nền tảng kỹ thuật phục vụ việc phát triển công cụ:

  • Cấu trúc ngăn xếp 5 tầng của hệ điều hành Android và quy trình biên dịch đóng gói tệp APK (sử dụng javac, dx, đóng gói ZIP và ký số qua Jarsigner).
  • Bản chất, vai trò, 6 giai đoạn và các phương pháp kiểm thử xâm nhập trên nền tảng di động.
  • Tổng quan về các công nghệ ứng dụng: Ngôn ngữ Java (hướng đối tượng, thu gom rác tự động), Python (xử lý dữ liệu, học máy), Android Debug Bridge (ADB), bộ ba HTML/CSS/JavaScript cho giao diện web.
  • Cơ sở lý thuyết học máy giám sát và các thuật toán phân loại trong thư viện Scikit-learn (SVM, Multinomial Naive Bayes, Gradient Boosting, Logistic Regression).

Chương 3: Phân tích hệ thống

Chương 3 đi sâu vào thiết kế kỹ thuật của RiskInDroid+:

  • Phân tích yêu cầu hệ thống và luồng dữ liệu tổng quan.
  • Định nghĩa toán học cho vector đặc trưng quyền nhị phân $FV_A^S$ trên không gian tập quyền $|PSet|$.
  • Cơ chế tính toán chỉ số rủi ro (risk_value) dựa trên xác suất trung bình của lớp mã độc do các mô hình học máy dự đoán.
  • Chi tiết quy trình xây dựng tính năng mới: kết nối ADB, quét gói cài đặt trên thiết bị Android, kéo tệp APK về máy chủ lưu trữ, định nghĩa các route web xử lý và nâng giới hạn kích thước tệp upload lên 300MB.

Chương 4: Chạy thực nghiệm và đánh giá kết quả đạt được

Chương 4 mô tả quá trình vận hành hệ thống qua Docker hoặc mã nguồn Python 3/Java:

  • Minh họa giao diện thực tế khi tra cứu ứng dụng có sẵn trong cơ sở dữ liệu và khi tải tệp APK mới để phân tích tự động.
  • Trình bày các bảng thống kê phân bố quyền của hơn 118.000 ứng dụng trong cơ sở dữ liệu theo các ngưỡng chỉ số rủi ro ($Risk > 50$ và $Risk < 20$).
  • So sánh tính năng giữa RiskInDroid+ và RiskInDroid gốc, đồng thời chỉ ra các hạn chế hiện tại của đề tài.

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

Kết quả thống kê thực nghiệm trên cơ sở dữ liệu

Khóa luận đã trích xuất và phân tích số liệu từ cơ sở dữ liệu hơn 118.000 ứng dụng (bao gồm 112.425 ứng dụng thông thường và hơn 6.000 mẫu mã độc):

  • Nhóm ứng dụng có mức rủi ro cao ($Risk > 50$): Gồm khoảng 11.000 ứng dụng, chiếm tỷ lệ xấp xỉ 9% tổng tập dữ liệu.
  • Nhóm ứng dụng có mức rủi ro thấp ($Risk < 20$): Gồm hơn 78.000 ứng dụng, chiếm tỷ lệ hơn 65% tổng tập dữ liệu.
Nhóm chỉ số Top quyền khai báo phổ biến nhất Top quyền thực tế dùng nhưng không khai báo (Not required but used)
Nhóm Risk > 50 android.READ_PHONE_STATE (8.212 lần)
android.ACCESS_NETWORK_STATE (7.032 lần)
android.ACCESS_WIFI_STATE (4.336 lần)
android.ACCESS_COARSE_LOCATION (3.661 lần)
android.ACCESS_FINE_LOCATION (3.504 lần)
android.WAKE_LOCK (2.847 lần)
android.MANAGE_ACCOUNTS (1.891 lần)
android.USE_CREDENTIALS (1.838 lần)
android.ACCESS_COARSE_LOCATION (1.635 lần)
android.ACCESS_FINE_LOCATION (1.361 lần)
Nhóm Risk < 20 android.ACCESS_NETWORK_STATE (75.646 lần)
android.WRITE_EXTERNAL_STORAGE (30.597 lần)
android.WAKE_LOCK (29.324 lần)
android.ACCESS_WIFI_STATE (18.765 lần)
android.READ_PHONE_STATE (11.811 lần)
android.MANAGE_ACCOUNTS (54.994 lần)
android.USE_CREDENTIALS (51.556 lần)
android.WAKE_LOCK (46.432 lần)
android.GET_TASKS (34.301 lần)
android.ACCESS_COARSE_LOCATION (28.001 lần)

Ghi nhận đặc biệt: Phân tích cho thấy một số ứng dụng có số lượng quyền khai báo nhưng không sử dụng (Required but not used) rất cao, điển hình như tệp b.777 (130 quyền) và google-play-services.953 (125 quyền). Ngoài ra, quyền nhạy cảm android.USE_CREDENTIALS xuất hiện với tần suất cao ngay cả ở nhóm có chỉ số rủi ro thấp (51.556 lần), cảnh báo nguy cơ bị khai thác thông tin tài khoản hệ thống nếu người dùng chủ quan.

Đóng góp so với nghiên cứu tiền nhiệm

Tiêu chí so sánh Công cụ gốc RiskInDroid Công cụ RiskInDroid+ trong khóa luận
Mục đích sử dụng Kiểm thử và đánh giá rủi ro ứng dụng Android Kiểm thử và đánh giá rủi ro ứng dụng Android
Dữ liệu đầu vào Tệp APK tải lên thủ công Tệp APK tải lên thủ công hoặc lấy trực tiếp từ thiết bị
Cơ chế tính toán Trích xuất vector 4 nhóm quyền và áp dụng học máy Kế thừa cơ chế vector hóa 4 nhóm quyền và mô hình học máy
Kết nối thiết bị Không hỗ trợ Hỗ trợ kết nối qua ADB để quét và kéo APK trực tiếp từ điện thoại/máy ảo
Giới hạn tệp tải lên Giới hạn mặc định ban đầu Nâng giới hạn kích thước tệp upload lên 300MB

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

Khóa luận tự nhận định hai hạn chế kỹ thuật chính trong nội dung báo cáo:

  1. Chưa thực hiện đánh giá lại mô hình tính toán: Nghiên cứu kế thừa kết quả huấn luyện từ bộ dữ liệu và mô hình có sẵn của RiskInDroid mà chưa tiến hành tái huấn luyện hoặc thử nghiệm đánh giá độc lập độ chính xác của các chỉ số rủi ro trên tập dữ liệu mới nhằm nâng cao tính thuyết phục học thuật.
  2. Phạm vi hệ thống thực tế hẹp hơn mục tiêu ban đầu: Mục tiêu ban đầu của đề tài là xây dựng một hệ thống kiểm thử bảo mật toàn diện gồm nhiều module chức năng khác nhau, tuy nhiên quá trình thực hiện mới chỉ tập trung vào việc mở rộng tính năng lấy file và giao diện cho công cụ phân tích quyền ứng dụng.

Giá trị tham khảo

Bản khóa luận cung cấp tài liệu tham khảo hữu ích cho:

  • Sinh viên và học viên ngành An toàn thông tin, Công nghệ thông tin: Tham khảo phương pháp phân loại quyền Android ($DP_A, EP_A, GP_A, UP_A$) và cách thức chuyển đổi đặc trưng quyền thành vector nhị phân phục vụ các bài toán phân loại học máy.
  • Lập trình viên phát triển ứng dụng di động: Cung cấp số liệu thống kê thực tế về các lỗi cấp quyền phổ biến (như khai báo thừa quyền hoặc ngầm sử dụng quyền không khai báo), hỗ trợ việc rà soát và tuân thủ nguyên tắc đặc quyền tối thiểu (least privilege) khi xây dựng tệp AndroidManifest.xml.
  • Người nghiên cứu phát triển công cụ kiểm thử tự động: Tham khảo mã nguồn và giải pháp tích hợp lệnh adb vào ứng dụng web backend (Python/Flask) để tự động hóa quy trình trích xuất gói tệp cài đặt trực tiếp từ thiết bị di động.

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

1. Chỉ số rủi ro (Risk score) của một ứng dụng trong RiskInDroid+ được tính toán dựa trên nguyên lý nào?

Chỉ số rủi ro được tính toán dựa trên việc trích xuất danh mục quyền của ứng dụng và phân loại thành 4 tập hợp: quyền khai báo ($DP_A$), quyền thực sự sử dụng ($EP_A$), quyền sử dụng ngầm không khai báo ($GP_A$) và quyền khai báo thừa không dùng ($UP_A$). Các tập quyền này được chuyển đổi thành các vector đặc trưng nhị phân $FV_A^S$. Mô hình học máy đã huấn luyện sẽ dự đoán xác suất thuộc lớp mã độc (malware) từ các vector này, sau đó tính xác suất trung bình và đưa ra điểm số rủi ro cuối cùng theo thang điểm 100 (ví dụ trong thực nghiệm ghi nhận điểm số mẫu là 30.912/100).

2. Điểm cải tiến chức năng nổi bật nhất của RiskInDroid+ so với công cụ RiskInDroid gốc là gì?

Điểm cải tiến nổi bật nhất là việc bổ sung module kết nối trực tiếp với thiết bị di động Android vật lý hoặc máy ảo thông qua giao tiếp ADB (khi bật USB Debugging). Người dùng có thể quét danh sách tất cả các ứng dụng đã cài đặt trên máy, tự động trích xuất tệp APK về hệ thống để thực hiện kiểm thử ngay trên giao diện web mà không cần trích xuất tệp thủ công ra máy tính trước đó. Đồng thời, dung lượng tệp tải lên kiểm thử trực tiếp được mở rộng lên 300MB.

3. Tập dữ liệu huấn luyện được sử dụng trong nghiên cứu có quy mô và nguồn gốc từ đâu?

Nghiên cứu sử dụng tập dữ liệu kế thừa từ RiskInDroid gồm 112.425 ứng dụng thông thường thu thập từ Google Play Store, Aptoide, Uptodown và hơn 6.000 mẫu phần mềm độc hại lấy từ bộ dữ liệu Drebin cùng các nguồn công khai khác như Contagio, Husted và Bhatia.

4. Kết quả thống kê trên cơ sở dữ liệu cho thấy sự khác biệt nào giữa nhóm ứng dụng rủi ro cao (Risk > 50) và nhóm rủi ro thấp (Risk < 20)?

Thống kê chỉ ra rằng nhóm ứng dụng rủi ro cao ($Risk > 50$, chiếm khoảng 9% cơ sở dữ liệu) thường xuyên đòi hỏi các quyền nhạy cảm liên quan đến truy cập mạng, đọc trạng thái điện thoại (READ_PHONE_STATE), theo dõi vị trí (ACCESS_FINE_LOCATION, ACCESS_COARSE_LOCATION) và có tỷ lệ sử dụng ngầm các quyền chưa khai báo rất cao. Ngược lại, nhóm ứng dụng rủi ro thấp ($Risk < 20$, chiếm hơn 65%) chủ yếu sử dụng các quyền cơ bản về kết nối mạng thông thường và ít phát sinh quyền sử dụng ngầm bất hợp lệ.


Kết luận

Khóa luận tốt nghiệp của tác giả Hà Thị Thu Thủy đã trình bày chi tiết quy trình xây dựng công cụ kiểm thử bảo mật Android mang tên RiskInDroid+ dựa trên nền tảng phân tích quyền truy cập và ứng dụng các mô hình học máy. Bằng việc tích hợp công cụ ADB, nghiên cứu đã giải quyết được bài toán trích xuất và kiểm thử tệp APK trực tiếp từ thiết bị di động lên giao diện web một cách tiện lợi. Mặc dù còn hạn chế về việc chưa tái huấn luyện mô hình đánh giá độc lập, kết quả thực nghiệm trên hơn 118.000 ứng dụng đã cung cấp bức tranh số liệu rõ ràng về hành vi sử dụng quyền trên hệ điều hành Android, mang lại giá trị tham khảo thiết thực cho công tác phân tích an toàn ứng dụng di động.