1. Trang chủ
  2. » Luận Văn - Báo Cáo

Xây dựng hệ thống phát hiện mã độc trên di động

73 28 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 73
Dung lượng 1,79 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

Ứng dụng phát hiện mã độc sử dụng học máy SVM được xây dựng dựa trên các kiến thức tìm hiểu về học máy SVM kết hợp với kỹ thuật phân tích tĩnh các tệp tin APK.. 5 DANH MỤC THUẬT NGỮ, TỪ

Trang 1

NGUYỄN VĂN LỰC

XÂY DỰNG HỆ THỐNG PHÁT HIỆN MÃ ĐỘC TRÊN DI ĐỘNG

Chuyên ngành : Kỹ Thuật Máy Tính

LUẬN VĂN THẠC SĨ KỸ THUẬT

KỸ THUẬT MÁY TÍNH

NGƯỜI HƯỚNG DẪN KHOA HỌC :

PGS TS Nguyễn Linh Giang

Hà Nội – Năm 2017

Trang 2

1

MỤC LỤC

LỜI CẢM ƠN 3

LỜI CAM ĐOAN 4

DANH MỤC THUẬT NGỮ, TỪ VIẾT TẮT 5

DANH MỤC CÁC BẢNG SỬ DỤNG 6

DANH MỤC CÁC HÌNH VẼ SỬ DỤNG 7

MỞ ĐẦU 8

CHƯƠNG I TỔNG QUAN MÃ ĐỘC TRÊN ANDROID 12

1.1 Kiến trúc hệ điều hành Android 12

1.1.1 Sơ lược lịch sử hệ điều hành Android 12

1.1.2 Các thành phần trong hệ điều hành Android 14

1.2 Ứng dụng APK trên Android 19

1.2.1 Cấu trúc tệp tin APK 19

1.2.2 Quản lý truy cập và an ninh trên Android 27

1.3 Mã độc trên hệ điều hành Android 28

1.3.1 Các loại mã độc trên Android 28

1.3.2 Các kỹ thuật phát hiện mã độc trên Android 29

CHƯƠNG II ỨNG DỤNG SVM VÀO PHÁT HIỆN MÃ ĐỘC ANDROID 32

2.1 Tìm hiểu về học máy véc tơ hỗ trợ SVM 32

2.1.1 Bài toán phân loại hai lớp SVM 32

2.1.2 Quá trình phân loại sử dụng SVM 36

2.2 Phát hiện mã độc Android sử dụng SVM 37

2.2.1 Đặc trưng và trích chọn đặc trưng 37

2.2.2 Xây dựng véc tơ đặc trưng 40

CHƯƠNG III XÂY DỰNG ỨNG DỤNG PHÁT HIỆN MÃ ĐỘC TRÊN ANDROID 43

3.1 Mô hình ứng dụng phân loại APK 43

3.2 Phân tích và thiết kế 44

3.2.1 Phân tích và thiết kế cấu trúc lớp dữ liệu 45

3.2.2 Phân tích và thiết kế chức năng 47

3.3 Xây dựng ứng dụng phát hiện mã độc DroidGuard 55

3.3.1 Môi trường và công cụ phát triển 55

Trang 3

2

3.3.2 Các giao diện màn hình DroidGuard 56

3.4 Cài đặt và thử nghiệm 57

3.4.1 Cài đặt và chuẩn bị dữ liệu 57

3.4.2 Các kịch bản thử nghiệm 60

3.5 Đánh giá kết quả 62

3.5.1 Ứng dụng phân loại apkClassifer 62

3.5.2 Ứng dụng DroidGuard 66

KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 67

TÀI LIỆU THAM KHẢO 69

PHỤ LỤC 71

1 Mô hình phân loại tuyến tính (c = 0.03125) 71

2 Mô hình phân loại RBF (g =0.03125 ,c =8) 71

3 Mô hình phân loại Polynomial (g= 0.5, c=32, d=3) 72

Trang 4

3

LỜI CẢM ƠN

Để hoàn thành luận văn, tôi xin gửi lời cảm ơn tới PGS.TS Nguyễn Linh Giang, trưởng bộ môn Truyền thông và Mạng máy tính, Viện CNTT & TT, Trường Đại học Bách Khoa Hà Nội Thầy Nguyễn Linh Giang đã giúp đỡ, động viên và chỉ ra những kiến thức khoa học tôi còn thiếu sót, cũng như đã góp ý về nội dung của luận văn Tôi cũng xin cảm ơn tới toàn thể giảng viên bộ môn Truyền thông và Mạng máy cùng Viện CNTT & TT đã tận tình giảng dạy, truyền đạt những kiến thức quý báu trong quá trình học tập tại lớp cao học Truyền thông và Mạng máy tính 2014A Những kiến thức này đã giúp tôi hoàn thành tốt luận văn

Cuối cùng, tôi muốn cảm ơn gia đình, người thân và bạn bè đã động viên giúp đỡ tôi trong quá trình học tập và hoàn thành luận văn

Hà Nội, Ngày 22 tháng 05 năm 2017

Tác giả

Nguyễn Văn Lực

Trang 5

4

LỜI CAM ĐOAN

Đề tài luận văn “Xây dựng hệ thống phát hiện mã độc trên di động” được thực

hiện dưới sự hướng dẫn của PGS TS Nguyễn Linh Giang, nghiên cứu về giải pháp phát hiện mã độc mới: áp dụng học máy véc tơ SVM vào việc phát hiện mã độc trên các thiết bị di động chạy hệ điều hành Android Ứng dụng phát hiện mã độc sử dụng học máy SVM được xây dựng dựa trên các kiến thức tìm hiểu về học máy SVM kết hợp với kỹ thuật phân tích tĩnh các tệp tin APK Ứng dụng được thử nghiệm và đánh giá kết quả đạt được khả quan, hứa hẹn áp dụng vào các phần mềm, hệ thống phát hiện

mã độc trên Android nói riêng và các hệ thống nói chung

Tôi xin cam đoan đây là công trình nghiên cứu, phát triển của bản thân dựa trên các kiến thức về mã độc, hệ điều hành Android, và học máy véc tơ SVM cũng như các công cụ, thư viện mã nguồn mở hợp pháp, các tài liệu tham khảo và nội dung trích dẫn được ghi rõ nguồn gốc rõ ràng, không sao chép toàn văn nội dung luận văn của bất kỳ

cá nhân, tổ chức nào khác

Hà Nội, Ngày 22 tháng 05 năm 2017

Tác giả

Nguyễn Văn Lực

Trang 6

5

DANH MỤC THUẬT NGỮ, TỪ VIẾT TẮT

SSL/TSL Transport Layer Security/Secure Sockets

Layer (SSL)

Android Runtime Một thành phần trong kiến trúc Android

Activity Một khái niệm chỉ các tác vụ trong

Android Bytecode Một loại mã lệnh được biên dịch và chạy

trong máy ảo Java

AndroidManifest Tệp tin quản lý quyền truy cập cho ứng

dụng Android

Permission Quyền truy cập trong hệ điều hành Android

Polynomial Hàm nhân đa thức trong phân loại SVM

Trang 7

