0day星期三——新型惡意軟件遭遇戰(zhàn)
可能有人會說這標(biāo)題很瘋狂,但我把它稱之為“星期三”。
這款較為新穎的惡意軟件是一個老的2012 CVE的java攻擊包(可能針對SecurityManager)的負(fù)載。壓縮與解壓縮的在VirusTotal/Malwr上都沒有查到,所以這又是一個0day啊。
利用IDA進(jìn)行初步檢測,報出一個錯誤:
估計制作這家伙的兄弟也知道, 遲早某一天它會被像我這樣的人拿來瞅瞅的。確實(shí)有許多的修改可以用來攪亂反匯編結(jié)果,而絲毫不影響Windows上的運(yùn)行。
用CFF Explorer來看看,發(fā)現(xiàn)NT頭部的一個錯誤在“Data Directories”的“Delay Import Directory RVA”項(xiàng)中。CFF很好的為我們指出0×00000040值是錯的。將其清零就可以解決此問題。
保存修改的exe,在IDA中重新打開,之前的錯誤提示就消失了,一切正常。
在IDA里簡單的過一眼就可以知道這是一個MFC程序。我咋知道的呢?在導(dǎo)入表的Library字段很清晰的表明了。
當(dāng)然了,該程序被壓縮了。沒有節(jié)表修改,典型的內(nèi)存壓縮。
這就意味著靜態(tài)的分析不再有效,我們需要動態(tài)分析來獲得更多的信息。來吧,操起Immunity。
在開始immunity和虛擬機(jī)之前,exe文件里有些有趣的東西,沒有很明顯的在IDA里出現(xiàn),但在CFF explorer里我們可以看到。首先,有幾個隱藏在資源目錄的文件凸顯出來。
第一個是PNG文件。
然后是一個html文件。
在IfranView(最好的圖像查看器)里瀏覽下該P(yáng)NG文件,僅顯示了一個很小的黑圖片,這顯然不足55kb大小。所以,里面肯定隱藏了點(diǎn)啥。呆會再來收拾它。
來吧,到你了,html文件。用notepad++加載清理,可以看到一些瀏覽器檢測代碼:
為啥這里僅是簡單的放在了資源節(jié)表里,而不同其他代碼一起壓縮處理?真是個謎啊。先在腦海中記著這些資源節(jié)表,稍后處理。現(xiàn)在回頭來解壓這家伙。
首先開啟Immunity調(diào)試器和VirtualBox,加載我們的anti-anti-debug python插件。
現(xiàn)在將這貨運(yùn)行起來,待其完全運(yùn)行之后檢測內(nèi)存。
可以看到有些內(nèi)存區(qū)間被標(biāo)記為可讀可寫可執(zhí)行(RWE),分別在00910000,00930000,00940000和00970000。檢測一番,發(fā)現(xiàn)4個當(dāng)中僅有3個包含著代碼。該程序仍然有3個隱藏的代碼?太酷了吧。
現(xiàn)在我們要從內(nèi)存中導(dǎo)出程序到文件里,便于后續(xù)的分析。使出OllyDumpEx,填入0090區(qū)間,可看到00910000和00970000的程序同原始的程序在大小、節(jié)表和屬性上都匹配。而00950000處的內(nèi)存與其他的不同:有不同的節(jié)表,不同的大小。一定是隱藏著彩蛋啊。
利用‘Binary(Raw)’模式而不是重新構(gòu)建模式導(dǎo)出exe文件,這樣可以保證導(dǎo)出的數(shù)據(jù)的完整性。
2個無用的節(jié)表表明程序被UPX進(jìn)行壓縮了。運(yùn)行upx工具確認(rèn)了這一點(diǎn)。意味著我們可以砸出彩蛋了。
新的exe文件正確的解壓后多出了40KB,現(xiàn)在我們終于可以在IDA里瞅瞅了??聪聅trings,有些有趣的信息:
這是啥?HTTP請求信息??雌饋磉@貨使用POST請求回傳數(shù)據(jù)啊。
你可能會問C&C服務(wù)器在哪呢?似乎不在程序的明文里。還記得前面提到的資源節(jié)表嗎?再來看看彩蛋的資源節(jié)表吧。
瞧,http://31.207.6.161。作者就這樣將其放在明文里,讓我們撿了個大便宜。想通過隱匿來獲取安全,沒門。
我知道你在想啥,主程序運(yùn)行起來是啥樣呢?就讓我們來看看吧:
一運(yùn)行起來,就自動的關(guān)閉了我的process explorer,我要運(yùn)行任務(wù)管理器都會被一閃而過的消息窗提醒“任務(wù)管理器已經(jīng)被管理員禁用”。 我也很想展示下截屏,但我動作實(shí)在沒它那么迅速。動用Immunity打開,發(fā)現(xiàn)原始的“golden_egg.exe”不再運(yùn)行。另一個名為“zpNvNKSi.exe”的程序從臨時文件夾運(yùn)行起來了。根據(jù)hash比較,其實(shí)是同一個程序:
喜歡我的哈希程序嗎?到這下載吧。
廣告時間結(jié)束了?,F(xiàn)在很清楚該程序做啥了——禁用任務(wù)管理器,終止不受歡迎的程序,從臨時文件夾運(yùn)行。檢查msconfig發(fā)現(xiàn)添加了2個自啟動文件。
我對它們都進(jìn)行了檢查,確認(rèn)正是原始程序的完全拷貝。
將程序附加到immunity,檢測程序內(nèi)存和線程數(shù)目(“t”鍵),顯示出該程序是多線程的。我數(shù)了下,12個線程。
我猜測這些線程互相監(jiān)控對方,以防被終止。然而將主程序掛起,用Process Explorer打開它,觀察內(nèi)存,通過檢測,發(fā)現(xiàn)了一些IDA strings未看到的內(nèi)容:
大膽猜測一下,我認(rèn)為這貨會檢查這些程序,如果發(fā)現(xiàn)它們運(yùn)行就強(qiáng)制結(jié)束它們。這就解釋了當(dāng)該程序運(yùn)行時,process explorer為啥就被終止了。要運(yùn)行這些工具就有點(diǎn)難了,有regedit,LordPE,wireshark,regmon,filemon,procmon,tcpview,taskmgr以及Windows Defender。吼吼,我沒看到Process Explorer的小伙伴Process Hacker啊。
再來說內(nèi)存,上面表明程序要么是混淆了那些字符串,要么就是進(jìn)行了再次的壓縮。不管哪個,把它揪出來。
對那些我們在Process Explorer中看到的字符串進(jìn)行unicode格式的搜索,可以看到‘taskmgr’在.data節(jié)中。 關(guān)于這些字符串,難道IDA騙了我們?完全不是這樣的。再看一遍,慢慢的利用二分法搜索一遍,的確可以看到這些字符串。 我猜IDA進(jìn)行搜索時,默認(rèn)的不顯示unicode字符串。你可以在IDA中通過’alt+A’ 快捷鍵,選擇6選項(xiàng)來更改。
檢查這些新的unicode字符串,似乎該惡意軟件還有更多的功能。
這才有趣啊。因?yàn)檫@貨阻止了Wireshark的運(yùn)行, 我們需要定位到負(fù)責(zé)終止功能的地方,并進(jìn)行修復(fù)。咋做呢?對TerminateProcess() API調(diào)用進(jìn)行定位。這在IDA里很容易就能做到。在導(dǎo)入節(jié)表里我們看到一個對TerminateProcess的引用。
似乎是段循環(huán),利用“CreateToolhelp32Snapshot”API遍歷進(jìn)程名稱,如果滿足條件,就終止掉它們。那些我們之前看到的黑名單似乎驗(yàn)證了這一點(diǎn)。
那我們能做點(diǎn)啥呢?改變程序的運(yùn)行邏輯,使其不再調(diào)用TerminateProcess,也就沒啥影響了。檢查該部分的外部引用(Xref’s, eXternal REFerenceS), 可以看到函數(shù)為00401D2A所調(diào)用。有個‘jnz’指令負(fù)責(zé)決定是否調(diào)用那段負(fù)責(zé)查詢、終止進(jìn)程的過程處理。如果我們能修復(fù)這段程序,使其不再調(diào)用,將其跳過,就可以運(yùn)行黑名單上的程序啦。
開搞吧。 我比較喜歡用immunity進(jìn)行修復(fù),一是它簡單,二來我也比較熟悉。定位到運(yùn)行程序的子過程部分,進(jìn)行條件跳轉(zhuǎn)的指令在‘0x00401d4e’。將那片區(qū)域進(jìn)行nop填充,使得指令流返回,而不是跳轉(zhuǎn)到終止黑名單進(jìn)程的00401d2c處。
繼續(xù)運(yùn)行程序,開啟一個被黑名單的程序進(jìn)行測試。“regedit”也可以正常運(yùn)轉(zhuǎn)了,“process explorer”也沒有被終止,我們成功了。
現(xiàn)在我們可以利用wireshark進(jìn)行仔細(xì)的網(wǎng)絡(luò)行為分析了,文件和注冊表的分析利用procmon,好好的擺弄Process Explorer處理吧。
用Process Explorer看到程序通過80端口向我們前面挖掘出的C&C服務(wù)器發(fā)送一個syn包。
Wireshark顯示的更多??梢钥吹桨l(fā)向HTTP C&C服務(wù)器的syn包,也有一串的向未知域名的DNS請求。這是咋回事?
服務(wù)器會繼續(xù)回調(diào),但我不想讓它這樣??梢孕薷?ldquo;golden_egg.exe”中的資源節(jié)表,使其指向我自己的HTTP服務(wù)器,檢查它的功能。還有很多可以干的,現(xiàn)在我們已經(jīng)獲得所需要的了,有了C&C地址,解壓了程序,也有了它的HTTP特征以及它的行為。案子就這樣結(jié)束了。又是一個收獲的“星期三”啊。
如果你想下載該惡意程序,自己進(jìn)行分析,可以在此進(jìn)行下載,密碼是‘infected’。
來源聲明:本文來自Joe Security的博文《0day Wednesday——Newish Malware That Came Across My Desk》
原文地址:http://www.gironsec.com/blog/2013/12/0day-wednesday-newish-malware-that-came-across-my-desk/