9月17日,研究人員發(fā)現(xiàn)一個名為Kraken 新攻擊活動,會將payload 注入Windows Error Reporting (WER,Windows 錯誤報告)服務(wù)中作為繞過機(jī)制。
[[345890]]
WER 服務(wù)(WerFault.exe)一般是在有與操作系統(tǒng)、Windows特征、和應(yīng)用程序相關(guān)的錯誤產(chǎn)生時才會被調(diào)用。當(dāng)受害者看到WerFault.exe 運(yùn)行時,會認(rèn)為有錯誤產(chǎn)生,實(shí)際上在本次攻擊事件中是被攻擊了。
誘餌文件
9月17日,研究人員發(fā)現(xiàn)一起利用魚叉式釣魚攻擊來傳播含有惡意文檔的zip文件的攻擊活動。惡意文件“Compensation manual.doc” 偽裝成含有關(guān)于員工賠償?shù)奈臋n:

圖 1: 惡意誘餌文檔
文件中含有一個image 標(biāo)簽(“INCLDEPICTURE“)會連接到y(tǒng)ourrighttocompensation[.]com,并下載一個文檔模板的圖像。

圖 2: 嵌入文檔中的Image tag

圖 3: yourrighttocompensation 網(wǎng)站
yourrighttocompensation 網(wǎng)站域名是2020年6月5日注冊的,文檔的創(chuàng)建時間為2020年6月12日。這表明這是同一攻擊的2個部分。事實(shí)上,研究人員還發(fā)現(xiàn)了一個惡意宏,惡意宏使用修改的CactusTorch VBA模塊來執(zhí)行shellcode。CactusTorch 使用DotNetToJscript 技術(shù)來加載.NET 編譯的二進(jìn)制文件到內(nèi)存中,并從vbscript 執(zhí)行。
圖4就是攻擊者使用的宏內(nèi)容,有AutoOpen(自動打開)和 AutoClose(自動關(guān)閉)函數(shù)。AutoOpen 負(fù)責(zé)顯示錯誤消息,而AutoClose 負(fù)責(zé)執(zhí)行主要活動。

圖 4: 宏內(nèi)容
如圖4所示,十六進(jìn)制的序列號對象中含有加載到內(nèi)存中的.NET payload。然后,宏定義了一個記錄類(entry class),值為Kraken.Kraken。該值有2個部分,用.隔開:分別是.Net 加載器的名字和目標(biāo)類的名字。
然后回創(chuàng)建一個序列化BinaryFormatter 對象并使用BinaryFormatter 的反序列號函數(shù)將對象反序列化。最后,通過調(diào)用DynamicInvoke來加載.Net payload 到內(nèi)存中并執(zhí)行。
Kraken加載器
加載的payload是一個名為Kraken.dll 的.Net DLL,編譯時間為2020年6月12日。該DLL是一個加載器,會注入嵌入的shellcode到WerFault.exe中。
加載器有2個主類:Kraken 和Loader。

圖 5: Kraken.dll
Kraken 類中含有要注入到目標(biāo)進(jìn)程的shellcode,目標(biāo)進(jìn)程在WerFault.exe中進(jìn)行了定義。它只有一個功能就是調(diào)用Loader 類的Load 函數(shù)和目標(biāo)進(jìn)程作為參數(shù)。

圖 6: Kraken class
Loader 類負(fù)責(zé)調(diào)用Windows API來注入shellcode到目標(biāo)進(jìn)程中。

圖 7: Load函數(shù)
執(zhí)行進(jìn)程注入的步驟如下:
· StartProcess 函數(shù)調(diào)用CreateProcess Windows API,其中dwCreateFlags 的值為800000C;
· FindEntry調(diào)用ZwQueryInformationProcess 來定位目標(biāo)進(jìn)程的基址;
· CreateSection 調(diào)用 ZwCreateSection API 來在目標(biāo)進(jìn)程中創(chuàng)建一個section;
· 調(diào)用ZwMapViewOfSection 來綁定該section 到目標(biāo)進(jìn)程中,通過調(diào)用CopyShellcode 來復(fù)制shellcode;
· MapAndStart 通過調(diào)用WriteProcessMemory和ResumeThread 來完成進(jìn)程注入。
ShellCode 分析
研究人員使用HollowHunter復(fù)制出了注入到WerFault.exe 的shellcode。該DLL 會在多個線程中執(zhí)行惡意活動,因此很難分析。
DLL的執(zhí)行是通過調(diào)用“DllEntryPoint”,而“DllEntryPoint”會調(diào)用Main 函數(shù)。