6

DANH MỤC CÁC BẢNG SỬ DỤNG

Bảng I-1 Phân bố các thiết bị theo phiên bản Android26 14

Bảng I-2 Minh họa kiểu lưu trữ LEB128 21

Bảng II-1 Các permission có mức độ nguy hiểm 39

Bảng III-1 Mô tả ca sử dụng Training 48

Bảng III-2 Mô tả ca sử dụng Scanning 49

Bảng III-3 Mô tả ca sử dụng RuntimeDetection 50

Bảng III-4 Mô tả ca sử dụng File Scanning 50

Bảng III-5 Mô tả ca sử dụng Classifying 51

Bảng III-6 Mô tả ca sử dụng Reporting 51

Bảng III-7 Các tham số xây dựng mô hình phân loại 58

Bảng III-8 Kết quả thử nghiệm apkClassifier với mô hình tuyến tính 63

Bảng III-9 Kết quả thử nghiệm apkClassifier với nhân RBF 64

Bảng III-10 Kết quả thử nghiệm apkClassifier với nhân Polynomial 66

Trang 8

7

DANH MỤC CÁC HÌNH VẼ SỬ DỤNG

Hình I-1 Liên minh các thiết bị cầm tay mở OHA25 13

Hình I-2 Kiến trúc hệ điều hành Android18 15

Hình I-3 Chu trình hoạt động của một ứng dụng Android 17

Hình I-4 Quá trình xây dựng một tệp tin APK 20

Hình I-5 Cấu trúc tệp tin Dex và Header 21

Hình I-6 Cấu trúc của string_ids 23

Hình I-7 Cấu trúc của class_ids 24

Hình I-8 Cấu trúc của class_data_item 25

Hình I-9 Thẻ <uses-permission> trong tệp tin AndroidMainifest 26

Hình II-1 Bài toán phân loại tuyến tính hai lớp SVM 33

Hình II-2 Mặt siêu phẳng phân tách âm và dương 34

Hình II-3 Sơ đồ khối phân loại sử dụng SVM 36

Hình II-4 Phân loại mã độc APK sử dụng SVM 42

Hình II-5 Minh họa quá trình phân loại SVM với véc tơ đặc trưng 42

Hình III-1 Mô hình ứng dụng phân loại APK 43

Hình III-2 Thiết kế các lớp đối tượng 45

Hình III-3 Biểu đồ ca sử dụng 48

Hình III-4 Quá trình training 52

Hình III-5 Quá trình classifying 53

Hình III-6 Quá trình Scanning trên DroidGuard 54

Hình III-7 Màn hình MainActivity 56

Hình III-8 Màn hình ScanActivity 56

Hình III-9 Màn hình ReportAcitivity 57

Hình III-10 Tối ưu giá trị c cho mô hình tuyến tính 63

Hình III-11 Tối ưu giá trị c và g cho mô hình RBF 64

Hình III-12 Tối ưu giá trị c và g cho mô hình Polynomial 65

Trang 9

8

MỞ ĐẦU

Hiện nay, chúng ta đang tiến vào cuộc cách mạng công nghệ lần thứ 4.0 của thế kỷ

21 Cuộc cách mạng này đang diễn ra với các phát minh về smartphone, IoT (internet

of things), AI (trí tuệ nhân tạo), Smartphone là một phát minh vĩ đại của con người, ngày nay ta có thể bắt gặp smartphone ở mọi nơi, mọi ngõ ngách cuộc sống Smartphone được phát triển như hiện nay, Steve Jobs đóng góp một vai trò rất quan trọng, ông được coi là người đã thay đổi cả ngành công nghiệp sản xuất điện thoại với Iphone và iOS Nhưng Steve Jobs không phải là người làm cho smartphone trở nên phổ biến và trở thành một kỷ nguyên như hiện nay, Google và Android mới là nhân tố tạo nên kỷ nguyên công nghệ di động Google đã phát triển và duy trì Android trở thành một hệ điều hành di động phổ biến nhất hiện nay

Theo thống kê của Wikipedia vào năm 201518, hệ điều hành Android chiếm 80.52%

số thiết bị thông minh và 59.16% số thiết bị di động trên toàn cầu, hiện nay con số này

đã lên tới 62.94% vào tháng 03 năm 2017 theo số liệu của Operating System Market Share19 Điều này khiến Android đang trở thành mục tiêu của rất nhiều các cuộc tấn công của giới tội phạm mạng bởi sự phổ biến, số lượng người dùng lớn, khó kiểm soát

an ninh và phân phối của các ứng dụng

Theo thống kê trong [9] bởi các công ty bảo mật, số lượng các ứng dụng độc hại đã tăng từ 120,000 lên 718,000 trong khoảng từ năm 2012 tới 2013 Đặc biệt vào năm

2012, một nhóm hacker có tên gọi Eurograbber đã tấn công và đánh cắp gần 36 triệu euro từ người dùng tại liên minh Châu Âu

Lý do chọn đề tài

Với thiết kế mở, Android cho phép người dùng phát triển và chia sẻ ứng dụng qua

hệ thống Google Play của Goolge hoặc cài đặt qua các một phân phối thứ ba, thậm chí trực tiếp vào thiết bị Điều này khiến cho nguy cơ về bảo mật trên Android có thể bị lợi dụng và trở nên khó kiểm soát Tuy rằng, Google đã có hệ thống kiểm soát và ngăn chặn nhưng thực tế chỉ ra các ứng dụng độc hại vẫn được chia sẻ và cài đặt rất nhiều qua Google Play Bởi vậy, các ứng dụng bảo mật trở nên thật sự cần thiết, trong khi các ứng dụng bảo mật trên Android hiện nay chủ yếu sử dụng các kỹ thuật phân tích

Trang 10

về các yếu tố đặc trưng và hiệu quả phát hiện Đa phần, các nghiên cứu này chỉ dừng lại ở việc thử nghiệm trên môi trường MatLab và PC

Chính vì thế, tôi quyết định thực hiện luận văn với đề tài “Xây dựng hệ thống phát

hiện mã độc trên di động”, tôi muốn mở rộng các nghiên cứu trước đó và hiện thực

hóa các nghiên cứu về áp dụng học máy vào phân tích mã độc trên di động, đồng thời xây dựng một ứng dụng di động trên Android để phát hiện các mối nguy hại đối với người dùng smartphone

Lịch sử nghiên cứu

Một số nghiên cứu nổi trội áp dụng học máy véc tơ hỗ trợ SVM vào việc phát hiện

mã độc Android như các nghiên cứu của Daniel Arp1, Naser Peiravian2, H Alain Pimentel3 đều được đăng trên các tạp chí uy tín Các nghiên cứu này chủ yếu thực hiện trên môi trường thử nghiệm MatLab để đánh giá kết quả Trong đó, chỉ Daniel Arp đã xây dựng thành công ứng dụng phát hiện mã độc di dộng Drebin, nhưng Drebin lại không được cung cấp tới người dùng

