BabbleLoader - Loader có nhiều cơ chế phòng tránh các biện pháp phát hiện xâm nhập

Just a SOC Analyst ^^
1. Mã độc BabbleLoader là gì
BabbleLoader là một mã độc mới được trang bị nhiều kỹ thuật lẩn tránh tinh vi, thách thức cả hệ thống phát hiện xâm nhập truyền thống và phát hiện xâm nhập dựa trên AI.
Các tính năng chính của mã độc này bao gồm:
Chèn mã rác (junk code insertion)
Biến đổi đa hình (metamorphic transformations)
Phân giải API động (dynamic API resolution).
Bypassing sandbox
Reflective Code Loading
Anti-sandboxing và anti-analysis
2. Phân tích kỹ thuật
Junk Code/Metamorphism
BabbleLoader sử dụng mã rác (junk code) nhằm mục đích gây khó khăn cho việc phân tích. Ví dụ như sử dụng nhiều đường dẫn giả mà không bao giờ được truy cập, sử dụng các import với các chuỗi được tạo ra ngẫu nhiên,…
Hình 1. Junk code thực hiện các hàm call ngẫu nhiên
Loader cũng sử dụng nhiều lệnh ngẫu nhiên, thêm giá trị vào các biến cục bộ và di chuyển dữ liệu qua lại giữa các thanh ghi mà không có mục đích cụ thể nào.
Hình 2. Dữ liệu được ghi ngẫu nhiên
Hình 3. Số lượng mã rác được thêm vào nhiều đến mức làm sập các công cụ phân tích mã độc.
Những kỹ thuật này ảnh hướng đến kết quả của việc phân tích dựa trên AI. Sự thay đổi liên tục trong cấu trúc mã độc này buộc các mô hình AI phải liên tục học lại những dấu hiệu tấn công, dẫn đến việc bỏ lỡ hoặc đưa ra kết quả dương tính giả. Mã rác cũng tạo ra một lượng lớn thông tin nhiễu trong luồng chương trình, làm quá tải khả năng nhận dạng mẫu của AI và buộc nó phải sàng lọc qua hàng nghìn hành động không liên quan nhằm che giấu hành vi thực sự của phần mềm độc hại.
Dynamic API Resolution
Một trong những hoạt động đầu tiên của loader là bắt đầu quá trình dynamically resolving API calls. Nó sẽ thực hiện điều này thông qua hàm băm API. Đầu tiên, nó sẽ lấy một module handle cho ntdll.dll. Chuỗi cho DLL được giải mã bằng cách sử dụng rolling XOR cipher.
Hình 4. Giải mã chuỗi NTDLL
Bằng cách sử dụng returned handle, loader sẽ bắt đầu đọc PE header của ntdll.dll, xác định thư mục đầu ra và bắt đầu phân tích các giá trị mà nó sẽ cần để phân giải động các chức năng. Loader có cấu trúc code sau:

