ĐẠI HỌC THÁI NGUYÊN
TRƯỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG
ĐỖ QUỐC LƯU
PHÂN TÍCH MỨC ĐỘ AN TOÀN CỦA ỨNG DỤNG ANDROID
DỰA TRÊN HỌC MÁY
LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH
THÁI NGUYÊN, 2019
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
i
LỜI CẢM ƠN
Lời đầu tiên, em xin chân thành cám ơn PGS. TS Phạm Thanh Giang
người đã trực tiếp hướng dẫn em hoàn thành luận văn. Với những lời chỉ dẫn,
những tài liệu, sự tận tình hướng dẫn và những lời động viên của thầy đã giúp
em vượt qua nhiều khó khăn trong quá trình thực hiện luận văn này.
Em cũng xin cám ơn quý thầy cô giảng dạy chương trình cao học
"Khoa hoc máy tính” đã truyền dạy những kiến thức quý báu, những kiến
thức này rất hữu ích và giúp em nhiều khi thực hiện nghiên cứu.
Cuối cùng, em xin gửi lời cám ơn tới gia đình và bạn bè đã luôn ủng hộ
động viên giúp đỡ em trong suốt những năm học vừa qua.
Em xin chân thành cám ơn!
Thái Nguyên, ngày tháng năm 2019
Học viên
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
ii
LỜI CAM ĐOAN
Em xin cam đoan: Luận văn này là công trình nghiên cứu thực sự của cá
nhân, được thực hiện dưới sự hướng dẫn khoa học của PGS. TS Phạm
Thanh Giang.
Các số liệu, những kết luận nghiên cứu được trình bày trong luận văn
này trung thực và chưa từng được công bố dưới bất cứ hình thức nào.
Em xin chịu trách nhiệm về nghiên cứu của mình.
Học viên
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
iii
MỤC LỤC
LỜI CẢM ƠN ................................................................................................... 1
LỜI CAM ĐOAN ............................................................................................. ii
MỤC LỤC ........................................................................................................ iii
DANH MỤC CÁC TỪ VIẾT TẮT .................................................................. v
DANH MỤC BẢNG ........................................................................................ vi
DANH MỤC HÌNH ẢNH .............................................................................. vii
MỞ ĐẦU ........................................................................................................... 1
CHƯƠNG 1: TỔNG QUAN VỀ AN TOÀN BẢO MẬT TRÊN HỆ ĐIỀU
HÀNH ANDROID ............................................................................................ 6
1.1 Kiến trúc hệ điều hành Android .............................................................. 7
1.1.1 Tầng hạt nhân Linux (Linux Kernel) ............................................... 8
1.1.2 Tầng Thư viện (Libraries) và Tiến trình Android (Android
Runtime) .................................................................................................... 9
1.1.3 Tầng Khung ứng dụng (Application Framework) ......................... 11
1.1.4 Tầng Ứng dụng (Applications) ...................................................... 13
1.1.5 Máy ảo Dalvik (DVM) ................................................................... 14
1.1.6 Cấu trúc ứng dụng Android ........................................................... 17
1.2 An toàn bảo mật hệ điều hành Android ................................................ 21
1.2.1 Mã độc ............................................................................................ 21
1.2.2 Biểu hiện của mã độc di động ........................................................ 22
1.2.3 Mã độc trong môi trường Android ................................................. 22
1.2.4 Một số kỹ thuật phân tích mã độc .................................................. 24
CHƯƠNG 2: GIỚI THIỆU HỌC MÁY VÀ CÁC MÔ HÌNH HỌC MÁY .. 36
2.1 Học máy là gì? ...................................................................................... 36
2.2 Phân loại kỹ thuật học máy ................................................................... 37
2.3 Các bước học máy ................................................................................. 37
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
iv
2.3.1 Thuật toán cây quyết định J48 (Decision Trees) ........................... 39
2.3.2 Thuật toán hồi quy logictics ........................................................... 42
CHƯƠNG 3: MÔ PHỎNG VÀ KIỂM THỬ ................................................. 45
3.1 Mô phỏng (Phương pháp thực hiện) ..................................................... 48
3.1.1 Phương thức tính điểm ................................................................... 48
3.1.2 Thực nghiệm .................................................................................. 51
3.2 Kết quả thực nghiệm ............................................................................. 57
3.2.1 Kết quả ........................................................................................... 57
3.2.2 Đánh giá, tranh luận ....................................................................... 58
KẾT LUẬN ..................................................................................................... 60
TÀI LIỆU THAM KHẢO ............................................................................... 61
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
v
DANH MỤC CÁC TỪ VIẾT TẮT
Từ viết tắt Từ gốc Nghĩa tiếng Việt
Activity Manager Khối quản lý hoạt động AM
Android Package Gói ứng dụng Android APK
Global Positioning System Hệ thống định vị toàn cầu GPS
Intrusion Detection Hệ thống phát hiện xâm nhập IDS System
Identification Nhận dạng, nhận biết ID
Artificial Intelligence Trí tuệ nhân tạo AI
Decision Trees Cây quyết định J48
Số mẫu ác tính được phát hiện True Positive TP chính xác
False Positive Số mẫu ác tính bị phát hiện sai FP
Số mẫu lành tính được phát hiện True Negative TN chính xác
False Negative Số mẫu lành tính bị phát hiện sai FN
Tỷ lệ xác nhận chính xác mẫu ác True Positive Rate TPR tính
False Positive Rate Tỷ lệ xác nhận sai mẫu ác tính FPR
Tỷ lệ xác nhận chính xác mẫu True Negative Rate TNR lành tính
False Negative Rate Tỷ lệ xác nhận sai mẫu lành tính FNR
Tỷ lệ xác nhận chính xác trên Overall Accuracy ACC tổng số mẫu
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
vi
DANH MỤC BẢNG
Bảng 3.1: Điểm Risk- score ............................................................................ 49
Bảng 3.2: Điểm Protection- score ................................................................... 49
Bảng 3.3: Ví dụ tính điểm “quyền” ứng dụng ................................................ 50
Bảng 3.4: Kết quả của phương pháp ............................................................... 57
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
vii
DANH MỤC HÌNH ẢNH
Hình 1.1:Sơ đồ kiến trúc hệ thống cấp thấp Android ....................................... 8
Hình 1.2: Hộp thoại ứng dụng không phản hồi............................................... 12
Hình 1.3: Vị trí điện thoại được cung cấp cho google map ............................ 13
Hình 1.4: Cấu trúc tập tin .dex ........................................................................ 15
Hình 1.5: Ứng dụng xin cấp quyền từ người dùng ......................................... 17
Hình 1.6: Quy trình xây dựng 1 file ứng dụng Android ................................. 18
Hình 1.7: Mục tiêu của mã độc Android ......................................................... 23
Hình 1.8: Lời gọi hệ thống .............................................................................. 24
Hình 1.9: Phân tích bất thường cố định .......................................................... 25
Hình 1.10: Phân tích mã nguồn ....................................................................... 25
Hình 1.11: Phân tích quyền ứng dụng ............................................................. 27
Hình 1.12 : Các quyền đơn giản trong Android .............................................. 31
Hình 1.13 : Các quyền nguy hiểm trong Android ........................................... 32
Hình 1.14 : Giao diện file AndroidMainfest ................................................... 33
Hình 1.15 : Xin cấp quyền trên Android 6.0 Marshmallow ........................... 34
Hình 1.16 : Giao diện App Ops ....................................................................... 35
Hình 1.17 : Giao diện kiểm soát quyền của ứng dụng Calender trên Android 6.0 35
Hình 2.1 : Kết quả thuật toán Cây quyết định ................................................. 42
Hình 2.2 : Kết quả thuật toán Hồi quy Locgictics .......................................... 44
Hình 3.1: Phân tích mã nguồn ......................................................................... 48
Hình 3.2: Xác định quyền ............................................................................... 54
Hình 3.3: Protection- score ............................................................................. 55
Hình 3.4: Risk- score ....................................................................................... 55
Hình 3.5: Ngưỡng đánh giá ............................................................................. 56
Hình 3.6: Kết quả so sánh với phương pháp Ryo Sato, logictics ................... 58
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
1
MỞ ĐẦU
1. Đặt vấn đề
Trong thời đại công nghệ hiện nay, khi tất cả mọi thứ đều được số hóa,
cuộc sống, công việc trở nên khó khăn hơn nếu thiếu đi một chiếc điện thoại
thông minh – smartphone. Dựa vào sự gia tăng về số lượng người dùng
smartphone, các phần mềm độc hại với mục đích viết ra để trục lợi cá nhân
cũng theo đó mà nhân lên hằng năm. Những phần mềm này ngày càng được
tinh hóa hơn nhằm vượt qua các rào cản an ninh của Google. Chúng trở nên
nhiều và đa dạng khiến những người dùng bất cẩn dễ dàng bị xâm hại. Sau
thời gian nghiên cứu, tôi xin đề xuất việc kết hợp giữa phương pháp phân tích
tĩnh và một số mô hình học máy vào việc phân tích mức độ đáng tin cậy của
một ứng dụng Android. Nghiên cứu này sẽ giúp thiết bị di động của người
dùng tránh khỏi việc lưu trữ một phần mềm nguy hiểm.
2. Đối tượng và phạm vi nghiên cứu
a. Đối tượng nghiên cứu:
- Nghiên cứu phương pháp phát hiện đánh giá mức độ mất an toàn của
các phần mềm trên thiết bị di động Android
- Dữ liệu mẫu khai thác từ các nguồn công khai như Google Play và
các trang nghiên cứu về bảo mật trên Android
o Drebin: https://www.sec.cs.tu-bs.de/~danarp/drebin/
o Contagio Mobile Malware: http://contagiominidump.blogspot.com/
o Các phần mềm lành tính được thu nhập trên cửa hàng Google Play
b. Phạm vi nghiên cứu:
- Trong hướng nghiên cứu của đề tài tập trung vào các ứng dụng trên
nền tảng Android, tuy nhiên các kết quả nghiên cứu cũng là nền tảng để
nghiên cứu về an toàn cho các ứng dụng trên nền tảng iOS.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
2
3. Hướng nghiên cứu của đề tài
Hiện nay, số lượng smartphone đã vượt qua số lượng máy tính PC. Các
thông tin quan trọng trên smartphone rất đa dạng, mang tính cá nhân. Các
thông tin này thậm trí quan trọng hơn cả thông tin trên PC; bao gồm các tài
liệu, các ghi chép, tài khoản email, tài khoản mạng xã hội, tin nhắn
SMS/MMS, danh bạ, thông tin cuộc gọi, thông tin vị trí, hình ảnh…
Theo công bố gần đây của Kaspersky, năm 2012 là năm cho thấy sự tăng
trưởng bùng nổ của phần mềm độc hại cho Android. Từ 8 chương trình độc
hại vào tháng 1/2011, tỉ lệ phát hiện trung bình hàng tháng phần mềm độc hại
mới cho Android mới trong năm 2011 đã lên đến hơn 800 mẫu. Trong năm
2012, Kaspersky Labs đã xác định trung bình 6.300 mẫu phần mềm độc hại
trên thiết bị di động mới mỗi tháng. Nhìn chung, trong năm 2012 số lượng
mẫu độc hại cho Android được biết đến tăng hơn 8 lần. Đến năm 2016, số
malware được phát hiện lây nhiễm trên các thiết bị di động đã đã cán mốc 2
triệu. Các phần mềm độc hại có thể lợi dụng các lỗ hổng hoặc sự bất cẩn của
người dùng để cài đặt vào smartphone. Một số phần mềm còn tìm cách vượt
qua chính sách an ninh của hệ thống phân phối phần mềm (Market place) để
giám sát và thu thập thông tin người dùng một cách tinh vi.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
3
Đối với máy tính, việc tấn công chủ yếu qua đường mạng hoặc chia sẻ
file trên đĩa cứng, USB. Với đặc tính thuận tiện, trao đổi dữ liệu dễ dàng, di
động, thiết bị smartphone việc tấn công có thể thực hiện qua rất nhiều kênh
khác nhau:
- MMS: Multimedia Messaging Service (MMS) là kênh để các phần
mềm nguy hại có thể được gửi tới các thiết bị smartphone có khả năng nhận
tin nhắn MMS và tự động copy gửi để lây lan tới các máy khác. Ví dụ như
sâu Commwarrior.A.
- Bluetooth: Thông qua Bluetooth các virus có thể truyền tới các
smartphone trong khoảng truyền thông của Bluetooth. Ví dụ như sâu Lasco.
- GPRS/EDGE/UMTS: Các dải sóng điện thoại GPRS/EDGE/UMTS
đều cho phép các thiết bị smartphone thiết lập kênh IP chạy trên đó, việc tấn
công có thể thực hiện như việc tấn công với máy tính.
- WLAN: Các thiết bị smartphone còn được trang bị các kết nối không
dây qua Wifi trên kênh IP, các virus và thông tin người dùng có thể dễ dàng
thu thập qua mạng.
- Removable media: Các thiết bị lưu trữ ngoài như thẻ nhớ cũng là nơi
lây lan virus khi việc copy được thực hiện giữa các smartphone hoặc máy
tính. Ví dụ như malware CardTrap
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
4
Lợi dụng các lỗ hổng bảo mật trên các thiết bị di động, hacker có thể:
- Đánh cắp các thông tin cá nhân bao gồm: tài liệu, thông tin người sử
dụng, tài khoản ngân hàng, tài khoản email, danh bạ điện thoại, tin nhắn SMS,
MMS, hình ảnh, lịch làm việc, ghi chú.
- Ghi lại các hành vi của người dùng: Ghi lại các nội dung cuộc gọi, tin
nhắn SMS, MMS, vị trí của người dùng.
- Ăn cắp cước thuê bao: Sử dụng thuê bao để gọi điện thoại, gửi tin
nhắn, gửi email.
- Ngoài ra, các phần mềm độc hại gây ảnh hưởng đến hệ thống điện
thoại như: tự động khởi động điện thoại, tiêu tốn nhiều năng lượng làm giảm
thời gian sử dụng pin, gây hỏng hóc và làm mất mát dữ liệu người dùng,…
Hiện nay, trên thị trường đã xuất hiện một số phần mềm diệt virus trên
điện thoại di động với nhiều tính năng hữu ích như: McAfee Mobile Security,
Kaspersky Mobile Security,… Ở Việt Nam cũng đã có một số phần mềm bảo
vệ điện thoại nổi bật như: Bkav Mobile Security, CMC Mobile Security hoạt
động trên nền tảng Android và iOS. Tuy vậy phần lớn các phần mềm kể các
quốc tế và trong nước đều chưa chứng minh được tính hiệu quả, do việc phát
hiện phần mềm độc hại dựa trên phương pháp truyền thống là nhận dạng dựa
trên chữ ký, không đánh giá được các hành vi lạm dụng thông tin của người
dùng của các ứng dụng. Ngoài ra, các phần mềm phát hiện virus trên di động
vẫn hoạt động theo phương pháp truyền thống nên tiêu tốn rất nhiều tài
nguyên của thiết bị, làm giảm hiệu năng của thiết bị và tiêu tốn pin.
4. Những nội dung nghiên cứu chính
Chương 1: Tổng quan về an toàn bảo mật trên hệ điều hành Android
1. Hệ điều hành Android
2. Bảo mật trên Android
3. Các phương pháp đánh giá mức độ an toàn bảo mật
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
5
Chương 2: Giới thiệu Học máy và các mô hình Học máy
1. Học máy là gì?
2. Các mô hình Học máy
3. Xây dưng một mô hình Học máy
Chương 3: Mô phỏng và kiểm thử
1. Mô phỏng bằng công cụ
2. Kết quả và đánh giá
5. Phương pháp nghiên cứu
- Nghiên cứu các bài báo khoa học trong nước và quốc tế
- Đề xuất phương pháp cải tiến xác định mức độ nguy hại của ứng dụng
- Sử dụng các công cụ SDK, NDK, Android Studio để lập trình ứng
dụng
6. Ý nghĩa khoa học của đề tài
Đề tài góp phần vào phân tích, đánh giá mức độ an toàn của ứng dụng
Android qua học máy. Đây cũng là một trong những tiêu chí bảo mật của
Android trên hệ thống để mang lại tính hiệu quả cao nhất. Việc phân tích các
mức độ của từng quyền để phát hiện mã độc giúp chúng ta thu được những
điểm quan trọng để đánh giá ứng dụng, trợ giúp cho người dùng ước lượng
được độ an toàn của ứng dụng.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
6
CHƯƠNG 1: TỔNG QUAN VỀ AN TOÀN BẢO MẬT TRÊN HỆ
ĐIỀU HÀNH ANDROID
Android là một hệ điều hành có mã nguồn mở dựa trên nền tảng
Linux được thiết kế dành cho các thiết bị di động có màn hình cảm ứng
như điện thoại thông minh và máy tính bảng (của Samsung, LG, HTC,
Motorola …). Ngôn ngữ chính thức để phát triển Android là Java. Phần
lớn Android được viết bằng Java và các hàm API của nó được thiết kế để
được gọi chủ yếu từ Java.
Logo Android
Ban đầu, Android được phát triển bởi Tổng công ty Android, với sự hỗ
trợ tài chính từ Google, sau này được Google mua lại vào năm 2005. Vào
ngày 5 tháng 11 năm 2007, hệ điều hành Android chính thức ra mắt. Hệ quả
là sự thành lập của liên minh thiết bị cầm tay mã nguồn mở, bao gồm 78 công
ty phần cứng, phần mềm và viễn thông nhằm mục đính tạo nên một chuẩn mở
cho điện thoại di động trong tương lai. Chiếc điện thoại đầu tiên chạy Android
là HTC Dream được bán vào ngày 22 tháng 10 năm 2008.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
7
1.1 Kiến trúc hệ điều hành Android
Để nghiên cứu được về sự an toàn bảo mật trên hệ điều hành Android,
trước tiên ta cần phải nắm được kiến trúc hệ điều hành này. Từ đó có thể hiểu
sâu hơn về hệ điều hành Android và nghiên cứu các mặt khác trong hệ điều
hành dành cho đa số điện thoại thông minh này. Trong chương này, chúng ta
sẽ tập trung vào nghiên cứu kiến trúc hệ thống cấp thấp Android và các thành
phần bên trong.
Dưới đây là sơ đồ mô tả nền tảng và kiến trúc hệ thống Android (Hình
1.1). Hệ thống gồm 5 phần, 4 lớp. Mỗi phân vùng được đại diện bằng 1 màu.
Vùng màu đỏ nằm ở lớp cuối cùng, đây là lớp Linux. Lớp này cung cấp 1 cập
độ trừu tượng giữa phần cứ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àn phím, màn hình hiển thị … Vùng thứ hai là
vùng màu xanh lá cây, bao gồm tập các thứ viện viết bằng ngôn ngữ C hoặc
C++ như WebKit, libc, SQLite, …. Cùng một lớp với vùng này, là phần
Android Runtime (Tiến trình Android). Phần này cung cấp 1 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. Ngoài ra, nó cũng cung cấp 1 tập các thư viện
chính giúp các nhà phát triển ứng dụng Android có thể viết ứng dụng Android
bằng Java. Vùng màu xanh lam gồm hai lớp trên cùng, vùng này đại diện cho
các ứng dụng cài đặt trên điện thoại cũng như các dịch vụ được cung cấp cho
những ứng dụng đó.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
8
Hình 1.1:Sơ đồ kiến trúc hệ thống cấp thấp Android
Các phần dưới đây sẽ phân tích kỹ hơn về từng phần trong hệ thống
Android để làm rõ hơn về cấu trúc và chức năng của mỗi phần.
1.1.1 Tầng hạt nhân Linux (Linux Kernel)
Mã nguồn của Linux được sử dụng trong nhiều hệ điều hành mã nguồn
mở như Ubuntu, Fedora, OpenSUSE,… Mã nguồn Linux là mã nguồn cho
phép mọi người sử dụng mà không phải trả phí bản quyền, bên cạnh đó người
dùng được phép tùy ý sửa chữa theo ý mình thích. Giống các hệ điều hành
trên, Android sử dụng một phiên bản đặc biệt của hạt nhân Linux với một vài
bổ sung, thay đổi đặc biệt để phù hợp chạy trên điện thoại, từ đó tạo nên
những chiếc điện thoại thông minh.
Tầng hạt nhân Linux là tầng nằm dưới cùng trong kiến trúc hệ thống
Android, có trách nhiệm quản lý tất cả các hoạt động của điện thoại:
Quản lý bộ nhớ điện thoại.
Giao tiếp với phần cứng.
Thực hiện bảo mật.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
9
Quản lý tiến trình.
Các thành phần chủ yếu trong tầng hạt nhân Linux:
Trình điều khiển hiện thị (Display Driver): điều khiển hiện thị trên
màn hình điện thoại, cũng như thu nhận tín hiệu điệu khiển của người dùng
thông qua màn hình cảm ứng.
Trình điều khiển máy ảnh (Camera Driver): Điều khiển hoạt động của
máy ảnh và nhận dữ liệu từ máy ảnh.
Trình điều khiển bộ nhớ Flash (Flash Memory Driver): Quản lý việc
đọc ghi dữ liệu lên bộ nhớ flash.
Trình điều khiển kết nối mạng (Blinder (IPC) Driver): Chịu trách
nhiệm về kết nối liên lạc mạng vô tuyến như CDMA, GSM, 3G, 4G, E để
đảm bảo chức năng truyền thông của điện thoại.
Trình điều khiển bàn phím (Keypad Driver): Điều khiển bàn phím.
Trình điều khiển mạng wifi (Wifi Driver): Điều khiển hoạt động thu
phát sóng wifi.
Trình điều khiển âm thành (Audio Driver): Điều khiển hoạt động thu
phát âm thanh, giải mã từ các tín hiệu âm thanh sang tín hiệu số để ghi và từ
tín hiệu số sang tín hiệu âm thanh để phát.
Trình quản lý hiệu năng (Power Management): Giám sát và quản lý
tiêu thụ điện năng.
1.1.2 Tầng Thư viện (Libraries) và Tiến trình Android (Android Runtime)
a) Tầng Thư viện (Libraries)
Thư viện nằm trong phân vùng màu xanh lá cây của kiến trúc hệ thống
Android. Vùng Thư viện chứa tất cả các thư viện cơ sở của hệ điều hành
Android. Như đã nói ở trên, các thư viên này được viết bằng ngôn ngữ lập
trình C hoặc C++. Bằng những định nghĩa có sẵn trong các thư viện, phần
mềm có thể dễ dàng sử dụng để hoạt động trên hệ điều hành Android.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
10
Các thư viện trong phân vùng này được chia làm nhiều nhóm thư viên,
mỗi nhóm cùng định nghĩa cho một loại thư viện khác nhau.
Thư viện hệ thống (System C Library): đây là nhóm thư viện được viết
theo chuẩn C. Nhóm thư viện này được thiết kế cho hệ điều hành và chỉ duy
nhất hệ điều hành sử dụng nó.
Thư viện phương tiện truyền thông (Media Libraries): nhóm thư viện
này hỗ trợ việc phát hoặc ghi các tập tin.
Thư viện đồ họa 2D và 3D: Nhóm này hỗ trợ về vấn đề đồ họa. Trong
Android, với OpenGL Lib, bạn có thẻ kết hợp cả 2D và 3D trong một giao
diện người dùng.
Thư viện cơ sở dữ liệu SQL: Hỗ trợ về việc lưu trữ và sử dụng các cơ
sở dữ liệu. Hệ điều hành Android có một công cụ cơ sở dữ liệu có tên là
SQLite, công cụ này cho phép bạn sử dụng để lưu trữ dữ liệu về ứng dụng.
Thư viện Web: Đây là một thư viện quan trong, nó giúp các thiết bị di
dộng có thể hiện thị nhanh chóng các trang web gồm nhiều phần được viết
với ngôn ngữ khác nhau như HTML, Java Script, CSS, … Để làm được điều
này, hệ điều hành Android sử dụng thư viện Web Kit, giống với thư viện sử
dụng trên Google Chrome và Safari.
b) Tiến trình Android (Android Runtime)
Như đã nói ở trên, trong hệ điều hành Android, để chạy một ứng dụng
trên Android bạn cần sử dụng máy ảo Dalvik. Quá trình chạy Android chính
là phần chứa máy ảo Dalvik và các thư viện giúp các chương trình viết bằng
ngôn ngữ Java có thể hoạt động trên điện thoại.
Để làm được điều này, Quá trình chạy Android chứa hai phần chính:
Thư viện lõi (Core Libraries) : gồm các lớp JavaIO, collections, File
access.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
11
Máy ảo Java : máy ảo được sử dụng trong hệ điều hành Android chính
là máy ảo Dalvik. Chúng ta sẽ nói rõ hơn về máy ảo Dalvik vào phần sau.
1.1.3 Tầng Khung ứng dụng (Application Framework)
Tầng Khung ứng dụng cung cấp các dịch vụ cấp độ cao hơn cho các ứng
dụng dưới dạng các lớp Java. Nói theo cách khác, các thành phần trong tầng
này đều được viết bằng ngôn ngữ Java. Với tầng Khung ứng dụng của
Android, các lập trình viên có thể dễ dàng sử dụng và xây dựng những ứng
dụng cho điện thoại. Có được điều đó bởi vì tầng này cung cấp các khối xây
dựng mức độ cao, giúp hỗ trợ tạo nên các ứng dụng trong các dạng gói
Android khác nhau. Hầu hết các phần trong tầng khung ứng dụng được thực
thi như các ứng dụng và được chạy như các tiến trình nền trên thiết bị điện
thoại. Tầng này có nhiệm vụ quản lý các chức năng cơ bản như thực hiện
cuộc gọi, nhận cuộc gọi, gửi và nhận tin nhắn và giám sát hiệu năng sử dụng.
Bên cạnh đó, ở đây còn có một số thành phần nắm giữ những chức năng đáng
chú ý khác:
Khối quản lý hoạt động (Activity Manager – AM): AM kiểm soát tất cả
khía cạnh của vòng đời ứng dụng và ngăn xếp các Activity. Khối quản lý giúp
hệ điều hành có thể quản lý các tiến trình bằng cách theo dõi các ứng dụng
đang hoạt động. Cùng với đó, AM thực hiện đóng các tiến trình nền nếu thiết
bị hết bộ nhớ. Trong khi theo dõi các ứng dụng, AM có thể phát hiện ra các
ứng dụng không phản hồi với một tác động đầu vào trong 5 giây, AM sẽ
quyết định đó là một Ứng dụng không phản hồi và sẽ có trách nhiệm tả về
một hộp thoại nhắc nhở người dùng có một ứng dụng không phản hồi. Đồng
thời, nó cho phép người dùng lựa chọn đóng ứng dụng hoặc đợi ứng dụng
phản hồi (Hình 1.2)
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
12
Hình 1.2: Hộp thoại ứng dụng không phản hồi
Khối cung cấp nội dung (Content providers) : Đây là một khối xây
dưng cơ bản của tầng khung ứng dụng. Khối này có trách nhiệm giúp chia sẻ
dữ liệu giữa các ứng dụng với nhau, giúp cùng một dữ liệu có thể được truy
cập bởi nhiều ứng dụng. Mặc dù phải tạo ra một nơi để lưu trữ dữ liệu để
cung cấp nội dung, nhưng giúp cho giảm đáng kể bộ nhớ cần sử dụng.
Khối quản lý tài nguyên (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.
Khối quản lý thông báo (Notifications Manager) : Cho phép các ứng
dụng hiển thị thông báo các sự kiện. Đây là hình thức truyền tải cho người
dùng biết những thông tin, hoạt động chạy nền đang xảy ra. Có rất nhiều kiểu
thông báo, bao gồm : đèn nháy, chế độ rung, âm thanh hay những thanh báo
hiện thị trên màn hình (Hình 1.3).
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
13
Hình 1.3: Vị trí điện thoại được cung cấp cho google map
1.1.4 Tầng Ứng dụng (Applications)
Tầng Ứng dụng là tầng nằm ở trên cùng của hệ thống kiến trúc Android,
vị trí đó cũng thể hiện tầng ứng dụng là tầng dễ tìm hiểu nhất, là tầng chịu
trách nhiệm chính trong việc tương tác giữa người dùng và thiết bị di động.
Vì vậy hầu hết người dùng thiết bị di động đều chỉ thao tác trên tầng Ứng
dụng mà không cần quan tâm đến các tầng phía dưới, chỉ thông qua tầng này,
người dùng có thể biết được các chức năng của điện thoại di động và sử dụng
chúng một cách dễ dàng thông qua cài đặt và sử dụng các ứng dụng. Một thiết
bị điện thoại sử dụng hệ điều hành Android thông thường được cài đặt sẵn các
ứng dụng cơ bản giúp thực hiện các chức năng thiết yếu trong điện thoại như
gọi điện, nhắn tin, lướt web, … Bên cạnh đó người dùng cũng có thể dễ dàng
cài đặt thêm các ứng dụng khác để phục vụ như cầu của mình. Chính nhờ khả
năng tương tác với người dùng tốt của tầng ứng dụng khiến cho thiết bị di
động trở nên ngày càng phổ biến, và được ưa chuộng như vậy.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
14
1.1.5 Máy ảo Dalvik (DVM)
Các phần ở trên đã có nhắc đến máy ảo Dalvik, và cũng cho thấy được
tầm quan trọng của Dalvik với hệ điều hành Android, Dalvik được thiết kế
dành riêng cho hệ điều hành Android để thực thi các ứng dụng. Phần này sẽ
tập trung và tìm hiểu về máy ảo Dalvik.
a) Sự ra đời của máy ảo Dalvik
Như mọi người đều biết, hệ điều hành Android là hệ điều hành mở,
khuyến khích các nhà phát triển phần mềm viết ra các ứng dụng để cung cấp
cho người dùng thêm các tính năng phụ chứ không chỉ các tính năng chính
quen thuộc như nghe, gọi, nhắn tin, mail, truy cập web, … điều này khiến cho
điện thoại đa năng hơn rất nhiều. Trong hệ điều hành Android, Google đã sử
dụng Java là nền tảng ngôn ngữ lập trình ứng dụng vì sự phổ biến của ngôn
ngữ lập trình này. Nhưng thay vì việc sử dụng dụng máy ảo Java (JVM) hoặc
Java di động (JME), Google lại sử dụng một máy ảo khác dành cho hệ điều
hành Android của mình, đó là máy ảo Dalvik và tập thư viện Java chuẩn được
viết lại và thu gọn hơn. Dalvik ban đầu được phát triển bởi Dan Bonrstein, và
Dalvik được đặt tên theo tên ngồi làng quê hương của ông.
1) Tập tin thực thi Dalvik – tập tin .dex
Trong hệ điều thống Android, mà nguồn Java được biên dịch thành các
tập
tin .class riêng, sau đó trước khi được cài đặt trên thiết bị, các tập tin này được
chuyển đổi thành tập tin thực thi Dalvik, đó là tập tin .dex (Dalvik
EXecutable).
Tập tin thực thi .dex có thể chứa nhiều class bên trong và mỗi ứng dụng
Android chỉ chưa một tập tin .dex duy nhất. Tập tin .dex được thiết kế nhắm
tối ưu bộ nhớ dữ liệu dùng chung. Dưới đây là mô tả về cấu trúc của tập tin
.dex (Hình 1.4).
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
15
Hình 1.4: Cấu trúc tập tin .dex
2) Điểm mạnh của máy ảo Dalvik
Có thể thấy rằng, hệ điều hành Android được thiết kế dành cho các thiết
bị di động, nên luôn phải chú ý đến những hạn chế về phần cứng như pin,
dung lượng Ram và bộ nhớ thấp, màn hình nhỏ,… của những thiết bị này.
Máy ảo Dalvik được sử dụng để phù hợp với những hạn chế này.
Máy ảo Dalvik khởi chạy ngay khi thiết bị khởi động và trở thành máy
ảo mẹ của tất cả các máy ảo ứng dụng sẽ mở ra sau đó. Đây được gọi là quá
trình Hợp tử (Zygote). Điều này giúp hệ điều hành có thể chạy nhiều thực thể
máy ảo một cách hiệu quả với tập tin .dex, giúp hệ điều hành tối ưu hóa bộ
nhớ cần sử dụng.
Dalvik là máy ảo dựa trên thanh ghi thay vì dựa trên cấu trúc ngăn xếp
như máy ảo Java. Mặc dù khiến cho Dalvik trở nên phức tạp hơn các máy ảo
khác, nhưng lại giúp cho hiệu suất làm việc tăng lên. Có thể thấy rằng tốc độ
tối ưu hơn rất cần thiết cho các thiết bị di động, không thể có được những bộ
xử lý lớn như máy tính bàn thông thường.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
16
Máy ảo Dalvik sử dụng hạt nhân Linux cho các việc liên quan đến lớp
dưới của hệ thống như quản lý tiến trình, quản lý bộ nhớ cấp thấp… giúp
giảm tối đa thời gian khởi tạo các máy ảo mới.
b) Bảo mật trong máy ảo Dalvik
Máy ảo Dalvik có một mức độ bảo mật, cho phép hoặc không cho phép
ứng dụng làm việc gì, truy cấp vào tập tin nào. Những điều này đều được thực
hiện từ lớp Application Framwork, và các máy ảo Dalvik trực tiếp thực hiện
theo. Mỗi ứng dụng đều không có quyền ảnh hưởng đến các ứng dụng khác,
đến hệ điều hành hay người dùng như là việc đọc hay ghi dữ liệu cửa ứng
dụng khác, dữ liệu cá nhân hay giữ màn hình luôn sáng, … Mỗi ứng dụng khi
cài đặt vào hệ điều hành sẽ được cấp quyền sử dụng một số tính năng và truy
cấp một số tập tin nhất định. Nếu một ứng dụng muốn khai thác các tính năng
đặc biệt của hệ thống thì sẽ phải khai báo các quyền tương ứng trong tập tin
mô tả ứng dụng (AndroidManifest.xml) và quyền này sẽ được cấp lúc cài đặt
nếu nhận được sự đồng ý của người dùng (Hình 1.5). Cơ chế cấp quyền này
sẽ được nói rõ hơn vào các phần sau.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
17
Hình 1.5: Ứng dụng xin cấp quyền từ người dùng
1.1.6 Cấu trúc ứng dụng Android
Ứng dụng Android được xây dựng thành các Gói tin Android (Android
Package –APK). Trên thiết bị di động, nó là các tập tin có dạng .apk. Tập tin
này được chuyển đổi thành các tập tin ZIP có chứa bytecode của ứng dụng
cùng với tất cả các dữ liệu, tài nguyên, thư viện của bên thứ ba viết ra ứng
dụng và một tập tin manifest mô tả về khả năng của ứng dụng đó. Hình 1.6
cho thấy quá trình đơn giản hóa cách thức mã nguồn Java được phiên dịch
sang các tập tin APK.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
18
Hình 1.6: Quy trình xây dựng 1 file ứng dụng Android
Để cải thiện về vấn đề an ninh, các ứng dụng được chạy trong một môi
trường hộp cát (sandbox). Trong quá trình cài đặt, ứng dụng nhận được một
nhận dạng (ID) người dùng Linux duy nhất (hay được viết tắt là UID) từ hệ
điều hành Android. Sau đó, hệ điều hành sẽ cấp phép cho các tập tin trong
một ứng dụng để giúp cho chỉ duy nhất ứng dụng đó có thể truy cập vào chính
những tập tin của nó. Bên cạnh đó, ngay từ khi bắt đầu, mỗi ứng dụng được
cấp riêng một máy ảo của mình, có nghĩa là mã của một ứng dụng được phân
lập với các ứng dụng khác. Điều này giúp cho Android thực hiện các nguyên
tắc đặc quyền tối thiểu là mỗi ứng dụng chỉ có thể truy cập đến các thành
phần mà nó cần thiết để làm công việc của mình.
Thành phần của một tập tin APK
Phần này sẽ cung cấp cho chúng ta một cái nhìn tổng thể về một tập tin
APK (gói ứng dụng Android). Trước hết, tập tin APK là định dạng tập tin
được sử dụng để phân phối ứng dụng trong Android, mỗi tập tin APK sẽ giúp
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
19
chúng ta cài đặt một ứng dụng Android duy nhất. Dưới đây sẽ liệt kê các phần
khác nhau của một tập tin APK.
AndroidManifest.xml
Tập tin AndroidManifest.xml là thành phần không thể thiếu trong ứng
dụng. Các tập tin manifest thường chứa đựng một số thông tin cơ bản về ứng
dụng như tên, phiên bản, những cài đặt tương thích với ứng dụng,… Cùng với
đó, tập tin này có liệt kê tất cả các thành phần có mặt trong ứng dụng này bao
gồm các phần hoạt động, phần dịch vụ, phần ý định, … Các hoạt động và dịch
vụ sẽ không thể chạy được nếu như không được khai báo trước ở trong bản kê
khai (manifest) này. Tuy nhiên, với phần thu phát thì khác, nó có thể được
khai báo trước trong bản kê khai hoặc đăng kí để hoạt động thông qua phương
pháp registerReceiver(). Bên cạnh đó, các manifest cũng quy định về yêu cầu
phần cứng đặc biệt của thiết bị cho phù hợp với ứng dụng nếu cần, ví dụ như
ứng dụng về máy ảnh sẽ yêu cầu thiết bị di động có ít nhất một máy ảnh, hay
những ứng dụng vị trí sẽ yêu cầu thiết bị di động có trang bị GPS (hệ thống
định vị toàn cầu - Global Positioning System).
Tính năng quan trọng tiếp theo của tập tin bản kê khai này chính là
quyền của ứng dụng. Tính năng này là một phần giúp hệ điều hành Android
giúp quản lý, bảo vệ các ứng dụng. Tính năng này được thể hiện như sau, để
một ứng dụng sau khi cài đặt trên thiết bị được phép truy cập vào các thành
phần đặc biệt (ví dụ như truy cập vào máy ảnh, truy cập vào danh bạ), ứng
dụng đó cần phải được người dùng cấp phép khi cài đặt. Tất cả các yêu cầu về
quyền cần thiết của ứng dụng phải được xác định trọng tập tin
AndroidManifest.xml của ứng dụng đó. Các thẻ
tin bản kê khai đại diện cho quyền sử dụng tài nguyên của hệ thống. Bằng
cách yêu cầu ứng dụng xác định các quyền cần thiết ngay từ đầu như vậy, hệ
điều hành Android có thể thông báo cho người dùng ngày từ khi cài đặt ứng
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
20
dụng, từ đó giúp người dùng chủ động trong vấn đề cung cấp quyền cho mỗi
ứng dụng, điều này cũng giúp giảm bớt vấn đề thất thoát dữ liệu trong hệ điều
hành. Có thể thấy là, tập tin bản kê khai của ứng dụng như một bản vắn tắt về
tất cả các thành phần của ứng dụng đó.
Lib/
Đây là thư mục chứa các câu lệnh liên quan đến các thư viện hỗ trợ cho
ứng dụng. Thư mục này bao gồm các thư viện con đại diện cho các cơ sở xử
lý các thư viện đã được biện soạn, ví dụ như arm, x86, mips, …
Res/
Thư mục này lưu trữ các tài nguyên cần sử dụng cho ứng dụng. Ví dụ
như mỗi ứng dụng luôn cần những hình ảnh khác nhau để sử dụng cho việc
tạo thành giao diện người dùng trong mỗi hoạt động khác nhau.
Assets/
Thư mục này chứa tài sản của ứng dụng. Chúng có thể được truy cập
theo chương trình trong Android bằng cách sử dụng trình quản lý tài sản ứng
dụng AssetManager.
Classes.dex
Đây là tập tin dex tạo ra sau khi biên dịch bytecode của tất cả các tập tin
nguồn java trong các ứng dụng.
Resources.arsc
Đây là một số nhị phân đã biên dịch các nội dung của thư mục chứa tài
nguyên đã đề cập ở trên.
META-INF/
Thư mục này xuất hiện để giúp xác định tác giả viết ra ứng dụng đó, các
ứng dụng trước khi cài đặt trong hệ điều hành Android đều được yêu cầu ký
để đảm bảo. Vậy nên nội dung của thư mục này bao gồm bản kê khai và chữ
ký số của nó.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
21
1.2 An toàn bảo mật hệ điều hành Android
1.2.1 Mã độc
Mã độc được thiết kế nhằm vào mục tiêu là các thiết bị di động, như là
máy tính bảng (tablet) hoặc smartphone để gây thiệt hại hoặc làm gián đoạn
hoạt động của thiết bị đó. Các chương trình nguy hiểm này có thể tự cài đặt
hoặc được cài đặt một cách vô thức vào các thiết bị di động, sau đó thực hiện
các chức năng mà bạn không biết hoặc không được phép. Chúng có thể phát
tán qua mạng Internet thông qua trình duyệt động (mobile browser), được tải
về từ các kho ứng dụng hoặc thậm chí được cài đặt qua chức năng tin nhắn
trên thiết bị. Các mục tiêu ngấm ngầm của mã độc di động bao gồm thu thập
thông tin bí mật, tin nhắn lừa đảo, tiếp thị lừa đảo không mong muốn …
Mã độc di động có thể chia ra làm 4 loại sau:
Phần mềm gián điệp và phần mềm quảng cáo (Spyware and
Adware):
Phần mềm gián điệp ngấm ngầm thu thập thông tin bí mật về người sử
dụng di động và chuyển tiếp đến cho bên thứ ba. Trong một số trường hợp, nó
có thể là phần mềm quảng cáo hoặc tiếp thị. Đó cũng là lý do tại sao phần
mềm gián điệp còn được gọi là phần mềm quảng cáo. Phần mềm gián điệp sử
dụng kết nối di động của nạn nhân để chuyển thông tin cá nhân như danh bạ,
địa chỉ, tin nhắn, lịch sử trình duyệt, phần mềm tải về… Spyware còn thu thập
thông tin về thiết bị như hệ điều hành (OS), mã sản phẩm, số IMEI và số
IMSI để có thể sử dụng cho các tấn công sau này.
Trojans và Virus:
Trojan di động lây nhiễm vào các thiết bị bằng cách ẩn mình trong các
chương trình hữu ích hoặc chương trình hợp pháp, được cài đặt cùng với ứng
dụng và sau đó thực hiện các hoạt động độc hại. Trojan liên quan chặt chẽ với
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
22
virus di động. Kẻ viết phần mềm độc hại thường sử dụng virus di động để chiếm
quyền quản trị cao nhất của thiết bị và truy cập đến các file và bộ nhớ flash.
Các ứng dụng lừa đảo (Phishing Apps):
Cũng giống như máy tính, kẻ tấn công tạo ra các ứng dụng lừa đảo trên
di động giống như một dịch vụ hợp pháp nhưng có thể đánh cắp thông tin
nhạy cảm và thông tin xác thực để thực hiện gian lận tài chính. Một ví dụ gần
đây là ứng dụng bảo mật giả mạo cho Facebook đã tuyên bố đảm bảo tài
khoản Facebook nhưng thực tế đánh cắp thông tin của người dùng.
Các hoạt động ảo:
Mã độc di động ngày càng tinh vi hơn với các chương trình hoạt động
ngầm trên các thiết bị, tự ẩn mình và nằm đợi thời cơ để hành động, ví dụ như
một phiên giao dịch ngân hàng trực tuyến để tấn công. Các hoạt động ẩn có
thể thực hiện hoàn toàn vô hình đối với người dùng, thực thi nhiệm vụ hoặc
kết nối với máy chủ điều khiển mạng máy tính ma để nhận các hướng dẫn
mới cho hoạt động tiếp theo.
1.2.2 Biểu hiện của mã độc di động
Mã độc di động khác nhau nhiều về cách phát tán và lây nhiễm vào các
thiết bị, nhưng chúng đều có triệu chứng chung. Dấu hiệu bị nhiễm mã độc có
thể bao gồm: các hành vi không mong muốn, giảm hiệu năng thiết bị. Mã độc
di động có thể làm giảm tuổi thọ của pin hoặc giảm khả năng xử lý, chiếm
quyền điều khiển trình duyệt, gửi tin nhắn trái phép và có thể vô hiệu hóa toàn
bộ thiết bị.
1.2.3 Mã độc trong môi trường Android
Android là một môi trường lí tưởng cho mã độc phát triển vì:
Phần lớn các Smartphone điều hỗ trợ Email, Internet,
backing…Sử dụng các ứng dụng này đồng nghĩa với việc cung cấp
thông tin cá nhân.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
23
Android hiện tại đang giữ vị trí số một trong HĐH cho
Smartphone, máy tính bảng.
Android là một hệ điều hành mở.
Mục tiêu của mã độc trong Android (Hình 1.7) :
Hình 1.7: Mục tiêu của mã độc Android
Có nhiều cách phân loại mã độc trong android:
Nghiên cứu của Troy Vennon dựa vào các hoạt động lây nhiễm
của mã độc đã chia làm 4 loại.
Nghiên cứu của K.H.Khan và M.N.Tahir phân loại mã độc là m 6
nhóm.
Trang web forensics chuyên nghiên cứu về mã độc dựa vào mục
tiêu của mã độc đã chia ra làm 9 họ:
Đánh cấp thông tin cá nhân 51,3%
Gửi tin nhắn trái phép (IMEL,..) 30,1%
Botnet(spam, thư rác,..) 23,5%
Truy cập Root 18,3%
Tải từ Google-Play 11,3%
Cài đặt các ứng dụng khác 10,4%
Đánh cấp định vị của người dùng 8,7%
Cài đặt các ứng dụng hỗ trợ hacker 7,8%
Trojans (tiếp cận các dịch vụ ngân hàng trực tiếp) 3,5%
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
24
1.2.4 Một số kỹ thuật phân tích mã độc
Công cụ phát hiện mã độc dựa trên các hành vi của mã độc. Nó nhận hai
đầu vào, một là biểu hiện của hành vi của mã độc; đầu vào còn lại là chương
trình được kiểm duyệt. Công cụ phát hiện mã độc có hai đầu vào này sẽ sử
dụng các kỹ thuật phát hiện để xác định phần mềm đó là độc hại hay vô hại.
Mặc dù hệ thống phát hiện xâm nhập (IDS) và công cụ phát hiện mã độc đôi
khi được sử dụng như nhau, nhưng công cụ phát hiện mã độc thường chỉ là
một thành phần trong hệ thống IDS hoàn chỉnh.
a) Phân tích tĩnh
Phân tích tĩnh là phương pháp tiếp cận nhanh, ít tốn kém để tìm các đặc
điểm của mã độc hoặc các đoạn mã khả nghi trong một ứng dụng mà không
cần thực hiện chúng. Các kỹ thuật này được sử dụng trong phân tích sơ bộ,
khi các ứng dụng đáng nghi ngờ được đánh giá ban đầu để phát hiện nguy cơ
an toàn an ninh. Các kỹ thuật được sử dụng trong phân tích tĩnh như sau:
- Lời gọi hệ thống (system call): ứng dụng di động đầu tiên được phân
tách (Disassemble Application) sử dụng công cụ như IDA pro. Công cụ này
được sử dụng để kết xuất các lời gọi hệ thống tạo ra bởi các ứng dụng và sau
đó được chuyển đến máy trung tâm (Centroid Machine) để thực hiện phát
hiện bất thường và phân loại ứng dụng dựa trên các hành vi của mã độc.
Hình 1.8: Lời gọi hệ thống
- Phân tích bất thường cố định (Static Taint Analysis): phân tích này sử
dụng PiOS, một kỹ thuật để thực hiện phân tích bất thường cố định trong các
mã nhị phân chương trình ứng dụng iOS. Công cụ PiOS sử dụng phân tích cố
định để kiểm tra các ứng dụng truy cập thông tin nhạy cảm và truyền nó qua
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
25
mạng. PiOS đầu tiên tạo ra đồ thị luồng điều khiển từ các ứng dụng (Control
Flow Graph - CFG). Phân tích đường đi từ các nguồn nhạy cảm, như: danh
bạ, tọa độ GPS hiện tại, bộ đệm bàn phím, ID thiết bị và các thông tin liên
quan khác. Các phân tích luồng dữ liệu kiểm tra bất kỳ dữ liệu nhạy cảm nào
được truyền mà không thông báo cho người dùng và gây rò rỉ thông tin cá
nhân.
Hình 1.9: Phân tích bất thường cố định
- Phân tích mã nguồn (Source code analysis): kỹ thuật phát hiện mã độc
này được đề xuất cho Android. Phương pháp này sử dụng trình biên dịch
ngược ded, một trình biên dịch ngược Dalvik để tạo ra mã nguồn java từ ứng
dụng cài đặt và sau đó sử dụng Fortify SCA, một bộ công cụ phân tích mã cố
định, để đánh giá các mã nguồn.
Hình 1.10: Phân tích mã nguồn
b) Phân tích động
Giám sát động hành vi của ứng dụng di động trong một môi trường cô
lập còn được gọi là phân tích động hay phân tích hành vi. Các nhà nghiên cứu
chủ yếu sử dụng phân tích động trong việc theo dõi vết hay truy lời gọi hệ
thống bất thường.
TaintDroid cung cấp khả năng theo dõi truy vết bất thường động toàn hệ
thống cho Android. Các ứng dụng di động gửi đến máy ảo Dalvik để thực
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
26
hiện 4 yếu tố lan truyền bất thường: biến (variable), phương thức (method),
tin nhắn (message), và file-level. Truy dấu vết bất thường đánh dấu bất kỳ dữ
liệu khả nghi mà nó xuất phát từ các nguồn nhạy cảm như: vị trí, micro,
camera và các thông tin khác của điện thoại. Kỹ thuật này thay đổi bộ nạp thư
viện nguyên gốc để đảm bảo rằng tất cả các thư viện nguyên gốc được gọi từ
máy ảo, do đó, ngăn ngừa các ứng dụng không đáng tin cậy thực hiện các
phương thức trực tiếp vào nguyên gốc. Cuối cùng, phân tích động hiển thị dữ
liệu bị tác động với bất kỳ sự rò rỉ dữ liệu nhạy cảm trước khi nó rời khỏi hệ
thống tại giao diện mạng (network interface). TaintDroid chỉ tập trung vào
luồng dữ liệu và không xem xét các lỗ hổng khác.
Hệ thống AASandbox (Android Application Sandbox) là một kỹ thuật
khác đưa ra phân tích hai bước cho các ứng dụng Android. Một ứng dụng di
động gửi đến AASandbox, tại đó nó thực hiện phân tích tĩnh và động trong
chế độ ẩn (offline). Phân tích tĩnh vô hiệu hóa mã nhị phân ứng dụng cài đặt
và sử dụng từng đoạn mã để tìm các mẫu nghi vấn. Phân tích động thực thi
mã nhị phân trên bộ mô phỏng Android và ghi lại các lời gọi hệ thống.
c) Phân tích quyền ứng dụng
Các ứng dụng cần một số quyền để truy nhập vào dữ liệu tin cậy. Tại
thời điểm cài đặt, nền tảng Android hỏi người sử dụng gán quyền hay không
cấp quyền dựa trên các hành vi mà ứng dụng thực hiện.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
27
Hình 1.11: Phân tích quyền ứng dụng
Hình 1.11. mô tả dịch vụ bảo mật Kirin cho nền tảng Android. Kirin thực
hiện kiểm tra quyền của các ứng dụng trong khi cài đặt. Khi một người dùng
cài đặt ứng dụng, Kirin kết xuất cấu hình bảo mật của nó và kiểm tra chúng có
vi phạm quy tắc của chính sách bảo mật không. Nếu một ứng dụng không đạt
tất cả các chính sách bảo mật, thì Kirin có thể dừng ứng dụng đó hoặc cảnh
báo đến người dùng.
Phát hiện dựa trên đám mây (cloud-base detection)
Trong ứng dụng này, một chương trình client giám sát các lời gọi hệ
thống trong thiết bị và gửi nó đến server trong cloud để phát hiện hành vi
mã độc.
Paranoid Android là một kỹ thuật bảo vệ chống mã độc dựa trên cloud
mà nó chuyển phân tích bảo mật và sự tính toán đến máy chủ ở xa, tổ chức
nhiều bản giả lập điện thoại di động chạy trên hệ mô phỏng. Một bộ truy vết
(tracer) trong smartphone ghi lại tất cả các thông tin cần thiết mà các ứng
dụng trên điện thoại yêu cầu. Bộ truy vết đó gửi các thông tin ghi được đến bộ
phản hồi dựa trên đám mây (cloud-base replier), nó thực hiện lại trên bộ mô
phỏng. Bộ phản hồi đó có thể thực hiện một số kiểm tra an toàn bảo mật, như
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
28
là phân tích mã độc động, quét bộ nhớ, phát hiện lời gọi hệ thống bất thường
và quét virus từ nguồn tài nguyên phong phú trên cloud.
Crowdroid là một kỹ thuất phát hiện mã độc di động dựa trên hành vi
dùng cho Android. Crowdroid là một ứng dụng nhỏ gọn giám sát các lời gọi
hệ thống được gọi bởi các ứng dụng di động có chủ đích, tiền xử lý các lời gọi
đó, và gửi chúng đến cloud. Ở đó, một kỹ thuật kết chùm (clustering) giúp xác
định xem các ứng dụng có độc hại hay không. Tăng cường sử dụng
Crowdroid cho kết quả cải thiện đáng kể đến khả năng phát hiện mã độc
nhưng sử dụng phương pháp này ngay từ đầu có thể gây ra các lỗi, khi mà
lượng mẫu vẫn còn rất nhỏ.
Giám sát tuổi thọ pin
Ứng dụng chứa mã độc có xu hướng sử dụng phần lớn dung lượng pin.
VirusMeter là một phương pháp thú vị do Liu et al đề xuất nhằm phát hiện
tiêu thụ năng lượng và phát hiện mã độc. VirusMeter phát hiện hành vi bất
thường của điện năng tiêu thụ. Ý tưởng đằng sau phương pháp này là bất kỳ
hành vi độc hại nào cũng sẽ tiêu thụ pin nhiều hơn. VirusMeter giám sát các
hoạt động trong điện thoại và sử dụng các API được cung cấp bởi nền tảng di
động để thu thập dung lượng pin còn lại. Dựa trên dữ liệu thu thập được, nó
tính toán xem ứng dụng sử dụng bao nhiêu năng lượng pin và so sánh với mô
hình năng lượng. Nếu có sự khác biệt và vượt qua ngưỡng thì sẽ cảnh báo.
Trong một thế giới mà tất cả mọi thứ từ cửa ra/vào đến tài khoản ngân
hàng có thể được kiểm soát bởi smartphone thì điều quan trọng là thông tin cá
nhân không bị dễ dàng xâm nhập. Sự gia tăng của smartphone đã mang lại
nhiều thuận lợi nhưng cũng đặt ra nhiều thách thức trong việc phát hiện các
mã độc. Đối với người dùng thông thường, có thể thực hiện một số bước đơn
giản như sử dụng phần mềm bảo mật kết hợp với ý thức không truy cập vào
các đường kết nối không rõ hoặc cung cấp thông tin cá nhân trên các trang
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
29
mạng hoặc ứng dụng không đáng tin cậy, kiểm tra chứng chỉ SSL khi nhập
thông tin trên các trang web quan trọng (ví dụ như tài chính …) và quan trọng
hơn nữa là người dùng cần cẩn thận trong việc tải về và cài đặt một ứng dụng.
d) Đánh giá mức độ an toàn của ứng dụng thông qua quyền được
cấp phép
Trong lập trình Android nói riêng hay lập trình mobile nói chung, một ứng
dụng can thiệp những thông tin nhạy cảm (thông tin danh bạ hay tin nhắn)
hoặc muốn tương tác sâu vào những chức năng hệ thống (camera, internet,
…) thì bắt buộc ứng dụng đó phải xin quyền người dùng. Tùy vào tầm quan
trọng của thông tin cũng như chức năng hệ thống, hệ điều hành có thể cấp
quyền tự động hay thông báo xin phép người dùng. Người lập trình cần khai
báo quyền trong file AndroidManifest.xml. Có thể nói, quyền là bức tường
bảo mật quan trọng hàng đầu mà hệ điều hành Android dựng lên nhằm bảo vệ
người dùng.
Các quyền trong Android
Trong android có 2 loại quyền chính đó là Quyền thường và Quyền
nguy hiểm, nếu từ phiên bản android 5.0 trở về trước thì thực chất 2 thằng
này sẽ không khác nhau là bao nhiêu bởi vì nó đều được khai báo – xin quyền
trong AndroidManifest.xml, tuy nhiên từ bản android 6.0 thì các lập trình viên
phải xin quyền thằng này cả trong AndroidManifest và cả khi ứng dụng khởi
chạy lên đối với những Quyền nguy hiểm.
1.2.4.1 Quyền thường
Quyền thường là những quyền (permission) có rất ít nguy cơ ảnh hưởng
đến sự riêng tư của người dùng hay ảnh hưởng tới các ứng dụng khác. Ví dụ,
permission để cài đặt múi giờ là permission thường. Nếu một app khai báo
rằng nó cần permission thường, Android sẽ tự động cấp phép cho app mà
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
30
không cần bạn cho phép, cũng như không thông báo trên Play Store lúc cài
đặt.
Tắt bật Bluetooth
Tắt bật Wi-Fi
Vô hiệu hóa bàn phím ảo
Mở status bar
Cài đặt shortcut ra màn hình chủ
Thay đổi thiết lập âm thanh
NFC
Cài báo thức, múi giờ, hình nền
Dùng vân tay
Đọc và ghi thiết lập đồng bộ hóa dữ liệu
Những permission thường hay gặp:
Đây là những quyền đơn giản, không can thiệp sâu vào trong hệ thống và
người lập trình chỉ cần khai báo xin cấp quyền trong file
AndroidManifest.xml, sau đó sẽ không phải xin cấp quyền lần nào nữa.
Khi người dùng tải ứng dụng về ta sẽ thấy google thông báo các quyền
này lên bảo người dùng đồng ý và từ này về sau ứng dụng sẽ không hỏi thêm
gì nữa, nó bao gồm các quyền như Hình 1.12:
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
31
Hình 1.12 : Các quyền đơn giản trong Android
1.2.4.2 Quyền nguy hiểm
Là những quyền thường can thiệp sâu vào hệ thống điện thoại Android
như: đọc danh bạ, đọc tập tin, tải file… Ví dụ như phần mềm Messenger,
ứng dụng xin quyền đọc danh bạ để lấy ra các số điện thoại và từ đó gợi ý cho
người dùng những người quen.
Giống như quyền thông thường, những quyền này cũng phải khai báo
trong AndroidManifest. Tuy nhiên từ android 6.0 trở đi, ta phải xin thêm
quyền một lần nữa khi ứng dụng khởi chạy tới chức năng cần cấp quyền nữa.
Nếu không xin quyền được ứng dụng đó sẽ không thể thực hiện được chức
năng hay thậm chí xảy ra lỗi.
Ví dụ: download tấm ảnh về lưu vào thẻ nhớ/máy là phải xin quyền ghi
file (WRITE_EXTERNAL_STORAGE).
Hình 1.13 bao gồm những quyền được xếp vào dạng quyền nguy hiểm:
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
32
Hình 1.13 : Các quyền nguy hiểm trong Android
Xin cấp quyền trong Android
1.2.4.3 Từ Android 5.x.x trở xuống
Ở phiên bản này, việc cấp quyền là rất đơn giản. Khi lập trình, ta thấy
cần sử dụng những quyền gì thì khai báo vào trong file AndroidManifest.
Ví dụ: Đối với một ứng dụng nghe nhạc online, quyền kết nối internet,
quyền ghi và đọc file là cần tới để trường hợp có thể hiển thị những bài hát
trong điện thoại khi xem trực tuyền hoặc là khi tải bài hát xuống thiết bị. Ta
sẽ xin quyền như Hình 1.14 dưới đây:
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
33
Hình 1.14 : Giao diện file AndroidMainfest
Trong trường hợp, quyền android.permission.INTERNET không được
khai báo. Người lập trình sẽ nhận về tin nhắn “marshmallow W/System.err:
java.lang.SecurityException: Permission denied (missing INTERNET
permission?)” ngay khi chương trình tự động đóng và báo lỗi.
1.2.4.4 Từ Android 6.0 trở lên
Lấy ví dụ là ứng dụng nghe nhạc như trên. Ta có 2 quyền nằm trong
quyền nguy hiểm, đó là quyền đọc và ghi file. Đối với Android 6.0
Marshmallow trở lên, ứng dụng sẽ xảy ra lỗi nếu như chỉ xin cấp quyền ở
trong file AndroidManifest. Thay vào đó người lập trình cần phải xin lại
quyền trong lúc run time – khi ứng dụng thực thi.
Để xin quyền khi run time cho android 6.0, ta cần bổ sung logic
cấp quyền vào code của ứng dụng. Khi đó, quyền này sẽ có dạng thông
báo như Hình 1.15 khi các bạn khởi động app:
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
34
Hình 1.15 : Xin cấp quyền trên Android 6.0 Marshmallow
Kiểm tra và vô hiệu hóa quyền
1.2.4.5 Với Android 5.x.x trở xuống
Chức năng kiểm soát permission trong Android có tên là App Ops. Bật
App Ops lên và chọn vào từng thẻ một, ta sẽ thấy những app nào đang cần
quyền gì.
Ta cũng có thể tắt permission cho từng ứng dụng riêng lẻ bằng cách chọn
vào từng app, sau đó gạt nút tắt với những permission nào mà bạn nghi ngờ.
Lưu ý, việc này có thể dẫn đến lỗi không thể chạy app nếu permission đó là
thứ quan trọng mà app cần sử dụng (Hình 1.16).
Lưu ý: nếu là Android 4.2, ta sẽ cần phải root máy để bật App Ops.
Android 4.3 trở lên thì không cần.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
35
Hình 1.16 : Giao diện App Ops
1.2.4.6 Với Android 6.0 trở lên
Android 6.0 cho phép kiểm soát quyền truy cập (permission) của từng
app một. Ví dụ, ta có thể cho Facebook truy cập ảnh nhưng không cho theo
dõi GPS, hoặc cho một app nào đó đọc nhưng không được quyền gửi tin nhắn
chẳng hạn. Để làm điều đó, vào Settings > Apps > chọn tên app > Permissions
> Tắt bật từng quyền tùy theo nhu cầu (Hình 1.17).
Hình 1.17 : Giao diện kiểm soát quyền của ứng dụng Calender trên
Android 6.0
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
36
CHƯƠNG 2: GIỚI THIỆU HỌC MÁY VÀ CÁC MÔ HÌNH HỌC
MÁY
2.1 Học máy là gì?
AI – trí tuệ nhân tạo (Artificial Intelligence) là các kỹ thuật giúp cho
máy tính thực hiện được những công việc của con người chúng ta. Ví dụ như
một chương trình cờ vua tự động có thể coi là một chương trình có sử dụng
AI hay viết tắt là một chương trình AI.
Trong lĩnh vực AI có một nhánh nghiên cứu về khả năng tự học của máy
tính được gọi là học máy (machine learning)[1]. Hiện nay không có một định
nghĩa chính thức nào về học máy cả nhưng có thể hiểu rằng nó là các kỹ thuật
giúp cho máy tính có thể tự học mà không cần phải cài đặt các luật quyết
định. Thường một chương trình máy tính cần các quy tắc, luật lệ để có thể
thực thi được một tác vụ nào đó như dán nhãn cho các email là thư rác nếu
nội dung email có chứa từ khóa “quảng cáo”. Nhưng với học máy, các máy
tính có thể tự động phân loại các thư rác thành mà không cần chỉ trước bất kỳ
quy tắc nào cả. Nói hơi khó thoát ý, nhưng có thể hiểu đơn giản là nó giúp
cho máy tính có được cảm quan và suy nghĩ được như con người. Còn nếu
nói nôm na kỹ thuật một chút thì học máy là phương pháp vẽ các đường thể
hiện mối quan hệ của tập dữ liệu. Ví dụ như đường ngăn cách 2 loại dữ liệu
cho nhãn khác nhau, đường thể hiện xu hướng của giá nhà phụ thuộc vào diện
tích vị trí hay các đường phân cụm dữ liệu.
Một nhánh nhỏ trong học máy gần đây rất được ưa chuộng là học sâu
(deep learning). Học sâu là kỹ thuật sử dụng các mạng nơ-ron tương tự như
các nơ-ron của não người để xây dựng hệ thống học máy. Đây là mốt sự kết
hợp tuyệt vời giữa toán học và khoa học thần kinh. Kết quả của nó mang lại
cực kỳ to lớn, có thể coi là khởi nguyên của ngành công nghiệp mới. Tại thời
điểm này, hầu hết các anh lớn cả trong ngành công nghệ lẫn các ngành khác
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
37
như ô tô, điện tử đều dang tập trung phát triển và ứng dụng kỹ thuật học sâu
vào bài toán của mình. Ví dụ như AlphaGo của Google đã chiến thắng nhà vô
địch cờ vây Lee Sedol vào tháng 3 năm 2016. Tính năng nhận diện khuôn mặt
khá chính xác của Facebook được triển khai vào năm 2016….
2.2 Phân loại kỹ thuật học máy
Các giải thuật học máy được phân ra làm 2 loại chính là:
Học có giám sát (Supervised Learning): là phương pháp sử dụng những
dữ liệu đã được gán nhãn từ trước để suy luận ra quan hệ giữa đầu vào và đầu
ra. Các dữ liệu này được gọi là dữ liệu huấn luyện và chúng là cặp các đầu
vào – đầu ra. Học có giám sát sẽ xem xét các tập huấn luyện này để từ đó có
thể đưa ra dự đoán đầu ra cho 1 đầu vào mới chưa gặp bao giờ. Ví dụ dự đoán
giá nhà, phân loại email.
Học phi giám sát (Unsupervised Learning): Khác với học có giám sát,
học phi giám sát sử dụng những dữ liệu chưa được gán nhãn từ trước để suy
luận. Phương pháp này thường được sử dụng để tìm cấu trúc của tập dữ liệu.
Tuy nhiên lại không có phương pháp đánh giá được cấu trúc rìm ra được là
đúng hay sai. Ví dụ như phân cụm dữ liệu, triết xuất thành phần chính của
một chất nào đó.
Ngoài ra còn có 1 loại nữa là học tăng cường (reinforcement learning).
Phương pháp học tăng cường tập trung vào việc làm sao để có 1 tác tử trong
môi trường có thể hành động sao cho lấy được phần thưởng nhiều nhất có thể.
Khác với học có giám sát, nó không có cặp dữ liệu gán nhãn trước làm đầu
vào và cũng không có đánh giá các hành động là đúng hay sai.
2.3 Các bước học máy
Một bài toán học máy cần trải qua 3 bước chính
Chọn mô hình: chon một mô hình thống kê cho tập dữ liệu. Ví dụ như
mô hình thống kê Becluni, mô hình phân phối chuẩn.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
38
Tìm tham số: Các mô hình thống kê có các tham số tương ứng, nhiệm
vụ lúc này là tìm các tham số sao cho phù hợp với tập dữ liệu nhất có thể.
Suy luận: Sau khi có được mô hình và tham số, ta có thể dựa vào chúng
để đưa ra suy luận cho một đầu vào mới nào đó.
Bất cứ một bài toán học máy nào cũng đều cần có dữ liệu để huấn luyện,
ta có thể coi nó là điều kiện tiên quyết. Dữ liệu sau khi có được cần phải:
Chuẩn hóa: Tất cả các dữ liệu đầu vào đều cần được chuẩn hóa để máy
tính có thể xử lý được. Quá trính chuẩn hóa bao gồm số hóa dữ liệu, co giãn
thông số cho phù hợp với bài toán. Việc chuẩn hóa này ảnh hưởng trực tiếp
tới tốc độ huấn luyện cũng như cả hiệu quả huấn luyện.
Phân chia: Việc mô hình được chọn rất khớp với tập dữ liệu đang có
không có nghĩa là giả thuyết của ta là đúng mà có thể xảy ra tình huống dữ
liệu thật lại không khớp. Vấn đề này trong học máy được gọi là khớp quá
(Overfitting). Vì vậy khi huấn luyện người ta phải phân chia dữ liệu ra thành
3 loại để có thể kiểm chứng được phần nào mức độ tổng quát của mô hình. Cụ
thể 3 loại đó là:
o Tập huấn luyện (Trainning set): Chiếm 60%. Dùng để học khi huấn
luyện.
o Tập kiểm chứng (Cross validation set): Chiếm 20%. Dùng để kiểm
chứng mô hình khi huấn luyện.
o Tập kiểm tra (Test set): Chiếm 20%. Dùng để kiểm tra xem mô hình đã
phù hợp chưa sau khi huấn luyện.
Lưu ý rằng, tập kiểm tra ta phải lọc riêng ra và không được sờ tới, sử
dụng nó trong khi huấn luyện. Còn tập huấn luyện và tập kiểm chứng thì nên
xáo trộn đổi cho nhau để mô hình của ta được huấn luyện với các mẫu ngẫu
nhiên nhất có thể.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
39
Với những điểm tính toán ứng dụng thu được ở chương 3, ta sẽ áp dụng
phương thức học máy để đưa ra xác nhận đó có phải là một phần mềm
Android độc hại hay không. Với học máy, những mẫu mã độc hoàn toàn mới
trên thị trường cũng có thể bị phát hiện. Kỹ thuật phân nhóm cây quyết định
và kỹ thuật hồi quy logictics là hai kỹ thuật được chọn. Kỹ thuật phân nhóm
cây quyết định là một phương pháp phân nhóm rất phổ biến, đơn giản những
đem lại hiệu quả trực tiếp cao, với nền tảng dựa trên lối tư duy giải thuật tham
lam (greedy algorithm). Để xác định được một ứng dụng có đáng tin cậy, ta
cần thực hiện “học” những giá trị thuộc tính đầu vào là risk-score và
protection-score của một bộ mẫu cho trước. Với bộ mẫu phục vụ cho việc
học, các giá trị thông tin dung để xác minh cần phải tách bách rõ ràng. Thông
tin càng phân minh, kết quả “học” được sẽ càng tốt. Điều này có nghĩa là các
tiêu chí phân nhánh cần phải được chuẩn hóa cao. Điều này được thể hiện qua
sự phân hóa entropy. Thuộc tính với độ phân hóa cao nhất sẽ được chọn ra
làm nhánh quyết định.
2.3.1 Thuật toán cây quyết định J48 (Decision Trees)
J48 [2] là thực thi của thuật toán cây quyết định J48 trong Weka[3].
1) Cấu trúc
Cấu trúc của thuật toán được thể hiện đúng với tên gọi, nó là một cấu
trúc phân nhánh cây
Nhóm những trường hợp có cùng một lớp thuộc tính về cùng một
nhóm, mỗi nhóm sẽ được đánh dấu nhãn riêng để phân thành một nhánh cây
riêng.
Thông tin chi tiết ở mỗi nhánh được đem ra tính toán để thu về giá trị
“gain”.
Tìm ra thuộc tính có khả năng phân hóa cao nhất ( tùy theo từng tiêu
chí hướng tới).
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
40
2) Giá trị “Gain”
Đầu tiên, cần nắm được định nghĩa của “Entropy”. Trong thuật toán
này, Entropy là phép đo giá trị biến ngẫu hay độ thay đổi của dữ liệu được
cho. Nó được lưu lại dưới dạng bits. Giả dụ, đối với một giá trị “p”, Entropy
sẽ được tính như sau:
Entropy(p) = -
Entropy điều hòa được tính với công thức:
Entropy(j|p) =
Cuối cùng, ta thu được giá trị “Gain”, giá trị này đại diện cho độ biến
thiên giữa dữ liệu đầu vào và đầu ra. Nó chính là giá trị thay đổi giữa các giai
đoạn của Entropy. Công thức được biểu diễn như sau:
Gain(p,j) = Entropy(p – Entropy(j|p))
Nguyên tắc phân nhánh của cây quyết định J48
Giả sử có A mẫu lành tính (a) và B mẫu phần mềm độc hại (b) trong
lớp xác nhận mã độc, với tổng số mẫu bằng T. Nhóm mẫu này sẽ được chia
thêm thành hai nhóm khác nhau dựa trên cơ sở là điểm biến của entropy và
giá trị Gain của nhóm. Hai nhóm được tách ra làm 2 phía với: x mẫu lành tính
và y mẫu mã độc thuộc vế trái (left), (A-x) mẫu lành tính và (B-y) thuộc vế
phải. Entropy và Gain lúc này có thể được tính với 2 công thức như dưới dây:
* log( - * log( ) Entropy bef = -
* log( - * log( ) Entropy left = -
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
41
* log( - * Entropyright = - (
log( )
Entropyaft = * Entropy left + * Entropy right
Information gain = Entropy bef - Entropy aft
Đưa bộ dữ liệu vào trong Weka ta thu được kết quả như sau:
Thời gian để xây dựng mô hình: 0,08 giây
Trường hợp phân loại chính xác (503) 83,2781%
Trường hợp phân loại không chính xác (101) 16,7219%
TPR: 0.833; FPR: 0.235; Precision: 0.849; Recall: 0.833; ROC Area: 0.833
Confusion Matrix: TP: 152; FN: 89
FP: 12; TN: 351
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
42
Hình 2.1 : Kết quả thuật toán Cây quyết định
2.3.2 Thuật toán hồi quy logictics
Thuật toán hồi quy logictics là thuật toán thực hiện kỹ thuật thống kê
mối tương quan giữa biến độc lập với biến phụ thuộc là biến nhị phân. Trong
hồi quy tuyến tính đơn, các biến độc lập Xi và phục Y là biến số liên tục liên
hệ qua phương trình:
(1)
Với Xi là biến độc lập, Y là biến phụ thuộc
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
43
Trong hồi quy logictics, biến phụ thuộc Y chỉ có 2 trạng thái 1 (mã độc)
và 0 (lành tính). Muốn đổi biến số liên tục người ta tính xác suất của 2 trạng
thái này. Nếu ta coi p là xác suất khi biến cố xảy ra (phát hiện mã độc) thì 1-p
là xác suất mà biến cố không xảy ra (không phát hiện mã độc). Phương pháp
hồi quy Logictics phát biểu:
)= (2) Loge(
Trong đó:
P(Y=1) = Po : xác suất xảy ra sự kiện. Với bài toán của chúng ta, nó là
xác suất một ứng dụng là mã độc.
P(Y=0) = 1 – Po: xác suất không xảy ra sự kiện.
Xi : xác biến độc lập
Ngoài ra, ta có hệ số Odds dùng chỉ ra xác suất tiên đoán phát hiện mã
độc theo trị số của X.
Odds =
Thế vào phương trình (2), ta được:
(3) loge Odds = Bo +
Từ phương trình (3), ta tính xác suất tiên đoán phát hiện mã độc theo
trị số của Xi như sau:
E( = ) = Bo +
Với E(Y/Xi) là xác suất để Y = 1 xuất hiện với biến độc lập Xi.
p=
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
44
Hình 2.2 : Kết quả thuật toán Hồi quy Locgictics
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
45
CHƯƠNG 3: MÔ PHỎNG VÀ KIỂM THỬ
Cho tới nay, đã có rất nhiều những nghiên cứu hay phương pháp được đề
ra để phát hiện phần mềm nguy hại. Trong đó, phương pháp cổ điển và từng
được sử dụng nhiều nhất là kỹ thuật chữ ký điện tử. Chữ ký sẽ được chiết ghi
vào một kho dữ liệu đối chiếu liên quan tới dấu hiệu mã độc. Sau đó, chúng
được sử dụng với mục đích so sánh và kiểm tra các ứng dụng cần quan tâm.
Có thể thấy, đây là một kỹ thuật rất hiệu quả trong việc phát hiện các mã độc
sẵn có, tuy nhiên, lại rất hạn chế trong việc đối phó với những mã độc mới.
Do đó, việc kết hợp thêm các cơ chế khác nhằm cải thiện tính linh hoạt và
hiệu quả với các ý tưởng phương pháp sẵn có là điều cần thiết.
Hai loại cơ chế phân tích chính hiện nay được sử dụng trong nghiên cứu
phát hiện phần mềm độc hại gồm: phân tích động và phân tích tĩnh.
Cơ chế phân tích động: là thử nghiệm và đánh giá các chương trình bằng
cách thực thi dữ liệu trong môi trường thực hóa. Mục tiêu để tìm ra, theo dõi
liên tục những thay đổi trong thành phần chương trình ngay khi đang chạy.
Qua đó có thể tìm ra lỗi mà không cần đọc, kiểm tra các đoạn mã nghi ngờ.
Các bước cụ thể như sau: đưa mã độc trong một môi trường biệt lập thực hóa
(Sandbox) sau đó quan sát hành vi của mã độc… Droidbox là một trong
những công cụ phổ biến nhất áp dụng cơ chế này.
Rất nhiều những nghiên cứu đã thực hiện dựa trên nền tảng của phương
pháp này. Vào tháng 10 năm 2010, phương pháp đầu tiên áp dụng cơ chế này
đã được công bố, với cái tên: AASandbox [4]( Android Application
Sandbox). Thomas Bl”asing đưa các mẫu độc hại vào môi trường thực thi để
xâm nhập và tương tác với các tầng lớp sâu của hệ thống, qua đó có thể phân
tích sâu hơn rồi thu về những bản ghi dữ liệu hệ thống này. Tiếp theo,
AASandbox sử dụng một phương pháp tiếp cận với dữ liệu thu được là
“footprinting” để phát hiện ra các ứng dụng đáng ngờ. Đây là một phương
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
46
thức khá cổ và vẫn được duy trì đến tận bây giờ. Sau đó, William Enck đã tiếp
bước khi xây dựng hệ thống Taint Droid [5]với kỹ thuật truy vết. Với ý tưởng
về “ đánh dấu đối tượng”, những dữ liệu thu thập được từ nguồn mã hay phần
mềm đáng ngờ sẽ được đánh dấu. Từ đây, ta thu về những mẫu đối chiếu
được gọi là “vết nhơ”. Tiếp đến, tất cả các dữ liệu được đánh nhãn sẽ phải
vượt qua các trạm kiểm soát của Taint Droid trước khi được truyền đi khắp
mạng hệ. Có thể thấy đây là một cách xử lý dữ liệu thông tin đáng ngờ rất
triệt để, tuy nhiên cũng vì vậy mà rất dễ xác định phán đoán sai một ứng dụng
lành thành ác.
Với những đặc điểm nêu trên, phương pháp phân tích động mang lại ưu
thế phát hiện ngay lập tức các hành vi sai trái của phần mềm ngay khi chương
trình được khởi chạy. Mặt khác, nhiều khó khăn còn tồn tại như: những khó
khăn trong việc xây dựng được một môi trường thực thi hoàn chỉnh, ngoài ra
hiện đã có rất nhiều mã độc có thể lách qua khâu kiểm tra trong môi trường
thực thi này.
Phân tích tĩnh: Phân tích mã thông qua việc đọc và phân tích mã trực tiếp
của một chương trình thay vì chạy thử nó. Công cụ hỗ trợ phương pháp này
thường là: IDA Pro 6, Apk Inspector, Dex2Jar, Dexdump, ApkTool. Đây là
những công cụ với nhiệm vụ thực hiện biên dịch ngược các phần mềm, hỗ trợ
cho việc soi mã code.
Đối với cơ chế này, DroidMat [6]là một hệ thống tiêu chuẩn trong việc
cung cấp mô hình phân tích tĩnh để nhận ra phần mềm độc hại Android. Wu
đánh giá dựa trên các siêu chí sau: quyền điều khoản, các đối tượng thành
phần( intent actions, intent categories) và các đường dẫn API, tất cả đều được
chứa các tập tin manifest hay smali. Tuy nhiên, số lượng tài nguyên cần thiết
để phục vụ cho nghiên cứu là không nhỏ. Mặt khác, chúng ta có Ryo Sato [7],
người đề xuất một phương pháp đơn giản hơn khi chỉ phân tích trên các tập
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
47
tin mainfest ( thay vì bao gồm cả smali). Dù ý tưởng của ông đã giảm tải
nhiều về nhu cầu sử dụng tài nguyên, một số thành phần không cần thiết đối
với cách thực hiện phương pháp những vẫn được đưa vào, ví dụ như intent
actions, intent categories,… Trên thực tế, bất kỳ hoạt động của một ứng dụng
chỉ có thể được thực hiện sau khi được cấp quyền giấy phép, intent filter vì
vậy là đối tượng không cần xét tới. Phương pháp PAMP [13] đã tập trung
khai thác tối đa vào mảng “quyền” khi đưa ra 13 quyền đáng chú ý kềm trọng
số của từng quyền đó. Mặc dù vậy, 13 quyền được xét là một con số quá ít đối
với tổng số quyền mà hệ thống Android hiện có.
Áp dụng kỹ thuật phân tích tĩnh, các nhà nghiên cứu có thể hiểu được
hoạt động của phần mềm độc hại một cách chi tiết. Đây thực sự là một
phương pháp rất cụ thể và đem lại nhiều hiệu quả. Tuy nhiên, khi phải giải
quyết các phần mềm độc hại phức tạp, đọc toàn bộ mã thực thi lúc này chắc
chắn là một thách thức lớn.
Với nhận thức về tầm quan trọng của quyền điều khoản trong an toàn an
ninh hệ điều hành Android, đề tài này sẽ tập trung vào việc vận dụng cơ chế
phân tích tĩnh như công cụ để khai thác thuộc tính “quyền” trong tập tin
Mainfest.
“Quyền” trong Android giữ vai trò như giấy phép kiểm soát phạm vi
thực thi của các đoạn mã cũng như khả năng can thiệp vào dữ liệu thiết bị.
Những quyền hạn này nếu bị lợi dụng vào sai mục đích hoàn toàn có thể gây
ra ảnh hưởng tiêu cực tới trải nghiệm của người dùng. Với lý do nêu trên, ý
tưởng của chúng tôi chính là đánh giá mức độ nguy hại của một ứng dung
Android dựa trên thuộc tính “quyền” của ứng dụng đó. Ngoài ra, vì từng
quyền lại có các cấp độ khả năng can thiệp vào hệ thống riêng, chúng tôi đã
nghĩ quyết định đặt điểm cho từng mức độ đó, hay còn gọi là điểm trọng số.
Với hướng đi, tối giản hóa chi phí tài nguyên nhưng đồng thời lại tối đa hóa
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
48
những tiêu chí nghiên cứu, tuy đơn giản, đây hoàn toàn có thể là một đóng
góp lớn, mang lại sự hiệu quả của lĩnh vực phân tích phát hiện mã độc.
3.1 Mô phỏng (Phương pháp thực hiện)
Trong các cách tiếp cận cơ chế phân tích tĩnh, để đánh giá mức độ an
toàn của thiết bị Android, chúng tôi áp dụng phương pháp được trình bày
trong bài báo[13] chọn phương án “Phân tích mã nguồn”. Để đi theo phương
án này, sau khi thu thập đủ mẫu tập tin apk (android packages) – dùng để cài
đặt ứng dụng android, một trình biên dịch ngược sẽ được sử dụng để thu về
mã gốc chứa trong tập tin, ở đây, đó chính là công cụ “biên dịch ngược
Dalvik”. Sau đó, tiếp tục sử dụng một công cụ khác là ReadMainfest.exe để
đọc các tập tin xml, qua đó thu về được thông tin về “quyền”, phục vụ cho
mục đích tính toán nghiên cứu.
giá tích Ứng dụng
Đánh nguy hại Phân tĩnh Biên dịch ngược
Hình 3.1: Phân tích mã nguồn
3.1.1 Phương thức tính điểm
1) Risk-score và Protection- score
Dựa vào những thông tin về bảo mật Android thu thập được trên mạng,
để có thể đưa ra mức điểm cho mỗi quyền, chúng tôi quyết định đánh giá và
cho điểm dựa trên 2 phương diện:
Risk-level: Mức độ nguy hiểm trực tiếp mà quyền có khả năng
gây ra khi được lợi dụng để thực hiện ý đồ xấu.
Protection-level: Mỗi quyền đều có một protection level để xác
định mức độ can thiệp sâu vào hệ điều hành.
Bảng 1 và 2 dưới dây là thang điểm về Risk- score và Protection- score
dành cho mỗi quyền:
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
49
Bảng 3.1: Điểm Risk- score
Mức độ nguy hiểm trực tiếp – Risk level Điểm
1 Thấp / Không rõ
2 Thấp – trung bình/ Trung bình thấp
3 Vừa phải / Trung bình
4 Cao vừa phải / Trung bình Khá
5 Cao
6 Rất cao
7 Tới hạn
Bảng 3.2: Điểm Protection- score
Mức độ can thiệp vào hệ thống – Protection level Điểm
1 Bình thường
2 Nguy hiểm
3 Hệ thống/ Chữ ký
Hầu như tất cả các quyền đều có thông tin về Protection- level, chính xác
ở đây chúng tôi đã xây dựng một danh sách điểm Protection-score cho tổng
cộng 304 quyền Android. Tuy nhiên, chỉ 180 quyền trong số đó có thể được
sử dụng trực tiếp để thực hiện ý đồ xấu – Risk level. Vì vậy, danh sách tính
điểm cho Risk- score chỉ còn gồm 180 quyền thông dụng kể trên. Ngoài ra,
chỉ có Protection- level là đã được xác định bởi nhà cung cấp, Risk- level
hoàn toàn có thể được thay đổi bời người nghiên cứu để phù hợp với an toàn
an ninh hiện nay.
2) Điểm “quyền” ứng dụng
Mỗi ứng dụng đa phần đều yêu cầu một cơ số quyền thay vì chỉ một
quyền duy nhất, vì vậy chúng tôi đã xây dựng một công thức để có thể tính
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
50
được số điểm tổng quát dành cho ứng dụng. Công thức được áp dụng để tính
cho Protection- score lẫn Risk- score:
Trong đó, P: là điểm Risk- score hoặc Protection- score của mỗi ứng
dụng
T: là điểm trọng số hay Risk(Protection) – score của từng
quyền
N: là số đếm của một quyền.
Sau đây, chúng tôi sẽ trình bày cách áp dụng công thức vào việc tính
Risk – score cho một ứng dụng gồm 4 quyền điều khoản như sau:
Bảng 3.3: Ví dụ tính điểm “quyền” ứng dụng
Quyền ứng dụng A Risk-level Protection-
level
Android.permission.INTERNET 3 2
Android.permission.WRITE_SMS 5 2
Android.permission.ACCES_NETWORK_STA 4 1
TE
Android.permission.WAKE_LOCK 1 1
Dễ nhận thấy, trong những quyền mà ứng dụng A sử dụng:
“android.permission.WRITE_SMS” là điều khoản rất nhạy cảm khi cho phép
ứng dụng chứa nó có thể tự ý soạn thảo một tin nhắn với bất cứ nội dụng gì.
Ngoài ra, ứng dựng còn có thể truy cập và lấy thông tin mạng ngay trên máy
người dùng với “android.permission.INTERNET” và
“android.permission.ACCESS_NETWORK_STATE”. Với mỗi nội dung
phân tích như để trình bày, ứng dụng A sẽ có điểm Risk- score như sau:
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
51
3.1.2 Thực nghiệm
Một bộ mẫu bao gồm 604 mẫu ứng dụng Android sẽ được đưa vào thử
nghiệm và đánh giá. Trong đó, phần mềm mã độc được thu thập từ một trang
web chuyên cung cấp mẫu phục vụ cho mục đích nghiên cứu [8]. Trước khi
được tải về, tất cả mẫu độc này sẽ được quét qua VirusTotal [9]để đảm bảo độ
chính xác cho bộ mẫu. Còn lại, những mẫu lành tính được thu về thông qua
trang web chính thức Google Play [10] với độ tin tưởng cao.
Các bước tiến hành thực nghiệm được mô tả chi tiết như sau:
1. Thu thập mẫu
Mẫu lành tính: download tập tin apk thông qua
https://play.google.com/store ( để đảm bảo đây là những mẫu lành, các file
apk được down về sẽ được kiểm tra thông qua trang web kiểm duyệt
https://www.virustotal.com/gui/home/upload
360 Security Lite Speed Boost_v1.2.2_apkpure.com,
apk_30642831a.apk,ASKfm_v3.3_apkpure.com.apk,
BBM_v2.13.1.13_apkpure.com.apk,
Blaan_v2.1.1_apkpure.com.apk,
CCleaner_vv1.14.55_apkpure.com.apk,
Chrome Browser Google_v50.0.2661.89_apkpure.com,
Clean Master Boost AppLock_v5.12.1_apkpure.com,
Cloud VPN Free Unlimited_v1.0.3.7_apkpure.com,
com.square_enix.android_googleplay.khuxjp_28_49578118.apk,
Dropbox_v7.2.8_apkpure.com.apk,
Dubsmash_v1.17.0_apkpure.com.apk,
ES File Explorer File Manager_v4.0.5_apkpure.com,
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
52
Facebook.apk,
Firefox Browser fast private_v46.0.1_apkpure.com,
Gmail_v6.4.120760496.release_apkpure.com.apk,
Google Play Store_v6.5.08.D-all [0] 2792142_apkpure.com,
….
Mẫu chứa mã độc: Được down về dưới dạng zip từ trang web
http://contagiominidump.blogspot.com/
00e74c118fa3902e5c85fd8e37f3d084.apk
021d55c415ff951c8e7b1ce3f94399bb.apk
0503B2F6C1349F7E1CD7E8B6BF17AC46.apk
08061663E638B5AC1D780CAACBE9FAD8_1074178_370436__Glam
orousSmoke.apk
08CFFA8F55BE4BBED2704395876B618F.apk
0b8806b38b52bebfe39ff585639e2ea2.apk
0D28FA54F9C0D41801E8FB5A7B0433DD.apk
11A7767BFE4926458EC84385214B82C9.apk
13.apk
146c3f0f068813360b255b4687aaa0ae862a1daa8c44f51207007f6a42bdb
b09.apk
1485F498084F963801ED76013749C9FA.apk
153626fae2eaa8ae6ef4727958104ee7.apk
157985FF7FCF1CA30F5B026D1B897F1F_AndroidLoozfon.apk
16BD4B23B55F0ADE6DF16D8C6DCF502C.apk
1BF7A3639BF81E2260547FE5E04F864C.apk
1F68ADDF38F63FE821B237BC7BAABB3D_IBanking_Chase.apk
…
Bao gồm: 363 mẫu lành (benign) và 241 mẫu độc (malware).
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
53
2. Thu thập tập tin Mainfest
Thông qua Advanced Apktool, tập tin apk được dịch ngược. Qua đó
lấy được tập tin mainfest dưới dạng văn bản text.
android.permission.REAL_GET_TASKS
android.permission.ACCESS_CACHE_FILESYSTEM
android.permission.REMOTE_AUDIO_PLAYBACK
android.permission.INTENT_FILTER_VERIFICATION_AGENT
android.permission.BIND_INCALL_SERVICE
com.android.gallery3d.permission.GALLERY_PROVIDER
android.permission.WRITE_SETTINGS
android.permission.CONTROL_KEYGUARD
android.permission.CONFIGURE_WIFI_DISPLAY
android.permission.ACCESS_WIMAX_STATE
android.permission.SET_INPUT_CALIBRATION
android.permission.RECOVERY
android.permission.TEMPORARY_ENABLE_ACCESSIBILITY
android.permission.SET_PROCESS_LIMIT
android.permission.FRAME_STATS
com.android.browser.permission.PRELOAD
android.permission.BRICK
android.permission.RESTART_PACKAGES
android.permission.USE_CREDENTIALS
android.permission.BIND_KEYGUARD_APPWIDGET
android.permission.BIND_DEVICE_ADMIN
android.permission.MODIFY_AUDIO_SETTINGS
android.permission.ACCESS_CHECKIN_PROPERTIES
android.permission.KILL_UID
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
54
…
3. Xác định “quyền”
Sau khi có file Mainfest, các quyền khai báo trong mỗi ứng dụng sẽ được
tìm và đánh dấu (tích “x”) rồi lưu lại dưới dạng file csv bằng tool
ReadMainfest.exe
Hình 3.2: Xác định quyền
4. Tính điểm ứng dụng
Quyền sẽ được thay đổi dấu tích “x” bằng giá trị protection- score hay
risk- score của nó.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
55
Áp dụng công thức tính điểm.
Hình 3.3: Protection- score
Hình 3.4: Risk- score
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
56
5. Đưa vào Weka
Sau khi có được giá trị đối chiếu đầu vào, các dữ liệu được lưu lại dưới
dạng arff file để có thể đưa vào Weka đánh giá.
Weka sẽ đánh giá và cung cấp ngưỡng đánh giá.
1) Ngưỡng và quy tắc đánh giá
Thuật toán cây quyết định và thuật toán hồi quy logictics sẽ được áp
dụng ngay khi dữ liệu được nhập vào Weka – một công cụ học máy phổ biến
hiện giờ. Ở đầu ra, ta sẽ thu được kết quả là một ngưỡng đánh giá với giá trị
của ngưỡng phụ thuộc vào risk- score và protection- score của ứng dụng. (với
risk- score và protection- score được tổng từ cả hai loại mẫu lành và ác).
Hình 3.5: Ngưỡng đánh giá
2) Đánh giá hiệu suất, hiệu quả
Để có được cái nhìn chính xác nhất về ý tưởng phát hiện mẫu độc dựa
trên học máy này, chúng tôi áp dụng các công thức tính tỷ lệ sai số sau:
True Positive Rate (TPR): Tỷ lệ xác nhận chính xác mẫu ác tính.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
57
TPR =
False Positive Rate (FPR): Tỷ lệ xác nhận sai mẫu ác tính
FPR =
True Negative Rate (TNR): Tỷ lệ xác nhận chính xác mẫu lành tính
TNR =
False Negative Rate (FNR): Tỷ lệ xác nhận sai mẫu lành tính
FNR =
Overall Accuracy (ACC): Tỷ lệ xác nhận chính xác trên tổng số mẫu
ACC =
Trong đó:
TP (True Positive): Số mẫu ác tính được phát hiện chính xác
FP (False Positive): Sỗ mẫu ác tính bị phát hiện sai
TN (True Negative): Số mẫu lành tính được phát hiện chính xác
FN (False Negative): Số mẫu lành tính bị phát hiện sai
3.2 Kết quả thực nghiệm
3.2.1 Kết quả
Bảng 3.4: Kết quả của phương pháp
TPR (%) FPR (%) TNR (%) FNR (%) ACC (%)
63 3.3 96.7 36.9 83.2 J48
66 10.1 89.8 34 80.2 Logictics
47.1 64.1 74.6 52.8 68.8 Ryo Sato
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
58
Tiến hành quan sát thực nghiệm phương pháp trên bộ mẫu đã chọn.
Bảng 4 chỉ ra các kết quả chi tiết, hay phần trăm chính xác trên mọi mặt của
các mẫu đối chiếu. Có thể thấy, kết quả tổng chính xác của phương pháp áp
dụng thuật toán J48 này đạt được lên tới 83.2%. Ngoài ra, để có một đánh giá
khách quan, thực hiện so sánh phương pháp áp dụng thuật toán J48 với
phương pháp của tác giả Ryo Sato và phương pháp áp dụng thuật toán
logictics, phương pháp của tác giả Ryo Sato là một phương pháp có cơ chế
tương tự khi cũng áp dụng phân tích tĩnh và quan tâm tới quyền ứng dụng.
Hình 3.2 cho biết tỷ lệ chênh lệch giữa ba phương pháp.
Hình 3.6: Kết quả so sánh với phương pháp Ryo Sato, logictics
Dựa vào kết quả trên, dễ dàng nhận thấy phương pháp đạt hiệu suất tổng
quát cao hơn lần lượt là 14.4% và 3%. Như vậy, có thể kết luận, phương pháp
đã có được những cải tiến thành công về nhiều mặt.
3.2.2 Đánh giá, tranh luận
Về cơ bản, ý tưởng cũng như phương pháp đã thành công khi được áp
dụng vào thực nghiệm. Mặt khác, 83.2% vẫn chưa phải là một kết quả hoàn
hảo. Một số mẫu lành tính vẫn bị phân tích là mẫu mã độc và ngược lại một
số phần đáng ngờ lại được bỏ qua. Tuy nhiên, khi kiểm tra lại những ứng
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
59
dụng có chứa mã độc bị để lọt lại thường là adware. Mà ở đây, adware là
những chương trình chỉ gây phiền phức cho người dùng với lý do phát quá
nhiều quảng cáo chứ không trực tiếp gây nguy hiểm. Ở chiều ngược lại,
những ứng dụng lành tính bị xét là chứa mã độc thường là những chương
trình can thiệp vào hoạt động của hệ thống và chúng cũng yêu cầu rất nhiều
quyền điều khoản trong nó, ví dụ như Ccleaner. Như từng đề cập, phương
pháp của chúng tôi không đơn thuần là phát hiện mã độc mà còn là thông báo
cho người dùng về mức độ gây hại của mỗi chương trình. Chính vì vậy, một
vài ứng dụng an toàn phổ biến nhưng vẫn cần được xét vào phạm vi nghi ngờ.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
60
KẾT LUẬN
Phương pháp phát hiện mã độc dựa trên việc phân tích chuyên sâu tất
cả các quyền điều khoản trong ứng dụng Android. Một số ưu điểm qua thực
nghiệm đã được chứng minh như: Ý tưởng thực hiện đơn giản nhưng tối ưu,
kỹ thuật học máy hỗ trợ phát hiện mọi loại mã độc kể cả những mã độc mới
nhất… Có thể nói, ý tưởng đánh giá chương trình dựa trên “quyền” là một ý
tưởng lớn. Ngoài việc có thể tối giản chi phí tài nguyên phục vụ nghiên cứu,
phương pháp cũng đem tới cái nhìn trực diện cho người dùng về mức độ nguy
hại của từng ứng dụng. Vì vậy, đây là một ý tưởng cần được duy trì và tiếp
tục nâng cấp trong công việc phục vụ nghiên cứu bảo mật Android.
Trong tương lai gần, công việc phân tích cần phải được cải thiện hơn
nữa. Bộ mẫu đối chiếu cần phải được mở rộng hơn nữa, không chỉ nhằm tăng
phạm vi học máy cho phương pháp mà còn giúp có được những kết quả mới
chính xác hơn. Ngoài ra, cần lưu ý tìm ra cũng như kết hợp với những thuật
toán học máy nhằm tối ưu hóa cho giải pháp cây quyết định J48. Cuối cùng,
không nên chỉ dừng lại với các nghiên cứu cơ chế phân tích tĩnh, chúng tôi
hướng tới phương pháp tổng phân tích có cả hai cơ chế tĩnh và động. Qua đó,
mang tới một phương pháp đa dạng và hoàn hảo hơn cả.
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
61
TÀI LIỆU THAM KHẢO
[1]Học máy.https://machinelearningcoban.com/2017/08/31/evaluation/
[2] N.Bhargava, G.Sharma, R.Bhargava, M.Mathuria, “ Decision Tree Analysis on
J48 Algorithm for Data Mining”, Volume 3, June 2013, pp. 1114-1116
[3] Weka. http://www.cs.waikato.ac.nz/ml/weka/
[4] Thomas Bl”asing, Leonid Batyuk, Aubrey-Derrick Schmidt,Seyit Ahmet
Camtepe, and Sahin Albayrak, “An Android Application Sandbox System for Suspicious Software Detection”. In Proceedings of the 5th International
Conference on Malicious and Unwanted Software (MALWARE), Oct. 2010.
[5] William Enck, Peter Gilbert and Byung-Gon Chun, “TaintDroid: An
Information-Flow Tracking System for Real-time PrivacyMonitoring on Smartphones”, 9th USENIX Symposium on Operating Systems Design and
Implementation.
[6] Wu D., Mao C., Wei T., Lee H., Wu K. “DroidMat: Android Malware
Detection through Manifest and API Calls Tracing. Seventh Asia Joint
Conference on Information Security”,2012, 8, 62-69.
[7] Ryo Sato, Daiki Chiba and Shigeki Goto, “Detecting Android Malware by
Analyzing Manifest Files”, 2013
[8] contagio mobile. http://contagiominidump.blogspot.jp/
[9] VirusTotal. https://www.virustotal.com/ja/
[10] GooglePlay. https://play.google.com/store
[11]Android,
http://developer.android.com/guide/topics/manifest/permission-element.html
[12] Androidforums,” Android permissions explained, security tips, and
avoiding malware”, Aug 2015.
http://androidforums.com/threads/android-permissions-explained-security-
tips-and-avoidingmalware.36936/
Số hóa bởi Trung tâm Học liệu và Công nghệ thông tin – ĐHTN http://lrc.tnu.edu.vn
62
[13] Pham Thang Giang, Pham Minh Vi, Nguyen Viet Duc, Permission
Analysis for Android Malware Detection, Nov 2015.