Nghiên Cứu Về Phát Hiện Sự Tương Đồng Trong Mã Nhị Phân Sử Dụng Mô Hình Ngôn Ngữ Và Mạng Nơ-Ron Sâu

Luận văn tốt nghiệp nghiên cứu tốt nghiệp an toàn thông tin nghiên cứu phương pháp phát hiện sự tương đồng mã nhị phân của chương, điều tra thực trạng, phân tích số liệu, đề xuất

Người đăng

Ẩn danh

Thể loại

khóa luận tốt nghiệp

2024

88
2
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CẢM ƠN

1. CHƯƠNG 1: TỔNG QUAN

1.1. Giới thiệu vấn đề

1.2. Các nghiên cứu liên quan

1.3. Tính ứng dụng

1.4. Những thách thức

1.5. Mục tiêu, đối tượng, và phạm vi nghiên cứu

1.5.1. Mục tiêu nghiên cứu

1.5.2. Đối tượng nghiên cứu

1.5.3. Phạm vi nghiên cứu

1.6. Cấu trúc của khóa luận tốt nghiệp

2. CHƯƠNG 2: CƠ SỞ LÝ THUYẾT VÀ KIẾN THỨC NỀN TẢNG

2.1. Các thành phần liên quan đến tập tin nhị phân

2.2. Chức năng - Function

2.3. Biểu đồ luồng điều khiển - Control flow graph

2.4. Biểu diễn trung gian - Intermediate Representation

2.4.1. Vex Intermediate Representation (Vex-IR)

2.4.2. Đặc điểm và cấu trúc của Vex-IR

2.5. Một số thành phần chính của mạng nơ-ron

2.5.1. Một số kiến thức khác

2.5.2. Một số kiến trúc mạng nơ-ron phổ biến trong lĩnh vực

2.6. Phương pháp học trong học sâu

2.7. Các ứng dụng của việc sử dụng phương pháp phát hiện sự tương đồng trong mã nhị phân

3. CHƯƠNG 3: TỔNG QUAN VỀ BINSHOO

3.1. Định nghĩa vấn đề

3.2. Binshoo - Phương pháp phát hiện sự tương đồng trong mã nhị phân dựa trên học sâu

3.2.1. Trích xuất các function

3.2.2. Chuyển đổi các chức năng nhị phân sang vector để đưa vào mô hình học máy

3.2.3. Lựa chọn mô hình học máy

3.2.3.1. Phân loại One-to-one
3.2.3.2. Phân loại One-to-many

4. CHƯƠNG 4: THÍ NGHIỆM VÀ ĐÁNH GIÁ

4.1. Thiết lập

4.1.1. Cài đặt môi trường

4.1.2. Các thông số của mô hình học sâu

4.2. Quá trình tạo tập dữ liệu huấn luyện

4.3. Hiệu quả của việc cải tiến phương pháp chuyển đổi vector Proc2vec+ so với nguyên mẫu Proc2vec được giới thiệu bởi Zeek

4.4. Tập dữ liệu đánh giá

4.5. So sánh độ hiệu quả giữa mô hình học máy của Binshoo với các mô hình học máy khác CNN, LSTM, CNN+LSTM, CNN+GRU

4.5.1. Kiến trúc của mô hình CNN

4.5.2. Kiến trúc của mô hình LSTM

4.5.3. Kiến trúc của mô hình CNN+GRU

4.5.4. Kiến trúc của mô hình CNN+LSTM

4.5.6. Kiến trúc của mô hình Zeek

4.5.7. Kiến trúc học máy của mô hình Binshoo

4.6. So sánh độ hiệu quả giữa mô hình học máy của Binshoo và mô hình học máy BERT

4.6.1. Tập dữ liệu đánh giá

4.7. So sánh độ hiệu quả giữa công cụ Binshoo và công cụ Bindeep

4.7.1. Tập dữ liệu đánh giá

5. CHƯƠNG 5: KẾT LUẬN

5.1. Kết luận

5.2. Hướng phát triển

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng Quan Về Nghiên Cứu Phát Hiện Sự Tương Đồng Trong Mã Nhị Phân