Hình 5. Cấu trúc code của loader
Các giá trị trên có thể parse và quan sát bằng cách sử dụng công cụ CFF explorer:
Hình 6. Các trường đã được parse và hiển thị trong CFF Explorer
Shellcode Loading và Payload Decryption
Sau khi loader phân giải các pointer, đầu tiên nó sẽ gọi NtCreateSection, sau đó là NtMapViewOfSection. Mục đích là để phần mềm độc hại phân bổ và sử dụng bộ nhớ mà không bị kiểm soát. Quá trình giải mã bắt đầu bằng việc loader sắp xếp lại các khối dữ liệu được encrypted, trước khi tiến hành giải mã từng khối.
Hình 7. Các giai đoạn giải mã khối dữ liệu
Nhưng trước khi giải mã, loader sẽ thực hiện một trong số các kiểm tra anti-sandboxing.
AntiSandboxing/Analysis
DirectX DLL
Một trong những kiểm tra anti-sandboxing đó là kiểm tra các trình điều khiển đồ họa xem nó có đang chạy trong môi trường sandbox hay không. Thực hiện kiểm tra này bằng cách import DLL dxgi.dll. Thư viện này là DirectX Graphics Infrastructure và là DLL cốt lõi của Windows cung cấp chức năng giao tiếp với phần cứng đồ họa.
Mã độc này sử dụng dxgi.dll để trích xuất thông tin VendorId và so sánh nó với ba giá trị ở trong danh sách whitelist:
| ID | Vendor |
| 8086 | Intel |
| 10DE | Nvidia |
| 1002 | AMD |
BabbleLoader sử dụng khóa XOR đơn giản và một vài biến đổi assembly để ẩn số VenderId. Hành vi này được làm rối với một lượng lớn mã rác để ẩn các giá trị thực sự trong quá trình dịch ngược.
Hình 8. XOR để lấy VendorID
VDLL Function
Một hình thức anti-sandbox khác là kiểm tra VDLL để chống lại Windows Defender’s Antivirus Emulator. Kiểm tra đầu tiên là BabbleLoader lấy kernel32.dll và tìm địa chỉ proc cho MpSwitchToNextThread_WithCheck. Kiểm tra thứ hai là ntdll.dll với việc export MpDispatchException.
Hình 9. Gọi hàm mô phỏng
Nếu bất kỳ lệnh call GetProcAddress nào thành công, nó sẽ đặt một biến để đánh dấu và loader thoát sau đó. Việc import các lệnh call thành công chỉ ra rằng loader đang được mô phỏng bởi Windows Defender. Điều này là do các export chỉ tồn tại trong VDLL, là các DLL hệ thống Windows đã sửa đổi chỉ có trong trình giả lập cho Defender. Kỹ thuật này đã được sử dụng trước đây và cho thấy rằng nhà hacker nghiên cứu các vấn đề xung quanh AV và sandbox rất kỹ.
Unique process count
Khi payload của shellcode được đẩy lên bộ nhớ ánh xạ của tiến trình, nó sẽ thực hiện kiểm tra anti-sandboxing một lần nữa, lần này dựa trên các tiến trình đang chạy trong máy.
Điều này được thực hiện đầu tiên bằng cách gọi NtQuerySystemInformation, từ thư viện ntdll.dll. Nó trả về class SystemProcessInformation, sau đó trả về một mảng SYSTEM_PROCESS_INFORMATION, một phần tử chứa thông tin về một tiến trình đang chạy trong hệ thống.
Tên tiến trình của mỗi phần tử trong mảng được thu thập và băm thành một checksum, và được so sánh với mã băm của tên quy trình tiếp theo. Bộ đếm được tăng lên sau mỗi lần lặp, nhưng nếu checksum khớp, bộ đếm sẽ giảm đi một. Điều này nhằm mục đích cung cấp số lượng tiến trình duy nhất đang chạy.
Hình 10. Bộ đếm checksum
Sau đó mã độc sẽ kiểm tra xem có bao nhiêu tiến trình duy nhất đang chạy trên máy tính. Nếu ít hơn 85 tiến trình, mã độc sẽ kết luận đây là sandbox bởi vì kẻ tấn công cho rằng một máy tính thực sự sẽ có nhiều tiến trình đang chạy hơn là một sandbox hoặc trình giả lập.
Khi quá trình kiểm tra sandbox đã thành công, giai đoạn tiếp theo sẽ là giải mã payload và thực thi.
Donut Loader and Payload
Giai đoạn tiếp theo trong quá trình này là Donut Loader. Loader này được sử dụng để giải nén và thực thi payload độc hại vào trong bộ nhớ. Donut Loader đã được nhiều phần mềm độc hại và nhóm hacker khác nhau sử dụng trong các hoạt động bất hợp pháp. Payload trong ví dụ này là WhiteSnake stealer.
Hình 11. WhiteSnake payload
Payload này có phương pháp giao tiếp với máy chủ Command and Control (C2) thông qua TOR.
Hình 12. Dự án mã nguồn mở được sử dụng bởi WhiteSnake
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 giải pháp bảo mật nâng cao: Kết hợp giữa hệ thống phát hiện dựa trên chữ ký, phân tích hành vi, các công cụ EDR để tăng khả năng phát hiện mã độc
Cải thiện kỹ thuật phát hiện mã độc: Kết hợp các phương pháp phát hiện tĩnh và động để vượt qua các lớp phòng thủ của loader.
Đào tạo nhận thức người dùng: Nâng cao nhận thức về các mối nguy hiểm từ phần mềm crack và các tệp không rõ nguồn gốc.
Cập nhật thường xuyên: Cập nhật hệ điều hành và phần mềm bảo mật thường xuyên để vá các lỗ hổng.
Kiểm tra và theo dõi lưu lượng mạng: Phát hiện các hành vi bất thường trong lưu lượng mạng, đặc biệt là giao tiếp qua TOR hoặc các phương thức ẩn danh khác.
4. IOCs liên quan đến Babble Loader
BabbleLoader:
| SHA256 |
| 052c776fdc9700dfb37f964a73d461a57efad30a01bcf54505d7abcd601e6ff3 |
| 0ad8513b62a778d7e426627be3ed2dbaf00d99b9802a1f566dc9203e3d311fc3 |
| 0f6847d33cb38b0ed6dc1d8cfe3dc5d2e293d91c4880e3b4f5ddb77fd9d4cd1f |
| 114b868f319162c5d6ff92796e41910f54de0e89f895a066fd4980c6dba2e323 |
| 1367fb270f35512b17fe5e73cc0233ace272daafe15cf94e45f696431f52332f |
| 1537965c7722a9886d542688fcbafecd1248b2fbd56e9a90a803a50e880e1bb8 |
| 16200bbe4646fe8cefeee5be20ce55c50300485f3356ab181fb930bd02536709 |
| 1da4de2b4b87bff7f9f1a3208c5c663a06f7f9b67f918e5a5e8e860e759b7075 |
| 200289d5a408a2e49a894228edb3324548ca5c5c0283d09486aa287df41f15bc |
| 217d7501287ae894f47bd04253bd184d1901dd131b0cd15bcbbeba5158049d5d |
| 22866e6ded40916de8002606f82e44ee141f27c3340fa2c4d16514624ee05a72 |
| 237812322bbbcf47feeb79b8e91b97d00453ffd5deb52c819c183b45d18b0b5a |
| 25923b822e9a1374817caf79375170b944f2762b1e3f2add921008ffec702740 |
| 2a8a340fc9c395fe23211ac95d124b64452d49c67b069f53aaf3dbe16e95791d |
| 2b6bff7b8c23f1fa526e116c7577c32845d5b969c68a66850c305a351adc9726 |
| 2d6b50003436ed489d1b46566eb879e317e1b9a5b6edb12f3cbb4c8a8d932a08 |
| 2eab850166944175e5fac4c89706328a58dcef55dbc22ff20342d1d246ba76b9 |
| 2ee32c46207119f6851f2869203124c104c72cfdf9622416252ae3405f485cd2 |
| 328d92b71034d74c016b1f8e70217be3f432a2ade8fe44522f84980fd0dbb1f9 |
| 33e42e7828cda7987d17342e0eb8134f590cd3d291dbc75f13334259a4908ba1 |
| 3bf5f07059a24fb803c6fefb874f000e9c300372b1b870e48b4935bd0219fe2b |
| 401209ec9dda222984fd5cb775a6b6c2e651d88c04a506c9058cb1decdce869d |
| 451e1bec8476a89c7d2b526071fa2918187f2f5b3ba9362e6999114993a74da5 |
| 455cd0db2de92ee348295780f8fc7a32a5406a5986a4d162761680f11b6346b1 |
| 466a8af8d0b51ed82aec35b17b845e6baf77ada259aa2fd5591024a01d8e31b5 |
| 46b355d25b95d7f9d7029f1ee1a346028e3c5bdec9e6c9245c12d1607cb1c686 |
| 46f0e190cd346d1eb6d0c27386bb3aceebf4ad44b25d253cac4063e2ccde9028 |
| 478eb22a1f1be2ef6e70625cf42ca61c716389135acbb705c0e21f0cf330bf46 |
| 47a71eb078b14a92eb5fb990f606aa48e535860af90ebc5e075c8b2e4d829633 |
| 4b7fa864007357e3e799eeb4a9630425652178551a9c37181fc6ea86660af814 |
| 4ba95478ea0ac78e038d30693fabf95244bd70e40b36b2a928f3854551d6fa78 |
| 4bed4960a896ebeafa9a9421d7ecf389205a2f0216ad911bdcd80f28237159e6 |
| 4e40aaddf718b70f397d449f8ca9a577ef0106f281ccb50f0b5cde531b758881 |
| 5305556bee271232973a9e09c4776a3b386964112785db638b225b2cc61d9af7 |
| 53e451750c099f33f80a3652d9f2a804390de0f867af13ae22ad0fbf4b15f8c3 |
| 5493fa6f2ab69da66352532b2c13e7e461bcde6cc2810a6f6af88e139dde1ae7 |
| 5665c96975c959b5e8057b7aed46f7c203335aefa35f5e290c538e9300e3e293 |
| 5b9481d9022b0efcaed04513d338048de4aa3e1328bacc0966486ef322c0d086 |
| 5eb3bb67656d990ceec07f55c78dcd8032a7cf00ac919a399e3642b177f68381 |
| 60ecef2d0a966db913bff15872c072175b895e16271351c43e5a0cf9e4018f22 |
| 643dde3f461907a94f145b3cd8fe37dbad63aec85a4e5ed759fe843b9214a8d2 |
| 69ad389722dd8b49590b2aa014f703b39737894073c7339ea44c94d296e00273 |
| 78f6c822cee2b0587df145d67478cce5bbeb76147a7846d08b7b6fd09aa36ce2 |
| 796c245c5bb1e7c1dcd52c4e8f83e1c707e391f6409ee9b5e1dd18658ff0e05f |
| 7df313618a02e8e9961ddb1c3289956eb18361f1ca9fb639d64a00fae7568a4b |
| 7e5ba9e3ccc1cb52d24c21c6d378a32bb540a8519789d8cf796e5dd351fc6958 |
| 8907a8454ef56d64bf788b9c8c64bbaaf187be7a9666d8d8331fd187c49c6031 |
| 8a28e457b19060678d5d007b291722e1dea92f69249e1588ca5b97eb1fe10807 |
| 8cc2e1104480875ee237bf4ca9f3d83e46ca213f5c88df95be0d78e05c7c2d71 |
| 8cf8bea6842219e565720919372e4aa530942b28d533231043ee57e7bb424cbe |
| 8d8c3b6be212ce645566311ce95ad9ad3aad37795042882adefda9716deb2eab |
| 8e63b1f7f8e29b9a714f796e2e8ca0cd1094086e2d0a5de21601e23e1792a906 |
| 9125c13250a14905a4fd97978a3a6dbba80df01e73d98f8d4fa2d19b49d9fda0 |
| 9314ea889f93da5cd39129840a42bd5f228538686a2345f56e757e5a5d956dee |
| 9bf7a01254fed809e0f564f28a3cf54156ea98f85d3b633ae3a213a87f9db143 |
| 9dfb8ed499b667d782ae3a4ce40472893a789ed973f48884b47358536b6a76e8 |
| 9fa7574f35fae3d309c8cefe0e8a43d07afb6cefaee0caa3b2538263bd4a7ec5 |
| a01ac4244102e3958296c70d71e3d951f11abcc355458d1918d081587b151d90 |
| a08db4c7b7bacc2bacd1e9a0ac7fbb91306bf83c279582f5ac3570a90e8b0f87 |
| a29e108e912c77ed565873bd205da01ed0e6001d18b442139c06827428d2eba1 |
| a3b45619606d4c3c487047786e3d51a98fdcc1fdc43dc7b6f6e80974fd0a9c97 |
| a695cb493631962a4c2fd61a094cb0b952ce708a99af714772cddd4991f32df0 |
| ae6ee6bf2f9890ed83922e5c80770dd88faa9b32b2211462ea2eed29bf1bf6c5 |
| b14af38c4230de20c7c4fefc1e3c5fffb1562bacedfebc56a508f55182a6fe88 |
| b1ebe1794e091fd82a34d6806f18f64ebadb5d3b2343a661c481fb7c54cb872f |
| b2a91277e5fb40a0a38215142f683554b4e7c03ccd439e0d056c56b031a5bec5 |
| b72d9ae8484b91ec9c6167e6707617f495622f3b684f6b3e30b29106891c778b |
| bb4f812f8bb4e7b33d7b583407370a5351d079f63b26956adc7ab317b3d90601 |
| bdd6bd29937059dd944fb09163a24e4482c5ce420d3de749e5e46c6c25b2ea86 |
| c2a95f22cfee1f4df67a424e30425b59c23db265bff611f2ee653d71b30a70d8 |
| ca67f61b5f8d20ec3f45dbbfc355045a8ceee15396f1cad032850a3ee23a42b3 |
| cd3f064d088a3a6a6ad03da148701fb6b660866b8aac2a808359505620166641 |
| d7967661947ca835deddec30ae6e62d580718cbdeafb42cd6d0f038a407edcf0 |
| d9cea34db0d1dc016dd4007d8cd11416f095c41b0639f13af1eb6ad675651df2 |
| db282cae419ed5af3338f65f170ecd7b312cac2500b5cb2c8824721ba981c361 |
| db41e032193becc097d0da85cac74cf1f519b85cf731f783ccea11c1e20ad23f |
| e09c36993e1c29b6ef0f1c73e02aee54686c0df49b6d87b577e70f261313acaf |
| e13f20752f6298728ac0463a3f4b0657d5657ca7710e63a27ac1179078ac71f6 |
| e1448680114cb3dd06aa81a3b1037f77e6d5b3f6dce213aa38cffdec72d59e74 |
| f2f23a963952c1a822484382bf4c68cd8b7278400ad2d8bacf3235ba2fc42a89 |
| fa292bfcf81223bab0f79d4ce08187e37d68960005629df0241ea22f0b95d7a8 |
| fc589aa3529a057fee52a1c9bd9bb19fa42bbfd291b7dbb3791e77eced376640 |
| ffcae0093d509563b47b1d0cef3aa455a4358de3a1d2c2b84c298a927aa238e8 |
WhiteSnake Stealer
| SHA256 |
| 6dce9024ec032390ca4294f62cb282a09291cf141cb003f7e0ef23bb7a34bfae |






