54 push esp 5D pop ebp
4.1 Giới thiệu phương pháp phát hiện virus dựa trên giá trị ngữ nghĩa.
Phần mềm phát hiện mã độc hại sử dụng mô hình đơn giản phù hợp với cách tiếp cận để phát hiện phần mềm độc hại, ví dụ, một chương trình bị coi là phần mềm độc hại nếu nó có chứa một chuỗi kết nối ra ngoài một cách thường xuyên. Một nghiên cứu gần đây đã chứng mình rằng phần mềm phát hiện mã độc hại có thể đánh bại những kỹ thuật che dấu mã lệnh đơn giản, hay được sử dụng bởi tin tặc. Do đó những phần mềm diệt virus phải sử dụng những mẫu chữ ký khác nhau để phát hiện hai biến thể có chút ít thay đổi. Đây là lý do mà cơ sở dữ liệu chữ ký của phần mềm diệt virus cập nhập thường xuyên dẫn đến cơ sở dữ liệu chữ ký ngày càng lớn.
Để giải quyết vấn đề này người ta đã nghiên cứu tạo ra chữ ký ngữ nghĩa cho virus đa hình. Chữ ký ngữ nghĩa giúp phát hiện virus đa hình kể cả khi chúng đã được nhân bản bản bằng các kỹ thuật biến đổi mã thường gặp.
Giả sử chương trình P được biến đổi trong quá trình biên dịch tạo ra một chương trình P’. Ở đây chương trình P’ có chức năng giống như chương trình P. Tuy khác nhau trong quá trình biên dịch nhưng chương trình P’ vẫn giữ ngữ nghĩa của chương trình P. Với việc tin tặc sử dụng những kỹ thuật che dấu giống như thay đổi quá trình biên dich. Tuy nhiên những biến thể của virus là không tương đương vì kẻ viết mã độc thêm chức năng bổ sung giữa các biến thể. Qua quá trình quan sát một số hành vi nguy hiểm được lặp đi lặp lại trong các biến thể. Từ đó thuật toán để phát hiện các hành vi được quy định trước.
Thuật toán phát hiện virus đa hình dựa trên ngữ nghĩa: Sau khi xác định xem một chương trình có hành vi nguy hiểm được quy định. Thuật toán sẽ dựa vào hành vi nguy hiểm để phát hiện ra những biến thể khác nhau với một mẫu chữ kỹ duy nhất.
Trước khi trình bày thuật toán phát hiện virus đa hình dựa trên ngữ nghĩa để phát hiện virus đa hình, sau đây là một số giải thích trực quan cơ bản của ý tưởng. Sau đây là một thuật toán đơn giản về một hành vi của mã độc nhằm thực hiện chức năng giải mã một đoạn mã và thực thi đoạn mã đã được giải mã đó.
Hình 4.1: biểu đồ luồng xử lý của virus
Hình 4.1 mô tả hành vi virus đó là một vòng lặp giải mã được tìm thấy trong virus đa hình. Những đặc điểm kỹ thuật của mã độc được miêu tả trong hình 4.1 là một bộ giải mã bắt đầu từ địa chỉ const_addr1 và ghi dữ liệu được giải mã vào bộ nhớ bắt đầu từ địa chỉ const_addr2. Chức năng giải mã được kết thúc ở hàm f() và condition() tương ứng. Bằng cách gây khó hiểu tên của thanh ghi và các hằng số, nó là đặc điểm kỹ thuật của những mã độc. Về ngữ nghĩa và thuật toán phát hiện virus đa hình thì nó phát hiện những kỹ thuật che dấu đơn giản, chẳng hạn như thay đổi tên thanh ghi, thay đổi địa chỉ bắt đầu của khối bộ nhớ.
Hình 4.2: Ví dụ đoạn mã mà virus sử dụng
Hình 4.2 mô tả một đoạn mã mà virus sử dụng, thứ tự thực hiện những câu lệnh thì giống như mẫu được mô tả trong hình 4.1. Thứ tự thực hiện các câu lệnh trong hình 4.2 cho biết dữ liệu được đọc từ bộ giải mã có địa chỉ ban đầu nằm trong thanh ghi EAX = 0x403000 sau đó nó sẽ kiểm tra nếu giá trị mà EAX nắm giữ mà lớn hơn hoặc bằng 0x406000 thì nó sẽ đọc vùng nhớ của đoạn mã đã được giải mã nằm ở địa chỉ 0x400000. Quá trình giải mã thực hiện cho tới khi EAX ≥ 0x406000. Còn nếu nhỏ hơn thì nó sẽ thực hiện việc giải mã, câu lệnh thứ 5 mem[ebx]= mem[edx-3]≪2 +1 chính là gán lại giá trị ô nhớ cho ô nhớ có địa chỉ mà thanh ghi EBX đang giữ.
Hình 4.3: những hằng số giả lập
Hình 4.3 là nhữn hằng số được giả lập để áp dụng trong thuật toán được mô tả trong hình 4.1 và hình 4.2.
Hình 4.4: Hằng số
Quá trình xây dựng giá trị ngữ nghĩa của một được xây dựng dưa trên ngôn ngữ Abstract Assembly Programming Lenguage– AAPL.AAPL được dùng trong thuật toán phân chia động và dùng để lập luận về quá trình che dấu những biến đổi trong những biến thể của chương trình mã độc. Ngữ nghĩa của một chương trình có thể được tái hiện trực tiếp qua một chương trình assembly, sự trợ giúp của AAPL trong quá trình tiếp cận phân tích những chương trình biến thể như quá trình sinh ra CFGs, PDGs,.. AAPL cho phép triển khai những kỹ thuật phân tích trên mã ở mức thấp. Phần sau sẽ trình bày cú pháp được sử dụng trong ngôn ngữ AAPL.