Các bước thực hiện hành vi tự sao chép của mã độc

Một phần của tài liệu Xây dựng hệ thống phát hiện, cảnh báo, ngăn chặn mã độc dựa trên hành vi (Trang 62 - 64)

3. CHƯƠNG 3: XÂY DỰNG PHƯƠNG PHÁP PHÁT HIỆN HÀNH VI TỰ

3.1.2.Các bước thực hiện hành vi tự sao chép của mã độc

Để có thể thực hiện được hành vi tự sao chép của mã độc thì mã độc cần thực hiện hai thao tác cơ bản:

- Thao tác 1: tự đọc

Đây là thao tác đầu tiên, mã độc tự đọc chính nó và lưu nội dung đọc được vào một vùng nhớ nhất định. Theo MSDN (Microsoft Developer Network), trên hệ điều hành Windows 7, ở mức người sử dụng (user mode) có những hàm dùng để đọc tập tin là: ReadFile, ReadFileEx. Tuy nhiên các hàm này đều gọi đến một hàm ở mức nhân của hệ điều hành Windows 7 (kernel mode) dùng để đọc tập tin là hàm: ZwReadFile. Như vậy, để đọc một tập tin thì các chương trình đều phải sử dụng hàm ZwReadFile. Hình 3.3 mô tả mối quan hệ của các hàm đọc tập tin.

Hình 3.3:Mối quan hệ của các hàm đọc tập tin

Để giám sát hành vi đọc tập tin thì có thể giám sát các hàm ở mức người sử dụng. Tuy nhiên kỹ thuật giám sát ở mức người sử dụng dễ dàng bị phát hiện bởi mã độc. Giám sát hàm ZwReadFile ở mức nhân của hệ điều hành có kỹ thuật phức tạp hơn rất nhiều nhưng lại có tính bí mật cao hơn, rất khó phát hiện hơn.

- Thao tác 2: tạo và ghi nội dung đọc được vào một tập tin nhất định trong

hệ thống. Theo MSDN, trên hệ điều hành Windows 7 có những hàm dùng để đọc tập tin là: WriteFile, WriteFileEx. Tuy nhiên các hàm này đều gọi một hàm ở mức nhân của hệ điều hành dùng để ghi tập tin là hàm: ZwWriteFile. Hình 3.4 mô tả mối quan hệ của các hàm ghi tập tin:

Hình 3.4:Mối quan hệ của các hàm ghi tập tin

Cũng giống như cách giám sát thao tác đọc tập tin, để giám sát thao tác ghi tập tin thì sử dụng phương thức giám sát hàm ZwWriteFile ở mức nhân của hệ điều hành có tính bí mật và khó phát hiện hơn.

Như vậy, để xác định hành vi tự sao chép thì cần xác định mối liên hệ giữa hai hàm đọc và ghi tập tin. Sau đây là nhật ký sử dụng hàm đọc và ghi của mã độc W32.Sality:

[+]ZwReadFile

FileHandle = 0x00000080

Path: \Device\HarddiskVolume2\Users\apache2\Desktop\RECYCLER\e5188982.exe Address: 0x5cecd8

[+]ZwWriteFile

FileHandle = 0x00000088 Address Buffer: 0x5cecd8

FileObject->FileName = \Users\apache2\AppData\Roaming\Kopepo.exe

Path: \Device\HarddiskVolume2\Users\apache2\AppData\Roaming\Kopepo.exe Để thực hiện hành vi tự sao chép, mã độc sử dụng hàm ZwReadFile để tự đọc chính nó, là tập tin “e5188982.exe”. Nội dung sau khi đọc được lưu vào bộ đệm có địa chỉ “0x5cecd8”. Sau đó, mã độc sử dụng hàm ZwWriteFile để ghi nội dung sau khi đọc được vào tập tin mới được tạo là tập tin “Kopepo.exe”. Bằng cách so sánh địa chỉ bộ nhớ đệm lưu nội dung đọc được có thể xác định đó chính là bộ nhớ đệm sử dụng để ghi tập tin. Thông thường, bộ nhớ đệm lưu nội dung đọc được có kích thước nhỏ hơn so với kích thước của tập tin mã độc. Do vậy, mã độc thường sử dụng một vòng lặp đọc và ghi để đạt được hành vi tự sao chép vào hệ thống.

Một phần của tài liệu Xây dựng hệ thống phát hiện, cảnh báo, ngăn chặn mã độc dựa trên hành vi (Trang 62 - 64)