Kẻ tấn công khai thác driver Avast Anti-Rootkit để vô hiệu hóa các công cụ bảo mật và xâm nhập vào hệ thống

Các chuyên gia của Trellix đã phát hiện ra một chiến dịch phần mềm độc hại lợi dụng Avast Anti-Rootkit driver có lỗ hổng (aswArPot.sys) để leo thang đặc quyền vào hệ thống mục tiêu, vô hiệu hóa các giải pháp bảo mật và giành quyền kiểm soát hệ thống.
1. Bắt đầu chuỗi lây nhiễm
Chuỗi lây nhiễm của phần mềm độc hại (kill-floor.exe) (Hình 1) bắt đầu bằng cách thả trình điều khiển Avast Anti-Rootkit hợp lệ (aswArPot.sys) xuống hệ thống nạn nhân. Mã độc tiếp tục thả file kernel driver hợp lệ nữa là ‘ntfs.bin’ trong thư mục C:\Users\Default\AppData\Local\Microsoft\Windows (Hình 2).

Hình 1: Chuỗi lây nhiễm

Hình 2: Đường dẫn của Avast Anti-Rootkit driver khi được thả xuống
Thay vì sử dụng driver được thiết kế đặc biệt để thực hiện các hành vi độc hại, mã độc này lại sử dụng kernel driver đáng tin cậy, mục đích để tạo cho nó sự hợp pháp và tránh gây ra cảnh báo khi nó vô hiệu hoá khả năng phòng thủ của hệ thống.
Sau khi kernel driver được tải xuống, mã độc sử dụng Service Control (sc.exe) để tạo service 'aswArPot.sys', mục đích chuẩn bị thêm các driver cho các hành động tiếp theo (Hình 3).

Hình 3: Mã độc sử dụng service control và Avast Anti-Rootkit kernel driver để tạo một service mới
Khi driver được cài đặt và chạy (Hình 4), phần mềm độc hại sẽ có quyền truy cập đến tận kernel-level vào hệ thống, giúp nó có khả năng chấm dứt các biện pháp bảo mật và kiểm soát hệ thống (Hình 5).

Hình 4: Service aswArPot.sys được tạo

Hình 5: Service aswArPot.sys tắt các tiến trình bảo mật của hệ thống
2. Cách driver độc hại hoạt động
Về bản chất thì aswArPot.sys driver hoạt động ở kernel-level, nó sẽ cấp cho mã độc quyền truy cập không hạn chế vào các phần quan trọng nhất của hệ điều hành. Sau đây là cách driver này hoạt động:
- Phần mềm độc hại lưu trữ tên tiến trình của các giải pháp AV và EDR phổ biến (Hình 6).

Hình 6: Mã độc lưu trữ tên tiến trình của các giải pháp AV & EDR phổ biến
Danh sách đầy đủ của 142 tiến trình bảo mật mà mã độc này lưu trữ:

- Hành vi đầu tiên là mã độc sẽ tải Avast Anti-Rootkit driver xuống thư mục ‘C:\Users\Default\AppData\Local\Microsoft\Windows’, sau đó cài đặt driver này dưới dạng service bằng công cụ sc.exe (Hình 7).

Hình 7: Mã độc thả và cài đặt Avast Anti-Rootkit driver
- Sau khi Avast Anti-Rootkit driver được cài đặt và service ‘aswArPot.sys’ được tạo, mã độc sẽ liên tục snapshot các tiến trình đang chạy trên hệ thống (Hình 8).

Hình 8: Mã độc theo dõi các tiến trình đang chạy trên hệ thống
Mục đích của việc snapshot là để mã độc có thể lấy được thông tin của tất cả các tiến trình trên hệ thống, sau đó so sánh tên tiến trình với danh sách tiến trình bảo mật đã được định nghĩa từ trước (Hình 9).

Hình 9: Mã độc so sánh tên tiến trình với danh sách tiến trình bảo mật
Nếu tên tiến trình trùng khớp, mã độc sẽ tạo một handle để tham chiếu đến Avast driver trên hệ thống (Hình 10).

Hình 10: Mã độc tạo handle để gọi đến Avast driver
Khi mà handle tới Avast driver được tạo thành công, mã độc sẽ call DeviceIoControl API và truyền mã IOCTL '0x9988c094' cùng với ID tiến trình (Hình 11). Vì kernel-mode drivers có thể override lên các tiến trình ở user-mode, nên Avast driver có thể chấm dứt các tiến trình, bypass các cơ chế bảo vệ của hầu hết các giải pháp AV và EDR.

Hình 11: Mã độc sử dụng DeviceIoControl API để tương tác với Avast driver
Avast Anti-Rootkit driver sử dụng mã IOCTL (0x9988c094) thành lệnh để tắt các tiến trình bảo mật. Để có cái nhìn rõ ràng hơn thì IOCTL (Input/Output Control) là một cơ chế được sử dụng trong hệ điều hành để gửi các lệnh điều khiển tới thiết bị phần cứng hoặc driver. Mã IOCTL (IOCTL code) là một giá trị duy nhất được sử dụng để nhận diện và yêu cầu thực hiện một tác vụ cụ thể trên thiết bị hoặc driver.
Khi dịch ngược Avast Anti-Rootkit driver cho mục đích nghiên cứu, hàm 'FUN_14001dc80' (Hình 12) cho thấy driver sử dụng các hàm Windows kernel KeAttachProcess và ZwTerminateProcess để chấm dứt các tiến trình bảo mật (Hình 13).

Hình 12: Mã IOCTL được so sánh trong Avast driver trước khi gọi hàm 'FUN_14001dc80'

Hình 13: Hàm FUN_14001dc80 trong Avast Anti-Rootkit driver thực hiện hành vi chấm dứt các tiến trình
3. Khuyến nghị
Phía FPT Threat Intelligence khuyến nghị tổ chức và cá nhân một số cách để phòng chống mã độc này:
Sử dụng các quy tắc driver an toàn: Kiểm tra và xác thực tính hợp lệ của driver trước khi tải vào hệ thống.
Bảo vệ chống lại BYOVD: Triển khai quy tắc chuyên gia BYOVD trong các giải pháp bảo mật như EDR và antivirus để nhận diện và chặn các driver dễ bị tổn thương.
Kiểm soát quyền truy cập kernel: Hạn chế quyền truy cập kernel và sử dụng công cụ như Windows Defender Device Guard để ngăn chặn việc chạy các driver không tin cậy hoặc không ký.
Cập nhật thường xuyên: Cập nhật phần mềm và driver thường xuyên để vá các lỗ hổng bảo mật.
Ký mã driver: Yêu cầu tất cả driver phải được ký mã số (code signing) để đảm bảo tính toàn vẹn và tránh việc sử dụng các driver không hợp pháp hoặc bị xâm phạm.
4. IOCs
| Value | Type |
| 40439f39f0195c9c7a3b519554afd17a | MD5 |
| a179c4093d05a3e1ee73f6ff07f994aa | MD5 |