Hiện tại, trong quá trình làm việc tại công ty VSEC, tôi đã được nhận được rất nhiều yêu cầu giúp đỡ về việc phân tích các mẫu mã độc trên Android Đồng thời, xuất hiện nhu cầu xây dựng một môi trường phân tích mã độc cho phép người dùng chia sẻ, thực hiện phân tích trên nền tảng Web nhắm hướng tới sự hỗ trợ cho cộng đồng

Với các kiến thức về học máy véc tơ tôi đã tìm hiểu và được chỉ dạy, hướng dẫn bởi PGS.TS Nguyễn Linh Giang, cùng với nền tảng là các các nghiên cứu đã được xuất bản trên quốc tế Tôi quyết định thực hiện nghiên cứu về việc áp dụng học máy véc tơ cho phát hiện mã độc trên di động Đây chính là các nền tảng, cơ sở khoa học cho phép tôi thực hiện luận văn

Trang 11

10

Mục đích, đối tượng và phạm vi của nghiên cứu

- Mục đích nghiên cứu: luận văn được thực hiện với mục đích áp dụng công

nghệ học máy vào lĩnh vực phân tích và phát hiện mã độc Từ cơ sở nghiên cứu, xây dựng một ứng dụng phát hiện mã độc trên di động nhằm thử nghiệm và đánh giá hiệu quả của phương pháp, từ đó đưa ra giải pháp kết hợp với các phương pháp phát hiện mã độc truyền thống trong các phần mềm, hệ thống phát hiện mã độc cho di động

- Đối tượng nghiên cứu: phát hiện các phần mềm độc hại sử dụng học máy véc

tơ SVM đối với các tệp tin ứng dụng APK trên Android

- Phạm vi nghiên cứu: luận văn chỉ dừng lại ở việc áp dụng một phương pháp

học máy cụ thể là SVM vào phát hiện mã độc kết hợp với kỹ thuật phân tích tĩnh Đồng thời, tác giả chỉ thực hiện việc áp dụng học máy véc tơ cho bài toán phân loại hai lớp là mã độc và phần mềm sạch

Các luận điểm chính của luận văn:

Các luận điểm chính được nêu ra trong luận văn bao gồm:

 Các kiến thức tổng quan về kiến trúc hệ điều hành Android, cấu trúc và cách thức hoạt động của các ứng dụng trong hệ điều hành Android Đồng thời luận văn chỉ ra các đặc trưng, hành vi của một mã độc và các thông tin quan trọng cần nắm bắt để phát hiện và phân tích hành vi đó

 Tìm hiểu về phương pháp học máy véc tơ SVM, áp dụng phân loại SVM cho đối tượng ứng dụng Android Chỉ ra các đặc trưng cần thiết để phát hiện mã độc, và xây dựng véc tơ đặc trưng đối với tệp tin APK cho ứng dụng phát hiện mã độc

 Từ lý thuyết, tiến hành phân tích thiết kế và xây dựng một ứng dụng phát hiện mã độc APK Đồng thời thử nghiệm và đánh giá kết quả

Phương pháp nghiên cứu

Nghiên cứu được thực hiện trên một tập dữ liệu thu thập được chia sẻ từ các nguồn nghiên cứu uy tín trên Internet và các trường đại học trên thế giới Tập dữ liệu bao gồm 400 mẫu mã độc và 400 mẫu phần mềm sạch, và được chia thành bốn tập dữ liệu con phục vụ quá trình huấn luyện, thử nghiệm và đánh giá kết quả

Trang 12

11

Quá trình huấn luyện và thử nghiệm phân loại sẽ được thực hiện trên môi trường PC

để đánh giá kết quả Kết thúc quá trình thử nghiệm, quá trình huấn luyện sẽ được thực hiện lại trên toàn bộ tập dữ liệu ban đầu, đầu ra là một cơ sở dữ liệu các véc tơ đặc trưng Cơ sở dữ liệu sẽ được sử dụng cho ứng dụng di dộng được xây dựng và thử nghiệm trên môi trường mô phỏng Genymotion

Trang 13

ti vi, đầu kỹ thuật số, ô tô, …

Do công việc chính của luận văn là xây dựng một ứng dụng phân loại và phát hiện

mã độc trên nền tảng Android nên cần thiết phải có những hiểu biết cơ bản về hệ điều hành Android

1.1.1 Sơ lược lịch sử hệ điều hành Android

Android ban đầu được tạo ra và phát triển bởi Andy Rubin, Rich Miner, Nick Sears,

và Chris White trong công ty Android Inc tại Paolo Alto, California Họ cũng chính là đồng chủ tịch của Android Inc

Android Inc sau đó được mua lại bởi Google vào năm 2005 và trở thành một công

ty trực thuộc của Google Đây chính là những bước đi đầu tiên của Google nhằm tham gia vào thị trường di động Với sự đầu tư và hỗ trợ mạnh mẽ từ Google, Android được giới thiệu tới hàng loạt các nhà mạng cũng như các hãng phần cứng: SamSung, HTC, Motorola, LG, …

Android được giới thiệu là một điều hành mở, uyển chuyển và dễ dàng nâng cấp Đặc biệt, Android được hỗ trợ bởi hệ sinh thái của Google: công cụ tìm kiếm, gmail, lịch, … Dường như, Google quyết định tạo ra một hệ điều hành di động và một hệ sinh thái bao quanh Android nhằm cạnh tranh thị trường di động với Apple, một công ty cũng đang phát triển một hệ điều hành di động khác là iOS

Ngày 05/11/2007, liên minh thiết bị cầm tay mở OHA được thành lập bởi hiệp hội các công ty lớn về viễn thông, phần cứng và phần mềm trên thế giới Liên minh này được lập ra với mục đích phát triển các tiêu chuẩn mở cho di động Cùng thời gian

Trang 14

13

này, Google cũng chính thức ra mắt hệ điều hành Android đầu tiên được xây dựng trên nhân Linux 2.6 mang tên Android CupCake 1.5

Hình I-1 Liên minh các thiết bị cầm tay mở OHA 25

Ngày 23/09/2008, chiếc điện thoại chạy hệ điều hành Android đầu tiên được bán ra với tên gọi HTC Dream hay còn gọi với tên khác là T-Mobile G1

Từ năm 2008 tới nay, Android tiếp tục được phát triển và ra mắt các phiên bản cao hơn như Donut (1.6), Éclair (2.0 – 2.1), Froyo (2.2 - 2.2.3), … và phiên bản Ice Cream Sandwich (4.0 – 4.0.4) đánh dấu sự bùng nổ về di động khi mà hàng loạt các hãng điện thoại ra mắt các mẫu điện thoại chạy Android Hiện nay phiên bản Nougat (7.0 - 7.1.1)

là phiên bản cập nhật mới nhất dành cho các điện thoại Android

Mặc dù hiện này, phiên bản mới nhất là 7.1 nhưng các thiết bị chạy Android thấp hơn vẫn còn rất lớn Dưới đây là bảng thống kê thể hiện sự phân bố các phiên bản Android trên các thiết bị di động hiện nay (số liệu được lấy từ Google 06/03/2017):

Trang 15

14

Phiên bản Tên phiên bản API Tỉ lệ

2.3.3- 2.3.7

Gingerbread 10 1.0%

4.0.4

