Tải bản đầy đủ (.pdf) (56 trang)

Nghiên cứu phương pháp phát hiện mã độc dựa trên các kỹ thuật học máy

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (1.67 MB, 56 trang )

HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------

NGUYỄN THỊ NGỌC ANH

NGHIÊN CỨU PHƯƠNG PHÁP PHÁT HIỆN MÃ ĐỘC
DỰA TRÊN CÁC KỸ THUẬT HỌC MÁY

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

HÀ NỘI - 2019


HỌC VIỆN CÔNG NGHỆ BƯU CHÍNH VIỄN THÔNG
---------------------------------------

NGUYỄN THỊ NGỌC ANH

NGHIÊN CỨU PHƯƠNG PHÁP PHÁT HIỆN MÃ ĐỘC DỰA
TRÊN CÁC KỸ THUẬT HỌC MÁY
Chuyên ngành: Hệ thống thông tin
Mã số: 8.48.01.04

LUẬN VĂN THẠC SĨ KỸ THUẬT
(Theo định hướng ứng dụng)

NGƯỜI HƯỚNG DẪN KHOA HỌC:
TS. HOÀNG XUÂN DẬU

HÀ NỘI - 2019



i

LỜI CAM ĐOAN

Tôi cam đoan đây là công trình nghiên cứu của riêng tôi.
Các số liệu, kết quả nêu trong luận văn là trung thực và chưa từng được công
bố trong bất kỳ công trình nào khác.

Hà Nội, tháng 10 năm 2018
Tác giả luận văn

Nguyễn Thị Ngọc Anh


ii

LỜI CẢM ƠN
Tôi xin trân trọng cảm ơn các thầy cô trong Khoa công nghệ thông tin đã tạo
điều kiện cho tôi một môi trường học tập tốt, đồng thời truyền đạt cho tôi một vốn
kiến thức quý báu, một tư duy khoa học để phục vụ cho quá trình học tập và công tác
của tôi.
Tôi xin gửi lời cảm ơn đến các bạn trong lớp Cao học Hệ thống thông tin
M17CQIS01-B khóa 2017- 2019 đã giúp đỡ tôi trong suốt thời gian học tập vừa qua.
Đặc biệt, tôi xin được bày tỏ lòng biết ơn sâu sắc đến TS. HOÀNG XUÂN
DẬU đã tận tình chỉ bảo cho tôi trong suốt quá trình học tập và nghiên cứu, giúp tôi
có nhận thức đúng đắn về kiến thức khoa học, tác phong học tập và làm việc, tạo điều
kiện thuận lợi để tôi hoàn thành luận văn này.
Cuối cùng, tôi xin được gửi lời cảm ơn tới gia đình, đồng nghiệp, người thân
đã động viên, giúp đỡ tôi trong quá trình hoàn thành luận văn.

Hà Nội, tháng 10 năm 2018
Tác giả luận văn

Nguyễn Thị Ngọc Anh


iii

MỤC LỤC
LỜI CAM ĐOAN ....................................................................................................... i
LỜI CẢM ƠN ............................................................................................................ ii
MỤC LỤC ................................................................................................................. iii
DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT ................................................v
DANH MỤC BẢNG BIỂU ...................................................................................... vi
DANH MỤC HÌNH VẼ ........................................................................................... vii
MỞ ĐẦU .....................................................................................................................1
CHƯƠNG 1 - TỔNG QUAN VỀ MÃ ĐỘC VÀ PHÁT HIỆN MÃ ĐỘC ................3
1.1

Tổng quan về mã độc.....................................................................................3

1.1.1

Khái niệm mã độc ...................................................................................3

1.1.2

Các dạng mã độc .....................................................................................5

1.2


Các phương pháp phát hiện mã độc ..............................................................8

1.2.1

Phương pháp phát hiện dựa trên chữ ký .................................................8

1.2.2

Phương pháp phát hiện dựa trên hành vi ..............................................10

1.3

Sự cần thiết của học máy trong phát hiện mã độc .......................................11

1.4

Các nghiên cứu liên quan ............................................................................12

1.5

Kết luận chương ..........................................................................................13

CHƯƠNG 2 - PHÁT HIỆN MÃ ĐỘC DỰA TRÊN HỌC MÁY ............................14
2.1

Khái quát về các kỹ thuật học máy ..............................................................14

2.1.1


Tổng quan về học máy ..........................................................................14

2.1.2

Một số kỹ thuật học máy.......................................................................18

2.2

Mô hình phát hiện mã độc dựa trên học máy ..............................................27

2.3

Kết luận chương ..........................................................................................32


iv

CHƯƠNG 3 - CÀI ĐẶT VÀ THỬ NGHIỆM ..........................................................33
3.1

Thu thập và tiền xử lý dữ liệu......................................................................33

3.1.1

Dữ liệu mẫu...........................................................................................33

3.1.2

Cuckoo Sandbox ...................................................................................34


3.1.3

Trích xuất đặc trưng ..............................................................................34

3.1.4

Lựa chọn đặc trưng ...............................................................................36

3.2

Huấn luyện và kiểm thử mô hình phát hiện mã độc ....................................36

3.3

Kết quả và đánh giá .....................................................................................38

3.3.1

K-Nearest Neighbors ............................................................................38

3.3.2

Support Vector Machines .....................................................................39

3.3.3

J48 Decision Tree .................................................................................40

3.3.4


Naïve Bayes ..........................................................................................41

3.3.5

Random Forest ......................................................................................42

3.4

Nhận xét .......................................................................................................42

3.5

Kết luận chương ..........................................................................................43

KẾT LUẬN VÀ KIẾN NGHỊ...................................................................................44
TÀI LIỆU THAM KHẢO .........................................................................................45


v

DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT
Viết tắt

Tiếng Anh

Tiếng Việt

KNN

K-Nearest Neighbors


K láng giềng gần nhất

SVM

Support Vector Machines

