# 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

## 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,…

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfC-tUA7HnXf9y6zorcENSK18rm_mw8oq-0hcRqaAja1MtS6n0RaCRMSJQrM6S3mDwaHZ7_JWL8b0IUl_REj9wp_MnPmQjBknSZuXxa9tp36IbPxwPw4WH1RjrVBfYkjw8L90QyvOTsLiscDt2QCaIoPPNJ?key=kJAZ8JH-xT5LJnzbsqqSvA align="left")

*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.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXdHMWv9lk7whj329kp-GStvQ7SvDqYUb7SodKSEYaTC6l-hiTROjnn6ie8ENXA5li_OQwd28MDOjaSY5hy7oehapO8ldw-YxuUIrjEAU7-byKK4puM0GkRHhDdx-5dLghdgrz4HEdwQUI2AJ8NL8pJeK_TS?key=kJAZ8JH-xT5LJnzbsqqSvA align="left")

*Hình 2. Dữ liệu được ghi ngẫu nhiên*

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXf6iQ0ln8NZcKQpcySTqJl8ZUDDlkjJljhoOl3RNavk4QTOxhkJq5EBGf-BcA5GykqQ1kMW5SNE0fjo3DAHUrJedq3KQa2SJWdUFmiqY3gkeGBSx7E9cTtmuACPGX06ageHUqVrDHT_w1VArkFe4k5_cSjw?key=kJAZ8JH-xT5LJnzbsqqSvA align="left")

*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.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXfiF7eDBWQ6suZj-cHjw8mDKdff_GpTW89mFg0mB9K18lEurYEIPYp9-u6M5u6eBvKpymwCnBMlZPwxI4OtWlcSrQedTQTIg1gk4E9RYnEPERxUGAR_OUIs5JxmdxGUNJKRgZDMY1Ozttw5LTPZIUnRpBrK?key=kJAZ8JH-xT5LJnzbsqqSvA align="left")

*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:

![](https://cdn.hashnode.com/res/hashnode/image/upload/v1732533172622/e0de9840-50c5-416e-a4e1-03cd903ca1d1.png align="center")

*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:

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXegHbSTL7Zv1L-tgC27idwQtLTJhm5jXJOnNtDEf2Mn0z7Np2zqahq-zRtVEY2T5g6PGajF298rs_ZwvmxEp2dxFFsK8UKBfDUUdOvGGMFVxj7oyoGltblEuGeHzia5hEnMxR4bZy7mHqnm9juGIsJmr4TJ?key=kJAZ8JH-xT5LJnzbsqqSvA align="left")

*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.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXeaxRP5KrjwKQNXFu4_Z0cfO550uueVEeXw2IT0tTVETrcWXpMFJKpuvdLRJTPTaEBEFojjSpLn4dyGmJK07lR61Nu0Rsfk3Tob9a7st10AeCrTOdwssy783DC8Z0ZgZeMHuJbs3RF3pK5CCYe81nmDQY0j?key=kJAZ8JH-xT5LJnzbsqqSvA align="left")

*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.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXevjbI4RPZOz8yMeuLgHuejNq_JES7stEhod4vz3z3VhDtnx38jUgjyGtp9Kk9EPEfCEUnpQ-tDKl5_Wp0gN2KwYDtGLPOWghdX1Y1cTziinO-5g1l-eZePSIR5KFJH_s_mOJaDMfKhFRFZhYqX3oaWa9w?key=kJAZ8JH-xT5LJnzbsqqSvA align="left")

*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`.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXcB9km7oRwtX_w06QL-aoygVUrI2tfENz1hSPOIokjwSSElr89CObU_Ym9aa4VHsEqOvXQtsEpAn-wQ3MDz_kwv9TfbVVE3eIqW9arB7d-iX13flqQ9mjvcCmStpfuBukSqpguI_8XMn7z5hhLO0ITrEa-U?key=kJAZ8JH-xT5LJnzbsqqSvA align="left")

*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.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXerfEVqCwLI7BDS1xXUAqC8JLK3pHR2fUaH08zfHA6D-pqMNseYa4ZoAaR85IALSThzOeb0D9nbdoUm8B-IGzzBr8WwY4uQgv-RCelXi3DOrbf2VlJJKdjAN578ZsdxBGfNvpJ328CxxY5HHF0Kz_5KEu3w?key=kJAZ8JH-xT5LJnzbsqqSvA align="left")

*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.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXd9hk2xEMJk3sD-MEsWHZmMt3jVQMEvTEWnfezuyPfB7aYi0NoKuwl-Na8dSqOj8g1E8lrmYXUyOfdIR30-SHEPxotKHXTVpuJV5r74ryEkWyHR-4RPzMRyDtT1RPhpYvVCgWcI_MQ-YyL166Jf8NDnZiQp?key=kJAZ8JH-xT5LJnzbsqqSvA align="left")

*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.

![](https://lh7-rt.googleusercontent.com/docsz/AD_4nXe0zPTx_hsCqHiYwIQkBRgVWXEtBZhvVUqF0sCM4imUdaK4N2pLamTeRkkHaVLoQux7OsrG0vWLRInwfXZqCOnUWAM76CGO9ZhSW-rY3EDY5emeQDilDt55s0FdSURx2q0iPgBCT7b3NOkEsbGZcUi-dD0?key=kJAZ8JH-xT5LJnzbsqqSvA align="left")

*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 |

## 5\. Tham khảo

1. [Babble Babble Babble Babble Babble Babble BabbleLoader](https://intezer.com/blog/research/babble-babble-babble-babble-babble-babble-babbleloader/)
