Nghiên cứu khoa học công nghệ<br />
<br />
<br />
Sö dông kü thuËt khai ph¸ d÷ liÖu<br />
phÇn mÒm ®éc h¹i tõ m· lÖnh<br />
HOÀNG SỸ TƯƠNG*, TRẦN THỊ LAN ANH**<br />
Tóm tắt: Trong bài báo này, chúng tôi phân tích các kỹ thuật khai phá dữ liệu<br />
mà chúng tôi đã áp dụng thành công cho an ninh mạng. Nghiên cứu này tập<br />
trung vào việc sử dụng các phương pháp khai phá dữ liệu để phát hiện phần mềm<br />
độc hại (các chương trình độc hại) và đề xuất một giải pháp nhằm thay thế cho<br />
các phương pháp phát hiện dựa trên chữ ký truyền thống. Các ứng dụng này bao<br />
gồm phát hiện mã độc hại bằng cách khai thác các mã nhị phân dựa trên phát<br />
hiện sự bất thường, và khai thác luồng dữ liệu. So sánh với phương pháp phát<br />
hiện mã độc dựa trên chữ ký truyền thống, phương pháp đề xuất của chúng tôi có<br />
tốc độ phát hiện mã độc nhanh gấp đôi.<br />
Từ khóa: Khai phá dữ liệu, Phát hiện mã độc, Phân tích tĩnh, Phát hiện tuần tự, Đặc trưng dữ liệu,<br />
Phòng chống virus.<br />
<br />
1. GIỚI THIỆU<br />
Phát hiện virus máy tính đã phát triển thành chương trình phát hiện mã độc hại<br />
từ khi Cohen đưa ra thuật ngữ virus máy tính lần đầu tiên vào năm 1983 [3]. Các<br />
chương trình độc hại có thể được phân loại thành các loại phần mềm độc hại như<br />
sau: virus, worm, trojan, spyware, adware và các lớp con mã độc hại khác [4]. Một<br />
trong những vấn đề chính mà cộng đồng những người nghiên cứu về virus phải đối<br />
mặt đó là tìm ra được các phương pháp phát hiện các chương trình độc hại mới các<br />
mã độc chưa được phân tích [1]. Công nghệ quét virus hiện nay có hai phần: một<br />
là bộ phát hiện dựa trên chữ ký và hai là bộ phân loại phỏng đoán (heuristic) có<br />
thể phát hiện được các virus mới [2]. Khai phá dữ liệu đề cập đến việc trích rút<br />
hoặc 'khai phá' các tri thức cần thiết từ một lượng lớn dữ liệu [5]. Nó cung cấp một<br />
cách thức trích rút thông tin được dự đoán và chưa biết trước đó dựa trên dữ liệu có<br />
thể truy cập được trong các kho dữ liệu.<br />
Các phương pháp khai phá dữ liệu phát hiện các mẫu trong kho dữ liệu. Sử<br />
dụng các phương pháp khai phá dữ liệu, mục tiêu của chúng tôi là thiết kế ra<br />
một giải pháp phát hiện mã độc một cách tự động, chẳng hạn như mã byte và<br />
sử dụng các mẫu đó để phát hiện các tấn công trong tương lai từ những dữ liệu<br />
tương tự nhau.<br />
<br />
2. CÁC NGHIÊN CỨU LIÊN QUAN<br />
Trong những năm gần đây, các nhà nghiên cứu mã độc đã tập trung vào kỹ thuật<br />
khai phá dữ liệu để phát hiện các mã độc chưa biết. Khai phá dữ liệu là một quá<br />
trình phân tích dữ liệu được lưu trữ điện tử bằng cách tìm kiếm tự động các mẫu<br />
[7]. Các thuật toán đã được sử dụng rộng rãi cho các bài toán khai phá dữ liệu khác<br />
nhau để phát hiện các mẫu và tìm ra các mối tương quan giữa các thể hiện dữ liệu<br />
và các thuộc tính. Nhiều nhà nghiên cứu đã sử dụng các n-gram hoặc các cuộc gọi<br />
API vì kiểu đặc trưng chính của chúng được dùng để biểu diễn các thể hiện của mã<br />
độc trong một định dạng phù hợp nhằm mục đích khai phá dữ liệu. Chúng phân<br />
tích các chuỗi byte được trích rút từ bộ trích xuất mã hexa (hexdump) của mã thực<br />
<br />
<br />
Tạp chí Nghiên cứu KH&CN quân sự, Số 34, 12 - 2014 81<br />
Kỹ thuật điện tử & Khoa học máy tính<br />
<br />
thi. Tập dữ liệu được xét gồm 4.266 tệp, trong đó 3.265 tệp là mã độc và 1.001 tệp<br />
là các chương trình hợp pháp hoặc tệp an toàn. Một thuật toán quy nạp có quy tắc<br />
được gọi là Ripper [9] đã được áp dụng để tìm ra các mẫu trong dữ liệu DLL. Một<br />
thuật toán học máy của Naive Bayes (NB) dựa trên các thống kê Bayes, đã được<br />
dùng để tìm ra các mẫu với dữ liệu chuỗi và các n-gram gồm các chuỗi byte là dữ<br />
liệu đầu vào của thuật toán này. Một tập dữ liệu được phân hoạch thành hai tập dữ<br />
liệu gồm: một tập dữ liệu kiểm tra và một tập dữ liệu học. Điều này cho phép hiệu<br />
năng kiểm tra trên dữ liệu phụ thuộc vào dữ liệu được dùng để sinh ra các lớp phân<br />
loại. Thuật toán Naive Bayes sử dụng các chuỗi như là dữ liệu đầu vào và mang lại<br />
hiệu năng phân loại cao nhất với độ chính xác khoảng 97,11%. Đặc biệt, việc phát<br />
hiện ra mã độc mới với tốc độ nhanh gấp hai lần so với thuật toán dựa trên chữ ký.<br />
<br />
3. GIẢI PHÁP NGHIÊN CỨU<br />
Như đã đề cập trong phần giới thiệu, tập trung chính của chúng tôi là nằm ở chỗ<br />
xử lý tự động thông tin thu lượm được từ các phân tích mã độc động. Hai kỹ thuật<br />
phân tích hành vi sử dụng việc phân cụm các báo cáo hành vi được đề cập đến gần<br />
đây [6, 7]. Khó khăn lớn nhất của các phương pháp phân cụm xuất phát từ tính<br />
chất không được giám sát của chúng, do sự thiếu hụt các thông tin bổ sung cần<br />
thiết cho quá trình phân tích dữ liệu. Ở đây chúng tôi đề cập đến một số bài toán<br />
thực tế theo hướng dựa trên phương pháp phân cụm.<br />
Quá trình khai phá dữ liệu bao gồm 5 bước: Phát biểu và mô hình hóa bài toán,<br />
thu thập dữ liệu, tiền xử lý dữ liệu, ước lượng mô hình, giải thích mô hình.<br />
Trong bài báo này chúng tôi giới thiệu một phương pháp phát hiện virus dựa<br />
trên việc phân tích dữ liệu. Để làm được như vậy chúng tôi sử dụng tập dữ liệu tệp<br />
nhiễm virus và một số virus tạo ra từ bộ công cụ tạo virus vcl32. Trước hết chúng<br />
tôi rút 2000 tập tin trong bộ dữ liệu tệp virus và bộ sinh vcl32. Sau đó, sử dụng<br />
Idpro để hợp ngữ hóa tất cả các tệp virus và tạo ra các tập tin ASM từ chúng.<br />
Trong quá trình hợp ngữ hóa, các lệnh hợp ngữ được tổ chức thành các khối cơ sở.<br />
Chúng tôi thu được các khối lệnh hợp ngữ từ quá trình này. Quá trình giải hợp ngữ<br />
sẽ tạo ra một nhãn cho mỗi khối cơ sở một cách tự động. Chúng tôi coi khối cơ bản<br />
nắm bắt được cấu trúc của trình tự lệnh và chúng tôi xử lý các lệnh nhằm tạo thành<br />
khối cơ bản. Mã đó gọi là mã " hợp ngữ logic" [5]. Mỗi lệnh hợp ngữ bao gồm<br />
opcode và các toán hạng. Chúng tôi chỉ sử dụng các opcode và bỏ qua các toán<br />
hạng và tiền tố vì các opcode đủ để nói lên hành vi của chương trình. Các mã hợp<br />
ngữ kết quả được gọi là "hợp ngữ trừu tượng" [5]. Hợp ngữ trừu tượng cuối cùng<br />
có dạng như dưới đây:<br />
<br />
<br />
<br />
<br />
Hình 1. Ví dụ về mã hợp ngữ trừu tượng.<br />
3.1. Các bước cần thực hiện<br />
<br />
<br />
<br />
82 H.S.Tương, T.T.L.Anh, “Sử dụng kỹ thuật khai phá dữ liệu … từ mã lệnh.”<br />
Nghiên cứu khoa học công nghệ<br />
<br />
Tạo tập dữ liệu virus, phân rã các tệp virus sử dụng bất kỳ một trình giải hợp<br />
ngữ nào, sinh ra các mã hợp ngữ trừu tượng từ các opcode, chọn các đặc trưng.<br />
<br />
<br />
<br />
<br />
Hình 2. Các bước thực hiện.<br />
3.2.Tạo tập dữ liệu virus<br />
Để phục vụ mục đích chúng tôi nêu ra ở đây, chúng tôi sẽ sinh ra một tập dữ<br />
liệu virus có chứa 200 và 500 tệp.<br />
3.3. Phân rã tệp virus sử dụng một trình giải hợp ngữ<br />
Chúng tôi chuyển đổi định nghĩa virus bằng cách sử dụng trình giải hợp ngữ<br />
hóa để chuyển nó thành định dạng không có khả năng thực thi.<br />
Theo đó trình giải hợp nhữ sẽ dịch các mã virus thành dạng không có khả năng<br />
thực thi.<br />
3.4. Sinh ra các mã hợp ngữ trừu tượng từ opcode<br />
Chúng tôi sinh ra các opcode để biên dịch virus thành các mã hợp ngữ trừu<br />
tượng phục vụ mục đích của chúng tôi.<br />
3.5.Chọn đặc trưng<br />
Các đặc trưng được sử dụng cho việc phân loại ở đây là các tổ hợp lệnh. Để<br />
chọn các tổ hợp lệnh phù hợp, chúng tôi sử dụng hai rằng buộc sau:<br />
Các tổ hợp lệnh thường là các tổ hợp xuất hiện thường xuyên trong tập dữ liệu.<br />
Nếu tổ hợp lệnh xuất hiện rất ít, chúng tôi sẽ coi nó là các tổ hợp lệnh nhiễu và<br />
không sử dụng làm đặc trưng.<br />
Tổ hợp lệnh cần phải đặc trưng cho mã độc.<br />
Chúng tôi sử dụng một biến thể của thuật toán Apriori để sinh ra tất các ba kiểu<br />
tổ hợp lệnh tần suất cao từ các mã hợp ngữ trừu tượng. Một tham số của thuật toán<br />
Apriori là “độ hỗ trợ tối thiểu”. Đó là tần suất xuất hiện tối thiểu của các dãy tổ<br />
hợp trong toàn bộ dữ liệu.<br />
Sau đó chọn L đặc trưng đầu tiên làm tập đặc trưng của chúng tôi. Để tính toàn<br />
trong tập dữ liệu, ta đếm số lượng các khối cơ sở chứa các đặc trưng, chuẩn khóa<br />
nó với số lượng các khối cơ sở. Chúng tôi thực hiện việc này với mọi thực thi trong<br />
<br />
<br />
<br />
<br />
Tạp chí Nghiên cứu KH&CN quân sự, Số 34, 12 - 2014 83<br />
Kỹ thuật điện tử & Khoa học máy tính<br />
<br />
tập dữ liệu của chúng tôi, và cuối cùng, chúng tôi sinh các đầu vào cần thiết cho<br />
việc phân loại của chúng tôi như Navie Bayes, Ripper.<br />
Cấu trúc cơ bản bao gồm các bước dưới đây<br />
Bước 1: Phân rã tất cả các tệp và sinh ra các mã hợp ngữ trừu tượng<br />
Bước 2: Tìm các tần suất của mỗi tổ hợp lệnh (IA) tùy theo kiểu 1 và kiểu 2<br />
Bước 3: Sắp xếp các dãy lệnh này theo tần suất và chọn 10 tổ hợp lệnh đầu<br />
tiên có độ dài k.<br />
Bước 4: Đánh số thứ tự của các tệp (cả tệp virus và tệp lành tính) và tính tần<br />
suất của mỗi IA tại mức khối.<br />
Bước 5. Tạo bảng các IA và tần suất của các IA được chọn từ các tệp.<br />
Bước 6. Lặp lại bước 4 và bước 5 cho kiểu 1 và 2 và độ dài 2,3 IA<br />
3.6. Thuật toán<br />
Tìm các tập phổ biến: Các tập của các thành phần thỏa mãn độ tin cậy tối thiểu.<br />
Đầu vào: Tập các tệp virus (V)<br />
Đầu ra: Tập các lệnh phổ biến nhất (L)<br />
Thực hiện các bước sau để sinh ra L bộ lệnh phổ biến.<br />
1. For (mỗi tệp virus Vi in V) do<br />
2. For (mỗi khối cơ sở Bij inVi ) do<br />
3. Ghi nhận tất cả các tần suất xuất hiện của sl được thấy trong Bij<br />
4. Tăng biến đếm của tất cả các lệnh phổ biến.<br />
5. End For<br />
6. End For<br />
7. Chọn L tổ hợp lệnh phổ biến nhất.<br />
Các công cụ chúng tôi sử dụng ở đây bao gồm:<br />
Tập dữ liệu virus:<br />
(i) 200 tệp từ tập dữ liệu virus đã biết<br />
(ii) 500 tệp từ bộ sinh vcl32<br />
IDA Pro: Công cụ giải hợp ngữ để sinh ra các tệp ASM từ các tệp mã độc, mã<br />
của virus: Tệp ASM của tệp virus, bộ chọn opcode: chọn các opcode từ tệp asm và<br />
tạo các mã hợp ngữ logic và các mã hợp ngữ trừu tượng, mã hợp ngữ trừu tượng:<br />
Opcode của tất cả các tệp virus theo các khối cơ sở.<br />
<br />
<br />
<br />
<br />
84 H.S.Tương, T.T.L.Anh, “Sử dụng kỹ thuật khai phá dữ liệu … từ mã lệnh.”<br />
Nghiên cứu khoa học công nghệ<br />
<br />
<br />
<br />
<br />
Hình 3. Tệp dữ liệu virus.<br />
3. KẾT QUẢ ĐẠT ĐƯỢC<br />
Cài đặt thử nghiệm<br />
Mô hình được huấn luyện bởi bộ phân loại mạng noron. Các kết quả được so<br />
sánh giữa bộ 600 tệp và 350 tệp được huấn luyện bởi mô hình NN. Biểu đồ chỉ ra<br />
kết quả đạt được tốt hơn khi sử dụng mô hình NN được huấn luyện với 600 tệp<br />
hơn là khi sử dụng mô hình NN với 350 tệp. Từ biểu đồ ta suy ra rằng mô hình NN<br />
được huấn luyện bởi nhiều tệp hơn thì cho hiệu quả tốt hơn.<br />
<br />
<br />
<br />
<br />
Hình 4. chỉ dẫn kết hợp lại 1. Hình 5. Chỉ dẫn kết hợp loại 2.<br />
<br />
Mô hình được huấn luyện bởi bộ phân loại SVM. Các kết quả được so sánh giữa<br />
việc sử dụng 600 tệp và 350 tệp để huấn luyện mô hình SVM. Biểu đồ sau chỉ ra<br />
rằng khi chúng tôi thực thi phương pháp tìm kiếm đặc trưng tập trụng vào việc<br />
chọn các đặc trưng có thể áp dụng cho các họ khác nhau của virus. Trong bài kiểm<br />
tra thử nghiệm phương pháp của chúng tôi đạt hiệu năng tốt hơn so với các phương<br />
pháp phát hiện virus cũ hơn. Kết quả của chúng tôi chỉ ra rằng hệ thống sử dụng họ<br />
các dấu hiệu đặc trưng cụ thể thực thi cho kết quả tốt hơn.<br />
<br />
4. KẾT LUẬN<br />
<br />
<br />
<br />
Tạp chí Nghiên cứu KH&CN quân sự, Số 34, 12 - 2014 85<br />
Kỹ thuật điện tử & Khoa học máy tính<br />
<br />
Bài báo này giới thiệu về việc nghiên cứu mã độc thông qua việc sử dụng kỹ<br />
thuật khai phá dữ liệu. Chúng tôi đã áp dụng hệ thống phân cấp 4 tầng để tổ chức<br />
nghiên cứu và kết hợp kỹ thuật khai phá dữ liệu trong tầng đầu tiên của phương<br />
pháp phát hiện. Nhiệm vụ của chúng tôi là lựa chọn mô hình phân loại tốt nhất,<br />
chúng tôi so sánh phương pháp lựa chọn đặc trưng và phương pháp bộ phân loại và<br />
cung cấp kết quả thực nghiệm. Chúng tôi đề xuất sử dụng phân tích kết hợp lựa<br />
chọn đặc trưng và khai thác chữ ký tự động. Thuật toán mà chúng tôi nghĩ ra có thể<br />
nhận được khoảng thấp hơn 1,9% tỷ lệ dương tính giả và cao hơn 93% độ chính<br />
xác tổng thể với các mã độc mới.<br />
<br />
TÀI LIỆU THAM KHẢO<br />
<br />
[1]. Steve R. White. Các vấn đề mở trong nghiên cứu virus máy tính. Hội thảo<br />
virus 1998.<br />
[2]. Fred Cohen. Virus máy tính. Luận án tiến sỹ , Đại học nam california, 1985.<br />
[3]. Peter Szor. Bức tranh toàn cảnh về virus máy tính và giải pháp phòng chống.<br />
Xuất bản bởi symatic, New Jersey, 2005.<br />
[4]. Khai phá dữ liệu: www.the-data-mine.com<br />
[5]. K.Dnuggets. Khai phá dữ liệu, khai phá dữ liệu trong môi trường web:<br />
www.kdnuggets.com<br />
[6]. I.H. Witten, E. Frank, Khai phá dữ liệu: các công cụ và kỹ thuật học máy, 2nd<br />
ed.Morgan Kaufmann, 2005.<br />
[7]. M. G. Schultz, E. Eskin, E. Z., và S. J. Stolfo, ”các phương pháp khai phá dữ<br />
liệu để phát hiện mã độc mới.”, IEEE Symp, pp. 38-49, 2007.<br />
<br />
ABSTRACT<br />
IMPLEMENTING DATA MINING FOR<br />
DETECTION OF MALWARE FROM CODE<br />
<br />
In this paper we discuss various data mining techniques that we have successfully<br />
applied for cyber security. This research investigates the use of data mining methods<br />
for malware (malicious programs) detection and proposed a framework as an<br />
alternative to the traditional signature detection methods. These applications include<br />
malicious code detection by mining binary executables by anomaly detection, and<br />
data stream mining. The malicious detection rate of this method is more two times<br />
faster than that of traditional one.<br />
<br />
Keywords: Data Mining, Worm Detection, Static analysis, Diassembly,<br />
Insruction sequences, Malware, Antivirus.<br />
Nhận bài ngày 20 tháng 9 năm 2014<br />
Hoàn thiện ngày 02 tháng 12 năm 2014<br />
Chấp nhận đăng ngày 08 tháng 12 năm 2014<br />
<br />
Địa chỉ: * Khoa An toàn thông tin, HVKT Mật mã; Email: tuonghoangsy@gmail.com.<br />
** Khoa Công nghệ thông tin, ĐH Kinh tế Kỹ thuật công nghiệp;<br />
Email: ttlanh@uneti.edu.vn<br />
<br />
<br />
<br />
86 H.S.Tương, T.T.L.Anh, “Sử dụng kỹ thuật khai phá dữ liệu … từ mã lệnh.”<br />