4.0.3-Ice Cream Sandwich 15 1.0%

Bảng I-1 Phân bố các thiết bị theo phiên bản Android26

1.1.2 Các thành phần trong hệ điều hành Android

Android là một hệ điều hành mở và được phát triển dựa trên nhân Linux Android được phát triển dựa trên kiến trúc ngăn xếp, mỗi ngăn xếp là một tầng và được xếp chồng lên các tầng dưới

Android bao gồm bốn tầng cơ bản, mỗi tầng cung cấp một chức năng, dịch vụ khác nhau từ việc quản lý phần cứng, các cảm biến thiết bị, bộ nhớ, chíp ở mức thấp cho tới các ứng dụng được phát triển và tương tác với người dùng ở mức cao Hình I-2 dưới đây thể hiện kiến trúc của hệ điều hành Android

Trang 16

Trong kiến trúc Android, nhân Linux cung cấp các dịch vụ dành cho hoạt động của

hệ điều hành và quản lý các thành phần phần cứng Nhân Linux cung cấp các chức năng như quản lý bộ nhớ, quản lý tiến trình, quản lý các giao thức kết nối Internet:

Trang 17

16

TCP/IP, HTTP, DNS, …Thậm chí nhân Linux cũng quản lý các trình điều khiển thiết

bị như cảm ứng, âm thanh, hình ảnh, thu phát sóng,…

b Các thư viện hỗ trợ

Tầng trên của nhân Linux là tập hợp các thư viện cung cấp các chức năng xử lý dữ liệu cho các tầng bên trên, tầng này chính là tầng giao tiếp giữa nhân Linux và các tầng khác

Các thư viện này được viết bằng ngôn ngữ C/C++ và biên dịch sang mã máy dưới dạng nhị phân cung cấp các API cho việc quản lý giao diện (Surface Manager), xử lý

đa phương tiện, kết nối cơ sở dữ liệu (SQLite), xử lý đồ họa (OpenGL-ES), xử lý phông chữ (FreeType), và hỗ trợ kết nối web, trình duyệt (WebKit) hay thậm chí là kết nối an toàn SSL/TLS,…Tầng này còn cung cấp các thư viện Android Runtime, các thư viện này hỗ trợ các ứng dụng được phát triển bằng ngôn ngữ Java Android Runtime sẽ được nói chi tiết ở phần bên dưới

c Android Runtime

Android Runtime cũng bao gồm một tập hợp các thư viện được viết bằng C/C++ và một máy ảo Dalvik cho việc phát triển và chạy các ứng dụng được viết bằng ngôn ngữ Java Các thư viện hỗ trợ việc phát triển ứng dụng Java, cung cấp các API cho việc giao tiếp với máy ảo Dalvik cũng như các API cho lập trình viên Java sử dụng

Máy ảo Dalvik

Máy ảo Dalvik là một kiến trúc và nền tảng được phát triển dựa trên máy ảo dành cho ngôn ngữ Java, nó được sử dụng như một hộp cát để chạy các chương trình viết bằng Java Do các đặc tính và môi trường khác biệt của các thiết bị di động so với môi trường máy tính mà máy ảo Dalvik đã được thiết kế lại bởi Google

Các thiết bị di động thường bị giới hạn về kích thước và năng lượng sử dụng nhưng vẫn phải đảm bảo hiệu năng là một thiết bị thông minh, trong khi bộ vi xử lý CPU có xung nhịp thấp, bộ nhớ nhỏ so với máy tính Chính vì thế mà máy ảo được Oracle phát triển dành cho Java trên máy tính là không phù hợp với các thiết bị di động do máy ảo

Trang 18

17

này tạo ra rất nhiều tiến trình cho mỗi chương trình viết bằng Java Dalvik ra đời nhằm giải quyết vấn đề này, Dalvik được thiết kế chỉ chạy một lần duy nhất trong quá trình khởi động máy Dalvik được coi như tiến trình cha của tất cả các tiến trình khác được tạo ra bởi ứng dụng Android

Android sử dụng một khái niệm có tên gọi “Zygote” nhằm chia sẻ các lệnh, bộ nhớ tài nguyên cho các ứng dụng trên hệ điều hành Android mỗi khi ứng dụng được khởi chạy Zygote chính là tiến trình được tạo ra từ Dalvik trong quá trình khởi động của thiết bị, tiến trình này sẽ khởi tạo và tải các thư viện hỗ trợ (mục b) lên bộ nhớ

Hình I-3 dưới đây thể hiện cách thức hoạt động của máy ảo Dalvik và các ứng dụng Android

Hình I-3 Chu trình hoạt động của một ứng dụng Android

Mỗi khi một ứng dụng Android được khởi chạy bởi người dùng, tiến trình Zygote sẽ khởi tạo các trạng thái, bộ nhớ, lệnh đã được tải lên bộ nhớ bởi các thư viện hỗ trợ Việc này giảm thời gian tạo tiến tình, tiết kiệm chi phí bộ nhớ do sử dụng cơ chế bộ nhớ ảo

ByteCode

Như đã trình bày trong mục máy ảo Dalvik, thì các chương trình Java sẽ được biên dịch sang một loại mã chạy trong máy ảo Mã này có tên gọi “bytecode”, và có thể

Trang 19

18

được chạy trong máy ảo Java nhưng do Dalvik đã được thiết kế lại bởi Google để đảm bảo hiệu năng cũng như tối ưu cho Android nên mã bytecode cũng được chuyển đổi cho phù hợp với Dalvik Các mã bytecode trong Dalvik có tên gọi khác là DEX bytecode được chuyển đổi từ bytecode qua công cụ Dx Tool nằm trong bộ Android SDK được phát triển bởi Google Các mã DEX bytecode này được lưu trong tệp tin có định dạng Dex do Google tự phát triển và đóng gói vào các ứng dụng Android Chi tiết

về cấu trúc tệp tin Dex và ứng dụng APK sẽ được trình bày cụ thể trong mục sau

d Application FrameWork

Tầng này có chức năng cung cấp các gói hỗ trợ các ứng dụng android, phục vụ quá trình xây dựng ứng dụng Android, cũng như cung cấp các dịch vụ quản lý, hỗ trợ tầng ứng dụng

Các dịch vụ này tạo ra các API cho lập trình viên Android quản lý tài nguyên bằng ngôn ngữ Java Một số dịch vụ có thể kể ra như quản lý cuộc gọi, tin nhắn hay giám sát tài nguyên, năng lượng của hệ thống Dưới đây là một số dịch vụ chính trong tầng Application FrameWork:

Activity Manager

Đây là một dịch vụ quản lý các hoạt động của ứng dụng Mỗi ứng dụng khi được khởi chạy đều có một “activity” ban đầu gọi là MainActivity, và các activity con được gọi từ MainActivity ban đầu này Một ví dụ cho activity có thể là hành động nhắn tin của người dùng, một cuộc gọi thoại, hay một thao tác rà quét các phần mềm độc hại trong hệ thống, …

Dịch vụ này cũng quản lý các ứng dụng Android đang bị treo, hay các chương trình đang chiếm dụng nhiều bộ nhớ

Trang 20

19

