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

Emotet惡意軟件深入分析

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

Emotet是一種主要通過垃圾郵件進行傳播的木馬。傳播至今,已進行過多次版本迭代。早期版本中,它通過惡意JavaScript文件被投遞。在后來的版本,演變為使用啟用宏的Office文檔從C2服務器下載后進行傳播。
自Emotet首次被發現之后,FortiGuard Labs一直在對其追蹤。在本博客中,我將對5月初發現的新Emotet樣本進行深入分析。本篇分析主要包括:如何釋放持久性payload,Emotet惡意軟件如何與其C2服務器進行通信,如何識別可執行文件中的硬編碼C2服務器列表及RSA密鑰,以及如何加密它收集的數據。
 
0x01 惡意Word文檔
這個樣本是一個Word文檔。當你打開它并啟用宏時,惡意軟件將開始運行。

圖1:執行PowerShell腳本
我們可以看到惡意Word文檔文件中的VB腳本使用PowerShell創建了一個新進程。而’-e’參數表示可以執行經base64編碼的字符串類型的命令。
解碼后的PowerShell腳本如圖2所示:

圖2:解碼后的PowerShell腳本
變量$ YBAAU_D是一個包含五個URL的列表。通過調用它來從遠程服務器下載payload并執行。下表中列出了所有惡意URL,并給出了每個URL所對應的payload的名稱,md5值及大小。
在我5月初開始跟蹤此活動時,前兩個URL已無法訪問,而其余三個URL則處于活躍狀態。(URL對應的payload均為PE文件)。

接下來,需要選擇其中一個進行進一步分析。在此博文中分析的payload是p4xl0bbb85.exe(md5:a97cbbd774ca6e61cf9447d713f7cf5d)。
 
0x02 第一層Payload
p4xl0bbb85.exe由定制化的封包工具進行封裝。執行后,它會創建三個新進程,如下圖所示:

圖3:執行有效負載p4xl0bbb85.exe后的進程樹
首先,它會使用命令’—f02b3a38’啟動進程(pid:2784)。然后將PE文件’itsportal.exe’寫入路徑C: Users [XXX] AppData Local itsportal 。接下來,執行itsportal.exe(無附加參數)。執行后,使用命令’—c6857361’啟動進程(pid:1980)。最后,退出前三個創建的進程,將PE文件p4xl0bbb85.exe從硬盤中刪除。留下的PE文件itsportal.exe即為持久性payload。

圖4:持久性payload
 
0x03 持久性payload分析
在本節中,我們將繼續分析持久性payload itsportal.exe。這個payload使用了定制化的封包工具。從入口點跟蹤幾個步驟后,程序進入函數sub_4012E0()。

圖5:函數sub_4012E0()
下圖是函數sub_4012E0()的C語言偽代碼。

圖6:函數sub_4012E0()的C語言偽代碼
在此函數中,惡意軟件調用了函數sub_401440()并使用VirtualAllocEx()分配了新的內存空間(0x1D0000),并將此內存的起始地址加上0x102f0設置為蹦床(trampoline)地址。
然后,在循環中,首先會將0xf080f8的前0x7B字節復制到這個新內存空間中,然后開始復制數據部分。當達到0x37字節時,將停止復制。最終,復制到內存空間數據大小為0x10600。
接下來,函數sub_401560()會對新內存空間中的數據進行解密,在此過程中,trampoline code(蹦床代碼)也將完成解密。然后程序將跳轉到蹦床代碼。最后,程序跳轉到0x00401260執行相應命令。

圖7:跳轉到0x00401260
如圖8所示,程序將跳轉到0x1E02F0以執行trampoline code(蹦床代碼)。

圖8.跳轉到trampoline code
trampoline code(蹦床代碼)主要功能如下:
1.分配大小為0x10000 的新內存空間(0x1F0000),并將其命名為內存空間A。2.從0xfD0124復制0xf600字節大小的數據到內存空間A。3.在步驟2中解密內存空間A的數據。解密算法如下圖所示:

4.分配大小為0x14000 的新內存空間(0x200000),并將其命名為內存空間B。5.將內存空間A的前0x400字節的數據復制到內存空間B的開頭。6.將內存空間A所有數據段復制到內存空間B.7.調用UnmapViewofFile函數 (0x400000),通過調用進程的地址空間來取消文件映射。8.調用VirtualAlloc函數(0x400000,0x14000,MEM_COMMIT | MEM_RESERVE,PAGE_EXECUTE_READWRITE)來保證對內存空間的執行,讀/寫權限。9.從內存空間B復制0x14000字節數據到0x400000。10.從蹦床地址跳回到真實入口點(0x4CA90)以執行指令。此時,已完成解包工作。

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

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