ĐẠ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ẻ trong tập

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.

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