JOURNAL OF SCIENCE OF HNUE DOI: 10.18173/2354-1075.2015-0066<br />
Educational Sci., 2015, Vol. 60, No. 7A, pp. 189-195<br />
This paper is available online at http://stdb.hnue.edu.vn<br />
<br />
<br />
<br />
<br />
MÔ HÌNH KẾT HỢP GIỮA HỌC MÁY VÀ GIẢI THUẬT DI TRUYỀN<br />
TRONG PHÁT HIỆN MÃ ĐỘC<br />
<br />
Lương Thế Dũng<br />
Khoa An toàn Thông tin, Học viện Kỹ thuật Mật mã<br />
<br />
Tóm tắt. Bài báo đề xuất một phương pháp phân lớp mã độc hiệu quả dựa trên sự kết hợp<br />
giữa kĩ thuật phân lớp dữ liệu với giải thuật di truyền. Quá trình thực nghiệm và phân tích<br />
trên cùng một tập dữ liệu huấn luyện đã chỉ ra rằng phương pháp đã đề xuất cho kết quả<br />
phân lớp chính xác hơn phương pháp phân lớp khi chưa kết hợp với giải thuật di truyền.<br />
Từ khóa: Mã độc, phát hiện mã độc, học máy, giải thuật di truyền, cây quyết định.<br />
<br />
1. Mở đầu<br />
Mã độc đang là một trong những hiểm họa lớn nhất đối với các hệ thống thông tin trong<br />
thời kì hiện nay. Cùng với sự phát triển mạnh mẽ và tinh vi của các loại mã độc, thì phát hiện mã<br />
độc đã trở thành một trong những vấn đề quan trọng nhất trong lĩnh vực An toàn thông tin.<br />
Các phương pháp phát hiện mã độc truyền thống thường sử dụng kĩ thuật đối sánh mẫu,<br />
việc phát hiện được dựa trên một cơ sở dữ liệu các mẫu về mã độc đã định nghĩa trước, vì vậy<br />
có độ chính xác cao cũng như ít đưa ra các cảnh bảo nhầm. Tuy nhiên, với sự bùng nổ mạnh mẽ<br />
của mã độc, các cơ sở dữ liệu mẫu mã độc ngày càng có kích thước lớn hơn, nên việc sử dụng<br />
phương pháp này có các hạn chế là làm giảm hiệu năng của hệ thống và không thể phát hiện được<br />
các mã độc mới chưa được định nghĩa trong cơ sở dữ liệu hoặc các mã độc đa hình, siêu đa hình.<br />
Để khắc phục các hạn chế trên, nhiều phương pháp phát hiện mã độc mới đã được đề xuất, đặc<br />
biệt là phương pháp dựa trên các mô hình học máy và khai phá dữ liệu như: Phương pháp dựa trên<br />
Mạng Bayes [10], Máy Vecto hỗ trợ [12] và Cây quyết định [13]. Tuy nhiên các phương pháp này<br />
gặp phải một số hạn chế nhất định trong việc phân loại chính xác mã độc khi các mã độc được<br />
lai ghép, hoặc có sử dụng các giải thuật thông minh, vấn đề này đã được nhiều tác giả đề cập như<br />
trong [1,15].<br />
Ngoài ra sự biến đổi của các kĩ thuật thiết kế mã độc như làm rối mã, sử dụng mã hóa mã<br />
nguồn hay nén mã nguồn. . . làm cho các đặc tính của mã độc khó bị phát hiện trong mã nguồn.<br />
Do đó, các kĩ thuật khai phá dữ liệu thông thường không còn hiệu quả trong việc xác định loại mã<br />
độc nếu chỉ dựa trên tập đặc tính dấu hiệu đại diện duy nhất, dẫn đến việc phân tích và xử lí mã<br />
độc trở nên khó khăn hơn [1]. Bài báo này đưa ra một kĩ thuật phân loại mã độc mới, hiệu quả hơn<br />
<br />
Ngày nhận bài: 8/7/2015. Ngày nhận đăng: 15/11/2015.<br />
Liên hệ: Lương Thế Dũng, e-mail: ltdung@bcy.gov.vn.<br />
<br />
<br />
<br />
189<br />
Lương Thế Dũng<br />
<br />
<br />
dựa trên việc kết hợp giữa kĩ thuật phân lớp cây quyêt đinh và giải thuật di truyền, áp dụng trên bộ<br />
dữ liệu các cuộc gọi hàm API của chương trinh mã độc.<br />
Nội dung bài báo được trình bày gồm 5 phần: Phần2 - trình bày việc phân tích và trích rút<br />
dữ liệu các hàm API; Phần 3 - trình bày phương pháp kết hợp giưa kĩ thuật phân lớp và giải thuật<br />
di truyền trong việc phát hiện mã độc; Phần 4 - trình bày kết quả thử nghiệm và đánh giá phương<br />
pháp; Phần 5 - kết luận của bài báo.<br />
<br />
2. Nội dung nghiên cứu<br />
2.1. Phát hiện mã độc dựa trên mô hình học máy<br />
2.1.1. Xây dựng tập dữ liệu học từ các cuộc gọi hàm API của mã độc<br />
Dù mã nguồn của chương trình độc hại có bị biến đổi và sử dụng kĩ thuật nào đi nữa thì một<br />
nguyên tắc chung là chúng đều phải thực thi các hành vi mục tiêu chẳng hạn như: Sao chép tệp,<br />
gửi gói tin,. . . Hầu hết các hành vi này đều được thực hiện thông qua các lời gọi hàm API, chính<br />
vì vậy, việc phân tích các lời gọi hàm API là một kĩ thuật quan trọng trong việc phát hiện và phân<br />
loại mã độc. Một số phương pháp phân tích các lời gọi API được đưa ra trong [6 - 8].<br />
Bước 1: Giải nén các phần mềm độc hại<br />
Các phần mềm độc hại thường thực hiện việc che dấu bằng kĩ thuật đóng gói nhằm chống<br />
lại quá trình dịch ngược chương trình, dẫn đến rất khó bị phát hiện, vì vậy bước này sử dụng các<br />
công cụ và kinh nghiệm để thực hiện các giải nén toàn bộ phần mềm nhằm xác định chính xác các<br />
thông tin của các tệp thực thi.<br />
Bước 2: Trích rút các cuộc gọi hàm API<br />
Bước này sử dụng một công cụ dịch ngược phần mềm tự động nhận dạng ra các lời gọi API<br />
cho các trình biên dịch khác nhau. Công cụ này sau đó thực hiện trích xuất các thông tin từ dạng<br />
nhị phân. Mỗi một phần sẽ bao gồm các thông tin khác nhau về nội dung nhị phân như tất cả các<br />
hàm API, chiều dài, các mã lệnh (OP), địa chỉ của chúng và các địa chỉ khối. Danh sách các API<br />
được tham khảo từ Microsoft - (MSDN) được sử dụng xác định các hàm API windows. Để liệt kê<br />
tất cả các cuộc gọi API có liên quan đến mã độc hại, việc thu thập được thực hiện bằng cách sử<br />
dụng các opcodes của các mã lệnh Jump và lệnh Call như là một kiểu hàm.<br />
Bước 3. Lựa chọn thuộc tính<br />
Bài báo này sử dụng phương pháp trích chọn các thuộc tính là các hàm API của Pujari và<br />
các cộng sự [8]. Mục đích là để xác định một bộ các cuộc gọi API phổ biến nhất trong các phần<br />
mềm độc hại và một bộ các cuộc gọi API phổ biến đối với các phần mềm không phải độc hại, việc<br />
trích rút này được thực hiện thông qua quá trình lựa chọn những bộ hàm API có tần suất xuất hiện<br />
nhiều nhất.<br />
2.1.2. Xây dựng bộ phân lớp mã độc dựa trên học máy<br />
Sau khi đã có tập dữ liệu, một phương pháp học máy sẽ được sử dụng để thực hiện quá trình<br />
học và đưa ra các bộ phân lớp. Bộ phân lớp này sau đó được dùng để dự đoán xác định lớp mã độc<br />
của một chương trình chưa biết. Theo Bishop [7], quá trình học này được mô tả như việc đưa ra<br />
một kết luận từ kinh nghiệm sẵn có. Dưới đây là một số mô hình học máy so và sự sánh tương đối<br />
<br />
<br />
190<br />
Mô hình kết hợp giữa học máy và giải thuật di truyền trong phát hiện mã độc<br />
<br />
<br />
giữa các mô hình trong việc thực thi phân lớp dữ liệu nói chung và phân lớp mã độc nói riêng.<br />
Có thể thấy các thuật toán đều có những ưu nhược điểm riêng, trong bài báo chúng tôi lựa<br />
chọn giải thuật cây quyết định kết hợp với giải thuật di truyền để nâng cao hiệu quả và độ chính<br />
xác của hệ thống.<br />
<br />
2.2. Ứng dụng cây quyết định và thuật giải di truyền trên tập dữ liệu hàm API<br />
để phân loại mã độc<br />
Giải thuật di truyền là giải thuật được thiết kế để giải các bài toán tối ưu tổ hợp và tìm kiếm<br />
dựa trên việc mô phỏng quá trình chọn lọc và tiến hóa trong tự nhiên. Thuật toán di truyền chuẩn<br />
được biểu diễn bằng các phép lai ghép và đột biến giữa các chuỗi nhị phân. Thuật toán di truyền<br />
giúp cho việc tìm kiếm các phương án giảm thiểu so với việc duyệt qua tất cả các tập ràng buộc<br />
của dữ liệu, thường được sử dụng để tiếp cận giải các bài toán tìm kiếm số, chẳng hạn sinh ra các<br />
phương án tối ưu cho bài toán tìm kiếm [19]. Trong giải thuật di truyền, một dãy các chuỗi được<br />
mã hóa thành các phương án chấp nhận đươc cho một bài toán tối ưu và được tiến hóa theo hướng<br />
ngày càng tốt hơn. Ta có thể mô tả giải thuật di truyền sơ bộ như sau:<br />
<br />
Sinh ra phương án khởi đầu<br />
G(0);<br />
Đánh giá độ thích nghi của G(0);<br />
t := 0;<br />
Bước lặp<br />
t := t + 1;<br />
Sinh ra G(t) từ G(t − 1);<br />
Đánh giá độ thích nghi của G(t);<br />
Cho đến khi tìm được phương án cần tìm<br />
<br />
Với tập các dữ liệu về hàm API của chương trình ứng dụng đã được thu thập và tiền xử lí,<br />
thuật toán di truyền được sử dụng trong bài báo này nhằm cải tiến việc phân loại các mã độc khi<br />
chúng sử dụng kĩ thuật che dấu. Bằng việc kết hợp thuật toán di truyền với kĩ thuật học máy có thể<br />
cho phép phát hiện chính xác các mã độc mới chưa có trong cơ sở dữ liệu mẫu, bao gồm cả các<br />
dạng mã độc lai giữa các loại khác nhau, ví dụ: Những mã độc hoạt động giống cả Logic bomb<br />
và Trojan. Bằng cách mô phỏng sự lai ghép giữa các loại mã độc như toán tử lai và hoán vị trong<br />
thuật toán di truyền [20]. Kĩ thuật mới này có thể tiên đoán sự xuất hiện của các mã độc, phát hiện<br />
được các mã độc sử dụng các kĩ thuật che dấu phức tạp.<br />
Các mã độc được phân tích và trích rút thành dãy các hàm API, được tiền xử lí và thu được<br />
một dãy nhị phân. Ở đây ta coi mỗi dãy nhị phân đại diện cho dãy các hàm API là một nhiễm sắc<br />
thể của mã độc. Để thực hiện thuật toán di truyền, đầu tiên ta sinh một phương án khởi đầu bằng<br />
cách chọn một mẫu trong bộ dữ liệu mẫu, tiến hành lai ghép các đoạn trong mẫu. Sau quá trình lai<br />
ghép ta thu được một thế hệ con, mỗi thế hệ này cần phải được đánh giá bởi một giá trị thích nghi.<br />
Ở đây ta định nghĩa hàm thích nghi của mỗi cá thể như sau:<br />
<br />
<br />
191<br />
Lương Thế Dũng<br />
<br />
<br />
<br />
Thuật toán Tốc độ Độ chính xác Ưu điểm Nhược điểm<br />
iệu quả khi biến độc<br />
Hàng xóm lập có nhiều hơn hai Độ phức tạp tính toán<br />
Chậm Trung bình<br />
K-gần nhất giá trị và tập dữ liệu cao<br />
lớn<br />
Các kết quả có tính hồi<br />
Máy vector quy và dày, hiệu quả Chi phí và thời gian<br />
Nhanh Cao<br />
hỗ trợ tốt hơn trong phân lớp huấn luyện dài<br />
văn bản, đoạn mẫu<br />
Nhạy cảm với những<br />
Nhanh, dễ hơn với các<br />
Na¨ıve Bayes Rất nhanh Cao thuộc tính có tương<br />
dữ liệu bền vững.<br />
quan<br />
Dễ hiểu, dễ sinh luật Xảy ra sai lầm ở các<br />
Cây quyết<br />
Rất nhanh Cao và giảm thiểu độ phức mức cao hơn do các<br />
định<br />
tạp tính toán kết quả sai ở mức dưới<br />
<br />
Trong một chuỗi nhị phân đại diện cho sự xuất hiện của các hàm API, mỗi hàm API ta gán<br />
nó các giá trị trọng số wij, mỗi trọng số đại diện cho giá trị xác suất xuất hiện của một hàm API thứ<br />
j trong một loại mã độc thứ i : i = 1(V irus), i = 2(T rojan), i = 3(W orm), i = 4(Backdoor)<br />
và i = 5 (Normal - phần mềm không độc hại). Tổng các trọng số bằng 1 cho mỗi hàm API trong<br />
mỗi mấu được trích xuất. Khi đó ta định nghĩa hàm thích nghi của cá thể X là:<br />
P<br />
wij<br />
F (X) = max<br />
số vị trí có giá trị là 1<br />
Sắp xếp cá thể X vào lớp i, khi đó các cá thể được kết luận là phần mềm thông thường sẽ<br />
không tiếp tục sinh sản nữa, còn các cá thể thuộc lớp mã độc sẽ tiếp tục được lai ghép và phát sinh<br />
các thế hệ mới.<br />
Sau quá trình trên, ta thu được một tập dữ liệu mẫu được phân loại di truyền. Tập mẫu này<br />
sau đó được sử dụng để để học bộ phân lớp dựa trên thuật toán học cây quyết định để sử dụng cho<br />
quá trình phân loại các mẫu mới chưa biết. Quá trình phân tích bằng thực nghiệm cho thây thuật<br />
toán cây quyết định C4.5 cho hiệu quả cao hơn các thuật toán cây quyết định khác.<br />
<br />
2.3. Thử nghiệm<br />
Để thử nghiệm mô hình đề xuất, bài báo sử dụng bộ dữ liệu học bao gồm 1000 mẫu, trong<br />
đó 600 mẫu là các tệp chứa mã độc lấy từ kho mã độc vxheaven.com và 200 mẫu là các tệp chương<br />
trình không nhiễm mã độc lấy từ windows system. Dữ liệu kiểm thư bao gồm 200 mẫu hỗn hợp,<br />
trong đó có 50 mẫu là tệp không nhiễm mã độc và 150 mẫu là tệp nhiễm mã độc. Thực hiện các<br />
thực nghiệm với sự thay đổi với số lượng mẫu khác nhau của tập huấn luyện lấy từ tập đã xây dựng<br />
cho thấy kết quả chính xác của phương pháp như bảng dưới đây:<br />
<br />
<br />
<br />
192<br />
Mô hình kết hợp giữa học máy và giải thuật di truyền trong phát hiện mã độc<br />
<br />
<br />
<br />
Số mẫu Độ chính xác của mô hình<br />
400 93.8%<br />
480 94.1%<br />
560 95.6%<br />
640 97.3%<br />
720 97.5%<br />
<br />
Dưới đây là biểu đồ so sánh kết quả của việc phân lớp sau khi kết hợp cây quyết định và<br />
giải thuật di truyền với việc chỉ sử dụng cây quyết định:<br />
<br />
<br />
<br />
<br />
Kết quả cho thấy khi kích thước của tập dữ liệu càng lớn thì độ chính xác của phương pháp<br />
đã đề xuất trong bài báo đưa ra kết quả càng tốt hơn phương pháp chỉ sử dụng thuật toán cây quyết<br />
định cho quá trình học.<br />
<br />
3. Kết luận<br />
Bài báo đề xuất phương pháp tốt hơn cho việc phát hiện và phân loại mã độc dựa trên sự kết<br />
hợp kĩ thuật cây quyết định và giải thuật di truyền. Kết quả thử nghiệm cho thấy độ chính xác cao<br />
hơn khi chỉ sử dụng một mình giải thuật cây quyết định. Phương pháp đã đề xuất có thể áp dụng<br />
cho việc phát hiện và phân lớp các mã độc mới và các mã độc lai ghép dựa trên dữ liệu các cuộc<br />
gọi hàm API của chương trình mã độc.<br />
TÀI LIỆU THAM KHẢO<br />
<br />
[1] OECD Ministerial Meeting Report, Malicious Software (Malware): A Security Threat<br />
to the Internet Economy, Korean Communication Commision, Final draft, May 2007,<br />
http://itlaw.wikia.com/wiki/OECD.<br />
<br />
193<br />
Lương Thế Dũng<br />
<br />
<br />
[2] Vinod, P. Laxmi, V. and M. S. Gaur. 2009, Survey on Malware Detection Methods, In<br />
Proceedings of the Hacker 2009, pp. 74-79.<br />
[3] Zhu Kenan, Yin Baolin, 2012, Malware Behavior Classification Approach Based on Naive<br />
Bayes, Journal of Convergence Information Technology (JCIT) Volume7, pp. 218-315.<br />
[4] Gavrilut, D., Cimpoesu, M.; Anton, D.; Ciortuz, L. 2009, Malware Detection Using<br />
Perceptrons and Support Vector Machines, Future Computing, Service Computation,<br />
Cognitive, Adaptive, Content, Patterns.<br />
[5] Konrad Rieck, Philipp Trinius, Carsten Willems, and Thorsten Holz, 2011, Automatic<br />
Analysis of Malware Behaviorusing Machine Learning, Journal of Computer Security (JCS),<br />
19 (4), 639–668, IOSPress.<br />
[6] Manoun Alazab, Robert Layton, Sitalakshmi Venkataraman, Paul Watters, 2013, Malware<br />
Detection Based on Structural and Behavioural Features of API Calls, In ternational Journal<br />
of Electronic Security and Digital Forensics Volume 5 Issue 2, p. 90-109.<br />
[7] Veeramani R, Nitin Rai, 2012, Windows API based Malware Detection and Framework<br />
Analysis, International Journal of Scientific & Engineering Research Volume 3, Issue 3.<br />
[8] Mamoun Alazab, Sitalakshmi Venkatraman, Paul Watters, Moutaz Alazab, 2011, Zero-day<br />
Malware Detection based on Supervised Learning Algorithms of API call Signatures,<br />
Proceedings of the 9-th Australasian Data Mining Conference (AusDM’11), Ballarat,<br />
Australia, pp. 171-182.<br />
[9] Wang. C, Pang. J, Zhao. R, Fu., Liu. X, 2009, Malware Detection Based on Suspicious<br />
Behavior Identification; First International Workshop on Education<br />
[10] Technology and Computer Science, pp. 198-202. Wuhan, Hubei: IEEE.<br />
[11] Dewan Md Farid, Nouria Harbi, Mohammad Zahidur Rahman., 2010, Combining Naive<br />
Bayes and Decision Tree for adaptive Intrusion Detection. Vol. 2, No. 2, pp. 12–25.<br />
[12] Mezghani, D., Boujelbene, S., Ellouze, N., 2010, Evaluation of SVM Kernels and<br />
Conventional Machine Learning Algorithms for Speaker Identification, International Journal<br />
of Hybrid Information Technology, Vol. 3, No. 3, pp. 23-34.<br />
[13] Komashinskiy, D., Kotenko, I., 2010, Malware Detection by Data Mining Techniques Based<br />
on Positionally Dependent Features, InternationalConference on Parallel, Distributed and<br />
Network-Based Processing, pp. 617-623. Pisa.<br />
[14] Hall, P., Park, B., Samworth, R., 2008, Choice of neighbor order in nearest-neighbor<br />
classification, An Official Journal of the Institute of Mathematical Statistics, Vol. 36, No.<br />
5, pp. 2135–2152.<br />
[15] Mohd Najwadi Yusoff, Aman Jantan, 2011, Optimizing Decision Tree in Malware<br />
Classification System by using Genetic Algorithm, International Journal on New Computer<br />
Architectures and Their Applications (IJNCAA) 1(3): 694-713<br />
[16] Shrenik Shah, DNA Computation and Algorithm Design, Harvard University ’09 Cambridge,<br />
<br />
194<br />
Mô hình kết hợp giữa học máy và giải thuật di truyền trong phát hiện mã độc<br />
<br />
<br />
MA 02138<br />
[17] Noreen, S., Murtaza, S., Shafiq, M., Farooq, M. 2009, Evolvable Malware; 11th Annual<br />
Conference on Genetic and Evolutionary Computation. pp. 1569–1576. Montreal, Quebec,<br />
Canada: ACM.<br />
[18] Preda, M., Christodorescu, M., Jha, S., Debray, S.; 2008, A Semantics-Based Approach to<br />
Malware Detection; Transactions on Programming Languages and Systems, Vol 30, No 5, pp<br />
25-54.<br />
[19] D. Krishna Sandeep Reddy, Arun K. Pujari, 2006, N-gram analysis for computer virus<br />
detection, Journal in Computer Virology, 231-239, Volume 2, Number 1, pp. 231-239.<br />
[20] Mehdi, S., Tanwani, A., Farooq, M.; 2009, IMAD:In-Execution Malware Analysis and<br />
Detection; 11th Annual Conference on Genetic and Evolutionary Computation. New York,<br />
USA: ACM, pp. 1553-1560.<br />
[21] Mohamad Fadli Zolkipli, Aman Jantan.; 2010, Malware Behavior Analysis: Learning and<br />
Understanding Current Malware Threats; Second International Conference on Network<br />
Applications, Protocols and Services. pp. 218–221. Kedah, Malaysia: IEEE.<br />
<br />
ABSTRACT<br />
<br />
Combining machine learning and generic algorithms for malware detection<br />
<br />
In this paper the author proposes a novel method of classifying malwares that combines<br />
data classification techniques and genetic algorithms. Experiments done show that classification<br />
using the proposed method is better than the classification obtained when genetic algorithms are<br />
not used.<br />
Keywords: Malware, Malware detection, Machine learning, Genetic algorithm,<br />
Decision tree.<br />
<br />
<br />
<br />
<br />
195<br />