Máy vector hỗ trợ


vi

DANH MỤC BẢNG BIỂU
Bảng 2.1 Ví dụ dữ liệu huấn luyện của cây quyết định ............................................23
Bảng 3.1 Độ chính xác của thuật toán KNN .............................................................39
Bảng 3.2 Độ chính xác của thuật toán SVM .............................................................40
Bảng 3.3 Độ chính xác của thuật toán Decision Tree ...............................................40
Bảng 3.4 Độ chính xác của thuật toán Naive Bayes .................................................41
Bảng 3.5 Độ chính xác của thuật toán Random Forest .............................................42
Bảng 3.6 Kết quả thực nghiệm ..................................................................................43


vii

DANH MỤC HÌNH VẼ
Hình 1.1 Thống kê số lượng mã độc trên điện thoại di động 2016-2017 ...................4
Hình 2.1 Quy trình học máy......................................................................................15
Hình 2.2 Bộ cơ sở dữ liệu của chữ số viết tay ..........................................................17
Hình 2.3 Ví dụ về KNN ............................................................................................18
Hình 2.4 Mô hình SVM ............................................................................................20

Hình 2.5 Bài toán SVM với không gian hai chiều ....................................................21
Hình 2.6 Ví dụ về cây quyết định .............................................................................24
Hình 2.7 Sơ đồ thuật toán Random Forest ................................................................27
Hình 2.8 Mô hình tổng quan .....................................................................................29
Hình 2.9 Kiến trúc Cuckoo Sandbox ........................................................................30
Hình 3.1 Tỉ lệ các dạng mã độc trong tập dữ liệu mẫu .............................................33
Hình 3.2 Sơ đồ quá trình trích xuất dữ liệu ...............................................................35
Hình 3.3 Mô hình quá trình phân loại .......................................................................37
Hình 3.4 Kết quả dự đoán của thuật toán KNN ........................................................38
Hình 3.5 Kết quả dự đoán của thuật toán SVM ........................................................39
Hình 3.6 Kết quả dự đoán của thuật toán J48 ...........................................................40
Hình 3.7 Kết quả dự đoán của thuật toán Naive Bayes ............................................41
Hình 3.8 Kết quả dự đoán của thuật toán Random Forest ........................................42


1

MỞ ĐẦU
1. Lý do chọn đề tài
Hiện nay, sự phát triển nhanh chóng của công nghệ thông tin và không gian
mạng đã đem lại rất nhiều lợi ích trong đời sống xã hội. Tuy nhiên, bên cạnh những
lợi ích mà không gian mạng mang lại, vẫn còn nhiều nguy cơ gây ảnh hưởng đến các
hệ thống thông tin và người dùng – điển hình là sự xuất hiện và gia tăng nhanh chóng
của các loại mã độc nhằm đánh cắp thông tin, tống tiền, do thám,... các cá nhân và tổ
chức trên không gian mạng. Các loại mã độc ngày càng đa dạng và tinh vi hơn, có
khả năng lẩn tránh các phần mềm anti-virus thông qua các kỹ thuật nén, xáo trộn mã,
tự thay đổi mã nguồn,... dẫn đến việc sử dụng phương pháp rà quét phát hiện dựa trên
chữ ký không thực sự hiệu quả. Hơn nữa, để tạo được chữ ký của một mẫu mã độc,
các chuyên gia phải tiêu tốn rất nhiều thời gian và công sức, khiến cho việc cập nhật
các phần mềm anti-virus chậm hơn, khó có khả năng phát hiện mã độc kịp thời.

Để cải thiện khả năng nhận dạng và phát hiện các mẫu mã độc mới, các phương
pháp phát hiện mã độc dựa trên hành vi được nghiên cứu và triển khai. Theo đó, mã
độc được thực thi trong môi trường có giám sát và các hành vi của mã độc như truy
nhập các tệp tin, truy nhập mạng, thay đổi tham số hệ thống,… được ghi nhận và
phân tích làm cơ sở cho xây dựng hồ sơ phát hiện mã độc. Hơn nữa, để nâng cao hiệu
quả của quá trình xây dựng hồ sơ phát hiện mã độc, các phương pháp học máy được
sử dụng để huấn luyện các đặc trưng hành vi của mã độc cho việc xây dựng bộ phát
hiện. Ưu điểm của việc ứng dụng học máy trong phát hiện mã độc là có thể tự động
hóa quá trình xây dựng hồ sơ phát hiện và cải thiện khả năng phát hiện các dạng mã
độc mới. Theo hướng nghiên cứu này, đề tài luận văn “Nghiên cứu phương pháp phát
hiện mã độc dựa trên các kỹ thuật học máy” tiến hành nghiên cứu ứng dụng các kỹ
thuật học máy để tìm ra phương pháp phát hiện mã độc cho hiệu quả cao nhất.
Luận văn bao gồm 3 chương:
Chương 1: Tổng quan về mã độc và phát hiện mã độc
Chương này sẽ giới thiệu tổng quan về mã độc, bao gồm khái niệm, các dạng
mã độc, lịch sử phát triển và tác hại của mã độc. Bên cạnh đó, chương cũng giới thiệu


2

về các phương pháp phát hiện mã độc, sự cần thiết của học máy trong việc phát hiện
mã độc và chỉ ra một số nghiên cứu liên quan.
Chương 2. Phát hiện mã độc dựa trên học máy
Giới thiệu tổng quát về học máy, trình bày một số kỹ thuật học máy cụ thể và
đưa ra mô hình phát hiện mã độc dựa trên học máy.
Chương 3. Cài đặt và thử nghiệm
Tiến hành thử nghiệm mô hình phát hiện mã độc ở chương 2. Bao gồm: thu
thập và tiền xử lý dữ liệu, huấn luyện và kiểm thử, cuối cùng là đưa ra kết quả và
đánh giá.
2. Mục đích nghiên cứu

-

