Các nhà nghiên cứu an ninh mạng vừa phát hiện một framework loader dựa trên Go chưa từng được ghi nhận trước đây có tên là HollowFrame và một dòng mã độc dựa trên Rust được theo dõi dưới tên Matryoshka.
Chuỗi xâm nhập đa giai đoạn
Theo Blackpoint Cyber, chuỗi xâm nhập bắt đầu bằng một tin nhắn spear-phishing chứa liên kết dẫn đến một kho lưu trữ được mã hóa, bên trong có chứa một Windows Shortcut (LNK). Việc thực thi tệp này sẽ kích hoạt một chuỗi tấn công nhiều giai đoạn bao gồm leo thang đặc quyền, làm yếu các lớp bảo vệ của Microsoft Defender và tải xuống các payload bổ sung.
Trong khi HollowFrame được khởi chạy thông qua cặp DLL side-loading gồm tệp thực thi Python hợp lệ ("python.exe") và một DLL độc hại ("python311.dll"), thì Matryoshka có hai biến thể: một loại hỗ trợ giao tiếp dựa trên HTTP và thực thi lệnh, loại còn lại sử dụng GitHub cho trung tâm điều khiển (C2), bao gồm các hoạt động beaconing, nhận lệnh (tasking), trinh sát (reconnaissance), chuyển tệp và phân phối payload giai đoạn hai.
"Cùng với nhau, HollowFrame và Matryoshka cung cấp cho kẻ tấn công một chỗ đứng vững chắc để thực thi lệnh từ xa, trinh sát Active Directory, chuyển tệp và triển khai các công cụ tiếp theo," các nhà nghiên cứu bảo mật Nevan Beal và Sam Decker cho biết. "Những khả năng này có thể hỗ trợ đánh cắp thông tin xác thực, di chuyển ngang hàng (lateral movement) và xâm nhập sâu hơn vào domain thông qua các công cụ bổ sung được phân phối sau khi truy cập thành công."
Công ty an ninh mạng này cho biết vụ xâm nhập nhiều giai đoạn đã nhắm vào hai điểm cuối tại một công ty luật không được nêu tên, với tệp LNK giả mạo là "Case Documents" để lừa nạn nhân nhấp vào và kích hoạt chuỗi lệnh sử dụng PowerShell để lấy các thành phần giai đoạn tiếp theo từ một máy chủ từ xa ("2.26.252[.]84").
Cơ chế hoạt động của HollowFrame
HollowFrame hoạt động như một framework loader và duy trì sự hiện diện (persistence) theo mô-đun, hỗ trợ nhiều phương thức khác nhau để tải các thành phần phụ trợ, đồng thời thực hiện các kiểm tra chống phân tích (anti-analysis) để tránh chạy trong môi trường sandbox. Điều này được xác định dựa trên thời gian hoạt động của hệ thống (system uptime), bộ nhớ được cài đặt, số lượng tệp trong hồ sơ người dùng và chuyển động của con trỏ chuột. Sự hiện diện lâu dài được thiết lập bằng cách tạo một scheduled task.
Matryoshka: Sử dụng GitHub làm hạ tầng C2
Loader viết bằng Go này đi kèm với một container được mã hóa bên trong, sau đó được giải nén để khởi chạy chuỗi side-loading thứ hai nhằm triển khai Matryoshka ("version.dll"), một backdoor dựa trên Rust giao tiếp với máy chủ C2 ("45.158.196[.]184:8888") qua HTTP để tạo shell và phân phối các công cụ bổ sung.
Một DLL thứ hai ("wtsapi32.dll") được phát hiện liên quan đến cùng một hoạt động đã được xác định là một biến thể của Matryoshka sử dụng một kho lưu trữ GitHub riêng tư ("adioziaete/memio") để truy vấn các lệnh dành riêng cho nạn nhân, gửi kết quả và lấy payload.
"Kho lưu trữ này hoạt động như một bộ sưu tập các hộp thư cho từng máy chủ, với mỗi nạn nhân được chỉ định một thư mục <computer>_<username> riêng biệt," Blackpoint giải thích. "Các thư mục này chứa beacon.json, cmd.json, result.json và trong một số trường hợp là một cây thư mục upload/ để phân phối tệp."
"Cấu trúc này cho phép kẻ vận hành quản lý các nhiệm vụ và kết quả cho các điểm cuối riêng lẻ thông qua GitHub mà không cần duy trì máy chủ điều khiển tùy chỉnh, đồng thời để lại lịch sử phiên bản của các thay đổi trong kho lưu trữ trừ khi các commit hoặc kho lưu trữ liên quan bị xóa."
Truy vấn GitHub API với tên người dùng cho thấy tài khoản này được tạo vào ngày 6 tháng 1 năm 2023 và thông tin hồ sơ được cập nhật gần đây nhất vào ngày 7 tháng 6 năm 2026. Hiện chưa rõ ai đứng sau hoạt động này.
Blackpoint lưu ý: "Trong suốt chuỗi tấn công, mỗi giai đoạn đều làm giảm mức độ hành vi độc hại có thể nhìn thấy được ở giai đoạn trước đó. Sự phân tách đó làm phức tạp việc quy trách nhiệm (attribution) và phát hiện vì không có thành phần đơn lẻ nào chứa toàn bộ logic lây nhiễm hoặc bức tranh C2 hoàn chỉnh."