Telephony Manager

Telephony Manager quản lý truy cập các dịch vụ cuộc gọi trong Adnroid Dịch vụ này quản lý các thông tin như định danh điện thoại (IMEI), chế độ sóng nhà mạng, chuyển vùng giữa các trạm phát sóng

Các ứng dụng tạo ra các activity từ thao thác của người dùng và chuyển các yêu cầu xuống các tầng bên dưới Chi tiết về các ứng dụng APK trên Android sẽ được trình bày ở mục 1.2 dưới đây

1.2 Ứng dụng APK trên Android

Trong phần này tôi sẽ trình bày chi tiết về ứng dụng trên Android, các ứng dụng này

có định dạng với tên gọi APK

1.2.1 Cấu trúc tệp tin APK

Như tôi đã trình bày ở mục 1.1.2 về máy ảo Dalvik và DEX bytecode, các chương trình nguồn viết bằng Java sau khi được biên dịch thành các mã bytecode và chuyển đổi sang mã Dex bytecode để lưu trong tệp tin có định dạng Dex

Tệp tin có định dạng Dex này sẽ được đóng gói cùng với các tệp tin dữ liệu khác để tạo thành tệp tin APK Dưới đây là hình vẽ minh họa quá trình xây dựng tệp tin APK

từ các chương trình nguồn viết bằng Java

Trang 21

20

Hình I-4 Quá trình xây dựng một tệp tin APK

Do tệp tin APK được xây dựng bởi các lập trình viên Android nên thành phần tệp tin APK là khác nhau do dữ liệu khác nhau Tôi chỉ tập trung trình bày chi tiết các thành phần và cấu trúc các tệp tin quan trọng có ảnh hưởng trực tiếp tới quá trình phân loại và phát hiện mã độc sử dụng SVM

Cấu trúc tệp tin Dex

Trong máy ảo Java, các lớp đối tượng sẽ được biên dịch thành từng tệp tin chứa mã bytecode riêng biệt, còn đối với Android thì tất cả các lớp đối tượng sẽ được biên dịch

và chỉ nằm một tệp tin Dex có tên gọi là class.dex

Dex sử dụng một kiểu lưu trữ little endian có tên gọi LEB128 để lưu các giá trị có

độ dài 32 bit trong tệp tin Ví dụ giá trị 624485 và - 624485 trong hệ thập phân sẽ được lưu trữ trong tệp tin Dex như sau:

Trang 22

21

624485 98765 1001 1000 0111 0110 0101 E58E26

-624485 FFF6789B 0110 0111 1000 1001 1011 9BF159

Bảng I-2 Minh họa kiểu lưu trữ LEB128

Cấu trúc của tệp tin Dex được lưu trữ theo các liên kết và bao gồm các phần cơ bản được thể hiện trong hình I-5 dưới đây:

Hình I-5 Cấu trúc tệp tin Dex và Header

Phần header: header của tệp tin Dex bao gồm các thông tin về sơ đồ vật lý và logic

của tệp tin Header được lưu trữ trong tệp tin Dex với kích thước là 128 byte Các thông tin quan trọng trong phần header bao gồm:

 magic là 8 byte định nghĩa nhận dạng của tệp tin dex so với các tệp tin khác

và phiên bản của tệp tin Dex Một ví dụ “dex\n035” chỉ ra tệp tin có định dạng Dex và phiên bản là 035 Hiện tại với Android 7.0 thì phiên bản là 037 dex

Trang 23

22

 string_ids_off và string_ids_size chỉ ra vị trí cũng như kích thước của phần

string_ids trong tệp tin Hai giá trị này cho phép xác định tất cả các chuỗi ký

tự được sử dụng trong tệp tin Dex hay chính là các chuỗi ký tự được sử dụng trong các lớp đối tượng: tên lớp đối tượng, tên biến,…

 proto_ids_off và proto_ids_size chỉ ra vị trí và kích thước của phần

proto_ids trong tệp tin Dex

 method_ids_off và method_ids_size chỉ ra vị trí lưu trữ phần method_ids

trong tệp tin Dex Thông tin này rất quan trọng vì nó cho phép ta có thể tìm

ra vị trí lưu trữ các phương thức trong một lớp đối tượng: tên phương thức, tên class tương ứng,…

 class_ids_off và class_ids_size, phần này tương tự cũng chỉ ra vị trí và kích thước dùng để lưu trữ phần class_ids Phần này cho phép ta xác định các

thông tin cần thiết về các lớp đối tượng trong tệp tin Dex, class_ids cùng với method_ids chính là hai phần chính liên quan tới việc trích xuất đặc trưng sẽ được trình bày ở chương sau

 data_ids_off và data_ids_size xác định vị trí và kích thước của phần data

chứa dữ liệu của tệp tin Dex Đây chính là nơi chứa toàn bộ dữ liệu của tệp tin Các thành phần khác ngoài header gần như đều nằm trong data

 map_offset là được dùng để xác định nhanh các thành phần trong tệp tin

Dex

 Ngoài ra trong phần header cũng chỉ ra các thông tin là vị trí và kích thước

của các phần khác như type_ids, field_ids, kích thước của tệp tin dex, mã checksum hay signature của tệp tin

Trang 24

23

Hình I-6 Cấu trúc của string_ids Mỗi phần tử trong danh sách có tên gọi string_data_off có kích thước 4 byte chỉ ra một vị trí của string_item_string_data trong tệp tin dex

Cấu trúc string_item_string_data bao gồm hai phần:

ULEB128 utf16_size;

char data[utf16_size];

};

Trong đó,

 utf16_size (kích thước 1 byte) là độ dài của chuỗi ký tự được lưu trong tệp

tin theo kiểu LEB128

 data là nội dung của chuỗi ký tự

Phần class_ids:

Nội dung của phần này chứa tất cả các lớp đối tượng được định nghĩa hay được sử

dụng trong ứng dụng Hình I-7 thể hiện cấu trúc của class_ids:

Trang 25

 class_idx chỉ ra định danh kiểu của lớp

 access_flags chỉ ra các quyền truy cập vào lớp đối tượng được định nghĩa

Một số quyền quan trọng như: ACC_PUBLIC, _PRIVATE, _PROTECTED, _STATIC

 source_file_idx: chính là vị trí của chuỗi ký tự mà định nghĩa tên tệp chương

trình nguồn của lớp đối tượng

 class_data_off: đây là trường quan trọng nhất vì nó chỉ ra vị trí của cấu trúc

class_data_item chứa nội dung chính của các lớp đối tượng: phương thức,

số biến và định nghĩa của từng biến,…

Cấu trúc class_data_item:

Cấu trúc class_data_item cho phép ta chỉ ra được tất các thông tin về các lớp đối tượng trong tệp tin Dex

Trang 26

25

Cấu trúc này sẽ chứa định nghĩa về chính lớp đối tượng được định danh bởi

class_def_item_class Hình I-8 thể hiện cấu trúc class_data_item:

Hình I-8 Cấu trúc của class_data_item Như hình I-8, qua cấu trúc của class_data_item ta có được vị trí của từng phương

