Công cụ được xây dựng trên nền tảng của Java và Python, tích hợp nhiều kỹthuật học máy đề phân tích các quyền của ứng dụng và tính toán mức độ rủi ro.. Phân Tích Quyền Permission Analysi
Trang 1ĐẠI HỌC QUÓC GIA TP HÒ CHÍ MINH
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN
KHOA KHOA HỌC VÀ KĨ THUẬT THÔNG TIN
HÀ THỊ THU THUỶ - 21522914
KHÓA LUẬN TÓT NGHIỆP
XÂY DUNG HE THONG KIEM THU
BAO MAT UNG DUNG ANDROID
Building an Android application security testing system
CU NHAN NGANH CONG NGHE THONG TIN
GIANG VIEN HUONG DAN
TS NGUYEN TAN CAM
TP HO CHÍ MINH, 2024
Trang 2MỤC LỤC
09090 0900017 77 ốố 1 /.0);0\/00/98:ì0):014000017777 Ô 2 /.0\);:000/9079160177 3
DANH MUC TU VIET tà v00 4 TOM ,809-V00.4:(0.000/0 10757 ,H 5
CHƯƠNG 1 2c) ) 6
1.1 €)900)201062)509.10007172777 6
1.2 MOT SO CÔNG TRÌNH NGHIÊN CỨU TƯƠNG TU uu seesssssseseseeseseeseseeceaeeeseeesseseeseseeaeaeecseeeeaeeecaseeeaeeees 6
1.2.1 Phân Tích Quyén (Permission Analysis): "Android Permissions Demystified" [2J 6
1.2.2 — Phân Tích Tinh (Static ANAl]ysis) iccecccccscssccssssssessessessesscsssssssscsscsscseseecsessecseseesesesseseenseseeaeees 7 1.23 — Hoc May Trong Bao Mật Di Động: "Drebin: Effective and Explainable Detection of Android
Malware in Your 0 g6s 00p ố.ố 9
1.3 MỤC TIÊU, DOI TƯỢNG, PHAM VI NGHIÊN CUU cccccscesscesscesecescesscessecseesseessceseesseessseseesatesseesseeatenace 9
1.3.1 Muc tiéu ctid G6 tdi cesceeccccsccssessseessesesssssecssesssesssesssesssecssesssesssesssesssesssesssssssessesssetssesssesssecssecsseesss 9 1.3.2 Đối Tượng Nghiên Ce cecsecssecsssssseessesssssssesssesssesssesssesssesssesssecssecssssssessussssssssssesssesssesssecssesssess 10
1.3.3 Pham Vi NQhién Cutu 0000080808 ốốốố.ốe 10
CHƯƠNG 2 se1oi04I:0/1707.7 7 Ả 11
2.1 HE DIEU HANH ANDROID (SE 911911E 11 11 11 1v th HH HH HH Tu TH TH TH TH TT ch 11
2.1.1 Kiến trúc của hệ điều hành Android [6] sssccssseesssessssessssessssessssesssscssssesssscsssessssesssscsssscssssessseee 11
2.2 50.10 13
2.2.1 Tép APK 10 gi? [7] gu 13
2.2.2 Tép APK được tạo ra như thE HO SH 11111111111111111111111111111111111111111111111111 14 14
2.3 KIÊM THU XÂM NHẬP ANDROID - SG + 11191 111 1111 11T TH TT TT TT TH TT HT HH 15
2.3.1 Kiểm thử xâm nhập là gì là gi? sesssesssesssesssesssesssesssesssessssssssssssssesssscssecssecssesssesssesssssssesssssssseses 15 2.3.2 Các giai đoạn kiểm thử xâm ANP cesscessessseesssessecssesssscsssssesssssssesssesssesssesssessuessscssssssssessseseseses 17 2.3.3 Các phương pháp kiểm thử xâm AnGpccsssccsssecsssscsssssssssssssssssssssssesssicssssessssesisssssessssesssseesssesses 18
24 GIGI THIỆU SƠ LƯỢC CÁC CÔNG NGHỆ SỬ DỰNG TRONG UNG DỤNG - «7s c+c+csesesrerersre 21
2.4.1 g2 n8 21
2.4.2 [21/02/50 22
“n2 23
Trang 32.4.4 0/0/0050 A 2/0086 hố ốố 23
2.4.5 Hoc may (Machine Learning) n8 ốốốốốốốỐỒn 24
CHƯƠNG 3 PHAN TICH U'NG DUNG .c.ccscssssssssessecssssesescscsscscscscscssesesescesesescscsesscacscsuenesesesseasars 29
3.1 R29) 6/9000 7 29
3.1.1 Yêu cầu đặt ra Ăc HH 29
3.2 v0 e 30
3.3 \ (W6: 00ìi9 90 ÔỎẢ 30
3.4 QUA TRINH CHAY 4907.090.001 35
3.5 XÂY DỰNG THEM TINH NĂNG SG c1 0121182118111 119111 11 11 1 11H nh HH HH ng rẻ 36
3.5.1 Kết nối với máy điện thoại Android và lấy file.seessesssesssesssesssesssesssesssesssesssesssessscssssssecssseseseses 36 3.5.2 Kiểm tra những file đã lấy được từ máy AndrOidsscsssesssesssesssssssesssesssesssessscssssssscsssssessseseseeeses 39 CHƯƠNG 4 CHẠY THỰC NGHIỆM VÀ DANH GIÁ 55c 2+2 S2 E‡SEsEsESEesEsEsrsersrsesrsre 40
4.1 CHẠY THUC NGHIỆM G0 2 2615625101313 695 9586 HH HH HT TH TH TH 40 4.2 THONG KE MOT SO KET QUẢ - 2c c2 3622311283958 1 31118831 119 1 311111 18 111 11 H1 H1 ng ng gà cờ 43
443 DANH GIA NO 7/606 6n he 47
4.3.1 So sánh với nghiên cứu tiền nhiệm : ::©22+t92E++SEE2+ttEEESttSEEvetSEEkertrrrerrrrrsrea 47 4.3.2 Những hạn chế trong bài nghiên Cit Ny seesseccsesssesssesssessssessssssesssesssecssessscsssessscssssssessesssessses 47 Cee 6 T7? 5¬ `: S65 47 TÀI LIEU THAM KHẢO - ©- ©S* ES£S+‡E£ESEEEEEEEEESEESEEkEEkEEEESEEEESEEEESEEEEEEEEEEEEEErkrkee 49
Trang 4LỜI CẢM ƠN
Trong suốt quá trình hoàn thành khóa luận này, em xin bày tỏ lòng biết ơn sâusắc đến thầy hướng dẫn, TS Nguyễn Tan Cầm, người đã tận tình chỉ dẫn và địnhhướng cho em từng bước đi trên con đường nghiên cứu Thầy không chỉ giúp em khaiphá kiến thức mới, ma còn luôn động viên, khích lệ em vượt qua những khó khăn vàmat phương hướng dé hoàn thành khóa luận đúng thời hạn
Em cũng xin gửi lời cảm ơn chân thành đến gia đình và bạn bè - những người
đã luôn kề bên, động viên và ủng hộ em cả về mặt tinh thần lẫn vật chất trong suốtthời gian qua Sự quan tâm và yêu thương của mọi người là nguồn động lực vô cùng
quý báu, giúp em vững bước trên con đường học tập và nghiên cứu.
Đồng thời, em xin trân trọng cảm ơn quý thầy cô tại trường Đại học Công nghệ Thông tin - ĐHQG TP.HCM, đặc biệt là các thầy cô và cán bộ, nhân viên của Khoa
Khoa học và Kỹ thuật Thông tin, những người đã tạo điều kiện thuận lợi và hỗ trợ em
hết mình trong suốt quá trình thực hiện khóa luận này.
Cuối cùng, em xin chân thành cảm ơn những cá nhân và tập thể đã đóng góp ýkiến, chia sẻ tài liệu và cung cấp các công cu, dit liệu quý báu cho nghiên cứu nay.Đặc biệt, em xin gửi lời cảm ơn sâu sắc đến nhóm phát triển RiskInDroid, nhờ cócông cụ hữu ích và mã nguồn được chia sẻ mà em đã có cơ hội nghiên cứu và áp dụng
trong khóa luận của mình.
Mặc dù đã nỗ lực tìm hiểu và nghiên cứu, nhưng do hạn chế về kiến thức vàkinh nghiệm, không thể tránh khỏi những thiếu sót trong khóa luận này Em rất mong
nhận được những góp ý quý báu từ quý Thầy Cô để em có thể hoàn thiện đề tài hơn
nữa.
Chân thành cảm ơn
Hà Thị Thu Thuỷ
Trang 5DANH MỤC HINH VE
Hình 2-1 Các thành phần trong cấu trúc hệ điều hành Android theo dạng ngăn
00 .) 13
Hình 2-2 Bên trong 1 file APK sau khi được giải nén . e-.ee 14
Hình 2-3 Xây dung Android app (APK file) c-cceceeerirerirririeree 15
Hình 2-4 Mối liên qua giữa các khái niệm kể trên - cccccceccccsex 17
Hình 2-5 Các giai đoạn Pent t©Sf c .cerireiiiiiiriririiiiiiriiririeire 18
Hình 2-7 Ngôn ngữ Python ccseecrrirrrrirtrriirrtrirrtrirrrirrrriirrrrrrrirrrrrrerrrrree 22
Hình 2-8 ADB là công cụ kết nối giữa máy tính với thiết bị Android 23
Hình 2-9 Ngôn ngữ HTML - CSS - JaVaSCFiDI -ccecsriireriiiiiriiiirrree 24
Hình 2-10 Thư viện học máy Scikit-learn dành cho Python - 26
Hinh 2-11 Thuadt toan SVM 00777 27
Hình 3-1 Sơ đồ hoạt động tổng quan của hệ thống -. -cccccceeccccssx 29 Hình 3-2 Đối chiếu kết qua tính toán chỉ $6 rủi rO -ccccceeccccsex 35
Hình 3-3 Lệnh quét các packages cùng file apk tương ứng đã cài đặt trong máy
Hssenssserssiors-ỦPfTT THƯỂM, TIÀ /ấP, Z5ỐTT, c.eniieiniee 36
Hình 3-4 Tạo đường dẫn lưu file -ccccccccerreereerererreeeevrvvervvrerrersrrrrrre 36
Hình 3-5 Copy file vào thư mục đã tạo ở trên trong projeCf -« ««-¿ 37 Hình 3-6 Thư mục chứa các file vừa COPY ẨƯỢC cccceeskeeerieerirerirerriereee 37 Hình 3-7 Định nghĩa các route trong việc quét file máy ảo - 38
Hình 3-8 Danh sách các file apks trong máy ảo đang bật - 38
Hình 3-9 Code quay về homepage và mở thư mục chứa file apk 39
Hình 4-1 Giao diện chính của công CỤ cccccccreereekkrekrrerrirrrirrrrrrrrerrree 40
Hình 4-2Chạy kết quả có trong CSDL, -ccccc5ccccecccvetsrrvesrrrrtesrtrrerrrrrerree 41
Hình 4-3 Màn hình chờ để upload file cần kiểm tra -ccc css- 41 Hình 4-4 Kết quả kiểm thử trả về cho file apk vừa upload -. 42
Trang 6DANH MỤC BANG
Bảng 2-1 Phân loại pen test theo phạm Vi tấn công -cc c-c-e- 19
Bang 2-2 Phân loại pen test theo mục tiÊu c +cxecerirtriireiriirerrree 20
Bảng 4-1 Tổng hợp permissions với những file apk có độ risk > 50 43
Bang 4-2 Top 10 not _required_but_used_permissions của những apks có risk >
1 43
Bang 4-3 Top 10 permissions ở những ứng dụng có risk < 20 44 Bảng 4-4 Top 10 not_required_but_used_permissions của những apks có risk <
Trang 7DANH MỤC TU VIET TAT
STT Từ viết tắt Ý nghĩa
1 API Application Programming Interface
2 HAL Hardware Abstraction Layer
3 ART Android Runtime
4 APK Android Package Kit
5 IDE Integrated Development Environment
6 ADT Android Development Tools
12 ADB Android Debug Bridge
13 OOP Objet-Oriented Programming
Trang 8TOM TAT KHÓA LUẬN
Android là hệ điều hành trên các thiết bi di động cảm ứng phô biến nhất trên thé
giới hiện nay Di động thông minh càng phát triển, tiệm cận gần hơn với máy tính cá
nhân, lưu trữ nhiều thông tin cá nhân quan trọng và nhạy cảm, giờ đây chính là vùng
đất màu mỡ cho các hackers chiếm quyền kiểm soát, làm rò rỉ thông tin
Khoá luận này có mục đích giới thiệu, đánh giá và xây dựng thêm cho một công
cụ kiểm thử đơn giản các file apk Công cụ này được xây dựng với mục đích giúpngười dùng có thé dé dàng so sánh mức độ rủi ro của một ứng dụng với những ứngdụng khác trong cùng cơ sở dữ liệu thông qua chỉ số Risk Công cụ này được xâydựng thành một website với phan front-end (giao diện người dùng) va back-end (máy
chủ và sơ sở dữ liệu).
Công cụ được xây dựng trên nền tảng của Java và Python, tích hợp nhiều kỹthuật học máy đề phân tích các quyền của ứng dụng và tính toán mức độ rủi ro
Khoá luận sẽ gồm 4 phần chính với nội dung như sau:
Chương 1: Tổng quan đề tài
Chương 2: Các cơ sở lý thuyết liên quan dé hiểu về khoá luận
Chương 3: Phân tích hệ thốngChương 4: Chạy thực nghiệm và đánh giá kết quả đạt dược
Trang 9Chương 1 TONG QUAN DE TÀI
1.1 Giới thiệu đề tài
Android là tên gọi của hệ điều hành phổ biến nhất hiện nay trên các thiết bị diđộng, được phát triển trên nền tảng Linux
Thế giới hiện nay phát triển cực kì nhanh chóng, đặc biệt là trong những lĩnh
vực liên quan đến công nghệ Các thiết bị di động nói chung và các thiết bị Androidnói riêng đang ngày càng phát triển mạnh mẽ và da dạng Phát triển lớn mạnh và rộngkhắp khiến vẫn đề bảo mật trên các thiết bị di động cũng trở thành mối quan tâm rấtlớn của các nhà phát triển phần mềm cũng như người dùng Có rất nhiều các mối dedoa an ninh như phần mém lừa đảo (Malware), ứng dung lừa đảo (Phising), lỗ hong
bảo mật (Vulnerabilities) Vậy nên kiểm thử xâm nhập (Penetration Testing
-Pentest) đối với các thiết bị và ứng dụng Android dang trở thành một chủ dé quan
trọng và có sự phát triển mạnh mẽ nhanh chóng
Trong khoá luận này em đã thực hiện phân tích và xây dựng thêm cho một công
cu dùng đề kiểm thử thâm nhập Android tên RiskInDroid+ Công cu này được tham
khảo [1].
Mục đích xây dựng công cụ nay là dé đánh giá mức độ rủi ro của các ứng dụngAndroid dựa trên các quyền mà ứng dụng yêu cầu RiskInDroid+ sử dụng kết hợp
Java và Python trong quá trình xây dựng ứng dụng.
1.2 Một số công trình nghiên cứu tương tự
1.2.1 Phân Tích Quyền (Permission Analysis): "Android Permissions
Demystified" [2]
Các ứng dụng bên thứ ba được hệ điều hành Android cung cấp một API baogồm quyên truy cập phần cứng điện thoại, cài đặt và dữ liệu người dùng Quyền nàyliên quan đến vấn đề bảo mật được kiểm soát bởi hệ thống cấp quyền ứng dụng tạithời điểm cài đặt Các tác giả đã xây dựng công cu Stowaway dé phát hiện quyền
truy cập quá mức trong các ứng dụng Android đã biên dịch Công cụ xác định tập
Trang 10hợp các lệnh gọi API mà một ứng dụng sử dụng và sau đó ánh xạ chúng tới các quyền
tương ứng Dé phát hiện quyên truy cập quá mức, trong bài nghiên cứu, tác giảAndrienne Porter Felt và các cộng sự đã sử dụng các công cụ kiểm thử tự động trênAPI Android để xây dựng bản đồ các quyền cần thiết
Sau khi áp dụng Stowaway vào 940 ứng dụng Android trên chợ Android, các
tác giả phát hiện khoảng một phần ba các ứng dụng yêu cầu quyền quá mức Nguyênnhân thường do tài liệu API không đầy đủ khiến các nhà phát triển phải thêm quyền
để đảm bảo cho ứng dụng hoạt động đúng như mong đợi
Stowaway bao gồm hai phần: một công cụ phân tích tĩnh xác định các lời gọi
API mà một ứng dụng thực hiện và một bản đồ quyền xác định các quyền cần thiết
cho mỗi lời gọi API.
Những đóng góp của nghiên cứu này:
e_ Phát triển Stowaway
e Xác định và định lượng các mau lỗi của nhà phát triển dẫn đến quyền
truy cập quá mức.
e Xác định chính sách kiểm soát truy cập của Android
1.2.2 Phân Tích Tĩnh (Static Analysis)
a "FlowDroid: Precise Context, Flow, Field, Object-sensitive and
Lifecycle-aware Taint Analysis for Android Apps" [3]
Người dùng điện thoại thông minh hay bị làm phiền bởi các ứng dụng được lậptrình cầu thả dẫn đến việc rò ri dữ liệu quan trọng một cách tình cờ, hoặc các ứngdụng độc hại lợi dụng các quyền được cấp để sao chép dữ liệu một cách cố ý
Trong công trình nghiên cứu các tác giả đã giới thiệu FlowDroid là một phương
pháp phân tích luồng tĩnh mới dành cho các ứng dụng Android
FlowDroid phân tích bytecode và các tệp cấu hình của ứng dụng để tìm các rò
ri quyén riéng tu tiềm An, hoặc do lập trình câu thả hoặc được tạo ra với ý định độc
hại.
Những đóng góp của công trình này:
o Phát triển FlowDroid
Trang 11o Cung cấp DroidBench, một bộ benchmark micro mới, mở và toàn diện
để so sánh hiệu quả của các phân tích luồng cho Android
o Các thí nghiệm áp dụng FlowDroid cho hơn 500 ứng dụng từ Google
Play và khoảng 1000 ứng dụng độc hại từ dự án VirusShare.
b "DroidSafe: Information-Flow Analysis of Android Applications in
DroidSafe" [4]
Là một công cụ phân tích luồng thông tin tĩnh rồi báo cáo các rò ri tiềm ân củathông tin nhạy cảm trong các ứng dụng Android DroidSafe kết hợp mô hình toàndiện, chính xác và chỉ tiết của Android runtitme với các quyết định thiết kế phân tích
tinh cho phép phân tích các ứng dụng lớn.
Kết quả phân tích thực nghiệm cho thấy:
o DroidSafe đạt được độ chính xác và độ tin cậy cao trong phân tích luồng
thông tin của Android
o Phát hiện các rò ri luồng thông tin độc hại được chèn vào 24 ứng dụng
Android thực tế bởi ba tô chức Red-Team độc lập
Với việc đánh giá DroidSafe trên 24 ứng dụng Android đã nói ở trên cho kết
quả:
o Phát hiện chính xác tất cả 69 luồng độc hại trong các ứng dụng này
(trong khi báo cáo tổng số luồng có thé quản lý được)
o FlowDroid [4] + IccTA (phương pháp phân tích hiện dai) chi phát hiện
được 6 trong số 69 luồng độc hai và có ty lệ tổng số luồng báo cáo lớnhơn số luồng độc hại thực sự được báo cáo
Ngoài ra, DroidSafe còn được đánh giá trên DroidBench [4] với một bộ 94 bai
kiểm tra luồng thông tin Android từ các nhà phát triển FlowDroid + IccTA Cuốicùng các tác giả còn đánh giá DroidSafe trên một bộ 40 bài kiểm tra luồng thông tin
rõ ràng của Android do họ tự phát triển dé bé sung cho DroidBench Cả hai bài kiếmtra đều cho kết quả rất tốt
Trang 121.2.3 Học Máy Trong Bảo Mật Di Động: "Drebin: Effective and
Explainable Detection of Android Malware in Your Pocket" [5]
Bài bao giới thiệu Drebin, một phương pháp nhẹ nhàng dé phat hiện phan mềmđộc hại trên Android, cho phép xác định các ứng dụng độc hại trực tiếp trên điện thoại
thông minh.
Có ba ưu điểm chính được nhắn mạnh trong bài báo:
o_ Phát hiện hiệu quả: Drebin kết hợp phân tích tĩnh và học máy, cho phép
xác định phần mềm độc hại trên Android với độ chính xác cao và ít báo
động giả Điều quan trọng là DREBIN không phụ thuộc vào các mẫuphát hiện được tạo thủ công, giúp nó thích ứng tốt hơn với các loại phầnmềm độc hại mới
o Kết quả có thê giải thích: Drebin không chi phân loại ứng dụng là độc
hại hay lành tính mà còn cung cấp khả năng giải thích cho kết quả Băngcách truy vết ngược các mẫu đặc trưng trong không gian vectơ, ngườidùng có thể hiểu được tại sao một ứng dụng cụ thể bị công cụ này đánh
giá là độc hại
o Phân tích hợp lý: Drebin sử dụng các kỹ thuật phân tích và học tập tuyến
tính Điều này cho phép Drebin vừa phát hiện phần mềm độc hại trựctiếp trên điện thoại thông minh, vừa phân tích một lượng lớn ứng dụng
trong thời gian hợp lý
1.3 Mục tiêu, đối tượng, phạm vi nghiên cứu
1.3.1 Mục tiêu của dé tài
Phân tích rủi ro trên Android nhằm cung cấp các chỉ số cho người dùng dé đánh
giá độ tin cậy của các ứng dụng mà họ sắp cài đặt Có nhiều đề xuất về việc tính toángiá trị rủi ro của một ứng dụng nhưng nhiều trong số đó cung cấp các giá trị không
đáng tin cậy.
Với mong muốn khắc phục hạn chế, dé tài này giới thiệu RiskInDroid+ Công
cụ này tính toán giá tri rủi ro dựa trên các quyên mà ứng dụng yêu câu và sử dụng các
Trang 13kỹ thuật học máy nhằm phục vụ mục đích Công cụ này được thừa kế lại từ
RiskInDroid - ứng dụng đã thực hiện các đánh giá thực nghiệm rộng rãi trên hon
112K ứng dụng và 6K mẫu phần mềm độc hại Quá trình đánh giá thực nghiệm chothấy RiskInDroid cũng như RiskInDroid+ đã đáp ứng được nguyện vọng của đề tài
nghiên cứu này.
1.3.2 Doi Tượng Nghiên Cứu
e_ Chỉ số nguy hại của các ứng dụng Android: Nghiên cứu tập trung vào việc tinh
toán khả năng rủi ro các file apk đã và đang được phát hành trên nhiều nguồnnhư Google Play Store, Nó sẽ bao gồm các ứng dụng phổ biến và cà nhữngứng dụng ít được biết đến
e_ Quyên truy cập (Permissions): Tập trung phân tích các quyền mà ứng dụng
yêu cầu, xác định mức độ rủi ro dựa trên các quyền này
1.3.3 Phạm Vi Nghiên Cứu
e Phân tích quyén truy cập: Dịch ngược, phân tích và đánh giá các quyền
(permissions) mà các ứng dụng Android yêu cầu, dựa trên cơ sở đữ liệu vềquyên và các nghiên cứu trước đây
e Tính toán mức độ rủi ro: Phát triển và thử nghiệm các mô hình đánh giá rủi ro,
bao gồm các thuật toán học máy để xác định và dự đoán mức độ rủi ro
e Tích hợp va thử nghiệm công cụ: Tích hợp các phương pháp va mô hình vào
công cụ, sau đó thử nghiệm công cụ nảy trên một tập hợp các ứng dụng
Android dé đánh giá hiệu quả và tính chính xác.
e Đánh giá và so sánh: So sánh công cụ này với các công cụ hiện có khác trong
lĩnh vực phân tích bảo mật và quyền truy cập trên Android.
10
Trang 14Chuong 2 CƠ SỞ LÝ THUYET
2.1. Hệ điều hành Android
2.1.1 Kiến trúc của hệ điều hành Android [6]
Android hiện nay đang thuộc quyền sở hữu của là Google Đây là một nền tang
di động mã nguồn mở, cho phép các nhà phát triển và nhà sản xuất thiết bị tuỳ chỉnh
và cải tiên theo nhu câu của họ Điêu này tạo ra sự đa dạng và linh hoạt trong việc
trình, bảo mật, , mạng
Lớp trửu tượng phần cứng (Hardware abstraction layer - HAL) đóng vai tròtrung gian giữa phần mềm và phần cứng thiết bị, giúp ứng dụng truy cập và sửdụng phần cứng sẵn có mà không cần biết chỉ tiết về cách thức hoạt động của
phần cứng.
Android Runtime: Là môi trường thực thi cho ứng dụng Với Android phiên
bản 5.0 (API cấp 21) trở lên, mỗi ứng dụng chạy với ART riêng Trước đây,Dalvik là Android runtime Cung cấp một số tính năng như thu gom rác, gỡlỗi và tối ưu hoá hiệu suất ART chuyển đổi mã bytecode của ứng dụngAndroid thành mã máy mà CPU có thể thực thi
Các thư viện Native C/C++: Đóng vai trò quan trọng trong việc cung cấp các
chức năng cơ bản cho hệ thống và các ứng dụng Các thư viện này thườngđược sử dụng để xử lý các tác vụ yêu cầu hiệu năng cao như đồ hoạ, âm thanh,quản lý bộ nhớ và các chức năng hệ thống khác
Java API Framework: Đây là một tập hợp các thư viện và lớp Java giúp các
nhà phát trién xây dựng ứng dụng Android một cach dé dàng và hiệu quả Đây
11
Trang 15là phần lõi của hệ thống Android, cung cấp các API cần thiết để tương tác với
các thành phần của hệ thống như giao diện người dùng, dữ liệu, phần cứng và
các dịch vụ hệ thống.
Các ứng dụng hệ thống (System Apps): đây tầng trên cùng của cấu trúc, là cácứng dụng được cài đặt sẵn trên thiết bị bởi nhà sản xuất hoặc nhà cung cấpdịch vụ Chúng được tích hợp chặt chẽ với hệ điều hành và thường là một phầnkhông thê thiếu của trải nghiệm người dùng Android Các ứng dụng này thựchiện các chức năng cốt lõi và cung cấp các dịch vụ cần thiết cho cả người dùng
và các ứng dụng khác Một số ứng dụng cơ bản như email, nhắn tin, trìnhduyệt, danh bạ, máy ảnh, v.v Ngoài ra, ban cũng có thể tạo 1 ứng dụng tương
ứng khác có chức năng tương đương những ứng dụng mặc định của hệ thống
nhưng được tuỳ chỉnh tốt hơn nhằm thay thế Các apps này được viết bằngngôn ngữ Java và sử dụng các API của Android Framework để truy cập cáctính năng của hệ điều hành
12
Trang 16Activity Location Package Notification
View System Resource Telephony
Native C/C++ Libraries Android Runtime
OpenMAX AL Android Runtime (ART)
Media Framework OpenGL ES < Core Libraries
Trang 17APK cũng là một file Java, cụ thé là ở biến thể JAR (Java Archive), vì rất nhiều Android được xây dựng bằng Java, nó gói gọn tất cả các files cần thiết của một ứng dụng Android Một APK thường sẽ chứa một số thành phần như hình dưới đây:
=¡ | & |) = | File Viewer for Android.apk — oO x
File Home Share View @
> ~ + L] > File Viewer for Android.apk + v & Search File Viewer for Android
| Se ng Name ` Date modified Type Size
Ề L] assets File folder
(@& OneDrive a
G com File folder
This PC L] jsr305_annotations File folder
lib File folder
rổ Network U ¬
= _ META-INF File folder
#@ Homegroup Ll res 12/9/2016 9:40AM File folder
(=, AndroidManifest.xml XML Document 164 KB
i build-data.properties PROPERTIES File 1KB
|_| classes.dex DEX File 8,944 KB
|_| resources.arsc ARSC File 416 KB
10 items E =
Nguồn: Internet
2.2.2 Tệp APK được tạo ra như thế nào?
Đầu tiên, mã nguồn Java được biên dịch bang trinh bién dich Javac (bao gom
trong Bộ phát triển Java - JDK) và xuất ra dưới dang tệp class chạy trên Máy ảo Java
(JVM).
Tép class kết quả được chuyên đổi thành tệp DEX bang trình chuyên đổi dx đikèm trong Bộ công cụ phát triển Android (SDK) Tệp DEX chạy trên Máy ảo Dalvik
Tép manifest, ở dạng XML, và các tệp XML khác cần thiết cho việc thực thi
ứng dụng được mã hóa dưới dạng nhị phân.
Sau đó, các tệp DEX, XML, manifest và tài nguyên được đóng gói trong một
tệp APK, ở định dạng ZIP.
Tệp APK ban đầu được tạo ra không bao gồm chữ ký của nhà phát triển, điềunay can thiết dé phân phối ứng dụng Tệp APK chưa ký có thể được tự ký bằng khóariêng của nhà phát triển sử dụng công cụ Jarsigner Chữ ký của nhà phát triển và khóa
14
Trang 18công khai sau đó được thêm vào tệp APK, hoàn tất quá trình xây dựng ứng dụng
xml Bueodsd private key
file mm xm1 file Ì -xml file
Manifest Encoded Encoded
file Manifest Manifest
Mục tiêu của pentest là phát hiện các lỗ hồng, điểm yếu trong bảo mật của cácứng dụng, hệ thống mạng hoặc thiết bị trước khi những kẻ tấn công có thé khai thác
chúng, sau đó khắc phục các lỗi này đề tránh việc bị tan công trong tương lai
Loi ich của pentest
o Phát hiện các lỗ hồng trong bảo mật và cung cấp đề xuất giải quyết, khắc
phục trước khi bị kẻ xấu lợi dụng
15
Trang 19Giúp tăng cường nhận thức cũng như kiến thức, kĩ năng về bảo mật cho
đội ngũ kĩ thuật và quản lý
Nhiều quy định và tiêu chuẩn bảo mật yêu cầu các tổ chức thực hiệnpentest định kỳ Điều này giúp tổ chức đảm bảo tuân thủ và tránh cáchình phạt liên quan đến vi phạm quy định
Làm giảm thiểu rủi ro về mat mát, bị đánh cắp dữ liệu hay chiếm quyềnđiều khiển thiết bị, giúp bảo vệ tài sản công nghệ thông tin của tổ chức.Nâng cao hiệu quả của các biện pháp bảo mật nhờ việc kiểm tra các biệnpháp bảo mật hiện có và cung cấp thông tin chi tiết về những gì đanghoạt động hiệu quả và những gì cần cải thiện, giúp tối ưu hóa chiến lượcbảo mật của tô chức
Kết qua từ các bài pentest cung cấp nhiều thông tin quan trọng dé điều
chỉnh và cải thiện chiến lược bảo mật tông thé, giúp nâng cao năng lực
bảo vệ.
Ngoài ra, pentest còn giúp đánh giá khả năng phát hiện, phản ứng và
phục hồi sau khi bị tắn công của tô chức, từ đó cải thiện khả năng phòng
thủ trong tương lai.
Khi một tô chức thực hiện pentest, công bố cách khắc phục các 16 hong
và kết quả thực hiện thành công sẽ làm tăng điểm uy tín, niềm tin đối vớikhách hàng, đối tác
Ngoài pentest còn có quét lỗ hồng định kì cũng là một trong những cách đánhgiá lỗ hông bảo mật cho hệ thống
Lưu ý: trước khi thực hiện quá trình kiểm thử xâm nhập, cần có sự cấp phéphợp pháp của chủ hệ thống hoặc phần mềm đó, nằm trong kế hoạch về bảo mật cầnthiết cho hệ thống hay phần mềm đó Nếu không, những hành động xâm nhập nhưnày chính là tắn công (hack) trái phép vào hệ thống, là hành vi vi phạm pháp luật
Một số khái niệm trong kiểm thử xâm nhập: [9]
e Vulnerability (viết tắt là Vulns) : đây là điểm yếu hoặc lỗ hồng, được
xem như là "lôi vào” nơi mà những kẻ tân công sử dụng đê xâm nhập roi
từ đó truy cập trái phép và ăn cắp các tài nguyên của tổ chức
16
Trang 20e Threat đây là bat kỳ tình huống, sự kiện, hoặc hành động nào có khả
năng gây ra thiệt hại cho hệ thống thông tin hoặc tài sản của tổ chức Mối
đe dọa này sẽ thông qua một lỗ hồng cụ thé nào đó mà nó tìm thay déthực hiện các hành động thâm nhập trái phép vào hệ thống tô chức hoặc
cá nhân
e Exploit là quá trình kẻ tan công tận dụng lỗ hồng dé thực hiện một hành
vị trái phép Kẻ tấn công tạo một đoạn mã hoặc phần mềm dé tận dụng
(khai thác) lỗ hồng bảo mật mà ho tìm được trong hệ thống, ứng dụng,
hoặc mạng Mục tiêu là chiếm quyên điều khiến hệ thống hoặc truy cập
trái phép vào dữ liệu.
e Risk (rủi ro) là khả năng xảy ra mối đe doa khai thác lỗ hồng cùng với
hậu quả của việc này Rủi ro thường được đánh giá dựa trên mức độ
nghiêm trọng của lô hông và kha năng xảy ra của môi đe doa.
Nguồn: [9]
Hình 2-4 Mối liên qua giữa các khái niệm kể trên
2.3.2 Các giai đoạn kiểm thử xâm nhập
=1 Lên kế hoạch, xác định phạm vi, mục tiêu va chiến lược
= 2 Thu thập thông tin (Information Gathering): sử dụng các công cụ va kỹ
thuật đề thu thập thông tin về hệ thống mục tiêu như địa chỉ IP, tên miền, cấutrúc mạng, Tìm kiếm thông tin nhạy cảm thông qua kĩ thuật lừa đảo hoặc
khai thác thông tin từ con người.
17
Trang 21= 3 Quét và phân tích lỗ hồng (Scanning and Analysis): sử dụng công cụ và kỹ
thuật thích hợp để xác định các lỗ hồng bảo mật trong hệ thống, ứng dụng,hoặc mạng Scan và thăm dò các port với một số công cụ thông dụng nhưNmap, Wireshark Phân loại các lỗ hồng theo mức độ nghiêm trọng và khảnăng khai thác, từ đó xác định những lỗ hồng nào cần được kiểm thử chỉ tiết
hơn.
» 4 Khai thác lỗ hong (Exploitation) : thâm nhập bang các kĩ thuật như tấn công
SQL injection, tan công lỗ héng XSS, tấn công DDoS Sau khi khai thác
thành công thì tiến hành tấn công dé xem lỗ hồng có thé gây nguy hiểm đến
đâu Duy trì quyền truy cập như cách mà cách hacker vẫn làm dé đảm bao ho
có thể quay lại vào những lần sau mà không cần những bước trên
„5 Đánh giá mức độ tôn thương: mục dich là đánh giá các tác động, hậu qua
của các lỗ hồng bảo mật vừa được tìm ra
„6 Báo cáo và đề xuất: tong hợp kết quả của quá trình Pentest bao gồm các chi
tiết về các lỗ hồng, các phương pháp tan công, các hậu qua và khuyến nghị dé
khắc phục lẫn cải thiện bảo mật của hệ thống
2.3.3 Các phương pháp kiểm thử xâm nhập
Có nhiều phương pháp khác nhau để thực hiện kiểm thử xâm nhập (penetration
testing) Pentest thường được phân loại dựa trên các tiêu chí sau:
e Phân loại dựa trên phạm vi tấn công
18
Trang 22Bang 2-1 Phân loại pen test theo phạm vi tấn công
Phát hiện các lỗ hongchỉ tiết và toàn điện
hơn do có đầy đủ thông
tin về hệ thống
- Yêu cầu nhiều thời
gian va công sức hon.
thông tin đăng nhập
cơ bản hoặc sơ đồ
e Phân loại dựa trên mục tiêu
19
Trang 23Bảng 2-2 Phân loại pen test theo mục tiêu
Application pentests
Mục tiêu cu thé: Tap trung vao viéc kiểm tra các ứng dụngweb, di động, hoặc desktop, với mục tiêu tìm kiếm và khaithác các lỗ hồng bảo mật trong phần mềm
Phạm vi rộng: Có thể kiểm tra nhiều loại ứng dụng khác nhau,
từ các ứng dụng nội bộ đến các dịch vụ trực tuyến, bao gồm
cả các hệ thống quản lý cơ sở dữ liệu, API, và giao diện người
dùng.
Sử dụng kết hợp tự động và thủ công
Mô phỏng các cuộc tấn công thực tế như tân công brute-force,
đến tan công SQL injection hoặc cross-site scripting (XSS)
Thuong yéu cau su dau tu vé thoi gian va chi phi.
Mô phỏng một số kỹ thuật tan công như sniffing (nghe trộmdit liệu), spoofing (gia mạo dia chỉ IP), man-in-the-middle (tancông trung gian), nhằm đánh giá khả năng mạng chống chịu
trước các cuộc tân công từ bên ngoài hoặc từ bên trong tô chức.
Hardware pentests
Là quá trình kiểm tra và đánh giá bảo mật của các thiết bị phầncứng đề phát hiện các lỗ hồng có thể bị khai thác
Tập trung vào các thiết bị phần cứng
Tìm kiếm các lỗ hồng trong các thiết bị được kết nối với mạng,
vi dụ như laptop, PC, thiết bị di động và IoT
20
Trang 24- Vi làm việc với cả phân cứng nên doi hỏi kiên thức chuyên
sâu về cả phân cứng lần phân mêm.
- Tìm kiêm điêm yêu trong an ninh mạng của nhân viên Nói
cách khác, các bài kiểm tra bảo mật này đánh giá mức độ dễ
bị tôn thương của một công ty đôi với các cuộc tân công kỹ
Personnel pentests
thuật xã hội.
- Sw dụng lừa đảo, vishing (phishing giọng nói), và đánh bóng
(SMS lita đảo) để lừa nhân viên tiết lộ thông tin nhạy cảm
Pentest đóng vai trò không thé thiếu trong việc tăng cường bảo mật hệ thốngtrên nền tảng số, nhờ đó mà các hệ thong lớn có cấu tạo phức tạp có thé vận hành 6n
định và tránh được những gây hại từ bên trong lẫn bên ngoài.
2.4 Giới thiệu sơ lược các công nghệ sử dụng trong ứng dụng
2.4.1 Java
Java
Nguôn [11]
Hình 2-6 Ngôn ngữ Java
Java là một ngôn ngữ lập trình và nền tảng máy tính được phát triển vào năm
1995 Java thuộc kiểu ngôn ngữ lập trình hướng đối tượng — OOP, đây là một trongnhững ngôn ngữ lập trình máy tinh được sử dụng phô biến nhất hiện nay Có rất nhiềulĩnh vực như phát triển phần mềm, làm web, game hay xây dựng ứng dụng trên cácthiết bị di động sử dụng Java dé xây dựng
Các lợi thế khi sử dụng Java:
21
Trang 25Đa nền tảng nghĩa là một chương trình viết băng Java sẽ không cần phảichỉnh sửa mà có thể chạy tốt ở nhiều môi trường khác nhau.
Hệ sinh thái phong phú với rất nhiều libraries và frameworks cùng cộngđồng người sử dụng rất lớn
Java thuộc OOP nên thuận lợi cho việc tô chức code
Quản lý bộ nhớ tự động nhờ cơ chế thu gom rác tự động (garbagecollection) mà không cần gọi lệnh hủy vùng nhớ đã cấp phát
Hỗ trợ lập trình đa tiến trình, thực thi nhiều công việc đồng thờiTính an toàn và bảo mật tốt do được cung cấp nhiều cơ chế bảo mật lạicách ly với hệ điều hành nên giảm nguy cơ bị tấn công
2.4.2 Python
® python’
Nguồn [11]
Hình 2-7 Ngôn ngữ Python
Python, cũng giống như Java, là một trong những ngôn ngữ lập trình phổ biến
và được sử dụng rộng rãi trong nhiều lĩnh vực đặc biệt là trong khoa học dữ liệu va
máy học (ML) Python có cú pháp rõ ràng, dễ học và tính linh hoạt cao.
Lợi ích Python mang lại:
Cải thiện năng suất làm việc của lập trình viên do các dòng code được làm
Trang 26¢ Cộng đồng người dùng Python lớn, có thể nhanh chóng tìm kiếm được
giúp đỡ đễ giải quyết vẫn đề
2.4.3 ADB
ABD là viết tắt của Android Debug Bridge, là một công cụ dòng lệnh mạnh mẽ
đi kèm với bộ công cụ phát triển phan mềm Android (Android SDK) ADB cho phépmáy tính giao tiếp với các thiết bi Android như di động, máy tính bang (tham chí làmáy ảo) ADB hỗ trợ rất nhiều trong việc phát triển ứng dụng và gỡ tối lỗi trong
Trang 27Hình 2-9 Ngôn ngữ HTML - CSS - JavaScript
Ba ngôn ngữ này được sử dụng dé thiết kế giao diện của các trang web —
front-end.
« HTML - HyperText Markup Language được gọi là ngôn ngữ siêu đánh dấu,
xây dựng cấu trúc nội dung cơ bản của một trang web với các cặp thẻ đánhdau đóng mở
« CSS - Cascading Style Sheets, chịu trách nhiệm định hình và nâng cao các
khối trong HTML
‹ JavaScript là ngôn ngữ lập trình phô biến được sử dung dé người dùng tương
tác với trang web.
2.4.5 Học máy (Machine Learning)
Học máy (Machine Learning) là một nhánh của trí tuệ nhân tạo (AI), mục tiêu
là xây dựng và phát triển các thuật toán, model cho phép máy tính có thể "học" từ đữ
liệu và từ kinh nghiệm, bỏ qua những bước được lập trình phức tạp như trước.
Thay vi chỉ thực hiện các lệnh có định, máy tính sẽ học từ đữ liệu đầu vào và tự
động tìm ra quy tắc, phát hiện mô hình, và ra quyết định dựa trên dữ liệu được học.
Cụ thê, quá trình học máy bao gôm các bước sau:
e Thu thập dữ liệu phù hợp và đủ lớn cho van đề mục tiêu cụ thé mà bạn
đang cố gắng giải quyết Dữ liệu có thé đến từ nhiều nguồn khác nhaunhư cơ sở đữ liệu, API, các file CSV, hoặc được sinh ra từ các cảm biến
e Chuẩn bị dữ liệu hay là tiền xử lý dữ liệu: Tiếp theo, đữ liệu được chuẩn
bị bằng cách xử lý, làm sạch, và biến đổi dé phù hợp với model học máy
e Chọn model: Dựa trên van đề cụ thê (phân loại, hồi quy, phân cụm, v.v.),
chọn một hoặc nhiều thuật toán học máy phù hợp Có nhiều loại như hồiquy tuyến tính, cây quyết định, máy vector hỗ trợ (SVM), mạng nơ-ron,
và nhiêu hơn nữa.
24