Nghiên cứu các phương pháp trích chọn đặc trưng dùng trong việc trích xuất
đặc trưng hành vi của mã độc để làm đầu vào cho các thuật toán học máy.

-

Thử nghiệm và đánh giá một số thuật toán học máy dùng để phân loại, phát
hiện mã độc.

3. Đối tượng và phạm vi nghiên cứu
-

Đối tượng:
 Các kỹ thuật học máy: K-Nearest Neighbors (KNN), Cây quyết định,
Naïve Bayes, Support Vector Machine (SVM) và Random Forest.
 Công cụ sử dụng: Cuckoo Sandbox
 Tập dữ liệu mẫu bao gồm các mẫu mã độc thu thập được từ Internet.

-

Phạm vi:
 Giới hạn trong việc phân loại các mẫu mã độc trong tập dữ liệu mẫu.
 Tập trung nghiên cứu các kỹ thuật học máy K-Nearest Neighbors
(KNN), Cây quyết định, Naïve Bayes, Support Vector Machine (SVM)
và Random Forest.

4. Phương pháp nghiên cứu
Phương pháp nghiên cứu là nghiên cứu lý thuyết kết hợp với thực nghiệm và
phân tích, đánh giá kết quả.



3

CHƯƠNG 1 - TỔNG QUAN VỀ MÃ ĐỘC VÀ PHÁT HIỆN
MÃ ĐỘC
Nội dung chương 1 đề cập đến khái niệm mã độc và tác hại của nó, lịch sử
hình thành và phát triển của mã độc, các dạng mã độc phổ biến hiện nay. Ngoài ra
cũng nêu lên các phương pháp phân tích và phát hiện mã độc, sự cần thiết của học
máy trong việc phát hiện mã độc và giới thiệu một số nghiên cứu liên quan.

1.1 Tổng quan về mã độc
1.1.1 Khái niệm mã độc
Mã độc là các phần mềm được thiết kế một cách có chủ đích, dùng để gây thiệt
hại tới máy tính cá nhân, máy chủ hoặc hệ thống mạng máy tính. Mục đích của mã
độc là thực thi các hành vi bất hợp pháp như: truy cập trái phép, đánh cắp thông tin
người dùng, lây lan thư rác, thậm chí thực hiện các hành vi tống tiền, tấn công và gây
tổn thương cho các hệ thống máy tính… nhằm chuộc lợi cá nhân, hoặc các lợi ích về
kinh tế, chính trị hay đơn giản chúng có khi được tạo ra chỉ là một trò đùa ác ý nào
đó.
Kể từ khi Internet bắt đầu phát triển, các phần mềm độc hại cũng nhắm đến lợi
ích nhiều hơn. Từ năm 2003, mục đích chính của việc phát tán virus và worm là chiếm
quyền điều khiển máy tính người dùng một cách bất hợp pháp. Các máy bị lây nhiễm
có thể được dùng để gửi email rác, lưu trữ các nội dung không lành mạnh, hoặc tham
gia vào tấn công từ chối dịch vụ phân tán.
Năm 2017 là năm bùng nổ của các loại mã độc tống tiền (ransomware) và các
loại mã độc đào tiền ảo. Theo thống kê từ Symatec [26], số lượng mã độc đào tiền ảo
được phát hiện trong năm 2017 tăng 8,500% so với các năm trước. Liên quan tới đào
tiền ảo, các thiết bị IoT cũng là một mục tiêu được nhắm đến. Cũng theo Symatec, số
lượng các cuộc tấn công nhằm vào thiết bị IoT tăng 600%, tức là tội phạm mạng có

thể lợi dụng mối liên kết giữa các thiết bị này để đào tiền ảo trên diện rộng.


4

Mối đe dọa của mã độc đối với các thiết bị di động cũng đang ngày càng gia
tăng. Hình 1.1 thể hiện số lượng mã độc trên thiết bị di động được phát hiện trong
năm 2017 tăng 54% so với năm 2016 [26].

Hình 1.1 Thống kê số lượng mã độc trên điện thoại di động 2016-2017

Vậy mã độc xuất hiện từ khi nào? Theo [30], ý tưởng về virus máy tính đã
xuất hiện từ năm 1949, khi nhà khoa học máy tính John von Neumann nêu lên trong
bài báo của ông về một chương trình máy tính có thể tự nhân bản nó. Đến những năm
1950, ý tưởng của Von Neumann đã được các thành viên tại Bell Labs biến thành
hiện thực với một trò chơi tên là “Core Wars”. Trong trò chơi, người lập trình sẽ thả
các “sinh vật” để cạnh tranh quyền điều khiển máy tính.
Tài liệu đầu tiên về virus máy tính xuất hiện vào đầu những năm 1970, trình
bày về “Creeper Worm”, một chương trình có khả năng tự nhân bản được viết bởi
Bob Thomas [9]. Creeper lấy quyền truy cập thông qua ARPANET, tự nhân bản nó
tới các hệ thống từ xa và hiển thị đoạn tin nhắn: “I’m the creeper, catch me if you
can!”.
Quá trình phát triển của mã độc có thể được chia làm 3 giai đoạn chính [23]:
-

Những năm đầu (1971 – 1999): thời kỳ này mã độc vẫn còn sơ khai, chủ yếu
lây lan qua đĩa mềm truyền từ máy tính này sang máy tính khác một cách thủ
công. Khi mạng và internet phát triển, người viết mã độc cũng nhanh chóng



5

thích nghi và tận dụng phương tiện truyền thông mới này. Một số mã độc nổi
tiếng trong thời kỳ này: Creeper (1971), Wabbit (1974), Brain Boot Sector
Virus (1986), Morris Worm (1988), Melissa Virus (1999),…
-

