Chương 1: Giới thiệu tổng quan về đề tài của Khóa luận và những nghiên cứu liên quan. e Chương 2: Trình bày cơ sở lý thuyết và kiến thức nền tảng liên quan đến đề tài. e Chương 3: Trình bày mô hình tạo mẫu đột biến. e Chương 4: Trình bày thực 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 Chương này trình bày cơ sở lý thuyết của nghiên cứu: Bao gồm mã độc, các kỹ thuật phân tích mã độc, mô hình phát hiện mã độc, và mô hình học tăng CƯỜng. Cấu trúc tệp thực thi Trong nghiên cứu này chúng tôi chỉ chọn tệp thực thi của Windows làm mẫu đối tượng. Định dạng tập tin PE, viết tắt của Portable Executable, là một định dang tập tin cho các tập tin .DLL, mã đối tượng (Object Code) trong hệ điều hành Windows (cho cả hai phiên bản x86 va x64).
Dinh dang này là một cấu trúc dữ liệu cung các thông tin cần thiết để bộ nạp của hệ điều hành Window có thể quản lý và thực thi được các lệnh được định nghĩa trong tập tin. Định dạng này được phát triển dựa trên định dạng UNIX COFE. Vào thời điểm hiện tại, phan mở rộng của tập tin PE có các dạng như sau:. Định dạng tập tin PE có các vai trò cơ bản sau: e Cung cấp dữ liệu để tải chương trình lên bộ nhớ: Dinh dang PE mô tả đoạn mã cần được tải lên bộ nhớ và nơi chúng cần được lưu trữ, cách thức khởi tạo và thư viện cần được tham chiếu tới.
e Cung cấp tài nguyên mà chương trình có thé sử dụng trong quá trình thực thi: Các tài nguyên bao gồm hình ảnh, đoạn phim, chuỗi ký ĩ e Cung cấp cơ chế bảo mật: Tập tin PE sử dụng các dữ liệu bảo mật như là một chữ ký số để đảm bảo rằng hệ điều hành có khả năng xác thực nguồn gốc của chương trình được nạp. Cấu trúc chung của định dạng tập tin PE thường sẽ có 2 phân đoạn, phân đoạn thứ nhất là cho đoạn mã và phân đoạn thứ hai là cho dữ liệu. <9 Data Directories Hình 2.1: Cáu trúc định dang tập tin PE 2. Trường tiêu dé DOS (DOS Header) Trường này được thực thi bất cứ khi nào tap tin chạy trong môi trường MS- DOS, mục tiêu của nó là để thông báo tập tin này không thể hoạt động trong môi trường trên.
Chi tiết hơn, trường tiêu đề DOS chiếm 64 bytes đầu tiên trong tập tin chứa 2 giá trị quan trọng là e_ magic (0x5a4b) và e_ lfanew là một DWORD (4bytes), giá trị nằm trong 4 bytes này chứa khoảng cách (offset) đến Trường tiêu đề tập tin PE. Trường tiêu đề PE (PE Header) Trường tiêu đề PE bao gồm các thông tin cần thiết để tải chương trình lên bộ nhớ. Cấu trúc của phần này bao gồm 3 phần chính: 8 e Signature: là 1 DWORD bắt đầu trường tiêu dé PE chứa chữ ky PE: 50h, 45h, 00h, 00h e Trường tiêu đề tap tin: bao gồm 20 bytes tiếp theo của Trường tiêu đề PE, phần này chứa thông tin về sơ đồ bố trí vật lý và các đặc tính của tập tin. Trong trường này chúng ta cần chú ý tới trường NumberOfScctions , đây là trường chứa số section của file.
Nếu muốn thêm/xoá đoạn trong tap tin PE, ta cần thay đổi tương ứng trường này. e Trường tiêu đề tùy chon: bao gồm 224 bytes tiếp theo sau Trường tiêu đề Tập tin. Cau trúc này được định nghĩa trong windows.inc, đây là phần chứa thông tin về sơ đồ luận lý trong tập tin PE. Phân đoạn bang (Section Table) Section Table là thành phan kế tiếp ngay sau Trường tiêu dé PE, chứa một mang các cau trúc IMAGE SECTION HEADER, mỗi phần từ sẽ chứa thong tin về một phân đoạn trong tập tin PE Một số phân từ quan trọng như: e Kích thước ảo (VirtualSize): Kích thước that của phân đoạn sau khi được nạp vào bộ nhớ, được tính theo byte và giá trị này có thể nhỏ hơn kích thước trên ổ đĩa.
e Địa chỉ ảo (VirtualAddress): Giá trị để ánh xạ các phân đoạn khi được tải lên bộ nhớ e Kích thước của dữ liệu nguyên bản (SizeOfRawSection): Kích thước phân đoạn dt liệu trên đĩa. e Con trỏ của dữ liệu nguyên bản (PointerOfRawSection): là khoảng cách từ vị trí đầu tập tin cho tới phân đoạn dữ liệu. Phân đoạn tập tin PE (Section PE File) La những phan đoạn chứa nội dung chính của tập tin, bao gồm các đoạn mã, đữ liệu, tài nguyên và các thông tin khác của tập tin thực thi. Mỗi phân đoạn có một trường tiêu dé và một dữ liệu nguyên bản (dữ liệu chưa được xử lý).
Những phân đoạn trường tiêu đề được chứa trong phân đoạn bảng. Một chương trình cơ bản trên hệ điều hành Windows sẽ bao gồm: e Phân đoạn mã thực thi là các đoạn mã tập trung vào một phân đoạn đơn lẻ. e Phân đoạn dữ liệu (.rdata) biểu diễn dữ liệu với quyền đọc là các chuỗi , giá trị hằng, thông tin,. tất cả các biến khác ngoài biến tự động mà chỉ xuất hiện trong ngăn xếp (stack) cũng được lưu trữ trong phân đoạn này.
e Phân đoạn tài nguyên (.rsrc) chứa thông tin tài nguyên cho một mé-dun, 16 byte đầu tiên gồm một trường tiêu đề giống như các phân đoạn khác, nhưng dit liệu của phân đoạn này được cấu trúc vào trong một cây tài nguyên và được quna sat bằng trình biên soạn tài nguyên e Phân đoạn xuất dữ liệu (.edata) chứa các thư mục xuất (Export Directory) cho mọt chươn trình ứng dụng hoặc một tập tin. Khi biểu diễn, phân đoạn này bao gồm các thông tin và địa chỉ của những hàm có chức năng xuất. e Phân đoạn nhập dữ liệu (.idata) chứa những thông tin khác nhau về thư mục nhập (Import Directory) và bảng địa chỉ nhập (Import Address Table). Hợp ngữ Hợp ngữ thuộc loại ngôn ngữ bậc thấp được thiết kế cho từng họ bộ xử lý, được sử dụng để tương tác gần nhất với máy tính.
Mỗi dòng lệnh của hợp ngữ gần như tương đương với một lệnh chỉ dẫn của bộ xử lý. Với ngôn ngữ này, ta có 10 thể sử dụng các công cụ để dịch ngược mã độc thành hợp ngữ để dễ dàng hơn trong việc phân tích và điều tra. Thông thường, khi được biên dịch thành hợp ngữ, các chương trình độc hại sử dụng các lệnh để tương tác với hệ điều thông qua việc gọi các thư viện liên kết động (DLL), nhứng thứ được tải lên bộ nhớ tại thời điểm hoạt động. Mã độc thường sử dung DLL để thực hiện các tác vụ như thay đổi thanh ghi của hệ thống, di chuyển hoặc sao chép tập tin, tạo liên kết hoặc kết nối với máy chủ, vùng mạng khác thông qua các giao thức mạng khác nhau, vân vân.
Các trình phát hiện mã độc thường dựa vào các đặc điểm về cấu trúc tập tin hoặc hành vi khi thực thi để xác định tập tin độc hại. Để vượt mặt các trình này, một vài kỹ thuật trên hợp ngữ được áp dụng nhằm làm biến đổi hình dạng, trạng thái của mã độc như: e Chèn mã chết (Dead-code insertion) e Tái khai báo thanh ghi (Register Reassignment) e Tái sắp xếp chương trình con (Subroutine Reordering) e Thay thế lệnh (Instruction Subtitution) e Chuyển vị mã (Code Transposition) e Tích hợp mã (Code Integration) Việc phân tích hợp ngữ giúp chúng tôi hiểu rõ hơn cơ chế phát hiện mã độc của các trình phát hiện hiện tại. Bởi ngoài thuộc tính liên quan đến tệp thực thi, các trình phát hiện còn tập trung phân tích theo mẫu hợp ngữ. Mô hình phát hiện mã độc Mục đích của phát hiện mã độc là đưa ra những cảnh báo sớm để có cơ chế ngăn chặn kịp thời trước khi các tập tin mã độc thực thi và gây ra các tổn hại tới hệ thống.
Vì thế, vai trò của phát hiện mã độc là rất quan trọng trong việc giảm thiểu thiệt hại hoặc ngăn chặn các tập tin này kịp thời. Phương pháp phân tích tĩnh Kỹ thuật phát hiện mã độc dựa trên phương pháp phân tích tĩnh có đặc điểm là phát hiện mã độc mà không cần phải chạy hay thực thi bất kỳ đoạn mã nào của nó gồm có 3 phường pháp chính là kỹ thuật dò quét, chuẩn đoán dựa trên kinh nghiệm và kiểm tra tính tóàn vẹn. Kỹ thuật dò quét Thông thường mỗi một mã độc được biểu diễn bởi một hay nhiều mẫu, hoặc là các dấu hiệu, chuỗi tuần tự các byte là đặc trưng được coi là duy nhất của mã độc. Các dấu hiệu này có thể là chuỗi hoặc không cần bất kỳ ràng buộc về chuỗi nào.
Một vài chương trình phát hiện mã độc hỗ trợ việc sử dụng các ký tự đại điện cho mõi một byte tùy ý, một phần của byte, hoặc không hay nhiều byte. Cụ thể hơn, quá trình phát hiện được thụ hiện thông qua một dong các mã byte, chúng có thể là toàn bộ nội dung của một khối khởi tạo, toàn bộ nội dung của tập tin, hoặc là một phần của tập tin được đọc hoặc ghi, hay cũng có thể là các gói tin mạng. Với hàng trăm ngàn dấu hiệu để phát hiện, việc tìm kiếm chúng tại một thời điểm trở nên bất khả thi. Một trong những thách thức lớn nhất của kỹ thuật này là tìm ra các thuật toán có khả năng quét nhiều mẫu một cách hiệu quả và đồng thời có khả năng phân tích, đánh giá chúng.
Kỹ thuật Tìm kiếm tinh (Static Heuristic) Với mục đích tận dụng khả năng và kinh nghiệm chuẩn đoán của các chuyên gia mã độc, kỹ thuật này được áp dụng nhằm tăng khả năng tìm thấy các loại mã độc đã biết hoặc các biến thể dựa trên những mẩu đặc điểm chung. Kỹ thuật này thực hiện 2 bước chính, thu thập dữ liệu và phân tích dữ liệu. Kỹ thuật Static Heuristic được ứng dụng để giảm tài nguyên cần có cho quá trình quét. Dữ liệu về mã độc được lưu trong cơ sở dit liệu được chọn lựa và giảm thành tập dữ liệu nhỏ hơn và gần với mục tiêu hơn.
Kỹ thuật kiểm tra tính toàn ven Ky thuật kiểm tra tính toàn vẹn được ứng dụng với mục đích khai thác các hành vi thay đổi nội dung tập tin thực thi. Việc kiểm tra toàn vẹn được khởi tạo với việc tính và lưu chỉ số tổng kiểm tra (checksum) cho mỗi tập tin. Sau khi tập tin được vận chuyển hoặc trao đổi giữa các máy hoặc người dùng, nó tập tính lại chỉ số trên và so sánh với giá trị được lưu trữ. Trong trường hợp hai chỉ này khác nhau, trình kiểm tra có thể kết luận tập tin đã bị thay đổi và cảnh báo cho người dùng.