Nghiên cứu phát hiện sự tương đồng trong mã nhị phân là một lĩnh vực quan trọng trong an ninh mạng và phân tích phần mềm. Việc phát hiện này không chỉ giúp nhận diện mã độc mà còn hỗ trợ trong việc tối ưu hóa mã nguồn. Các phương pháp truyền thống thường gặp khó khăn trong việc xử lý mã nhị phân phức tạp. Do đó, việc áp dụng các mô hình học sâu và mô hình ngôn ngữ trở thành xu hướng mới trong nghiên cứu này.

1.1. Định Nghĩa Về Phát Hiện Sự Tương Đồng Trong Mã Nhị Phân

Phát hiện sự tương đồng trong mã nhị phân là quá trình so sánh các đoạn mã nhị phân để xác định mức độ tương đồng giữa chúng. Điều này có thể áp dụng trong nhiều lĩnh vực như phát hiện mã độc và phân tích bảo mật.

1.2. Tầm Quan Trọng Của Nghiên Cứu Này

Nghiên cứu này có ý nghĩa quan trọng trong việc bảo vệ hệ thống thông tin. Nó giúp phát hiện các lỗ hổng bảo mật và tối ưu hóa mã nguồn, từ đó nâng cao hiệu quả bảo mật cho các ứng dụng.

II. Những Thách Thức Trong Phát Hiện Sự Tương Đồng Mã Nhị Phân

Việc phát hiện sự tương đồng trong mã nhị phân đối mặt với nhiều thách thức. Sự đa dạng của mã nhị phân và cấu trúc phức tạp của chúng làm cho quá trình này trở nên khó khăn. Hơn nữa, hiệu suất và tốc độ xử lý cũng là những yếu tố cần được xem xét.

2.1. Sự Đa Dạng Của Mã Nhị Phân

Mã nhị phân có thể có nhiều đặc điểm khác nhau, từ các chương trình nhỏ đến các ứng dụng phức tạp. Điều này yêu cầu khả năng xử lý linh hoạt để phát hiện sự tương đồng.

2.2. Cấu Trúc Phức Tạp Của Mã Nhị Phân

Cấu trúc của mã nhị phân thường rất phức tạp với nhiều khối mã và hàm. Việc phân tích và so sánh chúng đòi hỏi nhiều tài nguyên tính toán và bộ nhớ.

III. Phương Pháp Phát Hiện Sự Tương Đồng Trong Mã Nhị Phân

Các phương pháp hiện đại trong phát hiện sự tương đồng mã nhị phân thường dựa trên học sâu và mô hình ngôn ngữ. Những phương pháp này cho thấy hiệu quả cao hơn so với các phương pháp truyền thống, đặc biệt trong việc xử lý mã nhị phân đã được mã hóa hoặc biến đổi.

3.1. Sử Dụng Mô Hình Ngôn Ngữ Trong Phát Hiện

Mô hình ngôn ngữ giúp cải thiện khả năng phát hiện sự tương đồng bằng cách học các đặc điểm của mã nhị phân. Điều này cho phép phát hiện các tương đồng ngay cả khi mã đã được biến đổi.

3.2. Ứng Dụng Mạng Nơ Ron Sâu

Mạng nơ-ron sâu cung cấp khả năng học tập mạnh mẽ, cho phép phát hiện sự tương đồng giữa các mã nhị phân phức tạp. Các mô hình như CNN và RNN đã được áp dụng thành công trong lĩnh vực này.

IV. Ứng Dụng Thực Tiễn Của Nghiên Cứu

Nghiên cứu này có nhiều ứng dụng thực tiễn trong an ninh mạng và phân tích phần mềm. Việc phát hiện sự tương đồng trong mã nhị phân có thể giúp nhận diện mã độc và tối ưu hóa mã nguồn, từ đó nâng cao hiệu quả bảo mật.

4.1. Phát Hiện Mã Độc

