Phát hiện malware dựa trên header của tập tin PE sử dụng Machine learning
T M TẮT
Ngày nay, khách hàng đang yêu cầu những phần mềm đòi hỏi cập nhật thường xuyên hay sửa lỗi
trong thời gian ngắn, những mô hình phát triển phần mềm cổ điển không phù hợp để đáp ứng
những nhu cầu này, vì thế Agile đang dần trở nên thịnh hành và phổ biến hơn, ở Việt Nam cũng
không ngoại lệ, mô hình Agile đang ngày một phát triển và các công ty phần mềm đang ngày
càng chú ý đến Agile. Bài báo này đề cập những phương pháp Agile được sử dụng nhiều nhất, ích
lợi của việc sử dụng Agile, lợi thế của Agile trước Waterfall và đánh giá lợi ích thực tế của việc áp
dụng Agile thông qua hai trường hợp Zonmob và Cisco
Trang 1
Trang 2
Trang 3
Trang 4
Trang 5
Trang 6
Bạn đang xem tài liệu "Phát hiện malware dựa trên header của tập tin PE sử dụng Machine learning", để tải tài liệu gốc về máy hãy click vào nút Download ở trên
Tóm tắt nội dung tài liệu: Phát hiện malware dựa trên header của tập tin PE sử dụng Machine learning
hoạt động trên môi trường hệ điều hành Windows, nó có thể là các tập tin thực thi (executable files) hoặc là các tập tin chứa mã nhị phân được sử dụng bởi các tập tin thực thi khác. Vùng thông tin định dạng (format information) của tập tin PE [1] chứa những thông tin cần thiết mà hệ điều hành sử dụng để điều khiển việc thực thi của tập tin khi chúng được nạp vào main memory. Tất cả các tập tin PE đều có cùng cấu trúc và cùng số lượng trường (field) trong PE header, nên chúng ta có thể trích xuất các field này, để làm tập đặc trưng (feature) đầu vào cho quá trình xây dựng mô hình phân loại malware của các tập tin này theo cách sử dụng các thuật toán Machine learning. Chúng ta đều biết, thông tin chứa trong PE header của các tập tin PE lành tính (benign) đều ở dạng đã được chuẩn hóa bởi hệ điều hành Windows. Nếu một tập tin PE nào đó mà dữ liệu chứa trong các field trong PE header của nó có sự “sai khác” so với các tập tin PE lành tính thì nhiều khả năng đó là tập tin malware. Như vậy, chúng ta có thể 2 phân loại một tập tin PE, là tập tin malware hay tập tin lành tính, bằng cách xem xét dữ liệu chứa trong các field của PE header của nó. Vì số lượng field trong PE header là lớn, dữ liệu tại các field lại có quan hệ với nhau, hầu hết các field đều có thể bị làm “sai khác”, ở những mức độ khác nhau nên bài toán phát hiện malware ở đây cần tiếp cận theo hướng sử dụng các thuật toán Machine learning thì mới đạt được độ chính xác cao nhất có thể [1], [2], [4], [5], [6]. Chúng ta có thể thu thập một lượng lớn các mẫu PE header của các tập tin lành tính và tập tin malware, sau đó trích xuất các đặc trưng của mỗi field, rồi so sánh để tìm ra sự khác biệt đáng kể nhất giữa tập tin lành tính và tập tin malware, làm cơ sở cho việc phân loại về sau. Đây là hướng tiếp cận mà chúng tôi thực nghiệm và đề xuất trong bài bào này. 2. Các nghiên cứu liên quan Hiện có khá nhiều hướng tiếp cận cho bài toán phân loại malware sử dụng kỹ thuật Machine learning. Trong phần này, chúng tôi điểm lại những kết quả, về độ chính xác, về tỉ lệ phát hiện và tốc độ huấn luyện, mà một số tiếp cận được công bố gần đây đạt được. Trong [5], Rushabh Vyah và cộng sự đã đề xuất một quy trình phát hiện malware trong tập tin PE trên môi trường mạng. Họ áp dụng 4 thuật toán học có giám sát khác nhau, Decision Tree, K-NN, SVMs và Random Forest, trên cùng một tập dữ liệu, chỉ với 28 đặc trưng (feature) tĩnh. Random Forest là mô hình mà Vyas chọn, nó đạt tỉ lệ phát hiện malware - backdoor, virus, trojan và worn - trung bình là 98.7%, tỷ lệ phát hiện dương tính là 1.8%. Tiếp cận được đề xuất bởi Hellal và Lotfi Ben Romdhane [2] là sự kết hợp giữa 2 kỹ thuật, phân tích tĩnh và khai phá đồ thị (static analysis – graph mining). Họ đề xuất một thuật toán mới có thể tự động trích xuất các mẫu hành vi malware có tính phổ biến và khác biệt, nhưng lặp lại, từ các tập tin nghi ngờ. Đề xuất này quan tâm đến việc tiết kiệm dung lượng bộ nhớ và giảm thời gian quét bằng cách tạo ra một lượng chữ ký (signature) hạn chế, điều này không như các phương pháp hiện có. Tiếp cận trong [2] đạt tỷ lệ nhận dạng cao và tỷ lệ dương tính giả thấp với độ chính xác 92%. Jinrong Bai và cộng sự đề xuất một hướng tiếp cận cho việc phát hiện malware trong các tập tin PE bằng cách khai phá thông tin định dạng của các tập tin này [1]. Kỹ thuật “in-depth analysis” được nhóm tác giả chọn để phân tích vùng thông tin định dạng của các tập tin PE. Đầu tiên, họ cho trích xuất ra 197 đặc trưng từ vùng thông tin định dạng này, sau đó thực hiện việc chọn đặc trưng để giảm số lượng xuống còn 19 hoặc 20 đặc trưng. Tập đặc trưng được chọn sẽ được training bởi 4 thuật toán phân lớp J48, Random Forest, Bagging và Adaboost. Kết quả thực nghiệm cho thấy, tiếp cận này đạt độ chính xác cao nhất, 99.1%, ở thuật toán phân loại Random Forest. Yibin Liao khai thác cấu trúc của các tập tin PE theo một hướng tiếp cận khác [4]. Ông trích xuất đặc trưng của mỗi trường trong header, rồi so sánh để tìm ra sự khác biệt có ý nghĩa nhất giữa các tập tin malware và tập tin lành tính. Và trích xuất các icon trong tập tin PE để tìm ra các icon phổ biến (prevalent) nhất, có tính lừa bịp nhất (misleading) từ các tập tin malware. Yibin Liao thực nghiệm tiếp cận đề xuất trên một tập dữ liệu có 6875 mẫu, trong đó gồm 5598 mẫu header của tệp tin độc hại và 1237 mẫu header của tệp tin thực thi lành tính. Kết quả cho thấy tiếp cận này đạt tỷ lệ phát hiện hơn 99% với ít hơn 0,2% dương tính giả trong vòng chưa đầy 20 phút. Theo tác giả, có thể phát hiện malware bằng cách chỉ xem xét một vài đặc trưng/trường chính trong PE header của các tập tin PE hoặc xem xét các prevalent icon, các misleading icon được nhúng trong các tập tin này. Điều này giúp rút ngắn được thời gian phát hiện malware trên các tập tin PE. Hiện chúng tôi chưa tìm thấy một phương pháp, một cách tiếp cận hay một mô hình được nào cho là chung nhất, là tối ưu nhất để phát hiện và phân loại malware sử dụng Machine learning đạt độ chính xác cao nhất. Vì thế, chúng tôi đề xuất một cách tiếp cận khác, tập trung vào các trường có ảnh hưởng cao trong phần PE header của các tập tin PE, như là sự đóng góp nhỏ cho hướng nghiên cứu này. 3 3. Tiếp cận đề xuất Tiếp cận của chúng tôi được thực nghiệm trên tập dữ liệu (dataset) khá lớn, gồm 140.297 mẫu PE header của tập tin PE, trong đó có 44.214 mẫu malware và 96.083 mẫu lành tính. Dataset này được chúng tôi thu thập từ website virusshare.com và các tập tin PE lành tính trên môi trường hệ điều hành Windows. Chúng tôi sử dụng các thuật toán Machine learning như: AdaBoost, Gradient Boosting, Decision Tree, Extra Tree, Random Forest, để xây dựng các mô hình phân loại tập tin PE - tập tin malware hay tập tin lành tính - từ dataset này theo hướng chỉ dựa vào đa số các trường trong phần PE header của các tập tin này. Mục tiêu thực nghiệm là để chọn ra một mô hình phân loại Machine learning sao cho có độ chính xác cao với thời gian huấn luyện chấp nhận được. Với những thông tin có được từ việc khảo sát các field trong phần PE Header của các tập tin này, chúng tôi tiến hành loại bỏ các field ít bị tác động bởi malware nhất, như LoaderFlags, NumberOfRvaAndSizes, SizeOfHeapCommit, SizeOfHeapReserve ra khỏi dataset, chỉ giữ lại 44 field. Điều này hoàn toàn trùng hợp với kết quả mà chúng tôi có được khi sử dụng lần lượt thuật toán Random Forest và Extra Tree để đánh giá mức độ ảnh hưởng của các field, chính xác là các feature, trong PE header của 140.297 mẫu PE header trong dataset. Bảng sau cho thấy mức độ ảnh hưởng của các field theo Random Forest: Bảng 1: Mức độ ảnh hưởng các field trong PE header của các tập tin PE theo thuật toán Random Forest T T Trường trong PE header Mức độ ảnh hưởng 1 ImageBase 0.193689 2 SizeOfStackReserve 0.103419 3 VersionInformationSize 0.075304 4 MinorImageVersion 0.065888 5 ResourcesMinSize 0.058338 6 Characteristics 0.052923 7 ExportNb 0.052831 8 Subsystem 0.049870 9 MajorOSVersion 0.045429 10 ResourcesNb 0.037733 41 SectionsMeanVirtualsize 0.001965 42 SectionMaxRawsize 0.001697 43 SectionsMeanRawsize 0.001697 44 ImportsNbOrdinal 0.001600 45 LoadConfigurationSize 0.001275 46 FileAlignment 0.001175 47 SectionAlignment 0.001167 48 SizeOfHeaders 0.001088 49 SizeOfUninitializedData 0.001036 50 BaseOfCode 0.000832 51 SizeOfHeapReserve 0.000401 52 SizeOfHeapCommit 0.000225 53 NumberOfRvaAndSizes 0.000008 54 LoaderFlags 0.000002 Việc giảm bớt một số field của mỗi mẫu PE header không chỉ giúp làm giảm kích thước của dataset, dẫn đến giảm được tài nguyên của hệ thống dùng trong quá trình thực hiện chương trình xây dựng mô hình phân loại, mà còn giảm thời gian huấn luyện mô hình, với 54 feature là 13.04s , với 44 feature là 12.52s. Phần còn lại trong hướng tiếp cận của chúng tôi được thực hiện theo đúng trình tự 4 thực nghiệm ở phần sau đây. 4. Kết quả thực nghiệm 4.1. Thực nghiệm 1 Chúng tôi chia ngẫu nhiên dataset thành 2 phần, 80% là tập huấn luyện (Training set) và 20% là tập kiểm thử (Test set). Hai tập dữ liệu này được sử dụng để đánh giá độ chính xác (accuracy) và thời gian huấn luyện (training time) của các mô hình Machine learning theo 5 thuật toán khác nhau. Kết quả nhận được cho ở Bảng 2. 4 Bảng 2. Độ chính xác và thời gian huấn luyện của của các mô hình Machine learning Thuật toán Độ chính xác Thời gian huấn luyện AdaBoost 99.12% 12.83 s GradientBoosting 99.30% 30.76 s DecisionTree 99.34% 0.98 s ExtraTree 99.69% 9.74 s RandomForest 99.71% 13.17s Thực nghiệm này cho thấy, mô hình được xây dựng bởi thuật toán Random Forest cho độ chính xác cao nhất, lên đến hơn 99.71%, với thời gian huấn luyện đạt mức trung bình, so sánh với 4 thuật toán còn lại. Mô hình theo Extra Trees thì có thời gian huấn luyện nhanh hơn, nhưng độ chính xác thấp hơn so với Random Forest. Thuật toán Decision Tree cho mô hình có tốc độ huấn luyện rất cao, nhưng độ chính xác không như mong muốn. 4.2. Thực nghiệm 2 Cách chia tập dữ liệu thành 2 phần một cách ngẫu nhiên như ở thực nghiệm 1, tuy đơn giản nhưng độ chính xác của mô hình có thể bị ảnh hưởng nếu xảy ra hiện tượng overfit. Trong thực nghiệm này, chúng tôi sử dụng thuật toán k-fold [3], với K= 10, để giải quyết vấn đề overfit/unoverfit. Kết quả nhận được cho ở Bảng 3. Bảng 3: Độ chính xác của các mô hình machine learning theo k-fold với K = 10 Thuật toán Độ chính xác trung bình Độ chính xác thấp nhất Độ chính xác cao nhất AdaBoost 99.11% 99.05% 99.17% Gradient- Boosting 99.31% 99.24% 99.37% Decision- Tree 99.34% 99.26% 99.42% ExtraTree 99.71% 99.67% 99.75% Random- Forest 99.72% 99.66% 99.76% Từ kết quả có được ở thực nghiệm 1 và thực nghiệm 2, chúng tôi chọn thuật toán Random Forest để xây dựng mô hình phân loại cho đề xuất của mình, vì độ chính xác mà nó cung cấp là cao nhất (99.71% và 99.72%) và với thời gian huấn luyện hợp lý. 4.3. Thực nghiệm 3 Trong thực nghiệm này, chúng tôi sẽ tìm hiểu xem liệu tăng số lượng Tree trong mô hình theo Random Forest có làm cho độ chính xác tăng hay không, từ đó tìm ra số lượng Tree vừa đủ để mô hình có thể làm việc nhanh hơn với độ chính xác cao hơn. Đầu tiên chúng tôi thử tạo ra 10 mô hình Random Forest chỉ có một tree sau đó tăng dần lên đến 500 tree, cứ mỗi lần tăng chúng tôi sẽ tính trung bình độ chính xác và thời gian huấn luyện của 10 mô hình. Kết quả cho ở 2 biểu đồ như hình bên dưới (H.1a và H.1b): Hình 1a: Biểu đồ Thời gian huấn luyện của mô hình khi tăng số lượng Tree Hình 1b: Biểu đồ Độ chính xác của mô hình khi tăng số lượng Tree Độ chính xác khi số Tree ít hơn 20 là rất thấp, sau 50 bắt đầu tăng dần và độ chính xác 5 bắt đầu đạt ngưỡng ở mức 100 Tree trở đi, thời gian huấn luyện tăng dần theo số lượng Tree. Điều này cho thấy, chúng ta chỉ cần một số lượng tree vừa đủ (trong trường hợp này là 100) thì mô hình cũng đã có thể đạt được độ chính xác cao. Giảm số số lượng tree giúp làm giảm thời gian huấn luyện và tiết kiểm được tài nguyên hệ thống. Đây là điều cần ghi nhận. 4.4. Thực nghiệm 4 Với việc chỉ chọn 44 đặc trưng, tương đương 44 trường trong PE header của các tập tin PE, mô hình phân loại Machine learning theo Ramdom Forest của chúng tôi có được tỉ lệ chính xác trung bình và thời gian huấn luyện đáng ghi nhận, lần lượt là 99.72% và 13.17s. Chúng tôi thực nghiệm việc tiếp tục giảm số lượng đặc trưng được chọn, để xem tỉ lệ chính xác và thời gian huấn luyện mô hình có bị thay đổi hay không. Kết quả như sau, khi số đặc trưng được chọn trong khoảng từ 13 đến 15 thì tỉ lệ chính xác trung bình đạt là 99.63% và thời gian huấn luyện là 3.88s. Thực nghiệm này cho thấy, khi giảm số lượng đặc trưng đến mức có thể thì tỉ lệ chính xác trung bình chỉ giảm một lượng không đáng kể, 0.09%, nhưng độ giảm của thời gian huấn luyện giảm là đáng ghi nhận, 9.29s (70%), so với ban đầu. Việc giảm số lượng đặc trưng còn giúp giảm kích thước tập dữ liệu, giảm thời gian cho việc phân tách các trường từ PE header của các tập tin PE, giúp tăng tốc độ phát hiện malware và tăng hiệu suất của hệ thống. Hình 2: So sánh độ chính xác của đề xuất này so với một số công bố gần đây. Như vậy, mô hình phân loại malware dựa vào E header của các tập tin PE theo hướng tiếp cận của chúng tôi đạt độ chính xác được ghi nhận so với một số công bố gần đây (H.2). 5. Kết luận Qua bài báo này, chúng tôi đề xuất một hướng tiếp cận khác cho việc phát hiện malware trên các tập tin PE. Đề xuất của chúng tôi được thực nghiệm trên dataset rất lớn, gồm header của 149.297 tập tin PE, trong đó có 44.214 tập tin malware và 96.083 tập tin lành tính. Kết quả thực nghiệm cho thấy: Không cần xem xét tất cả các trường trong header, loại bỏ các trường ít ảnh hưởng nhất, thuật toán Random Forest vẫn cho độ chính xác khá cao, lên đến 99,71%, với thời gian huấn luyện đạt mức trung bình, 13.17s, so với 4 thuật toán khác; Độ chính xác của Random Forest phụ thuộc vào việc chọn số lượng Tree sao cho phù hợp chứ không cần phải chọn càng nhiều Tree càng tốt; Việc giảm số lượng Tree và việc loại bỏ các trường ít quan trọng đã cải thiện được tốc độ huấn luyện mô hình - giảm 70%, cải thiện tốc độ phát hiện malware và giảm tài nguyên hệ thống. Tài liệu tham khảo [1] J. Bai, J. Wang, G. Zou, "A Malware Detection Scheme Based on Mining Format Information", The Scientific World Journal, vol.2014, Article ID 260905, p.1-11, 2014. [2] A. Hellal, L. B. Romdhane, "Minimal Contrast Frequent Pattern Mining for Malware Detection", Computers & Security, vol.62, p.19-32, 2016. [3] Davide Anguita, Luca Ghelardoni, Alessandro Ghio, Luca Oneto and Sandro Ridella, “The ‘K’ in K-fold Cross Validation”, European Symposium on Artificial Neural Networks, Computational Intelligence and Machine Learning. Bruges (Belgium), p.25-27, 2012. [4] Y. Liao, "Pe-Header-Based Malware Study and Detection", Security & Privacy Workshop, San Francisco, CA, U.S.A, 2012. [5] Vyas, R. Luo, X. McFarland, N. Justice, "Investigation of malicious portable executable file detection on the network using supervised learning techniques", 6 IFIP/IEEE Symposium on Integrated Network and Service Management (IM), pp.941–946, 2017. [6] Ajit Kumara, K.S. Kuppusamya, G.Aghilab, “A learning model to detect maliciousness of portable executable using integrated feature set”, Journal of King Saud University - Computer and Information Sciences, vol.31, iss.2, p.252-265, 2019.
File đính kèm:
- phat_hien_malware_dua_tren_header_cua_tap_tin_pe_su_dung_mac.pdf