Tỉ lệ lây nhiễm bắt đầu gia tăng (2000 – 2010): trong khoảng thời gian này,
mã độc đã gia tăng đáng kể, về cả số lượng và tốc độ lây lan. Toolkits bắt đầu
xuất hiện, các bộ công cụ nhắm vào các websites cũng trở nên phổ biến, khiến
cho số lượng websites bị tấn công ngày càng nhiều. Một số mã độc đáng chú
ý: ILOVEYOU Worm (2000), SQL Slammer Worm (2003), Conficker Worm
(2008),…

-

Được chính phủ tài trợ, tinh vi hơn và hướng đến lợi nhuận (2010 – nay): kể
từ năm 2010 đến nay, mã độc đã và đang tiến hóa ngày một tinh vi hơn. Các
nhóm tội phạm có tổ chức và được tài trợ bởi chính phủ vẫn đang tiếp tục phát
triển các loại mã độc tiên tiến, có khả năng vượt qua các hệ thống diệt virus
thông thường. Mã độc được sử dụng để tấn công các doanh nghiệp, hệ thống
quân sự, và việc kiếm tiền từ các phần mềm độc hại này cũng đang gia tăng
nhanh chóng, thông qua ransomware và các phần mềm bất hợp khác. Một số
mã độc có tác hại đáng kể trong giai đoạn này: Stuxnet Worm (2010), Zues
Trojan (2011), Cryptolocker (2013), WannaCry Ransomware (2017),…
Từ những khởi đầu đơn giản và vô hại, mã độc đã trở thành mối đe dọa vô

cùng lớn cho người dùng trên toàn thế giới. Mặc dù ngành công nghiệp an ninh mạng
đang nỗ lực hết sức mình để kiểm soát mã độc – và đã thành công phần nào, tội phạm
mạng vẫn không có dấu hiệu ngừng lại mà ngày càng nguy hiểm và đa dạng hơn.


1.1.2 Các dạng mã độc
Để hiểu rõ hơn về phương thức và logic hoạt động của mã độc, người ta phân
loại mã độc thành các lớp, dựa theo mục đích của chúng.
a) Virus máy tính
Đặc điểm chính của virus máy tính là có khả năng tự nhân bản. Nó thường tấn
công và lây nhiễm vào các tệp tin trên hệ thống nạn nhân. Sau khi lây nhiễm vào tệp
tin, virus sẽ tự động tải và chạy mà không cần quyền từ người dùng. Khi được thực


6

thi nó sẽ cố gắng sao chép chính nó vào bên trong một mã thực thi khác. Các mã lây
nhiễm khi chạy có thể tiếp tục lây nhiễm sang các mã mới. Sự tự sao chép này là một
đặc tính quan trọng của virus. Khi virus được lây nhiễm nó có thể thực hiện một loạt
các hành vi như thay đổi, xóa, hay sao chép các tệp tin cũng như phát tán chúng trên
các hệ thống máy tính.
Ngoài khả năng đánh cắp và làm hỏng dữ liệu, virus còn tiêu tốn tài nguyên
hệ thống – khiến cho hệ thống máy chủ trở nên chậm chạp hoặc thậm chí bị vô hiệu
hóa. Một đặc điểm thường gặp ở virus là chúng được che giấu khá kĩ, khiến cho chúng
khó có thể bị phát hiện.
b) Worm
Cũng như virus, worm có khả năng tự nhân bản chính nó. Tuy nhiên, worm
không cần phải lây nhiễm vào một tệp tin cụ thể. Worm có thể phát tán thông qua hệ
thống mạng, dựa vào lỗi bảo mật để truy cập vào máy tính của nạn nhân, sau đó đánh
cắp hoặc xóa dữ liệu.
Nhiều worm được thiết kế chỉ để tự phát tán chính nó mà không gây tổn hại
đến hệ thống mà nó đi qua.
c) Trojan
Mã độc Trojan Horse là một cái tên được xuất phát từ một điển tích “Con ngựa

thành Troy” trong thần thoại Hy Lạp. Tội phạm mạng sẽ cải trang trojan thành các
phần mềm hữu ích và thuyết phục người dùng cài đặt nó. Do vậy, cách phát tán chính
của trojan là sử dụng social engineering.
Payload của trojan thường có dạng cửa hậu, cho phép kẻ tấn công truy cập bất
hợp pháp vào máy tính của nạn nhân. Kẻ tấn công có thể thu thập thông tin cá nhân
của người dùng như địa chỉ IP, mật khẩu và thông tin thanh toán ngân hàng. Chúng
thường cài đặt keylogger cùng với trojan để lấy thông tin tài khoản và mật khẩu, hoặc
dữ liệu thẻ tín dụng. Hầu hết các cuộc tấn công ransomware đều sử dụng trojan, bằng
cách nhúng đoạn mã độc hại vào trong một chương trình vô hại.
d) Adware


7

Adware là chương trình được thiết kế để hiển thị quảng cáo trên máy tính của
người dùng, sau đó chuyển hướng yêu cầu tìm kiếm của người dùng tới các website
quảng cáo và thu thập dữ liệu tiếp thị của người dùng. Ví dụ, adware sẽ thu thập thông
tin về các website mà người dùng truy cập, sau đó hiển thị quảng cáo phù hợp với
nhu cầu của người dùng. Adware thường được coi như là một nhánh con của spyware
và không gây nhiều thiệt hại nghiêm trọng.
e) Spyware
Spyware là phần mềm dùng để theo dõi người dùng. Spyware được thiết kế để
giám sát và chặn bắt lịch sử duyệt web cũng như các hoạt động khác của người dùng,
sau đó bán các thông tin này cho các nhà quảng cáo hoặc bên thứ ba. Spyware có
nhiều chức năng hơn so với adware, ví dụ, thu thập các dữ liệu nhạy cảm như tài
khoản ngân hàng, mật khẩu, hoặc thông tin thẻ tín dụng.
f) Rootkit
Rootkit là một bộ các công cụ phần mềm độc hại cho phép một người dùng
trái phép có quyền truy cập vào máy tính. Khi rootkit được cài đặt, kẻ tấn công có thể
điều khiển từ xa để thực thi các tệp tin và thay đổi cấu hình hệ thống trên máy nạn