Phát hiện sự tương đồng trong mã nhị phân giúp nhận diện các phần mềm độc hại đã được chỉnh sửa từ mã nguồn khác. Điều này hỗ trợ trong việc ngăn chặn các cuộc tấn công mạng.

4.2. Tối Ưu Hóa Mã Nguồn

Các nhà phát triển có thể sử dụng kỹ thuật này để tìm kiếm các đoạn mã trùng lặp, từ đó tối ưu hóa mã nguồn và giảm thiểu rủi ro bảo mật.

V. Kết Luận Và Hướng Phát Triển Tương Lai

Nghiên cứu phát hiện sự tương đồng trong mã nhị phân đang ngày càng trở nên quan trọng. Các phương pháp học sâu cho thấy hiệu quả vượt trội so với các phương pháp truyền thống. Hướng phát triển tương lai có thể tập trung vào việc cải thiện độ chính xác và tốc độ xử lý.

5.1. Cải Thiện Độ Chính Xác

Cần nghiên cứu thêm để cải thiện độ chính xác của các phương pháp phát hiện sự tương đồng, đặc biệt trong các trường hợp mã nhị phân phức tạp.

5.2. Tăng Tốc Độ Xử Lý

Tăng tốc độ xử lý là một yếu tố quan trọng để ứng dụng các phương pháp này vào thực tiễn, đặc biệt trong các hệ thống yêu cầu thời gian thực.

10/07/2025
Khóa luận tốt nghiệp an toàn thông tin nghiên cứu phương pháp phát hiện sự tương đồng mã nhị phân của chương trình phần mềm dựa trên các mô hình ngôn ngữ và học sâu

Trích đoạn nội dung tài liệu

Chương 1: Giới thiệu tổng quan về đề tài của khóa luận tốt nghiệp và những nghiên cứu có liên quan trước đó. e Chương 2: Trình bay cơ sở lý thuyết và những kiến thức nền tang phục vụ cho khóa luận. e Chương 3: Trình bày phương pháp phát hiên sự tương đồng trong mã nhị phân mà chúng tôi da nghiên cứu. e Chương 4: Trình bày các thí nghiệm và đánh giá.

e Chương 5: Kết luận và hướng phát triển của đề tài. CƠ SỞ LÝ THUYET Trong chương này chúng tôi sẽ trình bày các cơ sở lý thuyết liên quan của đề tài: Bao gồm các thành phần liên quan đến tập tin nhị phân, ngôn ngữ biểu điễn trung gian (Intermediate representation) và mô hình học sâu. Các thành phần liên quan đến tập tin nhị phân 2. Chức năng - Function Trong nghiên cứu này, chúng tôi đề cập đến một hàm là một danh sách các câu lệnh (Instructions) được sắp xếp trong các tập tin nhị phân, và chúng được biên dịch từ một hàm mã nguồn.

