Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 32 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
32
Dung lượng
0,97 MB
Nội dung
ĐẠI HỌC QUỐC GIA TP HỒ CHÍ MINH TRƯỜNG ĐẠI HỌC BÁCH KHOA NGUYỄN MINH HẢI KẾT HỢP PHÂN TÍCH TĨNH VÀ KIỂM TRA ĐỘNG TRONG VIỆC XÂY DỰNG ĐỒ THỊ LUỒNG ĐIỀU KHIỂN PHỤC VỤ PHÂN TÍCH MÃ NHỊ PHÂN Chuyên ngành: KHOA HỌC MÁY TÍNH Mã số chuyên ngành: 62.48.01.01 TÓM TẮT LUẬN ÁN TIẾN SĨ KỸ THUẬT TP HỒ CHÍ MINH NĂM 2018 Cơng trình hồn thành Trường Đại học Bách Khoa – ĐHQG-HCM Người hướng dẫn khoa học 1: PGS TS QUẢN THÀNH THƠ Người hướng dẫn khoa học 2: Phản biện độc lập 1: Phản biện độc lập 2: Phản biện 1: Phản biện 2: Phản biện 3: Luận án bảo vệ trước Hội đồng chấm luận án họp vào lúc ngày tháng năm Có thể tìm hiểu luận án thư viện: - Thư viện Khoa học Tổng hợp Tp HCM - Thư viện Trường Đại học Bách Khoa – ĐHQG-HCM DANH MỤC CƠNG TRÌNH ĐÃ CƠNG BỐ Tạp chí chun ngành quốc tế [CT1] Nguyen Minh Hai, Ha Minh Ngoc, Nguyen Thien Binh and Quan Thanh Tho,”Toward an Approach on Probability Distribution for Polymorphic Malware Analysis”, in GSTF Journal on Computing (JOC), Volume (1), pp 61-68, 2016, ISSN:2251 – 3043 (selected from 7th Annual International Conference on ICT: Big Data, Cloud and Security (ICT-BDCS 2016), Singapore - Best Paper Award) [CT2] Nguyen Minh Hai, Le Nguyen Dung, Nguyen Xuan Mao and Quan Thanh Tho, “Autodetection of sophisticated malware using lazy-binding control flow graph and deep learning”, Computers & Security Journal, Volume 7, pp 128-155, July 2017 (SCI-E) [CT3] Pham Phuoc Hung, Md Golam Rabiul Alam, Nguyen Minh Hai, Quan Thanh Tho, Eui-Nam Huh, “A Dynamic Scheduling Method for Collaborated Cloud with Thick Clients”, The International Arab Journal of Information Technology, 16(4), 2019 (SCI-E) Tạp chí chuyên ngành nước [CT4] Nguyen Minh Hai, Quan Thanh Tho, A Statistical Approach for Packer Identification, In Journal of Science and Technology, Vietnam Academy of Science and Technology, vol 54 (3A), Special issue of Intelligent System and its Applications, pp 129-139, 2016 (selected papers from Proceedings of International Symposium Intelligent Systems and Applications 2016 (ISA2016), Ho Chi Minh city, Vietnam) Hội thảo chuyên ngành nước quốc tế [CT5] Minh Hai Nguyen, Thien Binh Nguyen, Thanh Tho Quan and Mizuhito Ogawa (2013), A Hybrid Aproach for Control Flow Graph Construction from Binary Code, In Proceedings of the 20th Asia-Pacific Software Engineering Conference (APSEC 2013), Postgrad Symposium, Thailand [CT6] Nguyen Minh Hai, Mizuhito Ogawa, Quan Thanh Tho, “Obfuscation code localization based on CFG generation of malware”, The 8th International Symposium on Foundations & Practice of Security, Springer, Clermont-Ferrand, France, 2015 [CT7] Nguyen Minh Hai, Do Duy Phong, Quan Thanh Tho, Le Duc Anh, “Precise Packer Detection Using Model Checking”, in The 10th SOUTH EAST ASIAN TECHNICAL UNIVERSITY CONSORTIUM SYMPOSIUM (SEATUC2016), Tokyo, Japan, 2016 [CT8] Nguyen Minh Hai, Quan Thanh Tho, “An Experimental Study on Identifying Obfuscation Techniques in Packer”, 5th World Conference on Applied Sciences, Engineering & Technology (WCSET), 02-04 June 2016, HCMUT, Vietnam, ISBN 978-81-930222-2-1 [CT9] Nguyen Minh Hai, Quan Thanh Tho and Le Duc Anh, “Multi-Threaded On-the-fly Model Generation of Malware with Hash Compaction 18th International Conference on Formal Engineering Methods (ICFEM 20), 14-18 November 2016, TKP Conference Centre, Tokyo, Japan [CT10] Nguyen Minh Hai, Do Duy Phong, Quan Thanh Tho, “Formal Methods for Packer Detection”, 9th National Conference on Fundamental and Applied IT Research (FAIR'9), 0405 August 2016, Can Tho University (CTU), Vietnam (in Vietnamese) [CT11] Nguyen Minh Hai, Quan Thanh Tho, “Applying Deep Learning for Malware Analysis”, 10th National Conference on Fundamental and Applied IT Research (FAIR'10), 17-18 August 2017, The University of Da Nang - University of Education (UED), Vietnam (in Vietnamese) [CT12] Nguyen Minh Hai, Quan Thanh Tho, “Packer Identification using Hidden Markov Model”, The 11th Multi-disciplinary International Workshop on Artificial Intelligence (MIWAI 2017), 2017, Gadong – Brunei [CT13] Nguyen Minh Hai, Mizuhito Ogawa and Quan Thanh Tho, “Packer Identification Based on Metadata Signature”, The 7th Software Security, Protection, and Reverse Engineering Workshop (SSPREW-7), San Juan, Puerto Rico, USA, 2017 [CT14] Nguyen Minh Hai, Le Nguyen Dung and Quan Thanh Tho, “Applying Symbolic Execution for Malware Analysis”, The 2nd Symposium on Information Security (SOIS 2017), 02-03 December 2017, University of Information Technology Ho Chi Minh City, Vietnam (in Vietnamese) CHƯƠNG GIỚI THIỆU 1.1 Giới thiệu Trong ngành công nghiệp phần mềm, xu hướng kiểm tra phần mềm dựa mã nhị phân phát triển cách mạnh mẽ Hình 1-1 mơ tả bốn bước q trình phân tích mã nhị phân Trong bước đầu tiên, chương trình tiến hành dịch ngược mã nhị phân Bước thứ hai trình xây dựng biểu diễn trung gian (intermediate representation) dựa kết bước Trong bước 3, đồ thị luồng điều khiển (control flow graph) xây dựng dựa kết bước Trong đó, đỉnh đại diện cho lệnh cạnh đại diện cho bước nhảy luồng điều khiển Dựa đồ thị luồng điều khiển xây dựng, chương trình phân tích kiểm tra tính độc hại chương trình tính chun sâu khác bước Trong Hình 1-1, trình xây dựng đồ thị luồng điều khiển đóng vai trò thiết yếu Tuy nhiên, vấn đề xây dựng đồ thị luồng điều khiển cấp độ mã nhị phân nhiệm vụ đầy thách thức trở ngại phân tích đặc biệt vấn đề lệnh nhảy khơng trực tiếp Hình 1-1 Tổng quan bước phân tích chương trình 1.2 Phát biểu vấn đề Như phân tích phần trên, luận án nêu lên toán cần phải giải phát triển phương pháp kết hợp phân tích tĩnh kiểm tra động phân tích mã nhị phân, mà cụ thể toán xây dựng đồ thị luồng điều khiển 1.3 Câu hỏi nghiên cứu Để thực nghiên cứu này, luận án cần phải xem xét giải trả lời câu hỏi sau: [RQ1] Đã có khung thức hay công cụ tổng quát cho việc kết hợp phương pháp phân tích tĩnh kiểm tra động để xây dựng đồ thị luồng điều khiển mã nhị phân hay chưa? [RQ2] Làm để rút ngắn thời gian thực thi chương trình toán xây dựng đồ thị luồng điều khiển ? [RQ3] Làm để khai thác tri thức dựa đồ thị luồng điểu khiển chương trình sinh từ mã nhị phân ? 1.4 Mục tiêu nghiên cứu Mục tiêu luận án giải trả lời ba câu hỏi nghiên cứu mà luận án đề Trong đó, mục tiêu cụ thể là: [OB1] Đưa khung thức tổng quát cho việc kết hợp hai kỹ thuật phân tích tĩnh kiểm tra động nhằm xây dựng đồ thị luồng điều khiển phân tích mã nhị phân [OB2] Đưa phương pháp tăng tốc thời gian thực thi chương trình phân tích với chế đa luồng (multithreading) loại bỏ đường dư thừa (redundant path) xử lý chương trình [OB3] Khám phá tri thức dựa đồ thị luồng điểu khiển chương trình sinh từ mã nhị phân Nghiên cứu tập trung vào chủ đề phân tích mã nhị phân mã độc Luận án thực đồng thời hai việc, (i) nhận diện chương trình đóng gói (packer) sử dụng mã độc cách áp dụng kỹ thuật kiểm định Chi bình phương (Chi square test) mơ hình Markov ẩn (Hidden Markov Model); (ii) nhận diện mã độc sử dụng phương pháp học sâu (deep learning) 1.5 Những đóng góp nghiên cứu Các đóng góp luận án tóm tắt sau: i Luận án đề xuất khung thức tổng quát cho toán xây dựng đồ thị luồng điều khiển từ mã nhị phân chương trình Các cơng bố liên quan đến đóng góp [CT5] [CT6] ii Luận án đưa giải pháp để tăng tốc q trình thực thi chương trình Đó áp dụng giải thuật song song hóa với tính tốn đa luồng để tăng tốc độ xử lý nút Cơng bố có liên quan đến đóng góp [CT3] [CT9] iii Luận án đề xuất cách khai thác tri thức dựa đồ thị luồng điểu khiển mã nhị phân Luận án tập trung vào vấn đề nhận diện chương trình đóng gói mã độc với hai hướng tiếp cận: (i) sử dụng kiểm định Chi bình phương; (ii) sử dụng mơ hình Markov ẩn Các cơng bố có liên quan đến đóng góp [CT1], [CT4], [CT7], [CT8], [CT10], [CT12] [CT13] iv Luận án đề xuất cách nhận diện mã độc dựa phương pháp học sâu Các công bố có liên quan đến đóng góp [CT2] [CT11] v Cuối cùng, luận án xây dựng cơng cụ hồn chỉnh có tên BE-PUM cho việc xây dựng đồ thị luồng điều khiển từ mã nhị phân Công bố liên quan đến công cụ BE-PUM [CT6] [CT14] 1.6 Bố cục luận án Trong Chương này, chúng tơi trình bày bối cảnh nghiên cứu đặt vấn đề nghiên cứu Cấu trúc tổng quan phần luận án trình bày Hình 1-2 Chương trình bày tổng quan kiến thức tảng, định hướng cho nghiên cứu luận án Chương trình bày khung thức tổng quát cho toán xây dựng đồ thị luồng điều khiển từ mã nhị phân cách tự động Chương trình bày đóng góp thứ hai luận án, phương pháp tăng tốc trình thực thi chương trình với giải thuật tính tốn đa luồng kết hợp với bảng băm Chương trình bày phương pháp nhận diện chương trình đóng gói sử dụng kiểm định Chi bình phương Chương trình bày giải thuật áp dụng mơ hình Markov ẩn vào việc phát phân loại chương trình đóng gói Trong chương 7, chúng tơi đưa phương pháp nhận diện mã độc sử dụng phương pháp học sâu Chương trình bày cơng cụ BE-PUM Đây cơng cụ thực hóa tất lý thuyết trình bày luận án Các kết luận luận án định hướng nghiên cứu tương lai chúng tơi trình bày Chương Hình 1-2 Cấu trúc luận án CHƯƠNG KIẾN THỨC NỀN TẢNG 2.1 Đồ thị luồng điều khiển Đồ thị luồng điều khiển (Control Flow Graph - CFG) đồ thị có hướng dùng để biểu diễn chương trình Trong đó, đỉnh đồ thị bao gồm địa câu lệnh câu lệnh hợp ngữ địa Cạnh đồ thị thể luồng thực thi chương trình Hình 2-2 mơ tả ví dụ đồ thị luồng điều khiển tương ứng với đoạn mã Hình 2-1 00401000 inc %eax 00401001 jne 0x00401001 00401006 pushl %eax Hình 2-1 Ví dụ minh họa đồ thị luồng điều khiển Hình 2-2 Đồ thị luồng điều khiển tương ứng với Hình 2.1 2.2 Kỹ thuật kiểm thử thực thi ký hiệu động Kỹ thuật kiểm thử thực thi ký hiệu động (concolic testing) kỹ thuật kiểm chứng phần mềm lai ghép kết hợp hai phương pháp thực thi cụ thể (concrete execution) thực thi ký hiệu Kỹ thuật sử dụng số công cụ kiểm thử phần mềm PathCrawler, jCUTE SAGE So sánh với phương pháp kiểm thử hộp trắng (whitebox testing) truyền thống, kỹ thuật kiểm thử thực thi ký hiệu động có ưu điểm cho phép giảm số đường thực thi cần phải kiểm tra 2.3 Chương trình đóng gói Phần mềm đóng gói chương trình chuyển đổi mã nhị phân chương trình gốc thành chương trình thực thi khác Chương trình thực thi gìn giữ tính ngun có nội dung hồn tồn khác với chương trình gốc lưu trữ Chính điều làm cho kỹ thuật quét chữ ký liên kết hai phiên Hơn 80% mã độc sử dụng nhiều loại phần mềm đóng gói khác 2.4 Kiểm định Chi bình phương Phương pháp kiểm định Chi bình phương (Chi-square test) phương pháp tiêu chuẩn để phân loại dựa thuộc tính Chúng tơi sử dụng phương pháp kiểm định chi bình phương tốn phân loại Trong đó, chúng tơi xác định bậc tự (degree of freedom) 1, giá trị mát (loss) 0,05 (thường dùng làm tiêu chuẩn) giá trị hệ số tương quan tương ứng = 3,84 CHƯƠNG NHẬN DIỆN CHƯƠNG TRÌNH ĐĨNG GĨI SỬ DỤNG KỸ THUẬT CHI BÌNH PHƯƠNG 5.1 Giới thiệu Hơn 80% mã độc sử dụng chương trình đóng gói với nhiều kỹ thuật làm rối để tránh việc bị phát Các chương trình đóng gói thơng dụng kể đến UPX, PECOMPACT ASPACK Trong chương này, đề xuất hướng tiếp cận để nhận diện chương trình đóng gói Chúng tơi đề xuất phương pháp nhận diện chữ ký siêu liệu (metadata signature) chương trình đóng gói, thay cho phương pháp nhận diện chữ ký truyền thống Đầu tiên, mở rộng công cụ BE-PUM cho phép phát kỹ thuật làm rối mã Tiếp theo, kỹ thuật làm rối sử dụng chương trình đóng gói phân loại dựa theo khảo sát thống kê tự động Cuối cùng, sử dụng phương pháp kiểm định Chi bình phương để xác định chương trình đóng gói dựa chữ ký siêu liệu Chúng thực thí nghiệm để tính tốn xác hướng tiếp cận 5374 mã độc từ VX Heaven 7440 mã độc từ Virusshare, 608 mẫu sinh kết khác biệt với công cụ phát khác PeiD, CFF Explorer VirusTotal Do chất mô trình thực thi, chúng tơi thiết kế BE-PUM cơng cụ giải nén tổng qt BE-PUM đồng thời giải nén phát chương trình đóng gói tự xây dựng dựa xuất kỹ thuật nén/giải nén kỹ thuật hai APIs đặc biệt 5.2 Phương pháp thực 5.2.1 Mô tả giải thuật Đầu tiên, tiến hành nhận diện kỹ thuật làm rối Chúng thiết lập danh sách tiêu chuẩn cho kỹ thuật làm rối Do BE-PUM tự động nhận dạng kỹ thuật trình dịch ngược Chữ ký siêu liệu (metadata signature) chương trình đóng gói vectơ tần số xuất kỹ thuật làm rối chương trình đóng gói Chúng tơi chọn 14 kỹ thuật làm rối liệt kê bảng 5.1 5.2 Tập huấn luyện tập kiểm tra với ∩ = ∅ chọn từ mã nhị phân sử dụng chương 14 trình đóng gói nhận diện Trong trình xử lý theo kỹ thuật on-the-fly để tạo mơ hình, BE-PUM nhận diện thống kê kỹ thuật làm rối chương trình đóng gói Xét tập kỹ thuật làm rối { , ,…, ={ , }, tập vectơ trung bình trình bày phần 2.6) cho packer ,…, ={ , }, với tập packer mục tiêu ,…, } giá trị ngưỡng = (được O(B) vectơ tần số kỹ thuật làm rối trình xây dựng đồ thị luồng điểu khiển B Hàm On_the_fly_Model_Generation(B) mở rộng đồ thị luồng điều khiển B theo kỹ thuật thực thi ký hiệu động Hàm Model_Generation_Stop(B) định việc dừng trình sinh đồ thị đồ thị luồng điều khiển (nguyên nhân gặp câu lệnh không hỗ trợ, gặp API khơng hỗ trợ hết thời gian phân tích) Hàm Calculate_Membership_Degree(O(B), Ei) tính tốn bậc thành phần O(B) dựa trung bình siêu liệu Ei chương trình đóng gói Mi kiểm định chi bình phương Giá trị ngưỡng packer Mi tập trung bình bậc tập kiểm tra Te mô tả phần 2.6 Giải thuật nhận diện chương trình đóng gói tóm tắt Giải thuật 5-1 5.3 Thí nghiệm Tất kết thực tảng Windows XP với công cụ VMware worktation phiên 10.0 Máy chủ dùng hệ điều hành Windows Pro với AMD Athlon II X4 635, 2.9GHz 8GB nhớ Chúng tập trung vào 12 packer, cụ thể ASPACK v2, CEXE v1.0b, KKRUNCHY v0.23a4, MPRESS v2.19, FSG v2.0, NPACK v1.0, PECOMPACT v2.0, PETITE v2.1, TELOC v0.99, UPX v3.0, YODA v1.3 UPACK v037-0.39 Kết tổng hợp từ 15031 tập tin phân chia làm hai kiểu liệu, tập tin bình thường mã độc 5.3.1 Nhận diện chương trình đóng gói phân tích mã độc Chúng tơi thu thập 12814 mẫu mã độc thực tế Để so sánh, tập tin quét ba phần mềm nhận diện chương trình đóng gói thơng dụng, PeiD, CFF Explorer, VirusTotal PeiD chương trình phổ biến việc nhận diện tập tin bị đóng gói VirusTotal cơng cụ qt mã độc miễn phí online, kết hợp kết nhiều nguồn chống mã độc khác, Kaspersky, Microsoft, AVG… CFF Explorer công cụ phổ biến nhận diện chương trình đóng gói 15 Với 12814 mẫu, BE-PUM cho kết sau: 499 trường hợp với 296 từ VX Heaven 203 từ Virusshare bị thời gian 5923 mẫu với 1419 mẫu từ VX Heaven 4504 mẫu từ Virusshare phát khơng đóng gói, giống với kết PeiD, CFF Explorer VirusTotal 6392 mẫu phát đóng gói Chi tiết 6392 mẫu đóng gói trình bày 5459 mẫu với 3270 mẫu từ VX Heaven 2189 mẫu từ Virusshare phát đóng gói 12 packer, giống kết với PeiD, CFF Explorer VirusTotal Giải thuật 5-1 Giải thuật sử dụng Chi bình phương Input: Chương trình nhị phân B Output: Mi packer sử dụng để đóng gói Mi; NONE khơng tìm thấy Algorithm: ( )=( , ,…, ) ≔ (0, 0, … , 0); while TRUE On_the_fly_Model_Generation(B); if Found_New_Obfuscation_Technique() = ( )≔ ,…, + 1, … , then ; foreach i := to m = if _ ≥ ℎ _ then Return ; end end end if Modern_Generation_Stop(B) then return NONE; end end 16 ( ( ), ) 402 mẫu với 137 mẫu từ VX Heaven 265 mẫu từ Virusshare phát đóng gói 12 packer, kết không thống PEiD, CFF Explorer, VirusTotal BE-PUM 325 mẫu với 216 mẫu từ VX Heaven 109 mẫu từ Virusshare phân loại đóng gói với chương trình đóng gói BE-PUM chưa hỗ trợ 206 mẫu với 36 mẫu từ VX Heaven 170 mẫu từ Virusshare phát BE-PUM gói tự xây dựng, PeiD, CFF Explorer, VirusTotal khơng phát 17 CHƯƠNG NHẬN DIỆN CHƯƠNG TRÌNH ĐĨNG GĨI SỬ DỤNG MƠ HÌNH MARKOV ẨN 6.1 Giới thiệu Một cách tổng qt, chúng tơi biểu diễn chương trình đóng gói P chuỗi kỹ thuật làm rối ={ , ,…, } với oi đại diện cho kỹ thuật làm rối Bảng 6-2 mô tả chuỗi kỹ thuật làm rối chương trình đóng gói Bảng 6-1 Đánh số thứ tự kỹ thuật làm rối 12 Overlapping function Overwriting SEH Checksumming Stolen bytes 10 13 Overlapping block Packing/unpacking 2API Timing check Hardware breakpoint 11 Code chunking Indirect jump Obfuscated constant Anti-debugging Bảng 6-2 Chuỗi kỹ thuật làm rối chương trình đóng gói ASPack v2.12 CEXE FSG v2.0 KKRUNCHY MPRESS nPack v1.0 8_3_3_3_3_7_3_3_5_12_3_4_5_12_3_4_4_8_4_4_4_4_8_8_8_4_4_4_4 _4_4_4_4_4_8_8_8_8_4_8_8_4_8_4_4_3_4_3_5_3_3_3_7_3_3_5_3_7 5_4_4_5_4_4_4_4_4_6_8_4_4_6_8_4_4_4_8_5_5_7_4_4_4_4_4_4_4_8 _3_3_4_3_3 3_3_5_3_5_4_3_5_3_5_3_4_3_5_12 4_5_8_8_4_4_4_5_4_4_4_5_5_4_4_5_5_7_4_8_4_4_4_4_4_2_4_8_4_4 _4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_ 4_4_4_4_4_4_4_4_4_4_4_4_4_4_4_4 4_4_4_8_8_8_8_8_4_4_4_4_4_4_2_4_8_3_3_7_5_5_3_4_3_4_3_3_3_3 _3_4_3_3_3_3_3_3_3_3_3_3_3_3_3_3_3_3_3_3_3 3_12_5_7_12_4_4_12_3_4_3_3_4_8_3_12 Từ đó, chúng tơi đề xuất ý tưởng sử dụng mơ hình Markov ẩn để nhận diện chương trình đóng gói Chúng tơi tiến hành thí nghiệm tập 2126 mẫu mã độc từ Virusshare để chứng minh tính hiệu phương pháp đề xuất 6.2 Phương pháp thực 6.2.1 Mơ hình Markov ẩn Mơ hình Markov ẩn = { , , } bao gồm thành phần sau ={ , ,…, Tập hợp S tất trạng thái: Tập hợp O tất ký hiệu quan sát Ma trận xác suất chuyển trạng thái A 18 } với n số trạng thái ={ , ,…, } với m số ký hiệu quan sát = với = ( = | xác suất chuyển đổi từ trạng thái )} = sang trạng thái Ma trân xác suất quan sát B = { ( )| ( ) = ( | Với ( ) xác suất quan sát ký hiệu Một tập xác suất khởi đầu, ={ | = )} trạng thái = ( = )} Trong HMM, có hai vấn đề vấn đề huấn luyện vấn đề nhận dạng Bài toán nhận dạng: Cho trước HMM λ chuỗi quan sát tính tốn chuỗi trạng thái , ,…, ={ , ,…, }, cần sinh HMM λ Bài toán thường giải giải thuật Viterbi Bài tốn huấn luyện: Chúng tơi xác định thơng số mơ hình Markov ẩn A, B π dựa vào tập chuỗi quan sát chương trình đóng gói Q trình xây dựng mơ hình Markov ẩn mô tả phần 6.2.2 Xây dựng mơ hình Markov ẩn Trong hướng tiếp cận này, tạo trạng thái (state) cho chương trình đóng gói Để xây dựng mơ hình Markov ẩn, tiến hành qua bước Bước 1: Xác định xác suất chuyển ban đầu Mỗi trạng thái tương ứng với chương trình đóng gói Giả sử ban đầu có n loại chương trình, xác suất chuyển trạng thái ban đầu = Bước 2: Tính ma trận xác suất quan sát B Với chương trình đóng gói { , , , tương ứng với trạng thái si, qui định } danh sách tập huấn luyện mẫu đóng gói o số lượng mẫu Xác suất quan sát ký hiệu ok trạng thái si tần suất xuất kỹ thuật ok ( )= Với ( ∑ ∑ (6.1) , , ) tổng số số lần xuất kỹ thuật Lưu ý tổng xác suất quan sát chuỗi trạng thái ln có giá trị ( )= , ∑ ∑ ∑ 19 ( ∑ , ) =1 ( , ) = Bước 3: Tính ma trận xác suất chuyển trang thái A Xây dựng vector = cho trạng thái ∑ ( Với hai trạng thái , ) ∑ , ( , ) ,…, ∑ ( , ) (6.2) , sử dụng khoảng cách cosin để tính tương đồng chúng cos , = cos , ∑ = ∑ ( ∑ ∑ ∑ , ( , , ∑ ) ( ∑ ( , ) (6.3) cos( , ) = cos Khi đó, xác suất chuyển từ trạng thái 6.3 =∑ =1 đến trạng thái tính theo công thức sau ( , ) =∑ Lưu ý rằng, ∑ , ( , (6.4) ) ( , ) ∑ ( , ) = 1 với mọi Thí nghiệm Chúng tơi tiến hành thí nghiệm hệ điều hành Windows XP sử dụng VMware workstation 10 Máy chủ dùng hệ điều hành Windows Pro với AMD Athlon II X4 635, 2.9GHz 8GB nhớ Chúng thu thập 2126 mã độc từ Virusshare Để so sánh hiệu quả, tập tin quét qua phần mềm phát chương trình đóng gói phổ biến PEiD, CFF Explorer, VirusTotal Trong PEiD chương trình phát tốt VirusTotal chương trình quét phát mã độc online thông qua việc kết hợp so sánh kết nhận diện mã độc từ nhiều nguồn Kaspersky, Microsoft, AVG CFF Explorer xem công cụ phổ biến cho việc phân tích chương trình đóng gói Có thể thấy, hướng tiếp cận sử dụng HMM cho kết tốt so với phương pháp nhận diện chữ ký truyền thống sử dụng chương trình PEid, CFF Explorer, VirusTotal 20 Bảng 6-3 Kết thí nghiệm CFF Explorer PEid VirusTotal HMM ASPACK v2 183 183 183 219 FSG v2.0 384 384 384 410 NPACK v1.0 77 77 77 115 PECOM- PACT v2.0 92 92 92 112 PETITE v2.1 115 115 115 177 TELOCK v0.99 150 150 150 168 UPX v3.94 360 360 360 430 YODA v1.3 150 150 150 150 UPACK v0.37-.39 310 310 310 345 21 CHƯƠNG NHẬN DIỆN MÃ ĐỘC SỬ DỤNG PHƯƠNG PHÁP HỌC SÂU 7.1 Giới thiệu Trong chương này, đề xuất cách tiếp cận để xử lý mã độc đa hình Trước hết, chúng tơi đề xuất tạo CFG từ mã nhị phân Sau đó, chuyển đổi đồ thị sang ma trận kề tương ứng Do biểu diễn ma trận kề hình ảnh, biến thể mẫu mã độc sau mơ tả đối tượng tương tự hình ảnh xây dựng Sau đó, chúng tơi sử dụng hệ thống mạng nơ-ron (neural network) mạng nơron tích chập (convolution neuron network - CNN), để xác định đối tượng cách hiệu Chúng đánh giá cách tiếp cận với liệu thu thập từ số kho mã độc trực tuyến 7.2 Phương pháp thực Chúng tiến hành trình nhận dạng qua bước Đầu tiên, xây dựng đồ thị luồng điều khiển từ mã nhị phân chương trình Trong bước 2, tiến hành chuyển đổi từ đồ thị luồng điều khiển thành ma trận kề tiến hành xây dựng ảnh Cuối cùng, ảnh học mơ hình học sâu để tiến hành phân loại bước 7.2.1 Xây dựng đồ thị luồng điều khiển từ mã nhị phân chương trình Hiện nay, cộng đồng nghiên cứu có xu hướng phát phần mềm độc hại dựa hành vi cách tạo mô hình cho phép nắm bắt luồng thực thi chương trình Mơ hình phổ biến sử dụng hướng nghiên cứu đồ thị luồng điều khiển (CFG) Trong CFG, đỉnh tương ứng với câu lệnh tập tin gốc Sự chuyển tiếp đỉnh thể luồng thực thi chương trình lệnh tương ứng thực CFG cho phép chúng tơi phân tích hành vi chương trình phát hoạt động đáng ngờ phần mềm độc hại gây 7.2.2 Chuyển CFG thành ảnh Phần trình bày cách chuyển từ CFG sang ảnh để tiếp tục xử lý hệ thống học sâu Thứ nhất, chuyển đổi CFG thành ma trận kề Như thảo luận, đỉnh CFG coi trạng thái Mỗi trạng thái mã hoá dạng chuỗi bit, bao gồm đoạn, tương ứng với mô tả giá trị ghi, cờ nhớ Vì kích thước 22 nhớ q lớn nên chúng tơi sử dụng hàm băm MD5 để giảm việc sử dụng tài nguyên Đối với trạng thái truy cập, thay lưu trữ tồn bộ nhớ, có giá trị băm nhớ lưu trữ Mô tả cho phép chúng tơi trình bày giống hai trạng thái chương trình Mỗi đỉnh i thể dòng i cột i ma trận kết Do có đường từ đỉnh i qua đỉnh j CFG, thành phần (i, j) ma trận tính theo cơng thức |state(j) state(i)| Đặc biệt, state gồm , kết | state(j) - stat (i)| thể cho màu = | ( ) − = | ( )| ( ) − = | ( )| ( ) − ( )| Thanh ghi có loại khác nhau, bao gồm Eax, Ebx, Ecx, Edx, Esi, Edi, Esp, Ebp (| | ( )− | ( )| = ( ) ( ) ( ) ( ) ( )| | ( )| | ( )| | ( )| | ( ) ( ) ( )| | ( )| | ( ) ( ) ( )| ( )|) (7.1) Có loại cờ bao gồm CF, PF, AF, ZF, SF, TF, IF, DF, OF, (| | ( )− ( )| = ( ) | ( )| | ( ) ( ) ( )| | ( )| | ( ) ( ) ( )| | ( )| | ( ) ( ) ( )| | ( )| | ( ) ( ) ( )|) ( )| (7.2) Bộ nhớ Memory = {(Loc(k), Val(k)) | 0≤k≤n}, với n kích thước nhớ, loc(k) vị trí nhớ K val(k) giá trị nhớ Phép tính trạng thái nhớ tính sau | ( ) − ( )| = ∑ | ( ) ( )| ( ) ( ) (7.3) Đặc biệt, tính phép trừ |X - Y| cơng thức này, X Y giá trị cụ thể giá trị tượng trưng, giá trị |X - Y| tính sau | − | = | − | ế ế ả ị ụ ℎể ( ) ế ị ụ ℎể à ị ượ 255 ườ ℎợ ượ ( ) ( ) (7.4) Các nối với giá trị hex 7.2.3 Sử dụng phương pháp học sâu để phát mã độc CNN đạt kết tốt vấn đề phân loại Tuy nhiên, cách nhận dạng mã độc từ hình ảnh, chúng tơi áp dụng kỹ thuật hệ thống Yolo Ý tưởng cơng trình hệ thống học sâu phát triển để nghiên cứu hai tính lúc: (i) hộp bao quanh, tức hình chữ nhật xung quanh đối tượng (ii) đối tượng nhận diện hộp xung quanh 23 7.3 Thí nghiệm Chúng tơi thực thí nghiệm nhận dạng mã độc CPU Xeon v3 với nhớ 96 Gb Các mẫu mã độc thu thập từ nhiều nguồn bao gồm VXHeaven, Virusshare.com MALICIA [111] Số lượng mẫu từ VXHeaven, Virusshare MALICIA tương ứng 20713, 31609 11368 Ngồi ra, chúng tơi thu thập 13752 chương trình bình thường để phục vụ cho thí nghiệm 7.3.1 Kết thí nghiệm Bảng 7-1 Kết thí nghiệm Size of sample Precision SVM Recall F-measure Precision AIS Recall F-measure Simpl Precision eRecall CNN F-measure Yolo- Precision based Recall CNN F-measure 1500 2000 2500 5000 10000 20000 40000 50000 63771 83.44% 83.07% 82.19% 79.89% 77.98% 77.16% 75.18% 75.90% 74.93% 79.17% 78.97% 77.44% 77.16% 76.54% 75.88% 75.07% 74.36% 72.77% 81.25% 80.97% 79.74% 78.5% 77.25% 76.51% 75.12% 75.12% 73.83% 90.36% 90.17% 88.68% 88.11% 87.63% 85.79% 85.31% 84.86% 84.06% 92.44% 91.83% 89.38% 89.07% 88.48% 87.29% 86.48% 85.88% 85.47% 91.39% 90.99% 89.03% 88.59% 88.05% 86.53% 85.89% 85.37% 84.76% 98.87% 98.16% 97.06% 96.95% 96.16% 95.88% 95.52% 93.98% 93.28% 91.34% 90.57% 88.68% 88.18% 87.64% 86.39% 85.49% 84.86% 84.40% 94.96% 94.21% 92.68% 92.36% 91.70% 90.89% 90.23% 89.19% 88.62% 99.16% 99.08% 98.24% 98.05% 97.37% 96.98% 96.32% 95.87% 95.12% 96.27% 95.59% 94.73% 94.11% 92.69% 92.13% 90.89% 90.26% 90.07% 97.69% 97.3% 96.45% 96.04% 94.97% 94.49% 93.53% 92.98% 92.53% Từ tập liệu mã độc thu thập được, tạo nhiều tập huấn luyện cho CNN để thực việc phát mã độc Để đánh giá, sử dụng kỹ thuật kiểm chứng chéo kfold với k = 10 Chúng so sánh phương pháp đề xuất với kỹ thuật tiếng Support Vector Machine (SVM) [112] AIS [113] Phương pháp AIS hiệu để phát biến thể khác phần mềm độc hại Bảng 7-1 trình bày kết q trình thí nghiệm Chúng tơi so sánh thơng số độ xác (precision), độ đo tính tồn vẹn (recall) độ trung bình điều hòa (F-measure) để đánh giá phương pháp phân loại Có thể thấy, AIS phương pháp học sâu đạt kết tốt so với SVM hai phương pháp xử lý tốt phần mềm độc hại tự sửa đổi Hơn nữa, cung cấp đủ số lượng tập huấn luyện, phương pháp học sâu cho thấy kết với độ xác tốt 24 CHƯƠNG CƠNG CỤ XÂY DỰNG ĐỒ THỊ LUỒNG ĐIỀU KHIỂN BE-PUM Như trình bày chương trên, công cụ BE-PUM mà chúng tơi xây dựng cung cấp tính khác biệt độc đáo so với công cụ tương tự có sau BE-PUM thực mơ hình thực thi đa luồng kết hợp với phương pháp nén sử dụng bảng băm, kỹ thuật phát trùng lặp giải thuật di truyền để giảm lượng tài nguyên sử dụng Thông tin chi tiết giải thuật chúng tơi trình bày đóng góp [CT3], [CT9] Chương luận án BE-PUM ứng dụng kỹ thuật nhận diện chương trình đóng gói sử dụng phương pháp kiểm định Chi bình phương mơ hình Markov ẩn Chi tiết sở lý thuyết tính chúng tơi trình bày Chương 5, Chương đóng góp [CT1], [CT4], [CT7], [CT8], [CT10], [CT12] [CT13] BE-PUM thực việc nhận diện mã độc sử dụng phương pháp học sâu Các chi tiết phương pháp nhận diện chúng tơi trình bày Chương đóng góp [CT2], [CT11] Chúng tơi phát triển công cụ BE-PUM hai dạng ứng dụng ứng dụng chạy cục máy tính (desktop application) ứng dụng trực tuyến (web application) 8.1 Kiến trúc BE-PUM BE-PUM thực ngôn ngữ Java, sử dụng dịch ngược (disassembler) xây dựng JakStab SMT Solver Z3 Hình 8-1 trình bày kiến trúc BE-PUM 25 Hình 8-1 Kiến trúc BE-PUM Kiến trúc hệ thống BE-PUM bao gồm thành phần chính, Frontiers, Static Analysis, Dynamic Testing CFG Storage Trong đó, vai trò thành phần mô tả sau Thành phần Frontiers chứa vị trí khu vực cần phần tích BE-PUM Lưu ý bắt đầu phân tích chương trình, Frontier chứa vị trí điểm vào gốc (original entry point) lưu phần tiêu đề (header) chương trình thực thi Thành phần CFG Storage lưu trữ đỉnh cạnh đồ thị luồng điều khiển sau tính tốn xác CFG storage sử dụng để xây dựng mơ hình q trình thực thi tập tin phân tích Thành phần Static Anlaysis nhận đầu vào (input) chương trình nhị phân (binary file) sử dụng chương trình disassembler cung cấp Jackstab 0.8.3 để dịch ngược chuyển đổi thành mã nhị phân thành câu lệnh hợp ngữ tương ứng Trong trường hợp câu lệnh hợp ngữ câu lệnh tác động tới môi trường thực thi (Data instructions), cụ thể câu lệnh tính tốn, câu lệnh ghi đọc nhớ, bao gồm stack, môi trường thực thi thay đổi tương ứng Ngồi ra, vị trí câu lệnh xác định vị trí câu lệnh cộng kích thước câu lệnh Nếu vị trí chưa xử lý khu vực (New Region), CFG cập nhật CFG Storage vị trí cập nhật thành phần Frontiers Nếu vị trí xử lý vùng mới, CFG 26 cập nhật CFG Storage vị trí lấy thành phần Fontiers để phân tích Trong trường hợp câu lệnh hợp ngữ câu lệnh điều khiển (control instructions), cụ thể câu lệnh gọi hàm, câu lệnh trả từ hàm, câu lệnh nhảy câu lệnh nhảy có điều kiện, điều kiện đường tính tốn thơng qua thành phần thực thi ký hiệu (symbolic execution) kiểm tra tính khả thi với thành phần SMT Z3.4.3 Giá trị kiểm thử sinh thực thi thành phần Dynamic Testing Thành phần Dynamic Testing thành phần quan trọng tổng thể kiến trúc BE- PUM Thành phần đóng vai trò mơ q trình thực thi (binary emulation), bao gồm lệnh hợp ngữ Windows API chương trình x86 Để xử lý câu lệnh hợp ngữ, hệ thống BE-PUM giả lập thành phần hệ thống, cụ thể mơ hình nhớ BE-PUM Mơ hình bao gồm tập cờ (Flag) sử dụng hệ thống (AF, CF, DF, IF, OF, PF, SF, TF, ZF), tập ghi (Register) (EAX, EBX, ECX, EDX, ESI, EDI, ESP, EBP, CS, DS, ES, FS, GS, SS, EIP, EFLAGS ghi debug DRO, DR1, DR2, DR3, DR4, DR5, DR6, DR7, DR8), tập giá trị nhớ (Memory), thành phần stack lưu trữ phần nhớ Do BE-PUM hỗ trợ phân tích mã độc tác động trực tiếp đến mơi trường thực, mơi trường hộp cát có kiểm sốt (controlled sandbox) xây dựng cho q trình mơ 27 CHƯƠNG KẾT LUẬN 9.1 Kết luận Luận án hoàn thành việc trả lời câu hỏi nghiên cứu mục tiêu mà luận án đề thơng qua đóng góp sau: i Luận án đề xuất khung thức tổng quát cho toán xây dựng đồ thị luồng điều khiển từ mã nhị phân chương trình ii Luận án đưa giải pháp để tăng tốc trình thực thi chương trình iii Luận án đề xuất cách tiếp cận khai thác tri thức dựa đồ thị luồng điểu khiển mã nhị phân a Luận án tập trung vào vấn đề nhận diện chương trình đóng gói mã độc với hai hướng tiếp cận: (i) sử dụng kiểm định Chi bình phương; (ii) sử dụng mơ hình Markov ẩn b iv Luận án đưa giải pháp cách nhận diện mã độc dựa phương pháp học sâu Cuối cùng, luận án xây dựng cơng cụ hồn chỉnh có tên BE-PUM cho việc xây dựng đồ thị luồng điều khiển từ mã nhị phân 9.2 Hướng nghiên cứu tương lai Đối với công việc tương lai, nghiên cứu nhiều vấn đề để xem xét Cụ thể công việc tương lai luận án Mở rộng hỗ trợ tập lệnh x86 Windows API Mở rộng trình nhận diện chương trình đóng gói Nhận diện mã độc với phương pháp học máy khác Xây dựng mơ hình weighted pushdown BE-PUM nhằm mục tiêu giảm số trạng thái cần xử lý tốn kiểm tra mơ hình Do mã độc sử dụng vòng lặp với đếm lớn, lên đến hảng tỷ, thách thức giải vấn đề sinh điều kiện bất biến cho vòng lặp (infer loop invariant) phân tích tĩnh 28 ... cho việc kết hợp phương pháp phân tích tĩnh kiểm tra động để xây dựng đồ thị luồng điều khiển mã nhị phân hay chưa? [RQ2] Làm để rút ngắn thời gian thực thi chương trình toán xây dựng đồ thị luồng. .. đề Như phân tích phần trên, luận án nêu lên toán cần phải giải phát triển phương pháp kết hợp phân tích tĩnh kiểm tra động phân tích mã nhị phân, mà cụ thể toán xây dựng đồ thị luồng điều khiển. .. luồng điều khiển Dựa đồ thị luồng điều khiển xây dựng, chương trình phân tích kiểm tra tính độc hại chương trình tính chuyên sâu khác bước Trong Hình 1-1, q trình xây dựng đồ thị luồng điều khiển