釣魚引發(fā)的APT攻擊回溯:C&C服務(wù)器位于韓國,whois注冊卻在中國上海
一位日本的安全研究者MalwareMustDie發(fā)現(xiàn)一種基于Poison Ivy的新型APT攻擊,經(jīng)過他的逆向分析,發(fā)現(xiàn)了一些關(guān)于攻擊廠商的有趣發(fā)現(xiàn)。
本文將介紹他是如何發(fā)現(xiàn)這種隱匿極深的APT攻擊回溯之旅。
一次普通的釣魚攻擊?
和所有APT攻擊的開頭一樣,一個受感染的Word文檔,一次看似普通的釣魚攻擊。
但是如果我們注意到MalwareMustDie長文分析的開頭,可以發(fā)現(xiàn)一些普通郵件的圖片,雖然還是那種普通、boring的受感染的Word文檔,毫無新意。
奇怪的是,可疑文檔似乎是由一個名為Geocities的公共博客網(wǎng)站提供的VBScript腳本,此腳本嵌套了多層的base64編碼,下圖是手工解碼的結(jié)果:
圖1. “powershell.exe” 命令編碼得到的VBScript
通常VBScript的“createbject”指令都會跟在 Powershell 命令“powershell.exe -w hidden -ip bypass -Enc with long encoded coded”之后
Poweshell? 嵌入命令? “繞過” 的目的是什么?
經(jīng)過MalwarareMustDie的調(diào)查,那些不那么“普通、無聊”的東西從陰影中浮現(xiàn)出來,隨著分析的步步深入,他發(fā)現(xiàn)了更加有趣且驚人的東西。
下圖是base 64手動解碼的代碼示例,其揭示了另一嵌套的base 64編碼代碼。 在圖片中表示的功能是自我解釋。顯而易見,那臺受感染的計算機已經(jīng)“吃下”什么不好的東西。
圖2. VBScript base 64解碼代碼
在多層循環(huán)解碼base 64編碼后,結(jié)果很明顯的:有一個危險的腳本,附加于Word附件文檔,隱藏在VBScript文件中,且隨時可由Powershell執(zhí)行。但MalwareMustDie表示“我已經(jīng)發(fā)現(xiàn)它的源代碼”。
復(fù)制、粘貼 Powersploit/CodeExecution PoC
運行Powershell命令的VBScript存在一處代碼,該代碼就是基于臭名昭著的惡意軟件Powershell PowerSploit/CodeExecution PoC代碼的“copy pasta”,你可以在GitHub上可以得到一模一樣的文件和.ps1擴展。
這里它是文檔以及利用方式的網(wǎng)頁:
圖3.GitHub頁面上的PowerSploit / CodeExecution
漏洞的文檔說明:“將shellcode插入到您選擇的進程ID中或在運行PowerShell進程中”。
MalwareMustDie表示:
這也就是我為什么反對公眾在GitHub上放出這種開源代碼。GitHub上到處都是這種開源項目。 |
Shellcode 分析
但是讓我們來看看Shellcode,因為現(xiàn)在最重要的任務(wù)是對它進行逆向分析,并且明白它的主要目的是什么,為什么注入計算機受害者,采用哪些技術(shù)和機制來做什么,連接在哪里?
同樣Shellcode使用的是base 64編碼。當解碼時,它如下圖所示:
圖4.Shellcode.
逆向之旅似乎還有很長的路要走,我們再一次為MalwareMustDie的技巧所驚嘆,他成功地編譯了shellcode并獲得了一個可安全執(zhí)行的文件。
MalwareMustDie在博客中寫道:
將shellcode數(shù)據(jù)保存在匯編文件的.text部分和入口點(EP)中將在編譯過程中由編譯器“調(diào)整”,這樣你可以將此shellcode作為二進制PE文件執(zhí)行。 此方法在分析shellcode時非常有用。 通過Unix環(huán)境,你可以創(chuàng)建這種PE,而不會有感染的風險。 |
下圖就是他采用的過程:
圖5. 操作 shellcode 來創(chuàng)建一個 .exe 文件
我們在惡意軟件運行時發(fā)現(xiàn):它從受害者的計算機提取信息回調(diào)其C2服務(wù)器與目標執(zhí)行所有的惡意行為。
最后,我們可以確定,它就是臭名昭著的Poison Ivy。
Poison Ivy計劃
運行Shellcode有可能觀察到它使用了大量涉及DLL的系統(tǒng)調(diào)用,這些DLL主要與系統(tǒng)的內(nèi)核相關(guān)。
這里來自MalwareMustDie博客的圖片:
在跟蹤分析shellcode的第一個階段我注意到了這是一個“Poison Ivy”
圖6. 偽造的進程 userinit.exe 創(chuàng)建后被注入
可以看到,出現(xiàn)了一個偽造的userinit.exe進程,且在這個進程中注入惡意代碼并執(zhí)行。受害者將看到一個虛構(gòu)的userinit.exe進程在做壞事。這是一個典型的Poison Ivy模式。而且,DLL的組合使用同樣暴露了Poison Ivy的典型模式。
然后其他操作由惡意軟件執(zhí)行:
- 創(chuàng)建一個名為“Plug1.dat”的文件
- 為之后的工作創(chuàng)建一個套接字
- 通過 “HKEY_LOCAL_MACHINE\SYSTEM\Setup”查詢PC信息
這里可以看到userinit.exe創(chuàng)建了Plug1.cat文件,這樣它就可以利用socket做更多事,還可以通過HKEY_LOCAL_MACHINE\SYSTEM\Setup SystemSetupInProgress查詢PC信息
毫無疑問就是Poison Ivy
那么問題來了C&C服務(wù)器在何地?
我來仔細觀察一下WS2_32.DLL文件,可以看到一些有意思的東西
- socket(),
- gethostbyname()
- connect().
由C&C服務(wù)器回傳的主機名和IP地址可知,該服務(wù)器位于韓國首爾。
圖7.C&C服務(wù)器位于韓國
- Network/BGP Information→「61.97.243.15||4766 | 61.97.243.0/24 | KIXS-AS | KR | kisa.or.kr | KRNIC」
但是我們發(fā)現(xiàn)主機名是web.outlooksysm.net,這里可以用WHOIS來獲得額外的信息,知道誰是幕后主使,結(jié)果該公司來自上海。
圖8.對 Poison Ivy 惡意軟件的C&C服務(wù)器WHOIS
結(jié)論
這個APT攻擊使用了多種變體,它先是欺騙受害者下載一個惡意VBScript,讓這個VBScript去下載一個.doc文件并打開它。 完成這些操作之后,它會悄悄的地執(zhí)行PowerShell(PowerSploit)攻擊,使得受害者在運行內(nèi)存中的進程時感染Poison Ivy。
這個實例很好地展示了這種攻擊的潛在危險,攻擊者在一次APT感染中使用修改過的PowerSploit PoC代碼,這種做法很獨特。
Poison IVY惡意軟件是在PowerSploit使用shellcode創(chuàng)建或準備的惡意進程userinit.exe的過程中注入的。這種不感染文件的攻擊有效地避免了多個編碼和包裝檢測的已知簽名,并且100%避免了原始攻擊者的工作區(qū)域被發(fā)現(xiàn)的可能性。
最近的APT攻擊很有可能也是利用類似的payload在其它地方成功施展攻擊。
為了避免更多的受害者,我真的希望Geocities.jp上的vbiayay1帳戶盡快將惡意軟件刪除。
希望我的分析能夠幫助調(diào)查和打擊這種威脅。