圖 8: Main進(jìn)程
Main進(jìn)程會調(diào)用DllMain,DllMain會創(chuàng)建一個線程來在同一進(jìn)程環(huán)境下的新線程中執(zhí)行其他功能。

圖9: Dll main
創(chuàng)建的線程首先會執(zhí)行反分析檢查來確保沒有運(yùn)行在沙箱或調(diào)試器等分析環(huán)境中。
在執(zhí)行完反分析檢查后,會在新線程內(nèi)創(chuàng)建最后的shellcode。這部分使用的import 調(diào)用是經(jīng)過混淆的,會通過調(diào)用“Resolve_Imports” 函數(shù)來動態(tài)解析。
該函數(shù)會使用LoadLibraryEx 獲取kernel32.dll 的地址,然后進(jìn)入循環(huán)來提取12個import。

圖 14: Resolve_Imports
研究人員使用 libpeconv 庫來獲取解析的API 調(diào)用列表。下面是import的列表:
· VirtualAlloc
· VirtualProtect
· CreateThread
· VirtualAllocEx
· VirtualProtectEx
· WriteProcessMemory
· GetEnvironmentVariableW
· CreateProcessW
· CreateRemoteThread
· GetThreadContext
· SetThreadContext
· ResumeThread
在解析完必須的API 調(diào)用后,會使用VirtualAlloc 創(chuàng)建一個內(nèi)存區(qū)域,然后調(diào)用“DecryptContent_And_WriteToAllocatedMemory” 來解密final shellcode的內(nèi)容并寫入創(chuàng)建的內(nèi)存中。
然后,調(diào)用VirtualProtect 來修改對分配的內(nèi)存的保護(hù)以確保其可以執(zhí)行。最后,調(diào)用CreateThread 來在新線程內(nèi)調(diào)用final shellcode。

圖 15: 解析Imports和創(chuàng)建新線程
Final Shell code
Final shellcode是一個指令集合,用來對硬編碼的域名進(jìn)行HTTP 請求來下載惡意payload 并注入到進(jìn)程中。
首先,調(diào)用LoadLibraryA 來加載Wininet API:

圖 16: 加載Wininet
然后,構(gòu)建發(fā)起HTTP 請求所必須的函數(shù)調(diào)用集,包括InternetOpenA、InternetConnectA、InternetOpenRequestA 和 InternetSetOptionsExA:

圖 17: HttpOpenRequestA
然后,創(chuàng)建一個HTTP 請求并通過調(diào)用HttpSendrequestExA 來發(fā)送。請求的URL 是http://www.asia-kotoba[.]net/favicon32.ico :

圖 18: HttpSendRequestExA
然后檢查HTTP 請求是否成功。如果HTTP 請求不成功,就調(diào)用ExitProcess 來停止該進(jìn)程。

圖 19: 檢查HTTP請求成功
如果HTTPSendRequestExA 的返回值是true,也就是說請求是成功的,代碼會繼續(xù)下一步。
然后調(diào)用VirtualAllocExA 來分配內(nèi)存區(qū)域,并調(diào)用InternetReadFile 來讀取數(shù)據(jù)并寫入到分配的內(nèi)存中。

圖 20: InternetReadFile 調(diào)用
最后,進(jìn)入分配的內(nèi)存區(qū)域來執(zhí)行。
由于URL 已經(jīng)無法訪問,因此無法提取shellcode進(jìn)行進(jìn)一步分析。
APT32?
目前還沒有關(guān)于該攻擊所屬攻擊組織的足夠證據(jù)。但研究人員發(fā)現(xiàn)了一些與APT 32相關(guān)聯(lián)的證據(jù)。APT32 以使用CactusTorch HTA來釋放Denis Rat 變種而知名。但是因?yàn)闊o法獲得final payload因此無法進(jìn)一步分析。用來保存惡意文件和文檔的域名的注冊地址為胡志明市,而APT 32也是位于胡志明的。因此,研究人員分析初步判斷該攻擊活動與APT 32有關(guān)聯(lián)。

圖 21: 嘗試連接遠(yuǎn)程站點(diǎn)的誘餌文件
本文翻譯自:https://blog.malwarebytes.com/malwarebytes-news/2020/10/kraken-attack-abuses-wer-service/如若轉(zhuǎn)載,請注明原文地址
【編輯推薦】
【責(zé)任編輯:姜華 TEL:(010)68476606】