Phương pháp phát 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 64 - 70)

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

3.2. Phương pháp phát hiện hành vi tự sao chép của mã độc

Phương pháp phát hiện được chia thành 3 giai đoạn. Công cụ được phát triển dùng để mô phỏng phương pháp này là BMD (Behavior based Malware Detection).

- Giai đoạn 1: Giám sát khởi tạo tiến trình

Để có thể giám sát được toàn bộ quá trình hoạt động của một tiến trình thì điều đầu tiến là cần giám sát được thời điểm tiến trình đó được khởi tạo trên hệ thống. Giai đoạn này sẽ tiến hành đón bắt tất cả những tiến trình được tạo và lấy thông tin về tiến trình đó. Tuy nhiên thông tin về các hàm được sử dụng để tạo tiến trình không được Mircosoft cung cấp trong các tài liệu chính thức. Có bao nhiêu hàm được sử dụng và đó là những hàm nào thì vẫn được giữ kín. Vì các nguyên nhân bảo mật khác nhau mà Microsoft không công bố.

Mặc dù vậy, vẫn có thể giám sát được các tiến trình được khởi tạo trên Window 7. Các tiến trình trước khi được khởi tạo thì cần cung cấp một không

gian bộ nhớ và tải nội dung tập tin tiến trình đó lên bộ nhớ. Theo MSDN, hàm ZwCreateSection đảm nhiệm công việc này. Như vậy bằng cách giám sát hàm ZwCreateSection thì có thể giám sát các tiến trình được khởi tạo.

Kỹ thuật SSDT Hook (System Service Dispatch Table) được sử dụng để thực hiện nhiệm vụ này. Địa chỉ hàm ZwCreateSection gốc trong bảng SSDT được thay thế bằng địa chỉ hàm khác. Hàm này cũng gọi đến hàm gốc trước khi trả kết quả về cho tiến trình.

Quá trình giám sát được thực hiện như Hình 3.5:

Hình 3.5: Giám sát quá trình khởi tạo tiến trình

Khi hàm ZwCreateSection được gọi, thông tin về tiến trình được thu thập. Thông tin quan trọng nhất được thu thập là đường dẫn đầy đủ của tập tin tiến trình được khởi tạo. Thông tin này được lưu lại trong cấu trúc giám sát cho mỗi tiến trình. Sau đây là nhật ký của hàm ZwCreateSection khi tiến trình mã độc Win32.Sality được khởi tạo:

[+]ZwCreateSection

Full path = \Device\HarddiskVolume2\Users\apache2\Desktop\RECYCLER\e5188982.exe

Để giảm lượng tài nguyên dùng để giám sát các tiến trình. Những tiến trình lành tính không cần giám sát. Các tiến trình này có thể là tiến trình của hệ điều hành hoặc là những chương trình lành tính tin cậy. Dựa vào đường dẫn đầy

đủ của tập tin tiến trình có thể xác định được đó là những tiến trình lành tính. Tất cả những đường dẫn đầy đủ của tiến trình lành tính được lưu vào một danh sách gọi là danh sách trắng (while list).

Khi một tiến trình được khởi tạo, chương trình BMD sẽ kiểm tra xem tập tin tiến trình này có thuộc danh sách trắng hay không. Nếu tiến trình này thuộc danh sách trắng thì tiến trình này không cần giám sát và chương trình BMD sẽ gọi hàm ZwCreateSection gốc để tiếp tục thực thi nhiệm vụ tạo vùng nhớ để tải tập tin lên bộ nhớ. Nếu tiến trình này không thuộc danh sách trắng thì sẽ đưa tiến trình này vào danh sách các tiến trình cần giám sát trước khi gọi hàm ZwCreateSection gốc.

- Giai đoạn 2: Giám sát lời gọi hàm ZwReadFile

Như đã được trình bày ở mục “3.1.2”, hàm ZwReadFile là hàm dùng để đọc tập tin ở mức nhân của hệ điều hành. Quá trình thu thập thông tin và xử lý tiến trình gọi hàm ZwReadFile được thể hiện qua Hình 3.6:

Khi một tiến trình gọi hàm ZwReadFile, thì thao tác đầu tiên là xác định đó là tiến trình nào. Hai thông tin về tiến trình gọi hàm ZwReadFile được thu thập là: Pid và đường dẫn đầy đủ của tiến trình đó. Theo MSDN, PID là cấu trúc dữ liệu dùng để định danh một tiến trình nhất định trong bộ nhớ. PID của các tiến trình khác nhau thì khác nhau. Do vậy để xác định một tiến trình nhất định trong bộ nhớ thì có thể xác định dựa vào PID. Ngoài ra để phân biệt các tiến trình đang thực thi cũng có thể dựa vào đường dẫn đầy đủ của tập tin thực thi của tiến trình đó. Vì trên hệ điều hành Windows 7, đường dẫn đầy đủ của một tập tin là duy nhất. Không có hai tập tin nào có đường dẫn đầy đủ giống nhau.

Sau khi thu thập được các thông tin cần thiết để xác định tiến trình, thì tiến hành kiểm tra xem tiến trình này có thuộc tiến trình đang giám sát hay không. Danh sách tiến trình đang giám sát được tạo ở giai đoạn 1. Nếu tiến trình này không thuộc danh sách giám sát thì gọi hàm gốc ZwWriteFile và kết thúc xử lý. Nếu tiến trình này thuộc danh sách giám sát thì tiếp tục kiểm tra xem thao tác này của tiến trình có phải là thao tác tự đọc chính nó hay không.