nhân.
Rootkit không có khả năng tự nhân bản. Chúng phải được cài đặt và thực thi
ở lớp thấp của hệ điều hành, ở kernel, hoặc trong hệ thống vào ra của thiết bị (BIOS)
với quyền truy cập đặc quyền, do đó, chúng rất khó để phát hiện và gỡ bỏ.
Khi phát hiện rootkit, các chuyên gia khuyến cáo nên xóa sạch ổ cứng và cài
lại hệ điều hành từ đầu.
g) Backdoor
Backdoor là một dạng malware cung cấp cho kẻ tấn công một “cổng vào” bí
mật tới hệ thống. Backdoor không bao giờ được sử dụng một cách riêng lẻ. Nó thường
hỗ trợ cho các dạng tấn công khác.
Đôi khi các lập trình viên cũng tạo ra một backdoor trong chương trình của
mình nhằm bỏ qua bước xác thực khi debug trên máy chủ.
h) Keylogger


8

Keylogger sẽ ghi lại tất cả những phím được bấm trên một máy tính mà người
dùng không hề biết. Keylogger được công nhận là một công cụ giám sát chuyên
nghiệp hợp pháp. Tuy nhiên, keylogger thường được sử dụng với mục đích xấu, như
thu thập thông tin nhạy cảm, bao gồm tài khoản, mật khẩu, câu trả lời của các câu hỏi
bảo mật và thông tin tài chính.
i) Ransomware
Ransomware là một dạng mã độc sẽ khóa tất cả dữ liệu trên máy tính nạn nhân,
thường là bằng cách mã hóa. Nạn nhân sẽ phải trả tiền để kẻ tấn công giải mã dữ liệu
và trả lại quyền truy cập.
Động cơ chính của tấn công ransomware là tiền. Một khi bị tấn công, máy tính
sẽ bị “đóng băng”, người dùng không thể truy cập bất cứ tệp tin nào, và không như
các dạng tấn công khác, người dùng sẽ được thông báo và được hướng dẫn cách thanh
toán để khôi phục lại dữ liệu về bình thường.

Phương thức thanh toán thường là các loại tiền ảo, như Bitcoin, nhằm giữ kín
danh tính của kẻ tấn công.
Trên đây chỉ liệt kê danh sách một số loại mã độc thường gặp. Trên thực tế,
có rất nhiều loại và biến thể của mã độc, và chúng vẫn đang được phát triển nhiều
hơn, mặc dù hầu hết chỉ là ứng dụng kỹ thuật mới để thực hiện các mục tiêu đề cập ở
trên.

1.2 Các phương pháp phát hiện mã độc
Các phương pháp phát hiện mã độc hiện nay được chia thành hai loại chính là
phát hiện dựa trên chữ ký và phát hiện dựa trên hành vi.

1.2.1 Phương pháp phát hiện dựa trên chữ ký
Cơ sở của phương pháp này là phân tích tĩnh, phân tích mã nguồn mà không
cần thực thi tệp tin.
Phân tích tĩnh tức là đọc mã nguồn của mã độc và cố gắng suy luận các tính
chất của nó từ mã nguồn. Một số kỹ thuật dùng trong phân tích tĩnh bao gồm [21]:


9

1. Kiểm tra định dạng tệp: metadata của tệp tin có thể cung cấp các thông
tin hữu ích. Ví dụ, các tệp Windows PE có thể cung cấp các thông tin như
thời gian thực thi, các chức năng nhập và xuất,…
2. Trích xuất chuỗi: liên quan đến việc kiểm tra đầu ra của phần mềm (thông
điệp trạng thái hoặc thông điệp báo lỗi) và suy luận về hoạt động của mã
độc.
3. Lưu vết: trước khi thực hiện phân tích cần tính toán giá trị băm của tệp tin,
nhằm xác minh xem tệp tin đã bị chỉnh sửa chưa. Thuật toán băm thường
được sử dụng là MD5, SHA1, SHA256. Ngoài ra có thể tìm kiếm các thông
tin trong mã nguồn như tên người dùng, tên tệp, chuỗi registry.

4. Quét bằng phần mềm diệt virus: nếu tệp tin đang phân tích là một mã
độc đã biết, hầu hết phần mềm diệt virus có thể phát hiện được nó. Cách
này thường được dùng để kiểm tra lại kết quả phân tích.
5. Disassembly: liên quan đến việc đảo ngược mã máy thành hợp ngữ
(assembly language) và từ đó biết được logic và mục đích của phần mềm.
Đây là phương thức thường dùng và đáng tin cậy nhất trong phân tích tĩnh.
Ưu điểm của phân tích tĩnh là có thể tìm ra tất cả kịch bản thực thi có thể có
của mã độc mà không bị hạn chế về bất kỳ điều kiện gì. Hơn nữa, phân tích tĩnh an
toàn hơn phân tích động bởi không cần thực thi mã độc trực tiếp, vì thế sẽ không gây
nguy hiểm cho hệ thống. Tuy nhiên phân tích tĩnh lại tốn rất nhiều thời gian, vì thế
phân tích tĩnh thường không được sử dụng trong thực tế mà thường dùng để nghiên
cứu, ví dụ khi nghiên cứu chữ ký cho các mã độc zero-day [21].
Phát hiện dựa trên chữ ký là phương pháp tĩnh dựa trên các chữ ký đã được
định nghĩa sẵn. Chữ ký có thể là chuỗi băm của tệp tin mã độc (MD5 hoặc SHA1),
một chuỗi cố định hoặc metadata của tệp tin. Khi một nhà cung cấp giải pháp antimalware xác định một đối tượng là độc hại, chữ ký của nó sẽ được thêm vào cơ sở
dữ liệu. Khi kiểm tra một tệp tin bất kỳ trong hệ thống, phần mềm anti-virus sẽ phân
tích tệp tin đó, nếu phát hiện chữ ký khớp với cơ sở dữ liệu sẽ thông báo đây là tệp