thức trong lớp đối tượng và từ đó xác định được nội dung chính của các bytecode của các phương thức trong lớp Đây chính là kết quả quan trọng giúp cho ta xác định được các lời gọi hàm hay luồng thực thi của ứng dụng qua các mã bytecode của các phương thức trong từng lớp của tệp tin dex

Phần method_ids:

Nội dung của phần method_ids chỉ ra các định nghĩa cho từng phương thức bao

gồm: tên, kiểu trả về, và lớp đối tượng mà phương thức này thuộc Phần này không chỉ

ra vị trí và bytecode của phương thức

Trang 27

26

b Tệp tin AndroidManifest

AndroidManifest.xml là một tệp tin được đưa vào trong quá trình phát triển hệ điều hành Android Mọi ứng dụng APK của hệ điều hành Android đều phải định nghĩa một tệp tin AndroidManifest.xml, nó có quan hệ trực tiếp với mô hình quản lý truy cập và

an ninh trong hệ điều hành Android

Tệp tin AndroidManifest có định dạng xml, định nghĩa các thông tin cơ bản về hoạt động của ứng dụng bao gồm tên các gói ứng dụng, các mô đun, thành phần của ứng dụng và các activity, hay quyền truy cập của ứng dụng,…Do AndroidManifest có định dạng xml nên cấu trúc của tệp tin được định nghĩa theo các thẻ

AndroidManifest có chức năng quan trọng trong việc quản lý quyền truy cập, an toàn thông tin mà một ứng dụng được phép Một trường quan trọng là quyền truy cập

được quản lý bởi thẻ <uses-permission> Trong [14], tác giả có chỉ ra rằng mỗi khi

một ứng dụng được cài đặt vào thiết bị Android các trình quản lý ứng dụng của Android sẽ cấp các quyền truy cập được định nghĩa trong AndroidManifest hoặc đưa

ra một thông báo để cảnh báo người sử dụng về quyền truy cập của ứng dụng Dưới

đây là hình I-9, mô tả về thẻ <uses-permission> của một tệp tin AndroidManifest.xml:

Hình I-9 Thẻ <uses-permission> trong tệp tin AndroidMainifest

Như vậy, với các thông tin trọng thẻ <use-permission> ta có thể chỉ ra cơ bản các

quyền, các hành vi của ứng dụng Điều này cũng rất quan trọng đối với quá trình phát hiện mã độc Đặt biệt, các quyền truy cập này có thể được kết hợp với các thông tin trong tệp tin dex để làm các đặc trưng cho quá trình phát hiện mã độc bằng học máy véc tơ hỗ trợ mà tôi sẽ trình bày ở phần sau

Trang 28

27

1.2.2 Quản lý truy cập và an ninh trên Android

Do Android được xây dựng dựa trên nhân hệ điều hành Linux, nên Android cũng thừa kế mô hình quản lý an toàn và quyền truy cập của Linux Trong hệ điều hành Android có hai mức hoạt động dành cho các tiến trình là ring 3 và ring 0 tương ứng với quyền người dùng và quyền system

Ngoài các ứng dụng của Google, và các nhà phát hành thiết bị thì các ứng dụng của các lập trình viên đều chạy ở ring 3 có quyền hạn chế và ứng với quyền người dùng của ứng dụng đó Đặc biệt, các ứng dụng Android đều chạy trong vùng nhớ được cấp phát bởi tiến trình Zygote đã được nhắc đến trong phần Android Runtime (mục 1.1.2) Mỗi ứng dụng sẽ hoạt động trong một vùng nhớ riêng được chia sẻ chung với Zygote,

có quyền truy cập riêng không thể sử dụng sang vùng nhớ của ứng dụng khác

Ngoài ra, Android còn cung cấp mô hình quản lý truy cập ở ring 3 cho các ứng dụng dựa trên các permission trong tệp tin AndroidManifest

Như tôi đã trình bày ở phần tệp tin AndroidManifest (mục 1.2.1), Android quản lý các quyền truy cập của ứng dụng thông qua các giá trị permission được khai báo trong tệp tin AndroidManifest Thông thường, các permission của ứng dụng trên Android được Google chia làm bốn loại:

 Normal: đây là mức dành cho các permission có mức độ nguy hiểm thấp,

cho phép ứng dụng được phép truy cập vào các tài nguyên ít quan trọng của

hệ thống Các permission thuộc mức này sẽ được cấp phép mặc định mà không cần phải xin phép người sử dụng

 Dangerous: mức này chỉ ra các permission được đánh giá là nguy hiểm, do

các permission này cho phép ứng dụng truy cập vào các tài nguyên nhạy cảm như danh bạ, hình ảnh, camera, hay tin nhắn Để có thể sử dụng các permission này thì ứng dụng phải xin phép và được sự cho phép của người

sử dụng khi được cài dặt vào hệ điều hành Android

 Signature: Đây là mức truy cập được sử dụng cho các chương trình của hệ

thống Các permission này được cấp phép mặc định cho các ứng dụng mà

Trang 29

28

không cần có sự cho phép của người dùng Các ứng dụng có permission này

là các ứng dụng được nhà sản xuất thiết bị đưa vào

 Signature/system:Tương tự mức ở trên, nhưng các permission thuộc nhóm

này chỉ dành cho các ứng dụng nằm trong chính hệ điều hành Android như các chương trình quản lý định vị, các thư viện quản lý đa phương tiện, font chữ, hay kết nối an toàn SSL/TLS

Như vậy, trong phạm vi của luận văn tôi chỉ xem xét đến hai mức permission là normal và dangerous, đây là các permission có thể được xin cấp pháp bởi một ứng dụng Các mức permission này được sử dụng làm các thông tin, đặc trưng để đánh giá một ứng dụng là an toàn hay nguy hại Phần này, tôi sẽ trình bày cụ thể trong mục áp dụng học máy véc tơ vào phân loại mã độc ở chương II

1.3 Mã độc trên hệ điều hành Android

Để hiểu rõ hơn về cách thức phân loại và phát hiện mã độc, tôi xin trình bày sơ qua

về mã độc Android cũng như một số loại Song song với đó là một số kỹ thuật phân tích được sử dụng để phát hiện mã độc

Các mã độc trên Android có nhiều loại nhưng thường có chức năng đơn giản, thường nhắm tới hành vi đánh cắp các thông tin cá nhân của người dùng Gần đây, một

số mẫu mã độc xuất hiện với chức năng như một loại ransomware trên môi trường PC

Để có thể phát hiện các mã độc trên Android, tôi sẽ giới thiệu sơ lược về một số loại

mã độc và hành vi của chúng trong mục này

1.3.1 Các loại mã độc trên Android

Dưới đây là một số loại mã độc phổ biến trên Android, các mã độc này chủ yếu có nhiệm vụ đánh cắp thông tin hoặc điều khiển thiết bị của người dùng

a SMS Trojan

Mã độc này được cài đặt và xin cấp các quyền về tin nhắn, danh bạ, Chức năng của các mẫu mã độc này là tự động gửi các tin nhắn dịch vụ có trả phí, hay các tin nhắn tự mua các dịch vụ có phí trong các ứng dụng hay dịch vụ giá trị gia tăng Một ví

