歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

對GOOTKIT木馬有效載荷的分析

來源:本站整理 作者:佚名 時間:2019-09-15 TAG: 我要投稿

本文是對GOOTKIT木馬研究的第3部分——檢索最終的有效載荷,前兩部分,我們分別介紹了《深入分析Gootkit木馬的反分析能力》和《對GOOTKIT木馬的持久性攻擊和其他惡意功能的探索》。
在這篇文章中,我們將逆向Gootkit執行的例程以下載和執行Node.js最終有效載荷。我們還將看到如何從可執行文件中提取JS腳本,并簡要介紹一些有趣的腳本。
本文使用的樣本的MD5:0b50ae28e1c6945d23f59dd2e17b5632
-vwxyz參數
如前所述,Gootkit包含幾個參數,這些參數可能影響流程的執行,也可能不影響流程的執行。這個示例中最有趣的參數是——vwxyz,在執行時,Gootkit將重新執行,并將-vwxyz作為參數傳遞。這將啟動負責從C2服務器檢索最終Node.js有效載荷,解密并解壓縮它,最后執行它。

有效載荷檢索函數不是很有規則,實際上,它使用了我在上一篇文章中介紹的相同連接函數。有趣的是,它對C2服務器執行了兩個請求,首先請求/ rbody320,然后請求/ rbody32。雖然我所分析的Gootkit的樣本是最新的,但C2服務器很快就關閉了,所以我使用了Felix Weyne開發的工具ImaginaryC2工具,以模擬Gootkit C2服務器并分析網絡相關路徑。因此,Node.js有效載荷可能與此示例不完全相同,但是,它本身也是相當新的。
注:Imaginary C2是一款python工具,可幫助安全研究人員分析惡意軟件(網絡)行為。Imaginary C2上托管了一個HTTP服務器,用于捕獲選定域/IP的HTTP請求。此外,該工具還可用于重放捕獲的C&C響應/payloads,使這個過程變得更加方便快捷。

然而,在訪問C2之前,Gootkit將首先檢查注冊表以檢查有效載荷是否已經被下載過。這樣做的原因是,一旦Gootkit下載進入最后階段,它將被寫入注冊表,特別是Software\AppDataLow\ 注冊表項,但是,它不是將整個二進制文件存儲在一個值下,而是將有效載荷分成幾個部分并將每個部分寫入值bthusrde_x,其中x對于文件的每個部分遞增1。如果注冊表已經填充了加密的有效載荷,Gootkit將解密并解壓縮有效載荷,然后執行它。但是,Gootkit不會跳過通信例程,而是會訪問服務器以檢查它是否運行在最后階段。

在向C2服務器發出第一個請求時,返回由服務器托管的Node.js有效載荷的CRC-32哈希。在本例中,該值為0xB4DC123B,不過由于有效載荷可能發生變化,它會因不同的活動而有所不同。首先將十六進制值與0xFFFFFFFF進行比較,如果存在Software\AppDataLow\bthusrde_0 注冊表項,則該示例將把本地加密的有效載荷讀入內存,并對數據調用RtlComputeCrc32。然后將該哈希與從C2發送的哈希進行比較,如果匹配,則該過程將在重復檢查之前休眠一次隨機生成的時間。
如果注冊表項不存在,則證明系統之前未被感染。因此,Gootkit將再次訪問C2服務器,將/ rbody32附加到URL。

成功下載最后一個階段后,它將以塊的形式寫入Software\AppDataLow\bthusrde_x。在本文的示例中,總共創建了9個注冊表值來保存整個二進制文件。一旦將其寫入注冊表,下載程序將在內存中解密并解壓縮。解密函數與用于解密配置的函數相同,為了解壓,Gootkit將加載并調用RtlDecompressBuffer。解密和解壓縮后,生成的文件非常大,大小約為5兆字節。這是因為它包含了大量嵌入其中的Node.js腳本,以及執行這些腳本所需的解釋程序。

現在可執行文件已完全解密和解壓縮,之后下載程序將復制本地配置。為此,它在下載的可執行文件中查找占位符DDDD,一旦找到,它將使用lstrcpyA()復制配置內的URL。

在執行準備好的有效載荷時,Gootkit采用了一種特殊的方法。下載程序不是將其注入另一個進程或將其作為自己的進程執行,而是在通過調用eax執行它之前,在其自己的進程內部分配內存并將有效載荷映射到其中。如果Node.js有效載荷一直退出,下載程序將簡單地循環,解密存儲在注冊表中的有效載荷并執行它。

在介紹了下載功能之后,讓我們繼續分析Gootkit的最后階段。
Node.js的有效載荷
與可以編譯的Python和許多其他腳本語言類似,JavaScript可執行程序包含開發人員創建的JavaScript腳本,以及執行腳本所需的解釋程序。因此,完全有可能提取Gootkit用于執行其惡意任務的每個腳本。不過前提是只需找到它們即可。幸運的是,這并不難做到。

由于我們尋找的是相當大的數據塊(可能是加密的),而不是程序代碼,因此只需在IDA中進行一些快速搜索,就可以定位間諜軟件、惡意軟件、gootkit_crypt和vmx_detection等字符串。對這些字符串執行交叉引用會導致.data部分中出現大型數組列表。每個數組都包含一個字符串,例如gootkit_crypt,一個指向可執行文件中包含加密數據塊的地址的指針,以及加密數據的大小。

[1] [2] [3]  下一頁

【聲明】:黑吧安全網(http://www.eyhadu.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        彩票大数据