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áyNghiê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áyNghiê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áyNghiê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áyNghiê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áyNghiê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áyNghiê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áyNghiê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áyNghiê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áyNghiê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áyNghiê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áyNghiê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
Trang 1HỌ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
Trang 2HỌ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
Trang 3LỜ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
Trang 4LỜ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
Trang 5MỤ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
Trang 6CHƯƠ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 Nạ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
Trang 7DANH MỤC CÁC THUẬT NGỮ, CHỮ VIẾT TẮT
KNN K-Nearest Neighbors K láng giềng gần nhất SVM Support Vector Machines Máy vector hỗ trợ
Trang 8DANH 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
Trang 9DANH 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
Trang 10MỞ ĐẦ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
Trang 11về 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á
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, Nạ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ả
Trang 12CHƯƠ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
Trang 13Mố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
Trang 14thí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
Trang 15thi 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
Trang 16Adware 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
Trang 17Keylogger 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]:
Trang 181 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 anti-malware 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
Trang 19tin đá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ể
Trang 20là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
Trang 21đổ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 tốn các số liệu này và đưa ra kết quả chính xác hơn
Ngồ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 tố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 tốn perceptron cải tiến Với các thuật tốn khác nhau, độ chính xác dao động trong khoảng 69.90% - 96.18% Tuy nhiên thuật tố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 tố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 tố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 tốn được
sử dụng bao gồm Nạve Bayes, Cây quyết định J48, và Support Vector Machines Thuật tốn cĩ kết quả tốt nhất là J48, với tỉ lệ chính xác lên tới 99%
Trang 22Alazab [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
Trang 23CHƯƠ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à Nạ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 tố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ự đố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ự đố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
Trang 24Hì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)
Nhập dữ
liệu
Xử lý dữ liệu
Trang 252.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
Trang 26Một ví dụ khác, trong nhận dạng chữ viết tay, có ảnh của hàng nghìn ví dụ của mỗi chữ số được viết bởi nhiều người khác nhau Các bức ảnh này được đưa vào trong một thuật toán và chỉ cho nó biết mỗi bức ảnh tương ứng với chữ số nào Sau khi thuật toán tạo ra một mô hình, tức một hàm số mà đầu vào là một bức ảnh và đầu
ra là một chữ số, khi nhận được một bức ảnh mới mà mô hình chưa nhìn thấy bao giờ,
nó sẽ dự đoán bức ảnh đó chứa chữ số nào
Hình 2.2 Bộ cơ sở dữ liệu của chữ số viết tay
(Nguồn: Simple Neural Network implementation in Ruby)
Học có giám sát được chia nhỏ thành hai loại chính:
Phân lớp (Classification) Dựa vào tập dữ liệu đã được dán nhãn, với mỗi nhãn định nghĩa một lớp, dự đoán xem một dữ liệu mới chưa biết thuộc vào lớp nào Số lớp thường nhỏ và hữu hạn Ví dụ: Gmail xác định xem một email
có phải là spam hay không; các hãng tín dụng xác định xem một khách hàng
có khả năng thanh toán nợ hay không Ví dụ về chữ viết tay ở trên cũng thuộc loại này
Hồi quy (Regression) Nhãn không được chia thành các nhóm mà là một giá
trị thực cụ thể Ví dụ về dự đoán mức giá của một ngôi nhà thuộc loại này
Ngược lại với học có giám sát, trong học không giám sát, dữ liệu không được
dán nhãn Ở đây, mục tiêu là tìm một số mẫu trong tập dữ liệu chưa được phân loại, thay vì dự đoán một số giá trị Một bài toán quen thuộc của học không giám sát là
Trang 27phân cụm (clustering) Phân cụm là việc tìm kiếm điểm chung giữa các dữ liệu trong
tập dữ liệu và chia chúng thành các cụm tương ứng dựa vào điểm chung này Ví dụ: phân nhóm khách hàng dựa trên hành vi mua hàng
2.1.2 Một số kỹ thuật học máy
Từ khía cạnh học máy, việc phát hiện mã độc có thể được coi là một vấn đề thuộc bài toán phân lớp: từ tập dữ liệu huấn luyện được dán nhãn độc hại và lành tính, phân loại các tệp tin mới để phát hiện mã độc Phần này sẽ giới thiệu về các thuật toán được sử dụng trong luận văn
2.1.2.1 K-Nearest Neighbors
K-Nearest Neighbors (KNN) là một trong những thuật toán đơn giản nhất (mà hiệu quả trong một vài trường hợp) trong số các thuật toán của học máy KNN là một thuật toán phi tham số, tức là nó không đưa ra bất kỳ dự đoán nào về cấu trúc của dữ liệu Khi huấn luyện, thuật toán này không học một điều gì từ dữ liệu huấn luyện (đây cũng là lý do thuật toán này được xếp vào loại lazy learning)
KNN có thể áp dụng được vào cả hai loại của bài toán học có giám sát là Phân lớp và Hồi quy Trong cả hai bài toán, kết quả dự đoán của một điểm dữ liệu mới
được suy ra trực tiếp từ k điểm dữ liệu gần nhất trong tập dữ liệu huấn luyện Đối với
bài toán phân lớp, kết quả đầu ra sẽ là lớp mà dữ liệu thuộc về, dựa trên việc bình
chọn (majority vote) của k điểm gần nhất Trong bài toán hồi quy, đầu ra của một điểm dữ liệu sẽ bằng trung bình của đầu ra của k điểm gần nhất
Nếu K = 3, ; Nếu K = 5,
Hình 2.3 Ví dụ về KNN
Trang 28Có nhiều phương pháp đo khoảng cách giữa các điểm để tìm ra điểm gần nhất Các phương pháp phổ biến nhất bao gồm khoảng cách Hamming, khoảng cách Manhattan, khoảng cách Minkowski:
Khoảng cách Hamming: 𝑑𝑖𝑗 = ∑𝑝𝑘=1| 𝑥𝑖𝑘 − 𝑥𝑗𝑘 | (2.1)
Khoảng cách Manhattan: 𝑑1(𝑝, 𝑞) = ||𝑝 − 𝑞||1 = ∑𝑛𝑖=1| 𝑝𝑖− 𝑞𝑖 | (2.2)
Khoảng cách Minkowski = (∑𝑛𝑖=1| 𝑥𝑖− 𝑦𝑖|𝑝)1/𝑝 (2.3) Phương pháp phổ biến nhất đối với các biến liên tục là khoảng cách Euclidean, được định nghĩa bởi công thức (2.4) dưới đây:
d Euclidean = √∑𝑛 (𝑞𝑖− 𝑝𝑖)2
𝑖=1 ; p và q là các điểm trong không gian n (2.4)
Khoảng cách Euclidean phù hợp với các bài toán có đặc trưng cùng kiểu, với các bài toán có đặc trưng thuộc nhiều kiểu khác nhau, nên sử dụng khoảng cách Manhattan
Đối với các bài toán phân lớp, đầu ra có thể được biểu diễn dưới dạng tập các xác suất mà mỗi điểm thuộc về lớp nào đó Ví dụ, với bài toán nhị phân, xác suất có thể được tính theo công thức 𝑃(0) = 𝑁0
𝑁 0 + 𝑁 1 , với P(0) là xác suất một điểm thuộc lớp
0 và N 0 , N 1 là số các điểm lân cận thuộc lớp 0 hoặc 1 [27]
Giá trị của k cũng đóng vai trò quan trọng trong độ chính xác của thuật toán
dự đoán Tuy nhiên, việc chọn k lại là một nhiệm vụ không hề đơn giản Nếu k quá
nhỏ thì độ chính xác sẽ giảm, đặc biệt là với các tập dữ liệu có nhiều giá trị nhiễu
Còn k quá lớn sẽ giảm hiệu năng của thuật toán Ngoài ra, nếu giá trị k quá lớn sẽ
khiến cho mô hình bị quá tải, làm cho ranh giới giữa các lớp trở nên ít khác biệt, dẫn
đến độ chính xác cũng bị giảm Thông thường, k thường được chọn theo công thức