Chương 1. TONG QUAN VỀ VẤN ĐỀ NGHIÊN CỨU. Tầm quan quan trọng và ý nghĩa của vấn dé cần nghiên cứu. Mục tiêu đề tài.
Đối tượng của dé tài. Phạm vi của dé tài. Phương pháp nghiên cứu, thực hiện dé tài. Tình hình nghiên cứu và các công trình liên quan.
Cấu trúc khóa luận.--eeeererrrrrrre 1 Chương 2. Gói ứng dụng Android (Android application package). Dalvik và Dalvik byteCode. Đóng gói lại ứng dung Android (Android app repackaging).
Thành phần của ứng dụng Android. Activity Transition Graph và công cụ A?E 2. Thuật toán VF2. PHƯƠNG PHAP VÀ QUY TRINH THỰC HIỆN.
Xây dựng feature View grapheneOD 3. Xây dựng view graphe. Xây dựng thuộc tính cạnh.-----c-ccse:-ee+ccvevveeeserrrrrrrtersee 40 3. Xây dựng thuộc tính node.
So sánh và phát hiện feature view graph tương đông. KET QUA THU NGHIỆM VÀ THẢO LUẬN. Phương pháp đánh giá. Môi trường và kết quả thực nghiệm.
Nhận xét và đánh giá kết quả.e-eeeetrererrerrtrrrerrrrrrrrrree 53 Chương 5. KẾT LUẬN VÀ HƯỚNG PHAT TRIỂN. Hướng phát triển.-eeeceeeerererertrrrrrrrrrrrrrrrrirrrrrreree 55 DANH MỤC HÌNH Hình 1.1: Mô hình DroidMOSS.2:Mô hình Fuzzy Hashing.3: Mô hình kiến trúc AppInk.4: Mô hình của AnDarwin [ Í|]. -¿- ¿c5 x key II Hình 2.1: Cấu trúc file APK.2: Các thành phần của ứng dụng Android.¿---+22sczz+czsscez 21 Hình 2.3: Sơ đồ cơ chế phân tích tĩnh của công cụ A°E.----cc+5ccsscez 23 Hình 2.4: Ví dụ về Java Reflection Hình 2.5: Sơ đồ mô tả kỹ thuật chèn nhánh giả với khối màu lục là mã rác không bao giờ được thực thi .6: Thuật toán VF2 Hình 2.7: Năm quy tắc khả thi ( feasibility rule) [16|.-----¿-csscz+cc5sce2 32 Hình 2.8: Ví dụ hai sơ đồ đơn giản A và B.9: Hình minh họa các bước thuật toán VF2 cho ví dụ trên.1: Mô hình của công CỤ.
¿+ + St EkekskEekrrrrrterrkekrrkrirrre oo Hình 3.2: Mô hình xây dựng view graph và thuộc tính cạnh từ công cụ AŸE.3: Ví dụ về kết quả thu được sau khi phân tích tĩnh băng công cụ A3E.4: Ví dụ khai báo main activity trong tệp AndroidManifest.5: View graph với tên activity class và số node tương ứng.6: Hình minh họa cho view graph thu được.7 : View graph với tên activity class, số node tương ứng và phương thức [0091101117 .8: View graph chỉ gồm các node, cach và thuộc tích cach dé chuẩn bị cho Glad Goan Tố ố ố ố .9: Hình minh họa view graph với thuộc tính cạnh.10: Mô hình xây dựng thuộc tính node.11: Kết quả phân tích tĩnh của một phương thức trong một activity class bằng công cụ Androguard.12: Các API được gọi trong các activity được lấy làm thuộc tính của các TIOd€ tƯƠN UNG. + 1t 1 v11 TT TT ni 45 Hình 4.1: Các lớp được chèn vào ứng dụng bởi công cụ MSFvenom sau khi được xử lý bằng công cụ apktOol.2: Các lớp dé hiện quảng cáo Google Admob được chèn vào ứng dụng bằng công cụ PMT Ads 'TO ]. 6 cà k1 vn HH TT TH HH THỦ 49 Hình 4.3: Biểu đồ thời gian thực thi trung bình của thuật toán VF2 trên tổng số lượng node của từng cặp graph được so sánh .--¿-¿- - 5© ++x+x+xexerererveeer 53 DANH MỤC BANG Bảng 4.1: Kết quả quá trình phát hiện ứng dụng đóng gói lại DANH MỤC TU VIET TAT STT | Thuật ngữ Mô tả 1 API Application Programming Interface 2 APK Android application package 3 PDG Program Dependence Graph 4 GUI Graphical User Interface 5 SATG Static Activity Transition Graph 6 CFG Control Flow Graph TÓM TÁT KHÓA LUẬN Trong những năm gan đây, sự phát triển của điện thoại thông minh cũng như các ứng dụng di động không ngừng tăng tốc. Hầu như ai cũng có cho mình ít nhất một chiếc điện thoại thông minh.
Tuy nhiên, sự phát triển đó cũng làm gia tăng các hình thức tấn công trên thiết bị di động, đặc biệt là đóng gói lại ứng dụng. Những kẻ tấn công có thé dé dàng đóng gói lại một ứng dụng dưới tên riêng của chúng hoặc nhúng quảng cáo dé kiếm lợi nhuận. Chúng cũng có thé sửa đổi một ứng dụng phd biến và chèn các đoạn mã độc hại vào ứng dụng gốc và tận dụng sự phổ biến của ứng dụng đó để đẩy nhanh quá trình lan truyền phần mềm độc hại. Đặc biệt, với việc phô biến của ứng dụng trả phí trên điện thoại thông minh và nhiều ứng dụng bị giới hạn phát hành ở các quốc gia, khiến nhu cầu tìm kiếm ứng dụng từ các nguồn khác không chính thống cũng tăng lên.
Trong khóa luận này, chúng em đề xuất ViewDroid [1], một phương pháp tiếp cận dựa trên giao diện người dùng dé phat hiện đóng gói lại ứng dụng dành cho thiết bị di động. Ứng dụng Android chuyên sâu về tương tác với người dùng và chỉ phối sự kiện, tương tác giữa người dùng và ứng dụng được thực hiện thông qua giao diện người dùng. Quan sát này truyền cảm hứng cho việc thiết kế giá trị đặc trưng cho từng ứng dụng Android, cụ thể là cây giao diện đặc trưng (feature view graph), thê hiện hành vi điều hướng của người dùng trên các giao diện ứng dụng. Feature view graph có thể mô tả các ứng dụng Android từ mức trừu tượng cao hơn, giúp ViewDroid có khả năng chống rối mã, có thể phát hiện các ứng dụng được đóng gói lại ở quy mô lớn một cách hiệu quả [1].
TONG QUAN VE VAN ĐÈ NGHIÊN CỨU 1. Tầm quan quan trọng và ý nghĩa của van đề cần nghiên cứu Ngày nay, sự phát triển của các thiết bị di động đang ngày càng mạnh mẽ. Điện thoại thông minh cũng ngày càng phổ biến, đặc biệt là điện thoại hệ điều hành Android. Theo statcounter [2], tính đến hết tháng 5 năm 2021 thì hệ điều hành Android chiếm 72,72% thị phần hệ điều hành di động trên toàn thế giới.
Do đó, Android cũng là hệ điều hành dành cho điện thoại thông minh được kẻ tấn công chọn làm mục tiêu nhiều nhất. Gói ứng dụng Android (tức là tệp APK) thực sự là tệp lưu trữ ở định dạng ZIP, bao gồm mã bytecode, tệp tài nguyên và tệp kê khai (manifest). Thật không may, không giống như các phần mềm thực thi truyền thống, các ứng dụng Android rất dễ bị đóng gói lại. Với các công cụ mã nguồn mở như apktool [3] và jadx [4], người ta có thể dé dàng chèn thêm mã hoặc sửa đồi các tệp tài nguyên của ứng dụng góc đề đạt được mục đích riêng của họ.
Ví dụ, những kẻ viết mã độc tạo mã quảng cáo trên các ứng dụng phô biến để kiếm tiền hoặc chèn mã độc dé lấy cắp thông tin riêng tư của người dùng. Do đó, phần mềm độc hại Android được đóng gói lại là một trong những mối đe dọa chính đối với bảo mật Android [5]. Theo MalGenome [6], một tập dữ liệu tham khảo trong cộng đồng bảo mật Android, có 80% mẫu độc hại được biết là được tạo ra thông qua việc đóng gói lại các ứng dụng khác. Hơn nữa, do sự phổ biến của nền tang Android, nhiều chợ ứng dụng không chính thống tồn tại.
Hầu hết trong số họ không thực thi kiểm tra trên các ứng dụng được liệt kê trên trang web của họ. Do đó, mức độ nghiêm trọng của việc đóng gói lại ứng dụng trong nền tảng Android cao hơn so với bat kỳ nền tảng di động nào khác. Vì vậy, việc phát hiện được ứng dụng Android (tệp APK) là ứng dụng đóng gói lại là một bước quan trọng, là bước đầu xác định các ứng dụng có khả năng chứa mã độc, phục vụ cho công tác phân tích mã động sau này. Tuy nhiên, vấn đề phát hiện đóng gói lại ứng dụng là rất khó khăn.
Mặt khác, đo số lượng ứng dụng khổng lồ trên một chợ ứng dụng như Google Play, nên cần phải đáp ứng yêu cầu về hiệu quả và khả năng mở rộng của một kế hoạch phát hiện. Mặt khác, kế hoạch phát hiện phải có khả năng chống lại việc sửa đổi mã và các kỹ thuật làm rối mã tự động hiện có, vì rất dễ dàng sửa đổi, rối mã và đóng gói lại các ứng dụng Android mà không có mã nguồn của ứng dụng gốc. Dé phát hiện ứng dụng đóng gói lại, ta cần trích xuất được các thuộc tinh cần thiết của ứng dụng để tạo ra nhóm các đặc tính riêng biệt đại diện cho ứng dụng đó, được gọi là vết bớt của ứng dụng. Trong đề tài này, chúng em có gắng tái hiện một mô hình phát hiện đóng gói lại có tên là ViewDroid [I], tận dụng vết bớt dựa trên giao điện người dùng, gọi là feature view graph để phát hiện ứng dụng được đóng gói lại trên nền tảng Android.
ViewDroid cung cấp một giải pháp thay thế cho các phương pháp phát hiện ở cấp độ mã (code-level). Phương pháp này dựa trên hai điểm chính. Đầu tiên, các ứng dụng dành cho điện thoại thông minh dựa trên hành vi của người dùng và sự kiện của Android, tương tác giữa người dùng và ứng dụng được thực hiện thông qua giao diện người dùng (app views). Một số đặc điểm của giao diện (ví dụ: chuỗi các sự kiện điều hướng giữa các view) là duy nhất cho mỗi ứng dụng được phát triển độc lập.
Thứ hai, bởi vì những kẻ tắn công muốn tận dụng sự phổ biến của ứng dụng, họ thường giữ giao diện và chức năng gốc của ứng dụng được đóng gói lại tương tự như ứng dụng gốc để không bị người dùng phát hiện. Tóm lại, ViewDroid được xây dựng dựa trên một vết bớt được gọi là sơ đồ giao diện, còn gọi là view graph. View graph là sơ đồ được xây dựng từ tất cả các view thông qua phân tích tĩnh và nắm bắt mối quan hệ điều hướng giữa các view. Ngoài ra, cần có thuộc tính cho cả các node và các cạnh trong view graph dựa trên các API của Android.
Điều này có thé giúp lọc trước các ứng dụng không có liên quan và cải thiện hiệu quả của thuật toán so sánh. Ưu điểm nổi bật của ViewDroid là khả năng chống rối mã tốt. View graph là một đại diện cấp cao hơn về hành vi của ứng dụng so với các vết bớt ở code-level (ví dụ: chuỗi opcode). Nói cách khác, ViewDroid không cần dữ liệu cấp độ tập lệnh.
Do đó, nó có khả năng chống lại rối mã như nhiễu lệnh hay dữ liệu, sắp xếp lại thứ tự, phân tách và tổng hợp tập lệnh, v. Ngoài ra, việc tạo ra đồ thị dựa trên phân tích tĩnh các API của Android framework (ví dụ: startActivity, startActivityForResult, OnClickListener). Các API này được cung cấp bởi hệ thống Android và khó bị thay thế hoặc sửa đổi. Do đó, view graph mạnh mẽ hơn đối với các kỹ thuật xáo trộn như tách, đổi tên và triển khai lại API [1].
Mục tiêu đề tài Nghiên cứu, thiết kế, xây dựng công cụ ứng dụng ViewDroid dé phát hiện ứng dụng Android đóng gói lại giúp cải thiện khả năng chống rối mã.