Các nhà nghiên cứu an ninh mạng đã tiết lộ chi tiết về một chiến dịch mã độc nhiều giai đoạn, sử dụng các batch script làm đường dẫn để phát tán nhiều payload của remote access trojan (RATs) được mã hóa, tương ứng với XWorm, AsyncRAT và Xeno RAT.
Chuỗi tấn công lén lút này đã được Securonix Threat Research đặt tên mã là VOID#GEIST.
Về cơ bản, batch script bị che giấu được sử dụng để triển khai một batch script thứ hai, thiết lập một môi trường chạy Python nhúng hợp pháp và giải mã các khối shellcode đã được mã hóa. Các shellcode này được thực thi trực tiếp trong bộ nhớ bằng cách tiêm chúng vào các phiên bản "explorer.exe" riêng biệt, sử dụng kỹ thuật được gọi là Early Bird Asynchronous Procedure Call (APC) injection.
"Các chiến dịch mã độc hiện đại ngày càng chuyển dịch từ các tệp thực thi độc lập sang các framework phân phối phức tạp, dựa trên script, bắt chước chặt chẽ hoạt động hợp pháp của người dùng," các nhà nghiên cứu Akshay Gaikwad, Shikha Sangwan và Aaron Beardslee cho biết trong một báo cáo kỹ thuật được chia sẻ với The Hacker News.
"Thay vì triển khai các tệp nhị phân PE truyền thống, kẻ tấn công tận dụng các quy trình dạng module bao gồm các batch script để điều phối, PowerShell để thiết lập lén lút, các môi trường chạy nhúng hợp pháp để di động và raw shellcode được thực thi trực tiếp trong bộ nhớ để duy trì quyền truy cập và kiểm soát."
Cơ chế thực thi fileless này giảm thiểu các cơ hội phát hiện dựa trên đĩa, do đó cho phép các tác nhân đe dọa hoạt động trong các hệ thống bị xâm nhập mà không kích hoạt các cảnh báo bảo mật. Hơn nữa, cách tiếp cận này còn mang lại một lợi thế bổ sung là các giai đoạn riêng lẻ này xuất hiện vô hại khi đứng một mình và giống như hoạt động quản trị thông thường.
Điểm khởi đầu của cuộc tấn công là một batch script được lấy từ một tên miền TryCloudflare và phát tán qua email phishing. Sau khi được khởi chạy, nó cố tình tránh thực hiện các bước để leo thang đặc quyền và tận dụng quyền của người dùng hiện đang đăng nhập để thiết lập chỗ đứng ban đầu, đồng thời hòa lẫn vào các hoạt động quản trị có vẻ vô hại.
Giai đoạn ban đầu đóng vai trò là bệ phóng để hiển thị một PDF mồi nhử bằng cách khởi chạy Google Chrome ở chế độ toàn màn hình. Tài liệu tài chính hoặc hóa đơn được hiển thị đóng vai trò là một sự đánh lạc hướng trực quan để che giấu những gì đang diễn ra ở hậu trường. Điều này bao gồm việc khởi chạy một lệnh PowerShell để thực thi lại batch script gốc, chẳng hạn như sử dụng tham số -WindowStyle Hidden, để tránh hiển thị cửa sổ console.
Để đảm bảo duy trì quyền truy cập sau khi khởi động lại hệ thống, một auxiliary batch script được đặt trong thư mục Startup của người dùng Windows để nó tự động được thực thi mỗi khi nạn nhân đăng nhập vào hệ thống. Việc không sử dụng các phương pháp duy trì quyền truy cập xâm lấn hơn là có chủ đích, vì điều này giúp giảm forensic footprint.
"Về mặt kỹ thuật, phương pháp duy trì quyền truy cập này hoạt động hoàn toàn trong ngữ cảnh đặc quyền của người dùng hiện tại. Nó không sửa đổi các system-wide registry keys, tạo các scheduled tasks, hoặc cài đặt services," các nhà nghiên cứu cho biết. "Thay vào đó, nó dựa vào standard user-level startup behavior, không yêu cầu elevation và tạo ra minimal security friction. Lựa chọn thiết kế này làm giảm khả năng kích hoạt các privilege escalation prompts hoặc registry-monitoring alerts."
Giai đoạn tiếp theo bắt đầu khi mã độc kết nối với một tên miền TryCloudflare để tìm nạp các payload bổ sung dưới dạng các ZIP archives chứa nhiều tệp -
- runn.py, một Python-based loader script chịu trách nhiệm giải mã và tiêm các module payload shellcode đã được mã hóa vào bộ nhớ
- new.bin, một payload shellcode được mã hóa tương ứng với XWorm
- xn.bin, một payload shellcode được mã hóa tương ứng với Xeno RAT
- pul.bin, một payload shellcode được mã hóa tương ứng với AsyncRAT
- a.json, n.json, và p.json, các key files chứa các decryption keys cần thiết cho Python loader để giải mã shellcode một cách linh hoạt trong thời gian chạy
Sau khi các tệp được giải nén, chuỗi tấn công triển khai một legitimate embedded Python runtime trực tiếp từ python[.]org. Bước này mang lại một số lợi thế. Đầu tiên, nó loại bỏ mọi dependency trên hệ thống. Do đó, mã độc có thể tiếp tục hoạt động ngay cả khi infected endpoint không cài đặt Python.
"Từ góc độ của kẻ tấn công, mục tiêu của giai đoạn này là portability, reliability, và stealth," Securonix cho biết. "Bằng cách nhúng một legitimate interpreter vào staging directory, mã độc biến mình thành một fully self-contained execution environment capable of decrypting và injecting payload modules mà không phụ thuộc vào external system components."
Mục tiêu chính của cuộc tấn công là tận dụng Python runtime để khởi chạy "runn.py," sau đó giải mã và chạy payload XWorm bằng cách sử dụng Early Bird APC injection. Mã độc cũng sử dụng một legitimate Microsoft binary, "AppInstallerPythonRedirector.exe," để gọi Python và khởi chạy Xeno RAT. Ở giai đoạn cuối cùng, Python loader sử dụng cùng injection mechanism để khởi chạy AsyncRAT.
Chuỗi lây nhiễm kết thúc bằng việc mã độc truyền một minimal HTTP beacon trở lại attacker-controlled C2 infrastructure được lưu trữ trên TryCloudflare để xác nhận digital break-in. Hiện tại vẫn chưa rõ ai là mục tiêu của cuộc tấn công và liệu có bất kỳ successful compromises nào hay không.
"Mẫu injection lặp đi lặp lại này củng cố modular architecture của framework. Thay vì phát tán một single monolithic payload, kẻ tấn công triển khai các components một cách incrementally, cải thiện flexibility và resilience," Securonix cho biết. "Từ detection standpoint, repeated process injection vào explorer.exe trong short time windows là một strong behavioral indicator mà correlates across stages của attack."