dụ cho hành vi này là nhắn tin nhắn đăng ký dịch vụ game Người sử dụng thiết bị sẽ

Trang 30

xa

c Ransomware

Đây là một dạng mã độc mới, mã độc này chỉ cần xin cấp quyền đọc, ghi dữ liệu trong thẻ nhớ và truy cập Internet là có thể thực hiện hành vi độc hại Ransomware mới nổi lên là một trong các vấn đề nhức nhối hiện nay về an toàn thông tin Khi được lây nhiễm, Ransomware sẽ thực hiện mã hóa dữ liệu trên thiết bị theo mã hóa bất đối xứng, dữ liệu được mã hóa gần như không thể khôi phục và chỉ có thể khôi phục nếu nạn nhân chấp nhận trả tiền để có được khóa giải mã

1.3.2 Các kỹ thuật phát hiện mã độc trên Android

Phân tích mã độc không chỉ giúp cho quá trình điều tra, tìm ra kẻ tấn công mà còn cho phép giải quyết các sự cố và được sử dụng vào quá trình phát hiện mã độc

Các hiểu biết về mã độc, hành vi của mã độc từ quá trình phân tích sẽ là những dữ liệu quan trọng cho quá trình phòng ngừa, phát hiện mã độc trong các thiết bị khác hay các thiết bị chưa bị lây nhiễm Với mã độc Android, dù có những đặc điểm khác biệt

so với mã độc truyền thống trên PC nhưng ta vẫn có thể sử dụng hai phương pháp cơ bản dưới đây để phân tích mã độc

 Kỹ thuật phân tích tĩnh

 Kỹ thuật phân tích động

Trong phạm vi của luận văn, tôi sẽ sử dụng phương pháp phân tích tĩnh để xây ứng dụng phát hiện mã độc trên Android do cân nhắc các ưu và nhược điểm của từng phương pháp dưới đây:

Trang 31

30

a Kỹ thuật phân tích tĩnh

Kỹ thuật phân tích tĩnh là kỹ thuật phân tích mã độc bằng cách phân tích tĩnh các tệp tin mã độc, hay các dữ liệu từ mã độc mà không cần phải chạy ứng dụng mã độc Với những hiểu biết về cấu trúc của tệp tin APK, và cách thức hoạt động của các ứng dụng trong Android cũng như mô hình quản lý truy cập và an ninh trên Android thì phương pháp này tỏ ra rất hữu hiệu với việc phát hiện mã độc

Các thông tin về quyền truy cập, hay những lời gọi hàm, luồng thực thi của ứng dụng trong tệp tin Dex sẽ cho phép ta thực hiện các phân tích để chỉ ra các tính chất độc hại của ứng dụng Từ đó có kết luận về loại mã độc và loại bỏ mã độc ra khỏi hệ thống hoặc ngăn chặn quá trình cài đặt mã độc vào hệ thống

Ưu điểm: kỹ thuật phân tích tĩnh thực hiện mà không đòi hỏi nhiều tài nguyên của

hệ thống, có thể phát hiện trước khi mã độc được cài vào hệ thống

Nhược điểm: phân tích tĩnh cũng có những nhược điểm là độc chính xác không cao

nếu mã độc có chức năng tự giải mã, tự biến đổi trong quá trình thực hiện Dễ dàng bị vượt qua bởi kẻ tấn công nếu kẻ tấn công có thể biết được các kỹ thuật và cách thức phân tích

Phương pháp này rất phù hợp cho việc phát triển một ứng dụng di dộng phát hiện

mã độc trên Android do tốn ít tài nguyên, kích thước chương trình nhỏ

b Kỹ thuật phân tích động

Kỹ thuật phân tích động là một kỹ thuật xuất phát từ việc nghiên cứu và phân tích

mã độc bằng tay Kỹ thuật này sử dụng môi trường phù hợp để tiến hành chạy thử mã độc và đưa ra kết luận dựa trên các hành vi của mã độc

Ưu điểm: kỹ thuật này có ưu điểm rất lớn là tính chính xác cao do kết luận dựa trên

các hành vi cụ thể của mã độc Kỹ thuật này có thể phát hiện các mã độc có mã hóa dữ liệu hay tự chỉnh sửa, biến đổi trong quá trình chạy

Nhược điểm: Tuy nhiên, phương pháp cũng có nhược điểm rất lớn là các mã độc

phải được thực thi trong hệ thống hoặc được giả lập trong một môi trường phù hợp Điều này gây ra sự tốn kém tài nguyên, hiệu năng của ứng dụng phát hiện bị giảm đáng kể hoặc gây tổn tại tới dữ liệu của người dùng

Trang 32

31

Chình vì thế, kỹ thuật phân tích động khó thực hiện, triển khai và thường phù hợp với môi trường PC là các hệ thống máy chủ Kỹ thuật này được áp dụng nhiều trong hệ thống phát hiện mã độc dành cho các hệ thống lớn trong doanh nghiệp, tập đoàn, hoặc các giải pháp phục vụ cộng đồng

Trang 33

32

CHƯƠNG II ỨNG DỤNG SVM VÀO PHÁT HIỆN MÃ ĐỘC ANDROID

Trong chương I của luận văn, tôi đã trình bày các nội dung tổng quan về hệ điều hành Android Đồng thời, tôi cũng chỉ ra thông tin quan trọng có ảnh hưởng tới việc xây dựng ứng dụng phát hiện mã độc trên di động:

 Cấu trúc tệp tin APK

 Tệp tin Dex

 Tệp tin AndroidManifest

 Quản lý truy cập và an ninh trên Android

Bên cạnh đó, tôi cũng đã chỉ ra một số loại mã độc và các đặc tính quan trọng của chúng Song song đó là hai kỹ thuật phân tích mã độc cơ bản được sử dụng việc phát hiện mã độc Trong phần này, tôi sẽ nói về nội dung chính của luận văn là việc áp dụng học máy véc tơ hỗ trợ SVM kết hợp với kỹ thuật phân tích tĩnh vào việc phát hiện mã độc

2.1 Tìm hiểu về học máy véc tơ hỗ trợ SVM

Phương pháp véc tơ học máy SVM được đề xuất và xây dựng bởi Vladimir N Vapnik và Alexey Ya Chervonenkis vào năm 1963 Sau đó, SVM tiếp tục được nghiên cứu và phát triển bởi Vapnik cho các tập dữ liệu không độc lập khả tuyến tính

Để hiểu rõ hơn về SVM, tôi xin được trình bày bài toán đơn giản nhất của SVM là phân loại tuyến tính Trong phần này, tôi có sử dụng tài liệu tham khảo về SVM trong [5], [6]

2.1.1 Bài toán phân loại hai lớp SVM

Để có thể hiểu rõ về SVM, ta xem xét bài toán phân loại đơn giản sau đây:

Bài toán:

véc tơ đối tượng được phân loại thành mẫu âm và mẫu dương:

gán nhãn C i = 1

Trang 34

33

C i = -1

Hình II-1 Bài toán phân loại tuyến tính hai lớp SVM

Yêu cầu: Tìm mặt siêu phẳng phân tách các mẫu dương khỏi các mẫu âm với

