mặt của thị trường thiết bị di động.Với vị trí hệ điều hành lớn nhất thé giới thời điểm hiện tại cũng như giá thành của những chiếc điện thoại thông minh Android ở mức trung bình thì ứng
Trang 1ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN KHOA MANG MAY TINH VA TRUYEN THONG
NGUYEN THI HONG PHUC
VÕ HUYNH HỮU SANG
KHOA LUAN TOT NGHIEP
XAY DUNG GIAI PHAP GIAM SAT
HANH VI UNG DUNG TREN DIEN THOAI ANDROID
Solution for application activity monitoring on Android mobile
KY SU NGANH AN TOAN THONG TIN
TP HO CHÍ MINH, 2021
Trang 2ĐẠI HỌC QUOC GIA TP HO CHÍ MINH
TRUONG DAI HOC CONG NGHE THONG TIN
KHOA MANG MAY TINH VA TRUYEN THONG
NGUYEN THI HONG PHÚC - 17520128
VÕ HUỲNH HỮU SANG - 17520981
KHÓA LUẬN TÓT NGHIỆP XÂY DỰNG GIẢI PHÁP GIÁM SÁT HÀNH VI ỨNG DỤNG TRÊN ĐIỆN THOẠI ANDROID
Solution for application activity monitoring on Android mobile
KY SU NGANH AN TOAN THONG TIN
GIANG VIEN HUONG DAN
TS PHAM VAN HAU
TS NGUYEN TAN CAM
TP HO CHÍ MINH, 2021
Trang 3THONG TIN HOI DONG CHAM KHÓA LUẬN TOT NGHIỆP
Hội đồng chấm khóa luận tốt nghiệp, thành lập theo Quyết định số
T8ầy của Hiệu trưởng Trường Đại học Công nghệ Thông tin.
Trang 4LỜI CẢM ƠN
Quá trình thực hiện khóa luận tốt nghiệp là giai đoạn quan trọng nhất trong quãng đời mỗi sinh viên Khóa luận tốt nghiệp là tiền đề nhằm trang bị cho chúng
em những kỹ năng thực tiễn, kiến thức quý báu trước khi lập nghiệp.
Trước hết, chúng em xin chân thành cảm ơn quý Thay, Cô trường Dai học Công nghệ Thông tin — Đại học Quốc gia Thanh phố Hồ Chí Minh Đặc biệt là các Thầy, Cô trong khoa Mạng máy tính và truyền thông đã tận tình chỉ dạy và trang bị cho chúng em những kiến thức cần thiết trong suốt thời gian ngôi trên ghế giảng đường, làm nền tảng cho nhóm em có thể hoàn thành được bài nghiên
cứu khóa luận này.
Em xin trân trọng cảm ơn thầy hướng dẫn là TS Phạm Văn Hậu và TS Nguyễn Tan Cam đã tận tình giúp đỡ, định hướng cách tư duy và cách làm việc khoa học cho nhóm trong suốt quá trình thực hiện đề tài Đó là những góp ý hết
sức quý báu không chỉ trong quá trình thực hiện khóa luận này mà còn là hành
trang tiếp bước cho em trong quá trình học tập và lập nghiệp sau này.
Và cuối cùng, xin gửi lời cảm ơn đến gia đình, người thân, bạn bè và tập thể lớp ATTN2017, những người luôn sẵn sàng sẻ chia và giúp đỡ trong học tập
và cuộc sống Mong rằng, chúng ta sẽ còn gắn bó với nhau trong tương lai.
Mặc dù nhóm đã có gắng hết mình dé hoàn thành khóa luận trong khả năng của bản thân Tuy nhiên vì kiến thức và thời gian thực hiện có hạn nên sẽ không tránh khỏi những hạn chế và thiếu sót Nhóm em xin tiếp thu và nhận được ý kiến đóng góp từ quý Thay, Cô và các ban để nhóm hoàn thiện hơn bản báo cáo.
Một lần nữa nhóm xin chân thành cảm ơn!
Trang 5MỤC LỤC
Chương 1 © TONG QUAN VE DE TÀI - -22¿22222+cc222ESzetErErrrrsrrrrcree 3
PD ^^ .ẽ.ẽ ẽẽẽ 4AHADH , 3
1.2 Mục tiêu để tài 2222cc222 1222221122221 2221112 1 erree 4
1.3 Phạm vi nghiên CỨU - 6 + + tk kg tre ciÕ
1.4 Đối tượng nghiên cứu ¿ 2+2++222E++tEEEEtrrtrrkrrrrrrrrrrrrrcrrrrc.Õ
Chương 2 CƠ SỞ LÝ THUYẾT -: ©222++2222++222SSEvtttEvvrretrrrrrree 6
2.1 Tổng quan về hệ điều hành Android -.-:-cz222s+z+2cvvszezvzsvez 6
2.1.1 Thiết bị đi động 2222+22222EES222EECEEEEEErErrtrrrrrrrkree 6
2.1.2 Khái niệm hệ điều hành Android -¿ ¿z2csscz+vcs+++ 6
2.1.3 Lịch sử phát triển của Android cccccc2ccvvvvccrrrrrrex 7
2.1.4 Những đặc điểm của Android cccc-c2cccvccccrrrrrrex 9
2.1.5 Kiến trúc hệ thống của hệ điều hành Android - 0
2.1.5.1 Linux KernelL + - 55+ 2 ++t‡teEErrkrkekrrrkrkree 1
2.1.5.2 Các thư viện Android - ¿+ 5: +2 + xcvEsEsexerretetsexrrrrsersssee 1
2.1.5.3 Android Runtime ¿+ 56+ k‡*‡k‡EE#kekEEEEEkEkekrrrrkrrke 2
2.1.5.4 Application FramewOFK - ¿55+ 5+2c+ccsczeexexerererrree 3
Trang 62.2 Tổng quan về kỹ thuật hooking -:-+22v+z+222vvvrvtcvvvrrerrxer 17
2.2.1 Tổng quan
2.2.2 Phân loại công cụ hooking -¿«5cc ss+‡+sserkskekrrre 18
2.2.3 Công cụ hooking được nghiên cứu trong đề tài
2.3 Tổng quan về công cụ hooking -¿-2++222+z++22vxvzrsrrrseerrrr 23
2.3.1 Frida
2.3.1.1 Tổng quan -22222222++2222E22E2vrrrtttEEEExrrrrrrrrrrrrrrrrree 23
2.3.1.2 Những công cụ được hỗ trợ trong Frida.
2.3.2 Xposed FramewOrk - «5c re 25
2.3.2.1 Tổng quan -c¿ccc5222vccc2222+tvECEEEvrtErktrrerrkrrrrerrkrerrrr 25
2.3.2.2 Các phiên ban cua Xposed Framework -. : ‹ - 26
2.3.2.3 Xposed Framework APPI - 5+5+55+ccsc+e+xsxererrecee 30
2.3.2.4 Cách hoạt động của Xposed FramewWOrK «<< 31
2.3.2.5 Triển khai Xposed Module .c-:cccscccsccvscccccsecc DS Chương3 XÂY DỰNG UNG DUNG TRIEN KHAI THU NGHIỆM 36
3.1 Thành phan giao diện ứng dụng ¿ +z+22cv++++zcvvvrrerrvsrresrr 36
E— 36
3.1.2 View Group Ăcc SH Hee 36
3.1.2.1 Linear LayOut ¿5+555c52 22+ St+xsxtxereretererrrerrree 37
3.1.2.2 Constraint LayOUK + xxx ngư 37
Trang 73.3 Chức năng hiện có của ứng dụng -. + c + St sisrerrrrerirrrerees 41
Chương 4 | XAY DUNG HE THONG GIAM SAT HANH VI UNG DUNG 43
4.1.1 _ Đánh giá khả năng giám sat - c5 3 St SEseiresrseereserre 43
4.1.2 Thực hiện triển khai và mô phỏng một số chức năng 43
4.1.2.1 Thực hiện hooking phương thức startActivity 43
4.1.2.2 Tìm và liệt kê tất cả những lớp (class) đang được sử dung 45
4.1.2.3 Thực hiện hooking sự kiện onC ÏIcK - «- 5s +s<<£++s<se+ 47
4.1.2.4 Sử dụng Frida dé khai thác tính năng Mobile Banking 49
4.2 Xposed FrameWOFK - «LH HH TT TH HH Hà HH 52
4.2.1 Giới thiệu Ứng dỤng c1 SH kg ngư, 52
4.2.2 Tổng quan cách hoạt động - ¿2 + x+E++EE+EzEcrEerkerrerxerxee 53
4.2.2.1 Ý tưởng thiết kế giao di@n oo essesssessessesssessessessessesseeseeaee 53
4.2.2.2 Ý tưởng hooking - 2c s£+E2+EE£EE£EEEEEEEEEEEEEErEkrrkerrerree 54
4.2.3 Kết quả thực nghiệm -¿- 2¿©-++22++2E++EESEErrErerkrerxrrrrees 56
4.2.3.1 Giao diện chính - - cv 9 ng Hàng HH gưkt 56 4.2.3.2 Hooking clipboard ALPÏ 5c v3 1v 9v vn ngư, 56
Trang 84.2.3.3 Hooking sendTextMessage APPI - Ăn nseeeeeieerske 57
4.2.3.4 Hooking URL 2-©2s+2E+EE2EESEEEEEE2E12E1 21.21 59
4.2.3.5 Hooking Ïn(€TI c1 vn kg ngư 62
Chương 5 ĐÁNH GIÁ VA KET LUẬN - 5 +52+E++E+Eerkerkerxerkrree 64
5.1 Kết quả đạt đƯỢC :-ScSc 2122 E21 21212111211211211 211111111111 645.2 Những khó khăn và hạn chẾ - 2 ¿2+ + x+EE+EE+E££E++E££EerEerkerxerxsrxee 65
5.3 Hướng phát triỂn +-©¿++++E++2EEEEE+SEE2E1211271221 21121 crre 65
5.4 Kết luận S St 2 St St E121 112115111111111111111111111111111111111 2E EE tre 66
Trang 9DANH MỤC HÌNH ANH
Hình 1.1 Sơ đồ dự báo thị phần giữa các hệ điều hành di động toàn thé giới 3
Hình 2.1 Thi phần thương mại hệ điều hành di động theo StatCounter (07/2021) 9
Hình 2.2 Sơ đồ phân tang kiến trúc hệ điều hành Android -. 5 s2 s2 11 Hình 2.3 Sơ đồ trang thái vòng đời của một ActiVity -¿ccccecxccxecres 14 Hình 2.4 Máy ảo Android Emulator c 3c 13x 3E ESeEEseereeeeereeeereere 17 Hình 2.5 Luong thực thi hooking [4] - - - <6 +5 + k**xE+kE+EESkEEseseesskessersee 18 Hình 2.6 Phân loại công cu hooking dựa trên các đặc trưng -‹+ + 19
Hình 2.7 Mô hình thực hiện sử dung ETIa 25 5 3+ 1E E+vEEsseeeeersreers 23 Hình 2.8 Ví dụ các câu lệnh thuộc công cụ ÍrIda-fraC€ 55-5 + + ++sssssess 24 Hình 2.9 Giao diện Xposed sau khi hoàn tất cài đặt c-ccckcnnerrerrkererrryee 28 Hình 2.10 Giao diện Magisk và EdXposed khi cài đặt - - - 5+ 5-<+-+2 29 Hình 2.11 Mô hình hoạt động của beforeHookMethod và afterHookMethod [15] 32
Hình 2.12 Mô hình hoạt động của replaceHookedMethod - « «+s«2 33 Hình 2.13 Thêm thư viện XpsedBridge vào DrOJ€C 55c s+ss+exsseress 33 Hình 2.14 Thêm tag metadata vào tệp AndroidManifest.xml - 34
Hình 2.15 Thêm tệp Xposed_ Init vào thư mục aSS€fS - 5 - 55 +55 << £+ccsxx 34 Hình 2.16 Lưu logs và hiển thị tại Xposed Manager -¿©+©2++cxzxz>s+ 35 Hình 3.1 Linear Layout được sử dung trong ứng dụng thử nghiệm 37
Hình 3.2 Khai báo EditText trong file ManIfesf.xim] 55 55 5< <<+<£+s£ese 39 Hình 3.3 Mô phỏng vai tro CỦa Ïn€TIE < 11219 1v HH ng kg 40 Hình 3.4 Giao diện lựa chọn chức nang của ứng dung thử nghiệm 42
Hình 4.1 Mã nguồn JavaScript dùng dé hook phương thức startActivity() 44
Hình 4.2 Kết quả log thu được khi hook phương thức startActivity() -.- 45
Hình 4.3 Mã nguồn JavaScript dùng dé liệt kê Class được sử dụng - 46
Hình 4.4 Danh sách lớp đã được liệt kê - ¿5c 32+ E S2 SEserserrreereersrrrrs 47 Hình 4.5 Mã nguồn JavaScript dùng dé hook sự kiện onClick . .: 48
Hình 4.6 Kết quả thu được sau những lần sự kiện onClick được ĐỌI «S- 49
Hình 4.7 Màn hình xác thực mã PIN + 2113 E223 1 vs xe erzey 50
Trang 10Hình 4.8 Thực hiện thành công bypass mã PIN sàn seeseeirrrske 51
Hình 4.9 Brute-force mã PIN 4 chữ SỐ 2-©22©225E+SE‡EE22EE2EEEEEEEEEEEEerkrrkrrer 52
Hình 4.10 Mô hình hệ thống giám sát hành vi xây dựng dựa trên Xposed 55
Hinh 4.11 Giao dién hién thi 0 I _ 56
Hình 4.12 Hién thị thông báo khi phát hiện truy cập clipboard - 57
Hình 4.13 Hién thị cảnh báo khi ứng dụng gửi tin nhắn có chứa mật khẩu 58
Hình 4.14 Hiền thị thông báo ứng với lựa chọn của người dùng 58
Hình 4.15 Cảnh báo khi gọi đến ứng dụng gửi tin nhắn ngoài và có mật khẩu 59
Hình 4.16 Hién thị cảnh báo khi phát hiện URL có trong “danh sách đen” 60
Hình 4.17 Hiền thị thông báo hành vi ứng với lựa chọn của người dùng 61
Hình 4.18 Hién thị thông báo khi URL truy cập không có trong “danh sách den” 61
Hình 4.19 Hién thị thông báo hành vi mở camera từ ứng dụng - 62
Hình 4.20 Hiền thị thông báo hành vi hẹn báo thức và xem lịch - ‹ 63
Trang 11DANH MỤC BẢNG
Bang 2.1 Danh sách phiên ban Android đến thời điểm hiện tại 8
Bảng 2.2 So sánh tính năng giữa Frida va Xposed Framework 22
Bang 2.3 Phiên bản Xposed Framework và phiên bản Android tương thich 27
Bang 2.4 Thông tin về Xposed Framework API cc c2 cse: 30Bảng 4.1 Mô tả bang cơ sở dữ liệu "logs InÍO” ccc<ccs<+ 54
Bang 4.2 Danh sách tên lớp và tên phương thức được hook 55 Bang 4.3 Danh sách tên lớp và tên hàm dựng được hook 55
Trang 12DANH MỤC TỪ VIET TAT
API Application Programming Interface
SMS Short Message Service
VM Virtual Machine
APK Android Package
NEC Near-Field Communication
SSL Secure Sockets Layer
GSM Global System for Mobile Communications
EDGE Enhanced Data for Global Evolution
IDEN Integrated Digital Enhanced Network
CDMA Code Division Multiple Access
EV-DO Evolution-Data Optimized
UMTS Universal Mobile Telecommunication System
LTE Long Term Evolution
PDA Personal Digital Assistant
URL Uniform Resource Locator
SD Secure Digital
Trang 13mặt của thị trường thiết bị di động.
Với vị trí hệ điều hành lớn nhất thé giới thời điểm hiện tại cũng như giá thành
của những chiếc điện thoại thông minh Android ở mức trung bình thì ứng dụng chạy
trên hệ điều hành này đang được sử dụng rất phô biến trong cộng đồng Tuy nhiên,tốc độ phát triển quá nhanh của Android lại nảy sinh những khoảng trống hay lỗ hồng,đặc biệt là vấn đề về việc bảo mật và đảm bảo thông tin người dùng ứng dụng trên
điện thoại.
Trên một điện thoại Android hiện tại có thé thực hiện day đủ các chức năngcủa một máy tính thông thường thông qua các ứng dụng và những chức năng dự kiến
đang ngày một mở rộng hơn Người dùng lưu trên đó các thông tin cá nhân, tài khoản
ngân hàng, tài khoản truy cập các trang mạng Và một điều tất yếu, ứng dụng điệnthoại trở thành mục tiêu tấn công của vi rút, mã độc, mà tin tặc hay những thànhphần xấu dùng dé đánh cắp hay phá hoại thông tin người dùng
Trong đề tài này, nhóm tác giả trình bày một giải pháp sử dụng bộ công cụXposed và Frida để phân tích, khai thác và giám sát quá trình hoạt động của ứngdụng, nhằm mục đính hiéu rõ cơ chế hoạt động, ngăn chặn các tác nhân xấu bên ngoài
cũng như xây dựng môi trường sử dụng điện thoại an toàn cho mọi người.
Sau quá trình nghiên cứu, nhóm đưa ra quyết định rằng đầu tiên sẽ xây dựngmột ứng dụng Android có chứa san những chức năng cần thiết dé phục vụ cho quátrình thử nghiệm sau này Sau đó, nhóm tác giả sử dụng thiết bị giả lập và cả thiết bị
Trang 14that dé kiểm tra tính khả dụng của ứng dụng được viết Bước tiếp theo, nhóm sử dụngcông cụ Xposed làm căn bản dé giúp xây dựng như một ứng dụng có thê cài đặt trực
tiếp trên điện thoại đề điều tra và cảnh báo người dùng về nguy cơ xấu có thê xảy ra
Song song với đó, công cụ Firda được sử dụng một phần hữu ích hỗ trợ lập trình viênhay các nhà phát triển ứng dung có thé nghiên cứu và trích xuất những thông tin cần
thiệt băng việc can thiệp vào dữ liệu mã nguôn của ứng dụng.
Hiện tại, trong khuôn khổ khóa luận tốt nghiệp của nhóm thì giải pháp nàyđang ở một bước triển khai nhất định, hoàn toàn có thể hoàn thiện và mở rộng hơnnữa dé có được một giải pháp tổng thé toàn diện hơn Đây có thé là một bước đệm
quan trọng cho nhóm có thê cải tiến và đưa ra sản phẩm an toàn thông tin trong tương
lai có giá trị thiết thực trong cộng đồng
Trang 15Chương 1 TONG QUAN VE ĐÈ TÀI
Android @8 iOS Others
Hình 1.1 So đồ dự báo thị phan giữa các hệ điều hành di động toàn thế giới
Trong thế giới phát triển ngày nay, thiết bi đi động ngày càng được ưa chuộng
và trở nên thông dụng Theo dữ liệu từ trang web International Data Corporation
(IDC), số lượng thiết bị di động được bán ra thị trường đạt gần 346 triệu thiết bị mỗi
quý [1] Trong đó, số lượng thiết bị chạy trên nên tảng hệ điều hành Android chiếm
hơn 85% trên tổng thị phần các hệ điều hành đang được sử dụng và thị phần này được
dự đoán vẫn tiếp tục tăng trong những năm tiếp đó
Độ phô biến trên vô tình biến hệ điều hành Android trở thành nguồn tài nguyênmau mỡ đề những kẻ xâm nhập tập trung khai thác lỗ hồng bảo mật nguy hiểm và có
thé gây ra những hệ qua vô cùng nặng nề cả về vật chất và con người Việc cải tiễn
và sửa lỗi cũng là một vấn đề khó khăn đối với Android bởi vì đây là một hệ điều
hành mở, chỉ có thé xây dựng và liên tục cải tiến một bộ công cụ đủ mạnh mới có thểnhanh chóng tim ra và khắc phục những 16 hồng hiện có và có thé có trong tương lai
Vi vậy, chủ động giám sát ứng dụng va kip thời ngăn chặn hành vi gây ro ri dữ liệu
Trang 16giúp cho các nhà phân tích chủ động hơn trong việc bảo vệ thiết bị Android trước
những nguy cơ tiêm ân đên từ các loại mã độc và các cuộc tân công.
Nhằm kiểm soát mối đe doa đến từ việc khai thác tài nguyên trên hệ điều hànhAndroid, nhiều phương pháp phân tích đã được đề xuất và áp dụng Kỹ thuật phân
tích tĩnh và phân tích động thường được dùng trong quá trình phân tích ứng dụng trên
hệ điều hành Android Tuy nhiên, kế cả những ứng dụng an toàn cũng ứng dụng độchại hầu như đều sử dụng nhiều kỹ thuật bảo vệ nhằm tránh cho ứng dụng của họ bị
phân tích hoặc dịch ngược.
Đối với việc phân tích tĩnh, kỹ thuật làm rối mã (obfuscation) là một tháchthức lớn cho các nhà phân tích cũng như việc source-code của ứng dụng hầu nhưkhông phải là luôn sẵn có Bên cạnh đó, kỹ thuật phân tích tĩnh chỉ có thê kiểm trahành vi của ứng dụng ở mức API mà không thể phát hiện các hành vi tại thời gianthực, ví dụ địa chỉ URL khi kết nối mạng hay số điện thoại người nhận trong hành vigửi SMS Đối với kỹ thuật phân tích động, chong phân tích trong môi trường ảo hóa
(Anti — VM) cũng là một thách thức lớn trong việc phân tích hành vi các ứng dụng hiện nay đê có thê phân tích ứng dụng trên các công cụ ảo hóa.
Vi những khó khăn nêu trên, dé dé dàng hơn trong việc phân tích mã độc trênAndroid, kỹ thuật “hooking” được sử dụng dé giám sát và phân tích hành vi ứng dụngtrên Android.
1.2 Mục tiêu đề tài
Hệ thống giám sát và phát hiện xâm nhập không còn xa lạ trong cộng đồng bảo
mật và an toàn thông tin hiện tại và được triển khai trên nhiều nền tảng khác nhau.Riêng ở mảng thiết bị đi động nói chung cũng như nền tảng Android nói riêng, mặc
dù chiếm một thị phần vô cùng to lớn, song một hệ thống giám sát hành vi ứng dụng
hoàn chỉnh dành riêng cho nhóm thiết bị này vẫn chưa được chú trọng và phát triển.
Trong đề tài nghiên cứu này, kết hợp kỹ thuật “hooking” nhằm xây dựng hai hệ
thống giám sát hành vi ứng dụng trên nền tảng Android đáp ứng được nhu cầu giám
Trang 17sát hệ thống của các nhà phân tích cũng như người dùng cuối Đề tài được thực hiện
với các mục tiêu như sau:
e Ứng dụng hỗ trợ giám sát hành vi ứng dụng chạy trên hệ điều hành Android
tại thời gian thực Ứng dụng kịp thời phát hiện ra các truy cập dữ liệu bất hợppháp hoặc các hành vi kết nối hoặc gửi tin, gây rò rỉ dữ liệu cá nhân ra bên
ngoài và hiện cảnh báo.
e Ung dụng thực hiện giám sát một số APIs thông dụng và đặc trưng như: kết
noi URL, gửi SMS, truy cập clipboard, khởi động một activity
e Xây dựng ứng dụng phù hợp hỗ trợ pentester trong quá trình kiểm tra xâm
nhập các đối tượng cần kiểm thử.
e Xây dựng ứng dụng phù hợp với người dùng cuối, cho phép người dùng tương
tác với ứng dụng mục tiêu tại thời gian thực, từ đó đưa ra các phản ứng thích
hợp ứng với các hành vi nguy hiểm nêu trên (Allow / Block / Warning) Đồngthời ứng dụng cung cấp giao diện hiền thị logs ghi lại các hành vi đã diễn ra
trên ứng dụng mục tiêu.
1.3 Phạm vi nghiên cứu
° Ứng dụng được phát triển hỗ trợ giám sát hành vi và ngăn chặn trên hệ điều
hành Android Red Velvet SDK 30.
e Ứng dụng triển khai được trong môi trường kiểm thử và trong môi trường
dành cho người dùng cuôi.
1.4 Đối tượng nghiên cứu
Đối tượng nghiên cứu của đề tài tập trung vào hook một số APIs đặc trưng của
hệ thống Android cũng như phát triển hệ thống giám sát hành vi ứng dụng dựa trênhai công cụ hooking là Frida và Xposed Framework.
Trang 18Chương2 CƠ SỞ LÝ THUYET
2.1 Tổng quan về hệ điều hành Android
2.1.1 Thiết bị di động
"Thiết bị di động" là thuật ngữ chung cho bat kỳ máy tính bảng cầm tay hoặcđiện thoại thông minh nào Thuật ngữ này có thé hoán đổi cho nhau với "thiết bị camtay" và "máy tính cầm tay" Máy tính bảng, máy đọc sách điện tử, điện thoại thôngminh, thiết bị kỹ thuật số hỗ trợ cá nhân, máy nghe nhạc di động có khả năng thôngminh và nhiều thiết bị tiêu dig khác có sử dụng hệ điều hành là tat cả các thiết bị di
động.
Các nền tảng công nghệ ngày càng thu hẹp kích thước, mở rộng phạm vi hoạt
động và cách mạng hóa cách người dân và doanh nghiệp tiếp cận thông tin Điệnthoại thông minh / PDA / Thiết bị cầm tay là lựa chọn đủ sức mạnh dé có thé chạynhiều ứng dụng một cách một năng suất Những ứng dụng điện thoại di động có thểcho phép một cá nhân hoặc một tập thê kinh doanh đề có được quyền truy cập vàothông tin quan trọng trên đường đi mà việc này đến nay vẫn bị khóa bên trong mạngcông ty hoặc máy tính dé bàn cá nhân
Thực tế theo sự phát triển không ngừng nghỉ của công nghệ, chiếc điện thoại
di động thông minh hay máy tính bảng đã dần thay thế cho thói quen làm việc trên máy tính với mạng internet dé tìm kiếm thông tin về dịch vụ, sản phẩm Bây giờ,
người mua có thé không ngồi trước màn hình máy tinh dé tìm kiếm sản phẩm hay
dịch vụ ma đã chuyền sang các thiết bị di động lướt web đơn giản hơn rat nhiều
2.1.2 Khái niệm hệ điều hành Android
Android là một hệ điều hành có dạng mã nguồn mở, nó hoạt động dựa trên nềntảng Linux và được thiết kế dành riêng cho những thiết bị đi động có màn hình cảmứng như điện thoại thông minh hoặc máy tính bảng Thiết kế của nó cho phép ngườidùng điều khién các thiết bị một cách trực quan bang chuyên động ngón tay thực hiệncác chuyền động thông thường, ví dụ như ấn, vuốt và chạm
Trang 19Đây là một trong những hệ điều hành mã nguồn mở cùng với việc được Googlecung cấp mã nguồn dựa trên giấy phép ít bị ràng buộc có tên Apache đã mang lạinhiều tiện ích cho các nhà mạng, nhà phát triển thiết bị và các lập trình viên có théphân phối và điều chỉnh hệ điều hành Android một cách dễ dàng, tự do Đây chính làmột trong những yếu tố đã giúp cho Android trở thành nền tảng xây dựng điện thoạithông minh phát triển nhất trên thế giới.
Đối với những nhà phát triển thiết bị họ rất ưa chuộng, ưu tiên lựa chọn hệđiều hành Android bởi chúng đã quá thân thiện với người dùng, khả năng vận hành
tốt, tinh chỉnh đơn giản, giảm thiểu được tôi da chi phí cho nhà sản xuất và cả người
tiêu dùng.
2.1.3 Lịch sử phát triển của Android
Hệ điều hành Android được lấy tên từ Android, Inc — công ty khai sinh ra nó.Trong những thời gian đầu, hệ điều hành Android được phát triển bởi Tổng công tyAndroid trụ sở tại thung lũng Silicon, dưới sự hỗ trợ tài chính từ Google Bén ngườisáng lập và cũng là những thành viên chủ cốt, hoạt động tích cực nhất là Rich Miner,
Nick Sears, Chris White va Andy Rubin Sau nay, nó được mua lại và chính thức
thuộc quyền sở hữu của Google từ năm 2005
Nhưng phải đến năm 2007, Android mới được ra mắt Công ty bắt đầu kếhoạch cạnh tranh với Apple và các nền tảng di động khác Google đã tận dụng vai tròthành viên của một Liên minh Thiết bị cam tay Mở (Open Handset Alliance), vốn di
có sự góp mặt của nhiều nhà sản xuất điện thoại như HTC, Motorola, nhà sản xuất
chip như Qualcomm va Texas Instruments, cũng như nhà mạng lớn như T-Mobile.
Chiếc điện thoại đầu tiên chạy bằng hệ điều hành Android là T-Mobile G1, có tên
khác là HTC Dream, được mở bán vao tháng 10 năm 2008.
Trải qua thời gian, Android đã trải qua nhiều lần cập nhật dé dan dan cải tiến
hệ điều hành, bổ sung các tính năng mới và sửa các lỗi trong những lần phát hànhtrước Mỗi bản nâng cấp được đặt tên lần lượt theo thứ tự bảng chữ cái, theo tên của
một món ăn tráng miệng, ví dụ như phiên bản 1.5 Cupcake (bánh bông lan nhỏ có
Trang 20kem) hay phiên bản tiếp nối 1.6 Donut (bánh vòng) Phiên bản mới nhất hiện nay là
Android 11 hoặc Android R, ra mắt vào tháng 9 năm 2020
Tên gọi Phiên bản API Ngày ra mắt
- Không tên - 1.0 1 September 23, 2008
- Không tên - 1.1 2 February 9, 2009
Cupcake 1.5 3 April 27, 2009 Donut 1.6 4 September 15, 2009 Eclair 2.0-2.1 5-7 October 26, 2009
Froyo 2.2 - 2.2.3 8 May 20, 2010
Gingerbread 2.3 - 2.3.7 9-10 December 6, 2010 Honeycomb 3.0 - 3.2.6 11-13 February 22, 2011
Ice Cream Sandwich 4.0 - 4.0.4 14-15 October 18, 2011
Jelly Bean 4.1-4.3.1 16 - 18 July 9, 2012
KitKat 44-444 19 - 20 October 31, 2013
Lollipop 5.0 - 5.1.1 21-22 November 12, 2014 Marshmallow 6.0 - 6.0.1 23 October 5, 2015
Nougat 7.0 24 August 22, 2016 Nougat 7.1.0 - 7.1.2 25 October 4, 2016 Oreo 8.0 26 August 21, 2017 Oreo 8.1 27 December 5, 2017 Pie 9.0 28 August 6, 2018 Android 10 10.0 29 September 3, 2019
Bang 2.1 Danh sách phiên ban Android đến thời điểm hiện taiAndroid là một sản phẩm của Google, nhờ có nhiều sự lựa chọn về giá thành
và đa dạng về mặt sản phẩm đã giúp cho Android trở thành nền tảng điện thoại thôngminh phô biến nhất thế giới Chi tính tới quý 3 năm 2012, hệ điều hành Android đãchiếm hơn 75% thị phần điện thoại thông minh trên toàn thế giới Với hơn 500 triệuthiết bị được kích hoạt, 1,3 triệu lượt kích hoạt mỗi ngày Trên dưới 700.000 ứng
Trang 21dụng trên hệ điều hành Android là lượt tải ứng dụng từ cửa hàng chính trên Android
— Google Play đạt ước tính khoảng 25 tỷ lượt.
Ngày nay, thị trường smartphone gần như chỉ là dành cho hai hệ điều hành lớn
là iOS của Apple và Android của Google Theo số liệu của công ty thống kê webStatCounter, từ tháng 6/2020 đến tháng 6/2021, Android chiếm 72,83% thị phần hệ
điều hành di động, iOS chiếm 26,35%, và các hệ điều hành khác chỉ chiếm dưới 1%thị phần
Hình 2.1 Thị phan thương mại hệ điều hành di động theo StatCounter (07/2021)
2.1.4 Những đặc điểm của Android
e UI— Giao diện người dùng: Màn hình Android OS cơ bản cung cấp một giao
diện người dùng đẹp và có tính thâm mỹ cao
e_ Connectivity - Hỗ trợ kết nối: GSM/EDGE, IDEN, CDMA, EV-DO, UMTS,
Bluetooth, Wi-Fi, LTE, NFC và WiMAX.
Trang 22e Lưu trữ: SQLite, một relational database gọn nhẹ, được sử dụng cho mục đích
lưu trữ dữ liệu
e Hỗ tro Media: H.263, H.264, MPEG-4 SP, AMR, AMR-WB, AAC, HE-AAC,
AAC 5.1, MP3, MIDI, Ogg Vorbis, WAV, JPEG, PNG, GIF, va BMP.
e Thông báo: SMS va MMS.
e Trình duyệt Web: Dựa trên thiết bi WebKit mã nguồn mở, đi kèm với thiết bị
V8 JavaScript của Chrome hỗ trợ HTML5 va CSS3.
e Multi-touch: Android hỗ trợ cho multi-touch mà đã được tạo ban đầu có sẵn
cho các Handset như HTC Hero.
e Đanhiệm: Người dùng có thé nhảy từ một tác vụ tới tác vụ khác và nhiều ứng
dụng đa dạng có thê chạy đồng thời cùng một lúc
e Widget tùy chỉnh: Widgets có thê thay đổi kích cỡ, vì thế người dùng có thé
mở rộng dé hiền thị nhiều nội dung hơn, hoặc thu nhỏ dé tiết kiệm không gian.
e Đa ngôn ngữ: Hỗ trợ text đơn hướng và song hướng.
e GCM: Google Cloud Messaging (GCM) là một dịch vụ cho phép lập trình viên
gửi thông điệp dữ liệu ngắn tới người dùng trên thiết bị Android, mà khôngcần một Sync Solution
e Wi-Fi Direct: Một công nghệ cho phép các ứng dụng dò tìm và ghép cặp một
cách trực tiếp, thông qua một kết nối peer-to-peer
e© Android Beam: Một công nghệ dựa trên NFC phô biến cho phép người dùng
chia sẻ tức thì, chỉ cần kích hoạt NEC của hai điện thoại với nhau
2.1.5 Kiến trúc hệ thống của hệ điều hành Android
Hệ điều hành android là tập hợp một nhóm những phần mềm khác nhau, đượcchia thành 5 phần riêng biệt (Linux Kernel, các thư viện Android, Android Runtime,
Application Framework và Applications) va 4 phân lớp chính như hình dưới đây:
10
Trang 23Dưới cùng là lớp nhân Linux - lớp này cung cấp 1 cấp độ trừu tượng giữa phầncứng của thiết bị và các thành trình điều khiến phần cứng thiết yếu như máy ảnh, bànphim, màn hình hiền thị Đồng thời, hạt nhân (kernel) còn xử lý tất cả các thứ mà
Linux có thé làm tốt như mạng kết nối và 1 chuỗi các trình điều khiển thiết bị, giúpcho giao tiếp với các thiết bị ngoại vi dé dang hơn
2.1.5.2 Cac thư viện Android
Ở trên lớp nhân Linux là tập các thư viện bao gồm WebKit - trình duyệt Web
mã nguôn mở, bộ thư viện nôi tiêng libc, cơ sở dữ liệu SQLite - hữu dung cho việc
11
Trang 24lưu trữ và chia sẻ dữ liệu ứng dụng, các thư viện chơi và ghi âm audio, video, hay các
thư viện SSL chịu trách nhiệm bảo mật Internet
Một số các thư viện chính dựa trên Java phục vụ cho việc phát triển Android bao
android.database: Được sử dụng để truy cập dir liệu của content provider và
cơ sở dữ liệu SQLite.
android.opengl: Giao diện các phuơng thức Java để sử dụng OpenGL ES.
android.os: Cung cấp các ứng dụng với quyền truy cập vào các dịch vụ của
hệ điều hành bao gồm thông điệp, các dịch vụ hệ thống và các giao tiếp nội tại
android.text: Được sử dụng dé hiển thị và điều chỉnh chữ trên màn hình thiết
bị.
android.view: Các thành phần cơ bản trong việc xây dựng giao diện người
dùng của ứng dụng.
android.widget: Tập các thành phan giao diện người dùng đã được xây dựng
sẵn như các nút, các nhãn (label), list view,
android.webkit: Tập các lớp cho phép xây dựng khả năng duyệt web.
2.1.5.3 Android Runtime
Day là phần thứ 3 của kiến trúc và nằm ở lớp thứ 2 từ dưới lên Phan này cung cấp một bộ phận quan trọng là Dalvik Virtual Machine - là 1 loại Java Virtual Machine được thiết kế đặc biệt đề tối ưu cho Android.
Dalvik VM sử dụng các đặc trưng của nhân Linux như quản lý bộ nhớ và đa
luồng, những thứ mà đã có sẵn trong Java Dalvik VM giúp mọi ứng dụng Android
12
Trang 25chạy trong tiến trình riêng của nó, với các thé hiện (instance) riêng của Dalvik Virtual
+ Resource Manager: Cung cấp quyền truy cập vào các tài nguyên như các
chuỗi, màu sắc, các layout giao diện người dùng
+ Notifications Manager: Cho phép các ứng dụng hiển thị cảnh báo và các
thông báo cho người dùng.
+ View System: Tập các thành phan giao diện (view) được sử dung dé tạo giao
Trang 262.1.6 Những thành phan quan trọng của ứng dụng Android
2.1.6.1 Activity
Activity [2] là một thành phần của ứng dụng Android Android Activity là nơi
để ứng dụng tương tác trực tiếp với người dùng thông qua giao diện Một ứng dụng
có thé sẽ có nhiều màn hình và mỗi màn hình có thé là một Activity (nếu không sử
Service là một trong 4 thành phần của ứng dụng Android, có thê thực hiện các
tác vụ cần nhiều thời gian và không hè có giao diện người dùng (UI) Từ Activity cóthé khởi chạy một Service trong Android và sau đó thé tat ứng dụng dé chuyền sangứng dụng khác mà Service vẫn tiếp tục công việc mà không bi kill
14
Trang 27Về bản chất thì Service vẫn chạy trên main thread của ứng dụng (mỗi ứng dụng
khi chạy, Android sẽ tạo một thread cho ứng dụng đó) Nó không tạo ra Thread riêng
độc lập với ứng dụng Nếu service bị treo, nó có thê khiến ứng dụng bị treo (lỗi ANR
— Application Not Responding) Dé khắc phục điều này thì tạo một Thread bên trongService là cần thiết
2.1.6.3 Content Provider
Content Provider là một thành phan giúp các một ứng dụng có thé đọc và ghi
dữ liệu từ một file hoặc từ SQLite của một ứng dụng khác trong cùng một hệ thống.
Bắt kỳ ứng dụng nào có quyền (permission) đều có thể truy xuất, chỉnh sửa dữ liệucủa một ứng dụng khác Chúng cho phép kiểm soát permission, cho phép ứng dụngkhác có quyền truy cập đến nguồn lưu trữ dữ liệu hay không, giúp cho việc chia sẻ
dữ liệu trở lên dé dàng Và tất nhiên, bat kỳ ứng dung nào có quyền (permissions)
phù hợp đều có thể thêm, xóa, cập nhật và truy xuất dữ liệu của một ứng dụng khácbao gồm dữ liệu trong một số cơ sở đữ liệu Android Native
Có 2 loại Content Provider:
« Native content provider: chúng cung cấp quyền truy cập vào cơ sở dữ liệu tích
hợp có sẵn, chăng hạn như Contacts, Media player, Message và các cơ sở dữ
liệu gốc khác Lập trình viên cần cấp các quyền cần thiết cho ứng dụng củamình trước khi sử dụng nhà cung cấp nội dung gốc
e Custom content providers: một dang cơ sở dữ liệu tự tạo bởi nhà phát triển để
phù hợp với các yêu cầu của ứng dụng
2.1.6.4 Broadcast Receiver
Broadcast Receiver là một thành phan của ứng dung giúp lang nghe các sự kiện
mà hệ thống phát ra thông qua Intent, hệ thống có thé truyền phát ngay cả khi app
không chạy Broadcast Receiver không có giao diện cụ thé nhưng nó có thé thực hiện
thông báo thông qua thanh Notification.
15
Trang 28Có rất nhiều broadcast được phát ra từ hệ thống, ví dụ như một broadcast thông
báo rằng màn hình điện thoại đã tắt, hay điện thoại đang ở trạng thái “Battery Low”,
“Power Connected”, “Power Disconnected” hoặc một bức ảnh đã được chụp Cũng
có những broadcast được phát ra từ ứng dụng như sau khi download một tệp, ví dụ:
Sau khi hoàn thành download một tệp tin, ứng dụng A phát ra thông báo là dữ liệu đã
download xong, tệp đã sẵn sàng cho các ứng dụng khác có thé sử dụng
2.1.7 Trinh gia lập Android — Android Emulator
Emulator hay còn được gọi là “Trình giả lập” - là một chương trình phần mềmcho phép máy tính giả lập các tính năng của một phần mềm di động bằng cách cài đặt
các trình giả lập tương ứng.
Trình giả lập ra đời khi những nhà phát triển ứng dụng muốn kiểm tra phầnmềm trên một dòng máy khác nhưng lại không có nhu cầu sắm sửa quá nhiều thiết bịkhác nhau Sau này, việc giả lập còn giúp cho người dùng có thê trải nghiệm đượcnhiều phần mềm không tương thích với hệ điều hành đang dùng
Android Emulator giả lập tất cả các tính năng phần cứng và phần mềm của
một thiết bị di động điền hình, trừ việc khó không thể nhận hoặc gọi các cuộc điện
thoại thực và một số tính năng khác
Android Virtual Devices (AVD): Cho phép người dùng có thé tạo cau hình
thiết bị ảo, mô phỏng các đặc điểm của bộ giả lập Android Với mỗi cấu hình, hệ
thống xác định nên tảng, tùy chỉnh phần cứng hay giao diện sử dụng tương thích Mỗitùy chỉnh của AVD sẽ như một thiết bị độc lập với dir liệu lưu trữ của nó, thẻ nhớ
SD, v.v.
16
Trang 29Android Emulator - Nexus_5X_API_26:5554
Hình 2.4 Máy ảo Android Emulator
2.2 Tổng quan về kỹ thuật hooking
2.2.1 Tông quan
Hooking được định nghĩa là một kỹ thuật can thiệp vào hành vi của hệ thống,
ứng dụng được chỉ định dé giám sat hoặc thay đổi việc thực thi của hệ thống, ứng
dụng đó [3] Cụ thé, bằng cách bắt các lời gọi ham (function call) hoặc lời gọi hệthống (system call), sau đó chèn các đoạn code viết sẵn vào phần code gốc với mục
đích dé thay đổi tham số truyền vào hoặc giá tri trả về của hàm đã hook để thực hiện
các thay đôi theo mong muốn cho sau nay Hooking cho phép việc thay đồi hành vi
của hàm được thực hiện một cách linh hoạt, lập trình viên có thé hook hàm trước khihàm được gọi, ngay tại thời thời điểm thực thi (runtime) hoặc cả sau khi hàm đã đượcgọi, tùy thuộc vào mục đích phân tích Nhờ vậy các nhà phân tích có nhiều sự lựa
17
Trang 30chọn trong việc giám sát và phát hiện hành vi của mã độc mà không cần tốn nhiều
thời gian cho việc gỡ rối mã hay dựng môi trường pentest tương thích
Original Flow After Hook
Hook _Funcifab)
Hinh 2.5 Luong thuc thi hooking [4]
Kỹ thuật hooking sử dung nhiều phương pháp khác nhau dé bắt va chỉnh sửahàm, đồng thời cung cấp đa dạng các công cụ có thé triển khai được trên nhiều hệđiều hành khác nhau, bao gồm: Windows, Linux, macOS, iOS, và Android Trongbài nghiên cứu này, nhóm sẽ tập trung vào nghiên cứu kỹ thuật hooking trên thiết bi
di động Android.
2.2.2 Phân loại công cụ hooking
Về cơ bản kỹ thuật hooking trên thiết bị Android có thể được chia thành hailoại chính sau [5]: Hooking dựa vào việc chỉnh các lời gọi hệ thống Android vàHooking dựa vào việc chỉnh sửa các APIs được dùng trong tiến trình ứng dụng Với
cách 1, tuy có thé chỉnh sửa các lời gọi hệ thống nhưng không thé thé thay đổi đối
với phan cau trúc của thiết bị, do đó hooking chỉ thực hiện được trên một vài thiết bị
nhất định, bao gồm: thiết bị thuộc Google Nexus và thiết bi ảo hóa Việc này tạo cơ
hội tốt cho các mã độc có chức năng chống phân tích trong môi trường máy ảo có thêphát triển Tuy nhiên, cách 2 cũng không phải là tối ưu nhất nếu như mã độc có sửdụng kỹ thuật đảm bảo tính toàn vẹn, khi đó mã độc có thể ngừng hoạt động nếu phát
hiện tôn tại chỉnh sửa đôi với ứng dụng.
18
Trang 31Hiện nay, có nhiều công cụ hỗ trợ việc hooking trên thiết bị Android Với mỗicông cụ sẽ có nhiều cách triển khai và thực hiện hooking khác nhau Theo như bai
nghiên cứu “A Survey on Function and System Call Hooking Approaches” [6] thực
hiện boi Juan Lopez và cộng sự, nhăm tạo sự khách quan trong quá trình chọn lựa,các công cụ và kỹ thuật hooking có thể được đánh giá dựa trên các tiêu chí của hình
Hình 2.6 Phan loại công cu hooking dựa trên các đặc trưng
e Cách hooking (Subroutine Type): Hệ điều hành hoạt động, chia bộ nhớ
thành hai vùng riêng biệt: kernel-space và user-space, từ đó phát sinh hai loại
hooking, bao gồm: function hooking và system call hooking
o Function hooking: Hooking diễn ra tại user-space và không yêu cầu cấp
quyền admin hoặc quyên root của thiết bị
o System call hooking: Hooking diễn ra tại kernel-space, do đó đòi hòi truy
cập với phân quyền cao hơn so với function hooking
e_ Thời điểm thực thi (Hook Insertion): Hooking có thể diễn ra trước khi hàm
mục tiêu được thực thi, ngay thời điểm thực thi (runtime), hoặc sau khi đã thực
19
Trang 32thi Dựa vào thời điểm thực thi hooking có thé chia các công cụ và kỹ thuật
hooking thành hai loại:
o_ Static hooking: dùng đề chỉ những công cụ mà quá trình hooking sẽ diễn
ra trước khi hàm mục tiêu được gọi Đối với các kỹ thuật hooking hoặccông cụ hooking có thực hiện sửa đổi mã thực thi nhị phan (binaryexcutable), thu muc hé điều hành hoặc môi trường runtime đều sẽ được
liệt kê vào loại static hooking.
o Dynamic hooking: Đây là kỹ thuật hooking mà mã thay đổi của chúng
được thực thi tại thời điểm hàm mục tiêu thực thi (runtime), quá trìnhnày diễn ra tại bộ nhớ Dynamic hooking không yêu cầu phải chỉnh sửa
hệ điều hành và quyền truy cập cao
e Xw lý dữ liệu (Instrumention Type): Phân loại quá trình hooking dựa trên
cách xử lý phần dữ liệu khi chương trình bắt được hàm mục tiêu
o Passive: Khi người dùng bắt hàm mục tiêu và lay được các phan thông
tin cơ bản, ví dụ như số lần tiến trình được gol, đối số hay giá trị trả vềcủa hàm mà không làm thay đổi nội dung của hàm gốc thì đó là phươngthức hooking loại Passive Các giá tri bắt được sau đó có thé được định
dạng và lưu vào các tệp tin để sử dụng
o Active: Bao gồm các kỹ thuật hooking có thay đổi đối số truyền vào hoặc
giá trị trả về của hàm mục tiêu Đặc biệt, các công cụ này còn cho phéphành động chặn việc gọi hàm mục tiêu hoặc thay đổi hành vi của ham
mục tiêu bằng cách chỉ định gọi một hàm thay thế Một công cụ hooking
có thé sử dụng ca Passive va Active trong quá trình hooking
e Vị trí thực thi (Hooking Location): Kết qua trả về cho quá trình hooking có
thé được thé hiện trên chính thiết bị mục tiêu hoặc cần gửi đến một thiết biserver nằm bên ngoài thiết bị mục tiêu, tùy thuộc vào cách vận hành từng công
cụ khác nhau.
o On-device (local): Da số các công cụ hooking đều hoạt động ở chế độ
on-device Chế độ này cho phép hooking và thé hiện kết quả trên thiết
20
Trang 33bị được cài đặt công cụ mà không yêu cầu thêm thiết bị bên ngoài để
giám sát.
o Off-device (remote): Ngược lại, off-device yêu cầu nhiều hơn một thiết
bị để có thể thực hiện việc hooking Frida hoạt động theo mô hìnhclient-server là ví dụ tiêu biểu cho loại hooking này
e Chinh sửa hệ điều hành (OS Modification): Công cụ hook lời gọi hệ thống
sẽ yêu cầu root thiết bị; ngược lại, hook lời gọi hàm sẽ không yêu cầu
e Mã nguồn (Source-code): Bao gồm: Open-Source và Closed-Source
e_ Chỉ phí (Pricing Model): Bao gồm 2 loại: miễn phí và có tính phí
2.2.3 Công cụ hooking được nghiên cứu trong đề tài
Trong bài nghiên cứu này, nhóm sẽ nghiên cứu tập trung khai thác các tính
năng của hai công cụ đang được sử dụng rộng rãi trên thiết bị Android, đó là Frida vàXposed Framework Cả hai công cụ đều đại diện cho kỹ thuật function call hooking
Tuy nhiên, trong khi Frida hooking động (Dynamic function call hooking) thi Xposed
Framework là công cụ sử dụng kỹ thuật hooking tinh (Static function call hooking).
Dưới đây là bang so sánh [7] tong quan dựa trên các tinh năng đã được dé cập ở mục
trên giữa Frida và Xposed Framework.
Frida Xposed Framework
Trang 352.3 Tong quan về công cu hooking
2.3.1 Frida
2.3.1.1 Tổng quan
Frida là một framework hỗ trợ chèn các đoạn mã vào một ứng dụng được cài
đặt và chạy trên thiết bị mục tiêu, giúp nhà phân tích có thể nắm được các luồng hoạt
động của ứng dụng, từ đó việc đưa ra các đánh giá, kiểm tra và thực hiện kiểm thử
(pentest) các ứng dụng Android trở nên dễ dàng hơn Frida là công cụ hooking hỗ trợ
cực mạnh cho quá trình phân tích động ứng dụng.
Cách cài đặt: Frida chia thành 2 phần client và server:
« Frida-client: cài ở máy tính của mình, giúp lập trình viên dé dàng điều khiển
Trang 36Các bước chính thực hiện phân tích động sử dụng Frida:
« _ Thiết lập môi trường: cài đặt gói thư viện và phần mềm cần thiết cho quá trình
cho việc sử dụng Firda như môi trường Python, gói Android SDK,
« Thiết lập và chạy Frida server trên các thiết bị Android cần kiểm tra
e Thực hiện viết mã script chứa ham Java can được chèn vào trong ma nguồn
của ứng dụng khi được chạy.
¢ Str dụng đoạn mã vừa viết dé thực thi trên máy tính và xử lý phân tích kết qua
nhận được.
2.3.1.2 Những công cụ được hỗ trợ trong Frida
e frida-ps: Đây là một công cụ hỗ trợ dòng lệnh được dùng dé liệt kê các
chương trình đang chạy trong hệ thống và rất hữu ích khi được dùng dé tươngtác với các hệ thống từ xa Có thé sử dụng công cu frida-ls-devices để kiệt kê
các thiết bị liên quan cùng với ID của thiết bị, rất có ích trong khi tương tác
với nhiều thiết bị
e frida-trace: Công cụ theo dõi một cách linh động các lời gọi hàm.
$ frida-trace decorate -1 “recv*" -i “send*" Safari
$ frida-trace \
-U \
-f com.toyopagroup.picaboo \ -I “libcommonCrypto*"
Hình 2.8 Vi du các câu lệnh thuộc công cu frida-trace
24
Trang 37e frida-discover: Đây là một công cụ rất hữu ích cho việc khám phá các internal
function (hàm nội bộ) của một chương trình, sau đó có thể được theo dõi băng
công cụ frida-trace.
e_ frida-kill: Day là công cụ dùng dé kết thúc những chương trình đang hoạt
động Lập trình viên có thể sử dụng công cụ frida-ps để liệt kê các chươngtrình hiện đang hoạt động và kiểm tra xem các chương trình đã kết thúc hay
chưa sau khi sử dụng frida-kill.
2.3.2 Xposed Framework
2.3.2.1 Tong quan
Nhu cầu giám sát hành vi của ứng dụng không còn là nhu cau riêng của các
nhà phân tích mã độc trong môi trường kiểm thử mà còn là nhu cầu chung của hầuhết người dùng Android trong giai đoạn hiện tại Xposed Framework là công cụhooking, cho phép giám sát hành vi ứng dụng ở cấp độ hệ thống, kịp thời ngăn chặnhành vi nguy hiểm trên thời gian thực đồng thời hỗ trợ giao diện để người dùng cóthé tương tác trực tiếp với modules
Xposed Framework là một công cụ mã nguồn mở, được phát triển bởi lập trìnhviên @rovo89 và công bồ lần đầu tiên trên diễn đàn XDA vào ngày 31/03/2012, hỗtrợ cho hệ điều hành Android có phiên bản từ 4.0 trở lên Xposed modules là các ứngdụng được lập trình viên phát triển dựa trên Xposed Framework API, cho phép ngườidùng thay đổi hành vi của hệ thống, ứng dụng, tùy chỉnh ROM và hệ điều hành (giao
diện, thao tác, chức năng) mà không cần chỉnh sửa code trực tiếp trên tệp APK của
bên thứ 3 hoặc flash các tập tin từ bên ngoài.
Xposed Framework hỗ trợ nhiều tiện ích cho cả lập trình viên khi phát triểnmodule cũng như cho người dùng trong quá trình sử dụng chúng Về phía lập trìnhviên, modules hoạt động như một ứng dụng thông thường trong hệ thống, dễ dàng
tương thích với nhiều phiên bản Android và ROM mà không cần phải thay đổi nộidung code Về phía người dùng, Xposed Framework không giới hạn số lượngmodules được kích hoạt cùng lúc, là một điểm mạnh tạo nên sự đa dạng và linh hoạt
25
Trang 38trong quá trình chọn lựa cũng như sử dụng Bên cạnh đó, vì quá trình hooking của
Framework này không làm thay đổi cấu trúc của hệ điều hành, người dùng chỉ cần
hủy kích hoạt module và reboot lại hệ thống nếu muốn hoàn tác và trả hệ thống về lại
ban đâu.
Về phần cài đặt, Xposed Framework yêu cầu quyền thực thi ở mức quản trị
viên trên thiết bị để cho phép framework thực hiện các sửa đôi hàm ở cấp độ hệ thống,
do đó công cụ nay đòi hỏi phải được cai đặt trên thiết bị có quyền root đề thực hiện
được hành động trên Đề cài đặt Xposed Framework, thiết bị Android cần được root
trước đó.
2.3.2.2 Các phiên bản của Xposed Framework
Xposed Framework gốc do @rovo89 phát triển hỗ trợ một số phiên bảnAndroid nhất định và hiện tại đã không còn tiếp tục phát triển Tuy nhiên, nhiều nhàphát triển thêm các công cụ tương tự dựa trên API của Xposed Framework gốc, có
thé hoạt động tương thích với một vài phiên ban Android cũ cũng như các phiên bản
Android mới hiện nay Bảng bên dưới là danh sách các phiên bản Android tương
thích với các phiên bản Xposed được phát triển và sử dụng hiện nay [8]
Phiên bản Xposed Phiên bản Android
Xposed Framework e Android KitKat (4.4 — 4.4.4) [sdk19/20]
(Dalvik) e Android JellyBean (4.1 — 4.3) [sdk16/17/18]
e Android Ice Cream Sandwich (4) [sdk14/15]
26
Trang 39Back-ported Xposed e Android Gingerbread (2.3) [sdk9/10]
Bảng 2.3 Phiên bản Xposed Framework và phiên bản Android tương thích
Back-ported: Xposed Framework không hỗ trợ từ Android 1.0 đến Android
3.2.6 (Honeycomb), ngoại trừ phiên ban Android 2.3 — 2.3.7 (Gingerbread)
Back-ported Xposed được @liudongmiao phát triển dựa trên framework sốc, hoạt động
tách biệt so với dự án Xposed Framework của @rovo89, hỗ trợ cài đặt Xposed trên
thiết bị Android Gingerbread
Xposed Framework: Đây là dự án của tác giả @rovo89, hỗ trợ cài đặt trên
các thiết bị từ Android 4.0 đến Android 8 đã được root Bân đầu, người dùng đượccung cấp tệp XposedInstaller.apk tại website https://repo.xposed.info/ [9] lên
Android từ 4.0 đến 4.4.4 Ké từ Android 5.0 đến 8.1, thông tin về Xposed Frameworkđược cập tại XDA Forum [10] Đề sử dụng Xposed Framework cho thiết bị Android
từ sau 5.0 trở lên, cần cài đặt hai thành phần sau:
e Xposed Framework (xposed*.zip): cung cấp môi trường dé các modules
hook hoạt động cũng như cung cấp thư viện hỗ trợ viết các module Version
90 (v90) là phiên bản mới nhất hiện tại
e Xposed Management (XposedInstaller *.apk): Hỗ trợ import các module
vào môi trường Xposed Cần tải file xposed*.zip tương ứng với từng phiên
bản và kiến trúc hệ thống Android dé Xposed có thé hoạt động
27
Trang 40Đề cài đặt Xposed, người dùng cần thực hiện lần lượt các bước sau:
(1) Flash tệp XposedInstaller_*.apk vào thiết bị
(2) Reboot
(3) Cài đặt tệp XposedInstaller_*.apk vào thiết bị
(4) Chon Install trong giao diện quan lý
IẾt— Android 5.1 (Lollipop, API 22)
Q Unknown Generic Samsung
(AOSP-based ROM)
x86
Hình 2.9 Giao diện Xposed sau khi hoàn tất cài đặt
Bên cạnh đó, dé gỡ cài đặt hoàn toàn Xposed Framework khỏi thiết bi Android,
người dùng có thé flash tệp xposed-uninstaller*.zip được cung cấp tại diễn dan XDA
EdXposed: là phiên bản kế thừa của Xposed do @meoweat viết dựa trén nền
tảng Xposed Framework, cung cấp một ART hooking framework hoạt động dựa trêncác API của Xposed Framework hoạt động tương thích trên các thiết bị Android mới
hơn Cu thể, EdXposed hỗ trợ cho thiết bi Android từ API 8.0 đến API 11 Theo nhưtác giả, vì dùng cùng một API với Xposed Framework, do đó hầu hết modules từ
28