10

tin đáng ngờ. Phương pháp phát hiện này chỉ phù hợp với các dạng mã độc phổ biến,
có chữ ký cố định được lưu trong cơ sở dữ liệu.
Các loại mã độc hiện đại thường tấn công và tồn tại trong khoảng thời gian
ngắn. Ví dụ, Jigsaw bắt đầu xóa dữ liệu trong vòng 24 giờ, HDDcryptor lây nhiễm
hơn 2000 hệ thống tại Cơ quan giao thông thành phố San Fransisco trước khi nó được
phát hiện [6]. Theo báo cáo năm 2017 của Cisco, 95% mã độc chưa đủ một ngày tuổi
khi được phát hiện. Vì thế việc chờ đợi chữ ký của mã độc là một việc rất mạo hiểm.
Ngoài ra, các loại mã độc hiện nay còn có khả năng thay đổi chữ ký nhằm tránh bị
phát hiện; chữ ký được tạo ra bởi việc kiểm tra các thành phần bên trong, và mã độc

chỉ cần thay đổi các phần này mà không làm ảnh hưởng đến chức năng và hành vi
của nó. Một số kỹ thuật biến hình của mã độc gồm hoán vị mã, đổi tên register, mở
rộng hoặc thu hẹp mã, chèn các đoạn mã rác,…

1.2.2 Phương pháp phát hiện dựa trên hành vi
Phân tích động không giống với phân tích tĩnh ở chỗ, các hành vi của mã độc
được giám sát trong khi nó đang thực thi, từ đó có thể tìm hiểu được thuộc tính và
mục đích của mã độc. Thông thường mã độc sẽ được thực thi trong môi trường ảo
(vd. Sandbox). Trong quá trình phân tích sẽ phát hiện tất cả hành vi của mã độc, như
mở tệp tin, tạo mutexes, … và kiểu phân tích này sẽ nhanh hơn phân tích tĩnh rất
nhiều. Tuy nhiên, phân tích động chỉ biết được hành vi của mã độc trong hệ thống ảo
dùng để kiểm tra, ví dụ kết quả thu được khi thực thi hai mã độc giống nhau trong
môi trường Windows 7 và Windows 8.1 sẽ khác nhau [8].
Từ phương pháp phân tích động, người ta đã định nghĩa phương pháp phát
hiện dựa trên hành vi.
Phương pháp phát hiện dựa trên hành vi (hay còn gọi là dựa trên
heuristics) sẽ đánh giá một đối tượng dựa trên hành vi của nó. Khi một đối tượng cố
gắng thực thi các hành vi bất thường hoặc không được cấp quyền biểu thị đối tượng
đó độc hại hoặc đáng ngờ. Có một số hành vi được coi là nguy hiểm như vô hiệu hóa
các điều khiển bảo mật, cài đặt rootkits, autostart, sửa tệp tin host, thiết lập các kết
nối đáng ngờ,… Mỗi hành vi có thể không nguy hiểm nhưng kết hợp với nhau có thể


11

làm tăng độ đáng ngờ của đối tượng. Có một ngưỡng được xác định sẵn, nếu bất kỳ
tệp tin nào vượt qua ngưỡng này sẽ được cảnh báo là mã độc [11]. Phương pháp này
được áp dụng để phát hiện các loại mã độc có khả năng thay đổi chữ ký (đa hình)
hoặc các loại mã độc mới (zero-day).
Mức độ chính xác của phát hiện dựa trên heuristics dựa vào quá trình thực thi.

Tốt nhất là sử dụng môi trường ảo, ví dụ như sandbox, để chạy tệp tin và giám sát
hành vi của nó. Mặc dù phương pháp này tốn nhiều thời gian hơn, nhưng nó an toàn
hơn, do tệp tin được kiểm tra trước khi chạy thực tế. Ưu điểm chính của phát hiện
dựa trên heuristics là nó không chỉ phát hiện các mã độc đã biết mà còn phát hiện
được các cuộc tấn công zero-day và các loại virus đa hình. Tuy nhiên, một số loại mã
độc có khả năng phát hiện môi trường ảo, nó sẽ không thực thi các hành vi độc hại
trong môi trường sandbox. Hơn nữa, trên thực tế, với lượng mã độc đang ngày một
gia tăng, phương pháp này không thực sự hiệu quả trước các loại mã độc mới.

1.3 Sự cần thiết của học máy trong phát hiện mã độc
Như đã đề cập ở trên, phương pháp phát hiện mã độc dựa trên chữ ký chỉ phù
hợp với các mã độc phổ biến, đã được phát hiện bởi các nhà phát triển phần mềm diệt
virus. Nó không thể phát hiện các mã độc đa hình – mã độc có khả năng thay đổi chữ
ký, cũng như các mã độc mới chưa có chữ ký. Ngược lại, phương pháp phát hiện dựa
trên heuristics có thể phát hiện các loại mã độc này, nhưng độ chính xác không cao,
thường đưa ra kết quả dương tính sai và âm tính sai [3].
Trước sự phát triển nhanh chóng của các loại mã độc đa hình, việc phát triển
một phương pháp phát hiện mới là rất cần thiết. Một trong các giải pháp là kết hợp
phát hiện dựa trên heuristics với các kỹ thuật học máy để tăng độ chính xác.
Khi sử dụng phương pháp heuristics, cần phải có một số ngưỡng để xác định
mã độc, định ra một số lượng heuristics cần để một phần mềm được coi là độc hại.
Ví dụ, có thể định nghĩa một các hành vi đáng ngờ, như “thay đổi registry key”, “thiết
lập kết nối”, “thay đổi quyền”,… Bất kỳ phần mềm nào thực hiện ít nhất năm trong
số các hành vi này có thể được coi là độc hại. Tuy nhiên việc này không phải lúc nào
cũng chính xác. Một số hành vi có thể nguy hiểm hơn các hành vi khác, ví dụ, “thay


