Đặt vấn đề Ngày nay, hệ điều hành Android được sử dụng rộng rãi trên nhiều loại thiết bị di động khác nhau như smartphones và tablets. Theo số liệu của Statcounter tính đến tháng 12 năm 2022, hệ điều hành Android chiếm 72.37% thị phần hệ điều hành di động được sử dụng [1]. Đề đánh cắp dữ liệu cá nhân và xâm phạm tính bảo mật của thiết bị, các tội phạm mạng đã tạo ra nhiều ứng dụng độc hại dành cho điện thoại Android. Theo báo cáo mới nhất của Kaspersky vào cuối tháng 2 năm 2023 về Android threat của Kaspersky cho năm 2022 [2], từ các sản phẩm và công nghệ di động của minh, Kaspersky đã được phát hiện: 1,661,743 malicious installers, 196,476 ứng dụng loại banking trojans mới va 10,543 ứng dụng ransomware trojans mới.
Cũng trong báo cáo này, từ thông kê về phân bố các cuộc tấn công theo loại ứng dụng được sử dụng vào năm 2022 cho thấy, tỷ lệ các cuộc tan công sử dụng các ứng dụng loại adware từ 16.92% vào năm 2021 tăng lên 26.38% vào năm 2021 tăng lên 5.31% và các ứng dụng loại malware khác chiếm tỉ lệ 67. Vì người dùng Android tải xuống và cài đặt các ứng dụng chủ yếu trên các cửa hàng ứng dụng như Apkcombo, Apkpure, Google Play nên việc phát hiện, phan loại các ứng dụng độc hại do các nhà phát triển tải lên trên các cửa hàng ứng dụng là rất quan trọng. Bên cạnh đó, người dùng có thé cần cài đặt một số ứng dụng khác không có trên cửa hàng ứng dụng Google Play mà ở các nguồn khác trên mạng internet, vì vậy người dùng cũng cần phải kiểm tra ứng dụng tải về có phải là ứng dụng độc hại không dé tránh bị mat cắp thông tin và bị tan công. Trong thập kỷ qua, các nhà nghiên cứu đã đề xuất nhiều phương pháp phù hợp và công cụ cần thiết để phát hiện các ứng dụng độc hại trên nền tảng Android nhằm bảo vệ người dùng hợp pháp khỏi các mối đe dọa.
Có 2 hướng tiếp cận được đề xuất bao gồm: tiếp cận dựa trên kỹ thuật phân tích truyền thống và tiếp cận dựa trên kỹ thuật học máy [3]. Với hướng tiếp cận dựa trên kỹ thuật phân tích truyền thống, nó tập trung vào phân tích tĩnh hoặc động đê xác minh các mau xác minh có mã code độc hại trong các ứng dụng Android. Các mã code độc hại có thé được tim thấy dựa trên opcodes, permission, các lời gọi hệ thống hoặc API chứa trong mã nguồn. Tuy nhiên, với hướng tiếp cận này đòi hỏi chi phí cao va sự phát triển nhanh chóng của các ứng dụng độc hại làm cho nó còn hiệu quả.
Trong hướng tiếp cận thứ hai, các kỹ thuật học máy đã được đưa ra dé phát hiện ứng dụng Android độc hai băng cách sử dụng bộ dữ liệu lớn dé xây dựng mô hình phát hiện hoặc phân loại ứng dụng độc hại. Để thực hiện, các nhà nghiên cứu đã thực hiện nhiều kỹ thuật phân tích khác nhau bao gồm phân tích tĩnh, phân tích động hoặc kết hợp cả hai để trích nhiều loại đặc trưng [4]. Tuy nhiên, dé dat được chất lượng phát hiện hoặc phân loại ứng dụng độc hại trên nền tảng Android với hiệu suất cao thì chúng ta cần phải xây dựng bộ dữ liệu được gán nhãn chính xác và xây dựng bộ đặc trưng phù hợp như permissions, API và opcode [3]. Bên cạnh đó, nhiều nghiên cứu đã đề xuất các kỹ thuật phát hiện ứng dụng Android độc hại dựa trên hình ảnh và nó cũng đã có nhiều thành tựu ấn tượng [5].
Kỹ thuật này giải quyết được việc xử lý các mẫu ứng dụng có kích thước lớn và tập dữ liệu có kích thước lớn gây ra [6], đồng thời giảm thời gian phân tích và phát hiện ứng dụng độc hại và đạt độ chính xác cao [7]. Mặc dù phương pháp phát hiện ứng dụng độc hại dựa trên hình ảnh đã được đưa ra như một giải pháp tiềm năng, nhưng nó cũng có những hạn chế cần được xem xét. Một trong số đó là không thể phát hiện injection attacks [8] [9]. Tương tự với phương pháp phân tích tĩnh, phương pháp này cũng gặp phải thách thức với kỹ thuật code obfuscation - kỹ thuật ấn danh mã nguồn [10] [11].
Phân tích tinh là một kỹ thuật nhằm mục đích nắm bắt hành vi của ứng dụng Android mà không cần thực thi ứng dụng. Những đặc trưng quan trọng của ứng dụng có thê được thu thập bởi các công cụ hoặc framework như Flowdroid [12], AmAndroid [13], từ đó xây dựng sơ đồ luồng điều khiển (CFG), sơ đồ luồng dữ liệu (DFG) [3]. Ưu điểm của nó là giúp việc phân tích mã nguồn trở nên dễ dàng hơn. Tuy nhiên, hạn chế của phương pháp phân tích tĩnh là không thể phát hiện các ứng dụng độc hại tạo ra các hoạt động động, như gọi tài nguyên mạng, truy cập dữ liệu hay thực thi mã độc sau khi file APK được cài đặt trên thiết bị người dùng [14].
Phương pháp phân tích động là một giải pháp khác dé phát hiện ứng dụng độc hai từ việc thực thi chúng trên thiết bị Android và giám sát hoạt động của các ứng dụng này. Nó có thể cải thiện được nhiều khó khăn của phân tích tĩnh, đồng thời cũng có một số hạn chế trong việc tìm ra tất cả các đường dẫn thực thi mã, dẫn đến bỏ sót cảnh báo [15]. Ngoài ra, một ứng dụng độc hại có thể nhận ra rằng nó đang được thực thi trong một trình giả lập, tức là không phải trên điện thoại thực, và có thé ấn phần độc hại của ứng dụng để tránh bị phát hiện [16]. Trong nhiều trường hợp, ứng dụng độc hại sẽ tắt chức năng độc hại dé tránh việc bị phát hiện khi thực thi trên môi trường sandbox.
Tuy nhiên, với phân tích tĩnh vẫn có thé trích xuất các tinh năng tĩnh (ví dụ lệnh gọi API trong mã ứng dụng) của ứng dụng và phát hiện mức độ độc hại của nó. Ngược lại, phân tích động có thể được sử dụng dé giám sát các ứng dụng có mã bi xáo trộn hoặc có hành vi tải mã động dé phát hiện các hành vi độc hai của chúng [14]. Vì vậy, việc kết hợp cả hai phương pháp phân tích tĩnh và động là một phương pháp hiệu quả hơn so với việc chỉ sử dụng một loại phân tích đơn lẻ, sẽ tăng cường khả năng phát hiện ứng dụng độc hại. Mục tiêu của đề tài Mục tiêu chính của dé tài là phân tích kết hợp các ứng dụng Android dé phát hiện và phân loại ứng dụng độc hại với độ chính xác cao.
Đề đạt được mục tiêu này, đề tài sẽ tập trung vào: - Dé xuất một framework cho phép trích xuất nhiều đặc trưng tĩnh và động của ứng dụng Android từ file APK, đặt tên là AndroAnalyzer. - Dé xuất mô hình học sâu dé phát hiện ứng dụng độc hại o Benign o Malware - Dé xuất mô hình hoc sâu dé phân loại ứng dụng thành một trong các loại ứng dụng độc hại sau: o Adware o Banking Malware o SMS Malware o Mobile Riskware o Benign - Trién khai website dé người dùng có thé có thé thực hiện phân tích va tra cứu thông tin của các ứng dụng độc hại khác. Đối tượng và phạm vi nghiên cứu 1. Đối tượng nghiên cứu Tp APK là một trong năm loại ứng dụng sau: - Adware là loại malware hiền thị quảng cáo trong các ứng dụng hợp pháp.
- Banking malware là các ứng dụng đánh cắp thông tin ngân hàng của người dùng. - SMS malware là ứng dụng lợi dụng dịch vụ tin nhắn đề tiễn hành tấn công. - Riskware là các ứng dung hợp pháp có thé gây hại khi bị lợi dụng. - Begin là các mau còn lại, không độc hại được xác minh qua VirusTotal.
Phạm vi nghiên cứu Nghiên cứu hướng đến các ứng dụng được lưu trữ trên các cửa hàng ứng dụng được các nhà phát triển tải lên, cần các cửa hàng ứng dụng kiêm duyệt và cho phép người dùng tải về. Bên cạnh đó, nghiên cứu sẽ tập trung vào phân tích và mô hình phát hiện các ứng dụng Android độc hại thuộc các loại SMS Malware, Banking Malware, Adware, Mobile Riskware và các ứng dụng bình thường. Phạm vi nghiên cứu sẽ không bao gồm các nền tang di động khác ngoài Android và các loại độc hại khác. Kiến trúc và Ứng dụng Android 2.
Kiến trúc của Android System Apps Calendar Camera Java API Framework Managers Content Providers Activity Location Package Notification View System Resource Telephony Native C/C++ Libraries Android Runtime Webkit OpenMAX AL Android Runtime (ART) Media Framework OpenGL ES = Core Libraries Blu Camera Sensors Linux Kernel Drivers Audio Binder (IPC) Display Camera d Memory Power Management Hình 2.1: Ngăn xếp phan mềm Android Android! là một nền tảng mã nguồn mở, được xây dựng dựa trên hạt nhân Linux và bao gồm các thành phần sau: - Hat nhân Linux: Nó cung cấp nhiều dịch vụ và thực hiện quản lý tài nguyên cho các ứng dụng. Đường dẫn: https://developer.com/guide/platform - Hardware Abstraction Layer (HAL): Đây là lớp trung gian giữa hệ điều hành Android và phần cứng của thiết bị. Nó cung cấp các giao diện chuẩn cho việc giao tiếp với phần cứng. - Moi trưởng chạy Android (Android Runtime): Nó là môi trường thực thi mã của ứng dụng.
Trước phiên bản Android 5.0, hệ thống sử dụng DVM, sau đó được thay thé bang Android Runtime. Môi trường chạy Android biên dich và thực thi mã nguồn Java của ứng dụng. - Native Libraries: Nó là được viết bằng C hoặc C++ và cung cấp một số chức năng cần thiết cho ứng dụng. - Java API framework: N6 thực hiện việc cung cấp các API dé phát triển ứng dụng.
- Cac ung dụng hệ thong (System apps): Với những ứng dụng này, nhà phat triển có thé truy cập những chức năng chính từ ứng dụng của riêng họ. Đồng thời nó cũng hoạt động như ứng dụng dành cho người dùng. Các thành phan của ứng dụng Android Ứng dụng Android? được xây dựng bởi một số thành phần quan trọng thiết yếu, bao gom: - Activities: Day là các màn hình mà người dùng tương tác với ứng dụng va trao đổi thông tin với nó. - Services: Day là các tién trinh chay ngam thực hiện tinh toán va thực hiện một số chức năng khác.
- Content Provider: Nó được sử dung dé làm việc với dit liệu, như trao đôi dữ liệu giữa các content provider khác nhau, truy cập vào tập tin, cơ sở dữ liệu và tài nguyên khác. - Broadcast Receiver: Nó được sử dụng dé phan hồi các sự kiện thông báo trong hệ thống, ví dụ như một tin nhắn mới. Đường dẫn: https://developer.com/guide/components/fundamentals Bên cạnh đó, ứng dụng Android cũng có thể sử dụng các permissions để truy cập một số tài nguyên hệ thống hoặc phần cứng của thiết bị.