Kỹ thuật process injection Mockingjay mới vượt qua sự phát hiện của EDR 

Một kỹ thuật process injection có tên Mockingjay có thể cho phép tin tặc vượt qua được Hệ thống Phát hiện và phản hồi các mối nguy hại tại điểm cuối EDR (Endpoint Detection and Response) và các biện pháp bảo vệ khác để thực thi mã độc trên các hệ thống bị xâm nhập. 

Các nhà nghiên cứu tại công ty an ninh mạng Security Joes đã phát hiện ra phương pháp này, sử dụng các DLL hợp pháp có các section RWX (đọc, ghi, thực thi) để tránh các hook của EDR và chèn mã vào các remote process. 

Process injection là một phương pháp thực thi mã tùy ý trong không gian địa chỉ của một tiến trình khác đang chạy được tin tưởng bởi hệ điều hành, do đó tin tặc có khả năng thực thi mã độc mà không bị phát hiện. 

Một số ví dụ về các kỹ thuật Process injection bao gồm: DLL injection, PE injection (portable execution), reflective DLL injection, thread execution hijacking, process hollowing, mapping injection, APC (asynchronous procedure call) injection… 

Trong các kỹ thuật trên, tin tặc phải sử dụng các Windows API và các lệnh gọi hệ thống khác nhau, tạo tiến trình/luồng, ghi bộ nhớ tiến trình… Do đó, các công cụ giám sát, theo dõi các hành vi cụ thể liên quan đến các kỹ thuật độc hại trên có thể phát hiện các sự cố đáng nghi ngờ và can thiệp khi cần thiết. 

Security Joes cho biết Mockingjay vượt trội hơn so với các phương pháp khác bởi nó không sử dụng các lệnh gọi Windows API, thiết lập các quyền đặc biệt, thực hiện cấp phát bộ nhớ hay khởi động một luồng, do đó loại bỏ nhiều nguy cơ bị phát hiện. 

Mục tiêu đầu tiên của các nhà nghiên cứu là tìm một DLL dễ bị tấn công với một section mặc định có quyền RWX để có thể sửa đổi nội dung của nó nhằm tải mã độc mà không cần các quyền hạn bổ sung, việc tăng quyền này có thể gây ra các cảnh báo trên phần mềm bảo vệ. 

Trong quá trình tìm kiếm một DLL phù hợp, các chuyên gia của Security Joes đã phát hiện ra DLL msys-2.0.dll trong Visual Studio 2022 Community, có một section RWX mặc định với kích thước 16KB. 

Bằng cách khai thác section RWX được tạo sẵn này, có thể tận dụng các phân quyền về bộ nhớ, vượt qua bất kỳ chức năng nào có thể đã bị hook bởi các giải pháp EDR. 

Tiếp theo, Security Joes đã phát triển hai phương pháp inject, một phương pháp tự inject và một phương pháp inject từ xa.  

Trong trường hợp đầu tiên, một ứng dụng tùy chỉnh (“nightmare.exe”) tải DLL chứa lỗ hổng trực tiếp vào không gian bộ nhớ của nó bằng cách sử dụng 2 lệnh gọi Windows API, giúp truy cập trực tiếp vào section RWX mà không cần cấp phát bộ nhớ hoặc thiết lập các quyền. 

Viết mã độc vào phần RWX (Security Joes) 
Viết mã độc vào phần RWX (Security Joes)

Tiếp theo, một module hệ thống sạch là NTDLL.DLL bị khai thác để trích xuất các lời gọi hệ thống được sử dụng để vượt qua các hook EDR bằng kỹ thuật “Hell’s Gate EDR unhooking”, cho phép shellcode được tiêm mà không bị phát hiện. 

Phương pháp thứ hai liên quan đến việc khai thác section RWX của msys-2.0.dll để chèn payload vào một remote process, cụ thể là tiến trình “ssh.exe”. 

Mã để khởi tạo lệnh gọi hệ thống để có thể vượt qua việc sử dụng API (Security Joes) 
Mã để khởi tạo lệnh gọi hệ thống để có thể vượt qua việc sử dụng API  (Security Joes)

Ứng dụng tùy chỉnh khởi chạy ssh.exe dưới dạng một tiến trình con, tạo một handle đến tiến trình mục tiêu và chèn mã độc vào không gian bộ nhớ RWX của DLL có chứa lỗ hổng. 

Mã để khởi chạy process mới (Security Joes) 
Mã để khởi chạy process mới (Security Joes)

Cuối cùng, shellcode được đưa vào sẽ tải tệp DLL “MyLibrary.dll”, thiết lập một reverse shell với máy của kẻ tấn công. 

Thiết lập một remote shell trên hệ thống đã bị xâm nhập (Security Joes)
Thiết lập một remote shell trên hệ thống đã bị xâm nhập (Security Joes)

Các thử nghiệm cho thấy rằng cuộc tấn công remote process injection này không yêu cầu tạo một luồng mới trong tiến trình mục tiêu, cấp phát bộ nhớ hoặc thiết các lập quyền, thành công vượt qua các giải pháp EDR. 

Cả hai phương pháp được đề xuất trong Mockingjay đều sử dụng các Windows API như LoadLibraryW, CreateProcessW và GetModuleInformation để tải một DLL bị cấu hình sai và tìm địa chỉ section RWX của DLL. 

Tuy nhiên, các giải pháp EDR thường theo dõi các API như WriteProcessMemory, NtWriteVirtualMemory, CreateRemoteThread hoặc NtCreateThreadEx, thường được sử dụng trong các cuộc tấn công process injection truyền thống. Do đó, Mockingjay ít có khả năng gây ra cảnh báo. 

Mockingjay là một minh chứng khác cho thấy tại sao các cơ quan tổ chức phải áp dụng các phương pháp bảo mật toàn diện thay vì chỉ dựa trên các giải pháp EDR hiện có. 

Nguồn: Bleeping Computer