3. CHƯƠNG 3: XÂY DỰNG PHƯƠNG PHÁP PHÁT HIỆN HÀNH VI TỰ
3.3.1. Mô hình chương trình mô phỏng
Chương trình mô phỏng BMD (Behavior based Malware Detection) có mô hình được thể hiện qua Hình 3.9:
Hình 3.9: Mô hình chương trình mô phỏng BMD
Chương trình mô phỏng được chia thành hai phần chính là: phần hoạt động ở mức nhân của hệ điều hành (kernel mode) và phần hoạt động ở mức người sử dụng của hệ điều hành (user mode). Chức năng và chi tiết hoạt động của từng thành phần như sau:
- Phần hoạt động ở mức nhân của hệ điều hành:
Phần này có nhiệm vụ giám sát hàm ZwCreateSection và các thao tác đọc và ghi của hai hàm ZwReadFile và ZwWriteFile. Quá trình kiểm xử lý của phần này như là những gì đã được trình bày ở trên.
Phần này hoạt động ở mức nhân của hệ điều hành này được lập trình bằng ngôn ngữ C++. Về mặt vật lý, phần này là một tập tin thuộc dạng trình điều khiển thiết bị (driver). Tập tin này được đặt tên là: “Protect.sys” sau khi đã biên dịch.
Kỹ thuật dùng để giám sát hoạt động của hai hàm ZwReadFile và ZwWriteFile là kỹ thuật SSDT Hook (System Service Dispatch Table). Hoạt động của kỹ thuật này là thay thế địa chỉ của hai hàm trên trong bảng SSDT. Bảng SSDT là bảng lưu hầu hết địa chỉ các hàm do hệ điều hành cung cấp, được sử dụng ở mức nhân của hệ điều hành. Sau đây là đoạn mã thực hiện kỹ thuật này:
// hook ZwWriteFile
OrigZwWriteFile = (ZWWRITEFILE) (SYSTEMSERVICE(ZwWriteFile)); (ZWWRITEFILE) (SYSTEMSERVICE(ZwWriteFile)) = FakeZwWriteFile;
// hook ZwReadFile
OrigZwReadFile = (ZWREADFILE) (SYSTEMSERVICE(ZwReadFile)); (ZWREADFILE) (SYSTEMSERVICE(ZwReadFile)) = FakeZwReadFile;
Hai hàm “FakeZwReadFile” và “FakeWriteFile” là hai hàm sẽ tiến hành xử lý các thao tác đã được trình bày trong phần giám sát ở trên. Khác với các hệ điều hành cũ hơn (Window XP …), trước khi thực hiện kỹ thuật này trên hệ điều hành Window 7 thì cần phải thực hiện một kỹ thuật khác nữa là gở bỏ tạm thời sự bảo vệ bảng SSDT của hệ điều hành trước khi có thể chỉnh sưa nội dung của bảng này. Vì mặc định, trên hệ điều hành Window 7, bảng này được bảo vệ và mọi sự can thiệp vào bảng này mà chưa gõ bỏ sự bảo vệ đều gây ra một lỗi màn hình xanh (Blue Screen Of Death). Sau khi can thiệp và thay đổi được địa chỉ hai hàm ZwReadFile và ZwWriteFile thì cần khôi phục sự bảo vệ bảng SSDT của hệ điều hành để tránh sự thay đổi do mã độc gây ra.
Kỹ thuật dùng để truyền dữ liệu từ thành phần nhân của hệ điều hành lên thành phần người dùng là kỹ thuật chia sẻ bộ nhớ chung. Và để báo hiệu cho từ kernel lên user mode thì sự kiện (Event) được sử dụng.
- Phần hoạt động ở mức người dùng của hệ điều hành:
Phần này có ba nhiệm vụ cơ bản:
+ Nhiệm vụ thứ nhất: cài đặt thành phần hoạt động ở mức nhân cửa hệ điều hành
+ Nhiệm vụ thứ hai: hiển thị thông báo cho người sử dụng biết khi phát hiện có tiến trình có hành vi tự sao chép
+ Nhiệm vụ thứ ba: ngừng thực thi của tiến trình có hành vi sao chép và loại bỏ các tập tin mã độc khỏi hệ thống.
Thành phần này được lập trình bằng ngôn ngữ C++. Về mặt vật lý, thành phần này là tập tin “BMD.exe” sau khi đã biên dịch. Hình 3.10 mô tả giao diện của chương trình sau khi cài đặt thành công vào hệ thống:
Hình 3.10: Giao diện chương trình BMD