Do đó, nó có ngữ nghĩa cụ thể. Hơn nữa một chức năng có biểu đồ luồng điều khiển (Control-flow-graph) dùng để biểu thị thông tin luồng thực thi của nó (Tương tự như hình 2. La: ' Li: ¡ mov P8, [rbp] ! mov P8, [rbp] ' emp hai, rax ' cmp [rbp], rax ti; jz L3 | call exaae3te ‘Ta: L3: edd L4 h ee add rax, rdi 1 add rax, rdi ' call 0x4ee3fe eee i; L[_ imp ta jmp L5 ï jmp L5 ' tla: | add rax, 3 La:add rax, 3 ' H mov [rbp-8], rax ,' U5: t add rax, 3 1 ret ' ‘6: TLS: L6: ! sub rax, 3 h add rax, 3 sub rax, 3 ! net h ret ret ~=—~=====—==—==m—===m==-=“a Hành 2.1: Mot vi dụ uề biểu đồ luồng điều khiển của hàm nhị phân. Phần bên trái là ma tập hợp bố cục tuyến tinh uới các địa chỉ bước nhảy va phan bên phải là biểu đồ luồng điều khiển tương ứng.

L1 va LẠ là các nút bắt buộc. Basic block Basic block là một chuỗi các lệnh liên tiếp trong mã máy, có một điểm vào và một điểm ra duy nhất. Trong file nhị phân, basic block là một đoạn mã máy được tạo ra từ một số lệnh máy và thường được xem như là một đơn vị dùng trong việc phân tích mã nhị phân (Hình 2. sample2 proc near 888 cmp [esp+enabled], ø 908 jz short loc_481852 loc_ 481052: 888 or eax, OFFFFFFFFH 888 retn sample2 endp eax, eax short loc_48184D esptcounter], 1 SAN loc_48184D : 888 mov eax, [esptcounter] 888 retn Hình 2.2: Các basic block kế tiếp nhau được trích xuất khi dùng IDA 2.

Biểu dé luồng điều khiển - Control flow graph Control Flow Graph (CFG) là biểu đồ biểu diễn luồng điều khiển của chương trình máy tính hoặc chương trình nguồn dưới dạng đồ thị hướng điều khiển. Mỗi nút trong CFG đại diện cho một basic block, đại diện cho một chuỗi các lệnh liên tiếp không thể ngắt giữa các lệnh. Các cạnh trong CFG biểu thị các chuyển đổi giữa các basic block thông qua các nhánh điều kiện, nhánh vô điều 12 kiện hoặc các lệnh gọi hàm. Trong phát hiện sự tương đồng trong mã nhị phân, CFG được sử dụng để so sánh cấu trúc điều khiển của các chương trình khác nhau và xác định sự tương đồng giữa chúng.

Các phương pháp phát hiện sự tương đồng thường dựa trên việc so sánh các đặc trưng của CFG, quan hệ điều khiển và đường đi thực thi. 1 intadd(inta}{ func —- loc_40143A: 2 return a++; .text:0040143A mov dword ptr [esp+18h], 0 3 } ,text:00401442 mov eax, [ebp+argc] .text:00401445 cmp eax, [esp+18h] 4 intsublinta){ .text:00401449 jle — shortloc 40141E 5 return a--; .text:00401448 mov dword ptr [esp+1Ch], offset _sub 6 } .text:00401453 jmp short lọc 401410 7 int func(int a){ 8 int num = 0; 9 int (*cal)(int); add — lọc_401410 sub -— lọc_40141E 10 if{(a>num)( ,text:00401410 push ebp ,text:0040141E push ebp 11 cal = add; .text:00401411 mov ebp,esp .text:0040141F mov ebp, esp 12 } .text:00401413 mov eax, [ebp+arg_0]} .text:00401421 mov eax, [ebp+arg_0] 13 else{ .text:00401416 lea edx, [eax+1] .text:00401424 lea edx, [eax-1] 14 EesuÙb: .text:00401419 mov [|ebp+arg 0], edx .text:00401427 mov l|ebp+arg 0],edx NI BỌN text:0040141C pop cbp .text:0040142A pop ebp 15 } .text:0040141D retn ,text:0040142B retn 16 return cal(a); 17 } (a). Source code of the example (b). CFG of the example Hình 2.3: Ví du vé một đoạn chương trinh uới CFG tương ứng 2.

Strand Trong ngữ cảnh phát hiện tương đồng mã nhị phân, thuật ngữ "Strand" thường được sử dụng để chỉ một đoạn mã nhị phân hoặc các lệnh cụ thể trong mã nhị phân. Strand là một tập hợp các câu lệnh liên quan nhau mà khi kết hợp lại, chúng sẽ tạo thành một chuỗi hoàn chỉnh thực hiện một nhiệm vụ nào đó trong chương trình. Trong nghiên cứu này, quá trình phát hiện tương đồng mã nhị phân thường bắt đầu bằng việc chia nhỏ các mã nhị phân thành các strand. Sau đó, các thuật toán so sánh có thể được ap dụng để so sánh các strand này với nhau để xác định 13 mức độ tương đồng giữa chúng.