Trang 35

Mặt siêu phẳng H được gọi là tối ưu nếu mặt phẳng này phân tách hoàn toàn mẫu

âm và mẫu dương (sai số phân loại cực tiểu) và có lề cực đại (lề là khoảng cách từ mẫu

âm và mẫu dương gần mặt siêu phẳng H nhất) Hình II-2 dưới đây biểu diễn mặt siêu phẳng tối ưu H

Hình II-2 Mặt siêu phẳng phân tách âm và dương

Trong hình II-2, hai mặt siêu phẳng H1, H2 có phương trình + = ±1 được gọi là hai mặt siêu phẳng hỗ trợ (các đường nét đứt trong hình II-2) Hai mặt siêu phẳng hỗ trợ H1, H2 là mặt phẳng chứa các mẫu âm, mẫu dương gần mặt siêu phẳng

Trang 36

Nghiệm của phương trình Lagrange là các hệ số Từ đó ta có thể xác định giá trị của = ∑ , đối với độ dịch b, ta có thể xác định bằng cách chọn một mẫu

ớ > 0 (ứng với các mẫu nằm gần mặt siêu phẳng tối ưu nhất) và áp dụng điều kiện Karush-Kuhn-Tucker (KKT)20

Với các giá trị w,b tối ưu ta có thể thực hiện phân loại một mẫu x là mẫu âm hay dương bằng cách xét dấu của ( ) = ( + )

Ngày đăng: 22/01/2021, 11:18

Nguồn tham khảo

Tài liệu tham khảo Loại Chi tiết
[1] Daniel Arp, Michael Spreitzenbarth, Malte Huebner, Hugo Gascon, and Konrad Rieck. (2014), “Drebin: Efficient and Explainable Detection of Android Malware in Your Pocket”, 21th Annual Network and Distributed System Security Symposium(NDSS) Sách, tạp chí
Tiêu đề: Drebin: Efficient and Explainable Detection of Android Malware in Your Pocket
Tác giả: Daniel Arp, Michael Spreitzenbarth, Malte Huebner, Hugo Gascon, and Konrad Rieck
Năm: 2014
[2] Naser Peiravian and Xingquan Zhu. (2013), “Machine Learning for Android Malware Detection Using Permission and API Calls”, IEEE 25th International Conference Sách, tạp chí
Tiêu đề: Machine Learning for Android Malware Detection Using Permission and API Calls”
Tác giả: Naser Peiravian and Xingquan Zhu
Năm: 2013
[3] H. Alain Pimentel. (2015), “Detecting Android Malware By Using A Machine Learning Ensemble Method”, Southern Adventist University, Collegedale, TN 37315–0370 Sách, tạp chí
Tiêu đề: Detecting Android Malware By Using A Machine Learning Ensemble Method”, "Southern Adventist University
Tác giả: H. Alain Pimentel
Năm: 2015
[4] Guqian Dai, Jigang Ge, Minghang Cai, Daoqian Xu, Wenjia Li(2015), “SVM-based Malware Detection for Android Applications”, the 8th ACM Conference on Security &amp; Privacy in Wireless and Mobile Networks Sách, tạp chí
Tiêu đề: SVM-based Malware Detection for Android Applications”
Tác giả: Guqian Dai, Jigang Ge, Minghang Cai, Daoqian Xu, Wenjia Li
Năm: 2015
[5] Andrew Ng. (2016), Stanford University, CS229 Machine Learning, Lecture notes 3 Support Vector Machines, Stanford University Sách, tạp chí
Tiêu đề: CS229 Machine Learning
Tác giả: Andrew Ng
Năm: 2016
[6] Nguyễn Linh Giang, Nguyễn Mạnh Hiển(2005), “Phân loại văn bản tiếng Việt với bộ phân loại vectơ hỗ trợ SVM”, ICTVietnam Sách, tạp chí
Tiêu đề: Phân loại văn bản tiếng Việt với bộ phân loại vectơ hỗ trợ SVM
Tác giả: Nguyễn Linh Giang, Nguyễn Mạnh Hiển
Năm: 2005
[7] Huda Ali Alatwi. (2016), Android Malware Detection Using Category-Based Machine Learning Classifers, Rochester Institute of Technology Sách, tạp chí
Tiêu đề: Android Malware Detection Using Category-Based Machine Learning Classifers
Tác giả: Huda Ali Alatwi
Năm: 2016
[8] Michelle Wong. (2015), Targeted Dynamic Analysis for Android Malware, Graduate Department of Electrical and Computer Engineering, University of Toronto Sách, tạp chí
Tiêu đề: Targeted Dynamic Analysis for Android Malware
Tác giả: Michelle Wong
Năm: 2015
[9] Victor van der Veen. (2013), Dynamic Analysis of Android Malware, Department of Computer Sciences, VU University Amsterdam Sách, tạp chí
Tiêu đề: Dynamic Analysis of Android Malware
Tác giả: Victor van der Veen
Năm: 2013
[10] Deepa K, G. Radhamani, Vinod .P. (2015), Investigation of Feature Selection Methods for Android Malware Analysis, ICICT 2014 Sách, tạp chí
Tiêu đề: Investigation of Feature Selection Methods for Android Malware Analysis
Tác giả: Deepa K, G. Radhamani, Vinod .P
Năm: 2015
[11] Jonathan Levin. (2014), Android Internals - Volume I: A Confectioner's CookBook, Google Books, ISBN 0991055527- 9780991055524 Sách, tạp chí
Tiêu đề: Android Internals - Volume I: A Confectioner's CookBook
Tác giả: Jonathan Levin
Năm: 2014
[13]. Rodgrigo Chiossi. (2014), A deep dive into DEX file format, elinux.org Sách, tạp chí
Tiêu đề: A deep dive into DEX file format
Tác giả: Rodgrigo Chiossi
Năm: 2014
[14] Frank P. Coyle. (2009), CSE 7392 Mobile Application Development Summer 2009, Southern Methodist University Sách, tạp chí
Tiêu đề: CSE 7392 Mobile Application Development Summer 2009
Tác giả: Frank P. Coyle
Năm: 2009
[18] Android. (OperatingSystem), https://en.wikipedia.org, cập nhật 06/04/2017 Link
[19] Operating System Market Share, https://www.netmarketshare.com, cập nhật vào tháng 03/2017 Link
[20] Karush Kuhn Tucker Conditions, https://en.wikipedia.org, cập nhật vào 01/03/2017 Link
[21] Contagiodump mobile samples, http://contagiominidump.blogspot.com, cập nhật vào 07/2016 Link
[22] Android Malware, https://github.com/ashishb/android-malware, cập nhật vào 06/03/2017 Link
[24] Chih-Chung Chang, Chih-Jen Lin(2016), LibSVM, https://www.csie.ntu.edu.tw/~cjlin/libsvm/, cập nhật bản 3.22 vào 22/12/2016 [25] Open Handset Allicance, http://androiduygulama.blogspot.com/2011/05/oha-open-handset-alliance.html Link
[26] Android Developer, https://developer.android.com, cập nhật 03/04/2017 Link

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w