Để kiểm tra thao tác đọc tập tin của tiến trình bị giám sát có phải là tự đọc chính nó hay không được thực hiện bằng cách: kiểm tra đường dẫn tập tin được đọc có phải chính là tập tin thực thi của tiến trình hay không. Nếu tập tin được đọc không phải là tập tin thực thi của tiến trình thì gọi hàm gốc ZwReadFile và kết thúc xử lý. Nếu tập tin tin được đọc chính là tập tin thực thi của tiến trình thì đó là thao tác tự đọc.

Sau khi xác định được thao tác đọc tập tin của tiến trình bị giám sát là tự đọc, bước tiếp theo là lưu các thông tin về thao tác tự đọc này của tiến trình. Hàm gốc ZwReadFile được gọi. Nhưng không kết thúc xử lý và trả kết quả về cho tiến trình luôn mà sẽ thực hiện lưu thông tin lại. Có hai thông tin được thu thập và lưu lại là: địa chỉ bộ nhớ đệm lưu nội dung đọc được và một phần nội dung (có giới hạn nhất định) được lưu lại.

Như vậy sau giai đoạn giám sát thao tác đọc tập tin. Nếu tiến trình bị giám sát có hành vi tự đọc thì thông tin về thao tác đọc này được lưu lại và được xử lý ở giai đoạn 3. Thông thường chỉ có mã độc mới có thao tác tự đọc, các chương trình lành tính không có thao tác này. Các chương trình lành tính chỉ có thao tác đọc nội dung các tập tin khác trong hệ thống. Vì vậy nếu có chương trình lành tính nào bị giám sát thì hầu như không có các dữ liệu cần thu thập và lưu lại.

- Giai đoạn 3: Giám sát lời gọi hàm ZwWriteFile

Hàm ZwWriteFile là hàm dùng để đọc tập tin ở mức nhân của hệ điều hành (kernel mode). Quá trình thu thập thông tin và xử lý tiến trình gọi hàm ZwWriteFile được thể hiện qua Hình 3.7:

Hình 3.7: Giám sát thao tác ghi tập tin

Hai bước đầu tiên là xác định tiến trình gọi hàm ZwWriteFile và xác định tiến trình đó có thuộc danh sách cần giám sát không được thực hiện như là ở giai đoạn giám sát thao tác đọc tập tin. Nếu tiến trình thuộc danh sách giám sát thì thực hiện các bước xử lý tiếp theo.

Địa chỉ bộ đệm chứa nội dung để ghi vào tập tin được kiểm tra trước tiên. Địa chỉ này được so sánh với những địa chỉ danh sách đã được tạo ra ở giai đoạn 2. Nếu địa chỉ này trùng khớp với một địa chỉ trong danh sách thì kết luận đó là

hành vi tự sao chép. Mã độc đã tiến hành đọc chính nó và tiến hành ghi nội dung đã đọc được vào tập tin được tạo ra trong hệ thống.

Trong trường hợp so sánh địa chỉ mà chưa thể kết luận được đó là hành vi tự sao chép thì thực hiện bước tiếp theo là so sánh nội dung ghi với danh sách nội dung đã được lưu lại ở giai đoạn 2. Sự cần thiết phải làm bước so sánh này là vì: mã độc có thể tiến hành sao chép nội dung sau khi đọc được sang vùng nhớ có địa chỉ khác, trước khi tiến hành ghi nội dung đọc được vào tập tin được tạo ra trong hệ thống. Như vậy, mã độc có thể vượt qua bước kiểm tra hành vi tự sao chép dựa trên địa chỉ vùng nhớ.

Nếu kết quả so sánh cho thấy rằng nội dung được ghi vào tập tin được tạo ra trong hệ thống trùng với nội dung trong danh sách được lưu lại thì kết luận đó là hành vi tự sao chép. Mã độc đã thay đổi sao chép nội dung đọc được sang vùng nhớ khác trước khi ghi nội dung trở lại vào tập tin được tạo ra trong hệ thống.

Nếu kết thúc quá trình giám sát mà không thấy tiến trình có hành vi tự sao chép thì hàm gốc ZwWriteFile được gọi và trả kết quả về cho tiến trình. Nếu phát hiện tiến trình có hành vi tự sao chép thì tiến trình được ngưng thực thi (nhưng chưa kết thúc) và có một cảnh báo hiện lên thông báo cho người dùng. Thông báo này như Hình 3.8:

Hình 3.8: Thông báo của BMD khi phát hiện tiến trình có hành vi tự sao chép vào hệ thống

Nếu người dùng chọn “Yes”, chương trình BMD sẽ tiến hành kết thúc thực thi của tiến trình được phát hiện có hành vi sao chép. Sau đó xóa tập tin của tiến trình này và tập tin mà tiến trình tạo ra khỏi hệ thống. Qua đó ngăn chặn các hành vi độc hại tiếp theo của tiến trình và loại bỏ tiến trình khỏi 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 64 - 70)

Tải bản đầy đủ (PDF)

(79 trang)