Các kỹ thuật như inlining, constant folding, và các phép tối ưu hóa khác có thể được áp dụng lên các strand để tăng cường hiệu quả của quá trình phân tích và so sánh mã nhị phân. Decompiler Decompiler là một công cụ hoặc chương trình máy tính dùng để chuyển đổi mã máy (machine code) hoặc mã nhị phan (binary code) trở lại thành mã nguồn gốc dưới dạng ngôn ngữ lập trình. Việc sử dụng decompiler có thể giúp phân tích và nằm bắt rõ hơn về chức năng và logic của một chương trình đã được biên dịch. Hiện nay có rất nhìu decompiler khác nhau như: IDA, Ghidra, Radare2, RetDec,.

Thông thường các decompiler có thể có các công dụng như sau: e Phân tích ngược: Giúp nhà phát triển hiểu cấu trúc và logic của một chương trình khi mã nguồn không còn hoặc không có sẵn. e Trích xuất chức năng: Decompiler cho phép chuyển đổi mã máy không cấu trúc thành dạng mã có cấu trúc ( thường là assembly), giúp dễ dàng hiểu và phân tích các chức năng trong mã nhị phân. e Phân tích bảo mật: Hỗ trợ các chuyên gia an ninh mạng phân tích mã độc, phát hiện lỗ hong bảo mật và đánh giá rủi ro từ mã nhị phan. 14 mov lea mov xor call Mov jmp Hình 2.4: Vi dụ vé một đoạn ma được chuyển đổi sang assembly bằng IDA 2.

IDA Pro Ở nghiên cứu nay, chúng tôi cần sử dung decompiler để trích xuất các dia chỉ của các chức năng trong tập tin nhị phân, từ đó trích xuất ra các bytes code của các chức năng đó. Để phục vụ cho yêu cầu này, chúng tôi quyết định chọn IDA Pro để thực hiện, ngoài là công cu decompiler quen thuộc thì IDA Pro còn có các ưu điểm: e Hỗ trợ phân tích mã nhị phân: IDA Pro cho phép người dùng phân tích các file thực thi (executable files), thư viện (libraries), hay các đoạn mã khác từ nhiều nền tảng khác nhau như Windows, Linux, macOS, và nhiều hệ điều hành nhúng. e Phân tích đồ thị luồng điều khiển: Công cụ này giúp người dùng hình dung và phân tích các nhánh thực thi của chương trình, từ đó tìm ra các kết nối logic và điểm nhập nhằng (critical point) của chương trình. e Hỗ trợ nhiều kiến trúc và định dạng file: IDA Pro hỗ trợ nhiều loại kiến trúc vi xử lý và định dang file như ELF, PE, Mach-O, và COFF, giúp người dùng phân tích các loại file khác nhau dé dàng.