12

đổi quyền” thường dẫn đến nhiều tác động nghiêm trọng đến hệ thống hơn là “thay

đổi registry key”. Vì thế một số hành vi khi kết hợp với nhau sẽ đáng ngờ hơn khi nó
thực thi một mình. Các kỹ thuật học máy có thể được áp dụng để tính toán các số liệu
này và đưa ra kết quả chính xác hơn.
Ngoài ra, học máy cũng giúp tự động hóa quá trình phát hiện mã độc. Dựa trên
việc “học” các đặc trưng mẫu, các kỹ thuật học máy có thể tự động thêm các đặc
trưng mới và tối ưu hóa tập đặc trưng, loại bỏ các đặc trưng dư thừa. Tuy nhiên, với
lượng dữ liệu khổng lồ, để có kết quả tốt nhất, học máy cần kết hợp với các công
nghệ khác như Big Data và Điện toán đám mây.

1.4 Các nghiên cứu liên quan
Mặc dù chưa được ứng dụng rộng rãi, ý tưởng sử dụng học máy trong việc
phát hiện mã độc không còn mới. Một số nghiên cứu về lĩnh vực này đã được thực
hiện nhằm kiểm tra tính chính xác của các phương pháp khác nhau.
Dragos Gavrilut [10] đã đề xuất hệ thống phát hiện mã độc dựa trên các thuật
toán perceptron cải tiến. Với các thuật toán khác nhau, độ chính xác dao động trong
khoảng 69.90% - 96.18%. Tuy nhiên thuật toán có độ chính xác cao nhất cũng có
nhiều kết quả dương tính sai nhất. Thuật toán cân đối nhất có tỉ lệ dương tính sai thấp
và có độ chính xác là 93.01%.
Singhal và Raul đã thảo luận về phương pháp phát hiện dựa trên thuật toán
Random Forest cải tiến kết hợp với Information Gain để biểu diễn đặc trưng tối ưu
hơn [22]. Tập dữ liệu được tác giả sử dụng chỉ bao gồm tệp tin thực thi, vì thế việc
trích chọn đặc trưng đơn giản hơn. Tỉ lệ phát hiện là 97% và tỉ lệ dương tính sai là
0.03.
Baldangombo và cộng sự đã giới thiệu phương pháp trích chọn đặc trưng dựa
trên tiêu đề PE, các thư viện DLL và các hàm chức năng API [2]. Các thuật toán được
sử dụng bao gồm Naïve Bayes, Cây quyết định J48, và Support Vector Machines.
Thuật toán có kết quả tốt nhất là J48, với tỉ lệ chính xác lên tới 99%.


13


Alazab [1] đã đề xuất phương pháp sử dụng API để biểu diễn đặc trưng của
mã độc. Thuật toán Support Vector Machine cho kết quả tốt nhất với tỉ lệ 97.6%, tỉ
lệ dương tính sai là 0.025.
Kết quả đưa ra của các nghiên cứu ở trên đều không giống nhau, do chưa có
một phương pháp thống nhất trong việc phát hiện cũng như biểu diễn đặc trưng. Độ
chính xác của từng trường hợp còn phụ thuộc vào các loại mã độc được dùng để lấy
mẫu và quá trình chạy thực tế.

1.5 Kết luận chương
Với sự phát triển nhanh chóng của mã độc, các phương pháp phát hiện dựa
trên chữ ký và dựa trên heuristics dần không còn thực sự hiệu quả. Phương pháp phát
hiện dựa trên chữ ký chỉ phù hợp với các mã độc đã có chữ ký lưu trong cơ sở dữ liệu
của các phần mềm diệt virus chứ không có hiệu quả với các loại mã độc đa hình và
mã độc zero-day. Phương pháp heuristics thì tốn thời gian và độ chính xác còn phụ
thuộc vào các hành vi của đối tượng. Vì thế việc phát triển một phương pháp phát
hiện mới đang là yêu cầu cấp thiết hiện nay. Một phương pháp đang được đề xuất là
kết hợp phân tích động và các kỹ thuật học máy để tăng độ chính xác trong quá trình
trích chọn đặc trưng và phát hiện. Phương pháp này có độ chính xác cao hơn và có
khả năng phát hiện được cả mã độc đa hình và mã độc zero-day. Chương 2 của luận
văn sẽ giới thiệu về các kỹ thuật học máy được sử dụng phổ biến và mô hình phát
hiện mã độc dựa trên học máy.


14

CHƯƠNG 2 - PHÁT HIỆN MÃ ĐỘC DỰA TRÊN HỌC MÁY
Chương 2 sẽ giới thiệu tổng quan về lĩnh vực học máy, mô tả về các kỹ thuật
học máy được sử dụng trong luận văn, bao gồm K-Nearest Neighbors, Decision Tree,
Random Forests, Support Vector Machines và Naïve Bayes, sau đó đưa ra mô hình

phát hiện mã độc dựa trên các kỹ thuật học máy này và các bước xử lý.

