Chương 1. Abstract Trong nhiều năm qua, cộng đồng bao mật thông tin đã áp dụng nhiều phương pháp truyền thống để ngăn chặn và phát hiện Malware, bao gồm cả chữ ký kỹ thuật sé, chấm điểm phần mềm độc hại, so sánh hash,. Tuy nhiên, với sự thay đổi nhanh chóng của sản phẩm phần mềm độc hại, những phương pháp này trở nên lỗi thời và không phát hiện được các mã độc “0-day”. Sử dụng ML dé phát hiện malware là phương pháp được cộng đồng bảo mật thông tin quan tâm và nghiên cứu bởi một trong các ưu điểm của nó là có thể phát hiện mã độc nhanh chóng và chính xác.
Tuy nhiên, trong lĩnh vực ML nói chung và bài toán sử dung ML dé phát hiện malware nói riêng, các cuộc tan công GAN đã và dang de doa các hệ thông ML bởi tác hại mà nó đề lại là vô cùng lớn. Điều này đặt ra thách thức cho các nhà nghiên cứu và chuyên gia bao mật dé tăng cường tính an toàn của các mô hình ML và ứng dụng của chúng. Có rất nhiều nghiên cứu đã được trình bày để cho thấy tác hại của cuộc tấn công GAN. Trong bài viết này, chúng tôi dựng một mô hình tấn công GAN nhắm vào các models ML phát hiện malware của chúng tôi để cho thấy tác động của cuộc tấn công GAN, từ đó chúng tôi cố gắng tìm cách xây dựng models ML hoàn thiện và đem nó ra thử nghiệm trước cuộc tấn công GAN.
Để xây dựng models ML hoàn thiện, phải trải qua những giai đoạn khó khăn: chuẩn bị dataset, chọn model phù hợp, kiểm tra accuracy của model, kiểm tra robustness của model. Trong bài viết này, chúng tôi cố gắng tim cách xây dựng models ML có accuracy phải từ mức cao trở lên và có robustness cũng phải cao. Ở từng giai đoạn, từ chuẩn bị dataset cho đến huấn luyện models hoàn chỉnh và kiểm tra accuracy cũng như kiểm tra robustness, chúng tôi đã tìm hiểu các nghiên cứu khác nhau và có những giải pháp dé khắc phục khó khăn. Chúng tôi đã dựng cuckoo sandbox và thu thập các file PE benign và malware để chuẩn bị dataset.
Chúng tôi sử dụng 5 thuật toán ML khác nhau dé chon models phù hợp. Để kiểm tra accuracy, chúng tôi huấn luyện 2 models CTGAN để sinh synthetic data. Sau đó, chúng tôi huấn luyện các models ML và thực hiện tan công GAN để kiểm tra robustness của các models. Sau đó chúng tôi ghi lại kết quả thực nghiệm và đưa ra kết luận của mình.
Tổng quan: Với sự phát triển mạnh mẽ của data science và big data, ML đã đang được ứng dụng Tộng rãi trong rất nhiều các lĩnh vực, trong đó có việc sử dụng các thuật toán ML trong việc phát hiện malware. Rất nhiều thuật toán dựa trên ML đã được đề xuất để trích xuất thuộc tính và phát hiện mã độc. Ví dụ, thuật toán [1] đề xuất sử đụng api calls và permission làm thuộc tính dé phân loại, trong khi đó, thuật toán [2] đã sử dụng N-Gram byte làm thuộc tính, mô hình trích xuất thuộc tính [3] đề xuất sử dung 1 máy ảo và thực thi malware trực tiếp dé lay các api calls trong quá trình thực thi làm features dé phát hiện mã độc. Ở bài viết này, chúng tôi dựng cuckoo sandbox đề thực thi file PE và trích xuất api calls để tạo dataset dùng huấn luyện model.
Chúng tôi cần nguồn data lớn cho mục đích kiểm tra accuracy của models và làm giàu dataset. Để có được điều này, chúng tôi có huấn luyện 2 mô hình ctgan — mô hình thứ nhất dé tạo synthetic data cho các mẫu benign và mô hình thứ hai tạo synthetic data cho các mẫu malware. Chúng tôi sử dung 2 models ctgan dé tạo 1 tập testing dataset có kích thước lớn. Các models ML của chúng tôi sẽ được kiểm tra accuracy trên tập testing data này.
Hầu hết các nhà nghiên cứu quan tâm đến hiệu suất của thuật toán (true positive, accurate, AUC,.) mà không chú trọng đến robustness - một trong những yếu tố quan trọng nhất cần được xem xét. Có rất nhiều các thuật toán mang lại độ chính xác cao khi nghiên cứu, tuy nhiên lại không thể ứng dụng trong thế giới thực vì robustness quá thấp khiến cho nó dễ dàng bị tắn công và bị qua mặt, dẫn đến phân loại sai và không phát hiện được mã độc. Nhiều phương pháp đã được đề xuất để cải thiện robustness của hệ thống. Phương pháp model stacking [8] cải thiện hiệu suất model bằng cách tập hợp nhiều dự đoán trên từng model riêng lẻ để đưa ra dự đoán cuối cùng, gắn giống với random forest.
Model stacking thuộc nhóm ensembly model, có khả năng dự đoán dựa trên “sự khôn ngoan của đám đông”. Trong khi đó, một số phương pháp khác thay đổi trên dataset thay vì model. Phương pháp [9] tạo biến thé của 1 class trong dataset dé giúp models tập trung học các feature quan trọng của class đó thay vì các feature không quan trọng. Trong bài viết này, chúng tôi hướng đến robustness cho các models bằng việc thay đổi dataset.
Chúng tôi thử nghiệm 2 phương làm giàu dataset với hy vọng rằng điều nảy sẽ tăng robustness của models. Phương pháp đầu tiên là chúng tôi sử dụng 2 models ctgan đã huấn luyện để sinh synthetic data, và chúng tôi sử dụng bô synthetic data kết hợp với dataset ban đầu dé huấn luyện các models ML. Phương pháp thứ 2 là chúng tôi đề xuất tạo bộ dataset từ dataset ban đầu đã chuẩn bị dé tăng robustness. Để kiểm tra robustness và cho thấy sự hiệu quả của dataset chúng tôi đã tạo, chúng tôi thử nghiệm tan công GAN nhắm vào các models ML.
Gan đây, bằng Generative Adversarial Networks (GAN), kẻ tan công đã có thé tao ra các adversarial examples (AE) dé qua mặt models ML. Tan công [4] đã thêm những nhiễu loạn không thé nhìn thấy bằng mắt thường vào hình ảnh dé khiến mạng neural network không thể phân biệt được hình ảnh. Cuộc tấn công [5] không gây nhiễu các giá trị cường độ pixel mà thay vào đó đã đề xuất 1 phương pháp mới là Adversarial morphing attack ( a. Amora) nhằm biến đổi hình ảnh và đánh lừa các models.
Trong thực tế, kẻ tan công thường không có quyền truy cập vào kiến trúc của model; khi này model mục tiêu là 1 hộp đen đối với kẻ tan công, các cuộc tan công ma tạo các AE nhắm đánh lừa các hộp đen được gọi là tấn công black box GAN. Một số cuộc tấn công black box GAN nhắm vào các hệ thống phòng thủ đã được dé xuất. IDSGAN [6] đã được đề xuất dé tạo ra các AE chống lại các hệ thống IDS, bao gồm bộ tạo (generator), bộ phân biệt (discriminator) và black-box IDS. Bộ phân biệt được sử dụng dé mô phỏng black-box và bộ tao ding dé tạo mẫu AE.
MalGAN [7] đã được đề xuất để tạo ra các mẫu thử PE malware qua mặt models phát hiện mã độc bằng api calls. Mô hình MalGAN sử dụng forward neural network làm bộ tạo, substitute detector làm bộ phận biệt, random noise và vector api calls của malware lam input để tạo mẫu malware. Trong bài viết nay, chúng tôi đã thực hiện cuộc tấn công black-box GAN nhắm vào các models ML mà chúng tôi đã train để xem tác động của cuộc tan công cũng như kiểm tra robustness của models. Nội dung của các phần còn lại như sau: Chương 3 trình bày mô hình feature extract và cách thức chúng tôi thu thập và xử lý dataset, Chương 4 trình bày việc huấn luyện mô hình ctgan dé tạo synthetic dataset, Chương 5 trình bày việc chúng tôi huấn luyện models ML, bao gồm models được huấn luyện trên tập dataset ban đầu (models type I), models được huấn luyện trên tập dataset được tạo bởi mô hình ctgan (models type II) và models được huấn luyện trên tập dataset mà chúng tôi đã tạo (models type III), Chương 6 trình bày tân công GAN và mô hình tan công mà chúng tôi đã sử dụng.
Chương 7 trình bày kết qua tan công black — box GAN nhằm vào các models ML mà chúng tôi đã train và kết luận của chúng tôi và kết luận. Chương 8 trình bày hướng phát triển tiếp theo (nêu có thể). Chương 9 là những tài liệu đã tham khảo. Feature extraction: Trong bai toán sử dụng ML để phát hiện malware, feature extraction là một bước quan trọng trong quá trình tiền xử lý dữ liệu.
Feature extraction là quá trình chuyển đổi các dé liệu từ định dạng ban đầu sang một tập các đặc trưng (features) có thé đưa vào một mô hình ML dé huấn luyện. Để dataset có tính đa dạng và không bị overfitting vì quá tương đồng, chúng tôi đã thu thập nhiều loại file PE benign và malware khác nhau. Các file malware chúng tôi thu thập từ nhiều nguồn: github, vxunderground, VirusShare,. Chúng tôi sử dụng nhiều loại malware khác nhau như: trojan, downloader, RAT, Ransome, Wannacry, Coin miner,.
Chúng tôi can I giải pháp feature extraction phù hợp dé lấy ra những features từ các file PE nay. Việc lựa chọn những feature nào cần lấy rất quan trong vì nó ảnh hưởng lớn đến hiệu qua của mô hình phát hiện malware. Nếu lựa chọn sử dụng những thuộc tính bừa bãi, có thé tạo ra 1 bộ dataset đồ sé nhưng lại không phản ánh tốt tính chất các file PE và thêm vào đó là chỉ phí huấn luyện quá lớn, có thể thấy để huấn luyện models ML tốt thì bước chuẩn bị dataset là cực kỳ quan trọng. Trong những nghiên cứu có sẵn, features có thê được trích xuất bằng phương pháp phân tích cú pháp tĩnh để lấy ra các dòng lệnh đặc trưng, key word đặc trưng, DLL imports, api calls được sử dung,.
Hiệu quả của phương pháp này là nhanh chóng, chi phí trích xuất không lớn, các features thé hiện tốt tinh chất các file PE, tuy nhiên, sử dụng cách này đôi khi sẽ không chính xác bởi thực chất, các file PE có thể bị thêm những câu lệnh rác, thay đổi key word và các api call đôi khi xuất hiện trong mã nguồn nhưng không chắc là có thật sự được sử dụng. Những rủi ro này có thé ảnh hưởng đến độ chính xác của việc features extraction và không miêu tả chính xác tính chất của các file PE. Một số đề xuất khác cho việc feature extraction là có thé sử dụng phương pháp xử lý ngôn ngữ tự nhiên dé trích xuất thuộc tính. Ví dụ, sử dụng các thuật toán word embedding để trích xuất N-gram bytecode của file binary hoặc các thao tác hệ thống máy tính và chuyển thành các vector số thực để có thể được sử dụng làm train dataset cho các models ML.