IDA Python API IDA Python API là một giao diện lập trình ứng dung (API) được cung cấp bởi IDA Pro để cho phép người dùng tương tác với và điều khiển IDA Pro bằng ngôn ngữ lập trình Python. API này cho phép các nhà phân tích mã nhị phân và bảo mật sử dụng các tính năng của [DA Pro một cách tự động hóa và linh hoạt hơn thông qua việc viết các script và plugin. Một số tính năng nổi bat của IDA Python API: e Doc và phân tích mã nhị phân: API cho phép người dùng mở các file thực thi và thực hiện các thao tác như phân tích đồ thị luồng điều khiển (CFG), đọc các hàm, khối lệnh, và các cấu trúc dữ liệu khác từ chương trình. e Tự động hóa quy trình phân tích: Bằng cách sử dụng IDA Python API, chúng ta có thể viết các script để tự động hóa các quy trình phân tích, như tìm kiếm chuỗi, đặt nhãn, phát hiện các cấu trúc dit liệu và các chuỗi lỗi.

e Tích hợp với các công cụ và workflow khác: IDA Python API có thé tích hợp và tương tác với các công cụ và quy trình làm việc khác, ví dụ như phân tích tĩnh (static analysis) từ các công cụ khác, tự động hóa các bước kiểm thử (testing automation), hoặc tạo ra các báo cáo phân tích. Biểu diễn trung gian - Intermediate Representation VEX Intermediate Representation (VEX-IR) là một biểu diễn trung gian được sử dụng trong phân tích mã nhị phân. Nó được phát triển bởi dự án Valgrind và hiện tại được sử dụng rộng rãi trong nhiều công cụ phân tích mã nhị phân như Angr. VEX-TR chuyển đổi mã máy cụ thể của các kiến trúc phần cứng khác 16 nhau thành một định dạng trung gian phổ quát, giúp dễ dàng phân tích và xử lý mã nhị phân.

Vex Intermediate Representation (Vex-IR) Một trong những biểu diễn trung gian pho biến được sử dung là Vex Inter- mediate Representation (Vex-IR). Vex-IR là một ngôn ngữ trung gian dựa trên mã máy, được sử dụng để biểu diễn mã nhị phân dưới dạng các biểu thức và lệnh có cấu trúc. Hiện nay có rất nhiều ngôn ngữ biểu diễn trung gian như LLVM-IR, BIL, nhưng trong nghiên cứu này chúng tôi lựa chọn Vex-IR vì các lí do sau: e Kiến trúc trung gian: VEX-IR không phụ thuộc vào kiến trúc cụ thể, nghĩa là nó có thể biểu diễn mã từ nhiều kiến trúc CPU khác nhau (x86, ARM, MIPS, etc.) trong một định dạng nhất quán. Điều này giúp chuẩn hóa việc phân tích mã từ nhiều nguồn khác nhau.

e Ngôn ngữ trung gian cấp thấp: VEX-IR là ngôn ngữ trung gian cấp thấp, gần với mã máy nhưng van dễ hiểu hơn đối với con người. N6 cung cấp một tập hợp các lệnh cơ bản để biểu diễn các thao tác như di chuyển dữ liệu, tính toán, và các lệnh điều khiển luồng. e Hỗ trợ nhiều phép toán và kiểu dữ liệu: VEX-IR hỗ trợ các phép toán số học, logic, so sánh, và các phép toán trên bộ nhớ. Nó cũng hỗ trợ nhiều kiểu dữ liệu như số nguyên, số thực, và các kiểu dữ liệu vector.

e Ngoài ra Vex-IR còn có framework hỗ trợ rất mạnh mẽ là angr với pyvex được tích hop.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ

Tài liệu "Nghiên Cứu Phát Hiện Sự Tương Đồng Trong Mã Nhị Phân Sử Dụng Mô Hình Ngôn Ngữ Và Mạng Nơ-Ron Sâu" khám phá các phương pháp phát hiện sự tương đồng trong mã nhị phân thông qua việc áp dụng mô hình ngôn ngữ và mạng nơ-ron sâu. Nghiên cứu này không chỉ cung cấp cái nhìn sâu sắc về cách thức hoạt động của các mô hình học máy trong việc phân tích mã độc, mà còn chỉ ra những lợi ích trong việc cải thiện độ chính xác và hiệu suất của các hệ thống phát hiện mã độc hiện tại.

Để mở rộng kiến thức của bạn về lĩnh vực này, bạn có thể tham khảo thêm tài liệu Luận văn nghiên cứu phương pháp phát hiện mã độc dựa trên dữ liệu meta data của tệp tin, nơi cung cấp cái nhìn về cách dữ liệu meta có thể được sử dụng để phát hiện mã độc. Ngoài ra, tài liệu Khóa luận tốt nghiệp an toàn thông tin một nghiên cứu trong việc phát hiện mã độc android dựa trên mô hình học sâu đa phương thức sẽ giúp bạn hiểu rõ hơn về ứng dụng của học sâu trong phát hiện mã độc trên nền tảng Android. Cuối cùng, tài liệu Luận văn thạc sĩ nghiên cứu phương pháp lai trong phát hiện mã độc botnet trên thiết bị iot sẽ mở rộng thêm kiến thức về các phương pháp phát hiện mã độc trong môi trường IoT. Những tài liệu này sẽ giúp bạn có cái nhìn toàn diện hơn về các xu hướng và công nghệ hiện tại trong lĩnh vực an toàn thông tin.