2.1 Khái quát về các kỹ thuật học máy
2.1.1 Tổng quan về học máy
2.1.1.1 Khái niệm cơ bản
Sự phát triển nhanh chóng của các kỹ thuật khai phá dữ liệu đã đưa Học máy
thành một lĩnh vực riêng biệt của Khoa học máy tính. Theo wikipedia, Học máy là
một lĩnh vực của Trí tuệ nhân tạo liên quan đến việc nghiên cứu và xây dựng các kĩ
thuật cho phép các hệ thống "học" tự động từ dữ liệu để giải quyết những vấn đề cụ
thể [31]. Nó được đề cập lần đầu bởi Arthur Samuel vào năm 1959, như là “một lĩnh
vực nghiên cứu mà ở đó máy tính có khả năng tự học mà không cần phải lập trình”.
Tom Mitchell, giáo sư nổi tiếng của Đại học Carnegie Mellon University định nghĩa
cụ thể và chuẩn mực hơn như sau: "Một chương trình máy tính CT được xem là học
cách thực thi một lớp nhiệm vụ NV thông qua trải nghiệm KN, đối với thang đo năng
lực NL nếu như dùng NL ta đo thấy năng lực thực thi của chương trình có tiến bộ sau
khi trải qua KN" [19].
Ý tưởng cơ bản của học máy là huấn luyện mô hình, dựa trên một số thuật
toán, để thực thi các nhiệm vụ cụ thể như: phân lớp, phân cụm, hồi quy,… Dựa trên
tập dữ liệu đầu vào, mô hình sẽ được huấn luyện và sau đó được dùng để dự đoán.
Một số ứng dụng thực tế như: cho tập dữ liệu về thuộc tính nhà cửa như số phòng,
kích thước, giá tiền, dự đoán giá của một ngôi nhà mới; dựa vào hai tập dữ liệu về
hình ảnh của những người khỏe mạnh và hình ảnh của người bị u, phân loại các hình
ảnh mới; phân cụm các bức ảnh động vật từ tập dữ liệu chưa được sắp xếp.


15

Nhập dữ
liệu


Xử lý dữ
liệu

Huấn luyện
mô hình

Thử nghiệm
mô hình

Triển khai
mô hình

Tập dữ liệu thử
nghiệm
Hình 2.1 Quy trình học máy

Hình 2.1 mô tả quy trình chung của một tiến trình học máy. Tiến trình bao
gồm 5 bước sau:
1. Nhập dữ liệu. Đầu tiên, tập dữ liệu được tải lên từ tệp tin và lưu vào bộ
nhớ.
2. Xử lý dữ liệu. Tại bước này, dữ liệu được tải lên từ bước 1 sẽ được chuyển
đổi, làm sạch và chuẩn hóa để phù hợp với thuật toán. Dữ liệu được chuyển
đổi để nằm trong cùng một giới hạn, có cùng định dạng,… Quá trình trích
xuất và lựa chọn đặc trưng cũng diễn ra ở bước này. Sau đó, dữ liệu được
chia ra thành hai tập – ‘tập huấn luyện’ và ‘tập thử nghiệm’. Dữ liệu từ tập
huấn luyện được dùng để xây dựng mô hình, sau đó sẽ được đánh giá thông
qua tập thử nghiệm.
3. Huấn luyện mô hình. Xây dựng mô hình dựa trên thuật toán đã lựa chọn.
4. Thử nghiệm mô hình. Mô hình đã được xây dựng và huấn luyện ở bước
3 sẽ được thử nghiệm thông qua tập dữ liệu thử nghiệm, và kết quả sinh ra

được dùng để xây dựng nên một mô hình mới, quá trình diễn ra lặp đi lặp
lại này được gọi là “học” từ các mô hình trước đó.
5. Triển khai mô hình. Ở bước này, mô hình tốt nhất sẽ được lựa chọn để
triển khai (sau một số bước lặp nhất định hoặc khi đạt được kết quả cần
thiết).


16

2.1.1.2 Trích chọn đặc trưng
Trong các ví dụ đã đưa ra ở trên, cần phải trích xuất các thuộc tính từ dữ liệu
đầu vào để đưa vào thuật toán. Ví dụ, với trường hợp tính giá nhà, dữ liệu có thể được
biểu diễn dưới dạng ma trận đa chiều, với mỗi cột là một thuộc tính và mỗi dòng là
giá trị của thuộc tính đó. Trong trường hợp hình ảnh, dữ liệu có thể được biểu diễn
dưới dạng giá trị RGB của mỗi pixel.
Các thuộc tính này được gọi là đặc trưng, và ma trận là vector đặc trưng. Quá
trình trích xuất dữ liệu từ tệp tin được gọi là trích xuất đặc trưng. Mục đích của quá
trình này là thu được một tập dữ liệu chi tiết và không dư thừa. Các đặc trưng phải
biểu diễn thông tin quan trọng và liên quan tới tập dữ liệu nếu không kết quả dự đoán
sẽ không chính xác. Vì thế, trích xuất đặc trưng là một nhiệm vụ không rõ ràng, cần
rất nhiều nghiên cứu và thử nghiệm. Hơn nữa, với mỗi lĩnh vực, đặc trưng của dữ liệu
cũng khác nhau, nên không có phương pháp chung cho việc trích xuất đặc trưng.
Một yêu cầu quan trọng khác đối với một tập đặc trưng hợp lệ là không dư
thừa. Có các đặc trưng dư thừa như các đặc trưng nói về cùng một thông tin, hoặc các
thuộc tính dư thừa, có thể gây ảnh hưởng đến thuật toán, từ đó dẫn đến kết quả không
chính xác.
Ngoài ra, nếu dữ liệu đầu vào quá lớn (quá nhiều đặc trưng), nó có thể được
chuyển đổi thành các vector đặc trưng nhỏ hơn (giảm bớt số đặc trưng). Quá trình
này gọi là chọn lọc đặc trưng. Kết quả của quá trình này là lựa chọn ra các đặc trưng
bao quát nhất từ tập dữ liệu mà không làm giảm độ chính xác.


2.1.1.3 Học có giám sát và học không giám sát
Đối với học có giám sát, việc học được dựa trên các dữ liệu được dán nhãn.
Trong trường hợp này, chúng ta sẽ dự đoán đầu ra (outcome) của một dữ liệu mới
(new input) dựa trên các cặp (input, outcome) đã biết từ trước. Ví dụ về định giá nhà
ở trên là một trường hợp học có giám sát: tập dữ liệu cho trước bao gồm các ngôi nhà,
thuộc tính và mức giá của chúng. Ở đây, nhà và thuộc tính là dữ liệu, mức giá là nhãn;
cần phải dự đoán giá của một ngôi nhà mới.


×