PHÂN TÍCH KỸ THUẬT
Vectơ lây nhiễm ban đầu
Báo cáo của Zscaler cho biết, kẻ tấn công đã thực hiện các thao tác trực tiếp trên bàn phím sau để triển khai Matanbuchus:
- Sử dụng QuickAssist (có thể kết hợp với kỹ nghệ xã hội) để truy cập vào hệ thống của nạn nhân.
- Sử dụng command line nhằm tải xuống và thực thi gói cài đặt Microsoft Installer (MSI) độc hại từ gpa-cro[.]com. Tệp được tải chứa một tệp thực thi khác có tên HRUpdate[.]exe, đây là một DLL độc hại và cũng chính là mô-đun Matanbuchus downloader.
- DLL độc hại nhúng mô-đun main từ: hxxps://mechiraz[.]com/cart/checkout/files/update_info.aspx
Các nhà nghiên cứu nhận định rằng, những hành động trên của kẻ tấn công nhằm mục đích triển khai mã độc tống tiền trên hệ thống mục tiêu.
Obfuscation
Cả Matanbuchus downloader và các mô-đun main đều sử dụng các phương pháp obfuscation. Đầu tiên, Matanbuchus lưu trữ hai mảng (array) để giải mã chuỗi trong quá trình thực thi. Mảng đầu tiên chứa các chuỗi đã mã hóa, trong khi mảng thứ hai lưu trữ thông tin cho mỗi chuỗi, bao gồm index của chuỗi trong mảng đầu tiên và kích thước của chuỗi. Matanbuchus sử dụng thuật toán mã hóa luồng ChaCha20 để giải mã, sử dụng khóa và nonce chung cho tất cả các chuỗi. Chúng được lưu trữ dưới dạng 44 byte đầu tiên của mảng đầu tiên.
Matanbuchus tự động xử lý tất cả các hàm API Windows cần thiết bằng cách sử dụng thuật toán MurmurHash, đồng thời nhúng nhiều khối junk vào mã nguồn của nó để cản trở việc phân tích.
.png)
Hình 1. Ví dụ về các lệnh junk trong mã nguồn của mô-đun main Matanbuchus
Mô-đun downloader
Chống phân tích
Downloader và các mô-đun main chia sẻ hầu hết các tính năng chống phân tích giống nhau. Tuy nhiên, mô-đun downloader bao gồm một tính năng bổ sung, đó là các vòng lặp chạy dài. Các vòng lặp này làm trì hoãn chức năng của mô-đun trong vài phút sau khi thực thi ban đầu, cho phép nó tránh được việc phân tích hành vi bởi các môi trường sandbox, vốn thường có giá trị thời gian chờ phân tích thấp.
.png)
Hình 2. Ví dụ về junk code và các vòng lặp kéo dài trong mô-đun tải xuống Matanbuchus
Truyền thông mạng
Mô-đun downloader chứa một shellcode được mã hóa, có chức năng tải và thực thi mô-đun main. Mô-đun này sử dụng kỹ thuật tấn công dựa trên văn bản gốc đã biết để giải mã shellcode bằng bruteforce.
Theo các nhà nghiên cứu, Matanbuchus khởi tạo một vòng lặp bắt đầu với giá trị 99999999. Số nguyên này được chuyển đổi thành chuỗi 8 byte và thêm vào trước một giá trị mã hóa cứng 24 byte để tạo ra khóa ChaCha20 32 byte. Sau đó, Matanbuchus cố gắng giải mã shellcode bằng khóa ChaCha20 và một giá trị nonce 12 byte được mã hóa cứng. Sau đó, phần mềm độc hại này so sánh kết quả với 21 byte tiếp theo, tương ứng với 21 byte đầu tiên của shellcode (nếu được giải mã đúng cách).
Chuỗi văn bản gốc đã biết có kích thước 21 byte như sau: E9 A0 00 00 00 55 89 E5 6A 33 E8 00 00 00 00 83 04 24 05 CB 48. Trường nonce của ChaCha20 đặt thành mảng được mã hóa cứng “01 02 03 04 05 06 07 08 09 10 11 12”, trong khi tấn công bruteforce shellcode.
Nếu 21 byte đầu tiên không khớp với các giá trị này, giá trị số nguyên sẽ giảm đi một và vòng lặp lặp lại. Shellcode lúc này sẽ tải xuống mô-đun main bằng cách gửi yêu cầu HTTPS GET đến máy chủ điều khiển và ra lệnh (C2) được mã hóa cứng và giải mã dữ liệu nhận được bằng thuật toán ChaCha20.
.png)
Hình 3. Đoạn code Python để phân tích cú pháp và giải mã dữ liệu đã tải xuống
Mô-đun main
Sự kiên trì
Matanbuchus duy trì khả năng hoạt động của máy chủ bị xâm nhập bằng cách thực thi mã shellcode được lấy từ máy chủ C2 sau khi quá trình đăng ký (được mô tả sau) hoàn tất. Cụ thể, Matanbuchus tạo ra một đường dẫn tệp mới và truyền giá trị đó cho shellcode. Lúc này, shellcode tạo ra một tác vụ theo lịch trình mới với tên là “Update Tracker Task” và một đường dẫn tệp có định dạng như sau: “%WINDIR%\\SysWOW64\\msiexec.exe -z %Matanbuchus_path%”. Matanbuchus tạo đường dẫn tệp ngẫu nhiên bằng các bước dưới đây:
- Đầu tiên, phần mềm độc hại tạo một thư mục mới là APPDATA. Tên thư mục được lấy từ số sê-ri của ổ đĩa.
- Tiếp theo, Matanbuchus tạo ra một tệp ngẫu nhiên mới với 12 ký tự chữ cái thường.
- Cuối cùng, mã độc tự sao chép vào thư mục mới bằng tên tệp được tạo ngẫu nhiên.
Zscaler lưu ý, Matanbuchus tạo một giá trị mutex duy nhất cho mỗi máy chủ để đảm bảo chỉ thực thi một lần. Tên mutex trùng với tên của thư mục lưu trữ, với chuỗi “sync” được thêm vào phía trước.
Cấu hình
Mô-đun main của Matanbuchus bao gồm một blob cấu hình được nhúng và lưu trữ ở định dạng mã hóa. Khi thực thi, Matanbuchus giải mã blob bằng ChaCha20, trong đó, 44 byte đầu tiên bao gồm khóa giải mã và tiếp theo là nonce.
Blob cấu hình đã giải mã lưu trữ các thông tin sau: URL C2 cùng với một giá trị boolean cho biết giao thức mạng là HTTP (false) hay HTTPS (true); mã định danh chiến dịch được lưu trữ ở định dạng UUID và ngày hết hạn.
Cần lưu ý rằng, Matanbuchus chỉ kiểm tra ngày hết hạn khi thực thi chứ không phải ở bất kỳ giai đoạn nào khác. Do đó, máy chủ bị xâm nhập vẫn có thể liên lạc với máy chủ C2 nếu hệ thống không được khởi động lại sau khi ngày hết hạn đã trôi qua.
Truyền thông mạng
Matanbuchus sử dụng mô hình giao tiếp mạng tương tự như nhiều dòng phần mềm độc hại khác. Mã độc này bắt đầu bằng cách đăng ký máy chủ bị xâm nhập với máy chủ C2, sau đó yêu cầu một tập hợp các tác vụ từ máy chủ. Nếu có bất kỳ tác vụ nào khả dụng, Matanbuchus sẽ thực thi chúng và báo cáo lại kết quả.
.png)
Hình 4. Mô hình giao tiếp mạng của Matanbuchus
Matanbuchus hỗ trợ ba loại yêu cầu chính, trong đó mỗi loại yêu cầu sẽ gán một ID duy nhất, xuất hiện ở đầu mỗi gói dữ liệu sau khi được tuần tự hóa trong cấu trúc dữ liệu Protobuf.
Phần mềm độc hại sử dụng HTTP(S) để liên lạc mạng với các payload chứa Protobuf được mã hóa. Matanbuchus mã hóa mỗi Protobuf với ChaCha20 bằng cách tạo ra một khóa và nonce ngẫu nhiên được thêm vào đầu dữ liệu gói. Dữ liệu gói mạng bao gồm một Protobuf với nhiều loại thông báo khác nhau.
.png)
Hình 5. Cấu trúc thể hiện bố cục của một gói mạng được tạo bởi Matanbuchus
Trước khi yêu cầu bất kỳ tác vụ nào từ máy chủ C2, Matanbuchus đăng ký máy chủ bị xâm nhập bằng cách thu thập và gửi các thông tin sau: tên máy chủ và tên người dùng; phiên bản Windows; tên miền Windows; danh sách các sản phẩm an ninh đã được cài đặt bao gồm: Windows Defender, CrowdStrike Falcon, SentinelOne. Sophos EDR, Trellix, Cortex XDR và Bitdefender GravityZone EDR; giá trị boolean cho biết máy chủ bị xâm nhập có phải là máy chủ Windows hay không; giá trị boolean cho biết người dùng bị xâm nhập có quyền quản trị hay không; giá trị Boolean cho biết kiến trúc Windows (32/64-bit); mã định danh chiến dịch và bot.
Ngay sau khi quá trình đăng ký hoàn tất, Matanbuchus đánh dấu máy chủ bị xâm nhập là đã được đăng ký bằng cách tạo một khóa registry HKEY_CURRENT_USER\SOFTWARE\%volume_serial_number_based_ID% với ID của bot. Phần mềm độc hại kiểm tra đường dẫn registry này trong mỗi lần thực thi để xác minh xem máy chủ có cần được đăng ký không.
Đáng chú ý, các dữ liệu tải xuống từ các URL bên ngoài có thể được mã hóa. Matanbuchus xác định xem có cần giải mã hay không bằng cách đọc một cờ boolean từ thông điệp Protobuf đến. Quy trình giải mã dữ liệu cũng sử dụng ChaCha20, tương tự như mô-đun downloader.
Bước cuối cùng, Matanbuchus báo cáo kết quả của mỗi lệnh mạng, bao gồm bất kỳ đầu ra nào được tạo ra từ lệnh đó. Mỗi gói báo cáo tác vụ bao gồm ID của bot, ID tác vụ và bất kỳ đầu ra lệnh nào (ví dụ kết quả của việc thực thi lệnh shell hệ thống). Nếu một tác vụ thất bại, Matanbuchus sẽ không báo cáo tác vụ đó cho máy chủ C2.
KẾT LUẬN
Nhìn chung, Matanbuchus là một phần mềm độc hại có khả năng cài đặt backdoor. Trong vài năm qua, trình tải này đã liên tục được cải tiến và phát triển để tránh bị phát hiện. Hơn nữa, Matanbuchus dường như được sử dụng rộng rãi bởi nhiều nhóm tin tặc với nhiều động cơ khác nhau. Đáng chú ý nhất, mã độc dường như đã thu hút sự chú ý của các nhóm tin tặc có khả năng liên quan đến hoạt động mã độc tống tiền.
