圖1
現(xiàn)在可以通過該Web接口將測試文件(通常為PE格式)加載到虛擬機(jī),指定超時(shí)時(shí)間,就可以讓Zero Wine分析該程序的行為了。稍等片刻,就會(huì)受到如下所示的報(bào)告摘要:
圖2
三、相關(guān)報(bào)告的介紹
分析結(jié)束時(shí),會(huì)出現(xiàn)一個(gè)帶有四個(gè)鏈接的報(bào)告摘要頁面,這些鏈接分別是“report”、“Strings”、“Headers”和“Signature”。關(guān)于這些報(bào)告我們將在下面進(jìn)行分別介紹。
完整的報(bào)告
我們首先有介紹的是“Report”鏈接,這是由WINE生成的一份完整的原始跟蹤文件。 這個(gè)文件通常很大,并且也不太容易讀,因?yàn)槠渲邪薟INE本身調(diào)用的大量應(yīng)用程序接口以及惡意軟件調(diào)用的應(yīng)用程序接口,不過它對于全面理解程序到底做了些什么卻是很有幫助的。以下是病毒MyTob的一個(gè)示例報(bào)告,我們看到這的確很長,并且讀起來很晦澀:
圖3
一般說來,其中的大量API調(diào)用都是WINE的內(nèi)部調(diào)用,這些對我們的分析工作沒有多大用處,并且對我們來說通常是枯燥無味的。請記住,雖然這些調(diào)用看上去很枯燥,但是卻可能對分析的惡意軟件的理解有所裨益。
關(guān)于字符串報(bào)告
Linux命令“strings”的輸出。為了便于了解惡意軟件,有時(shí)候您可以探索一些字符串、URL等等。以下是一個(gè)例子(MyTob):
圖4
關(guān)于文件頭報(bào)告
這個(gè)報(bào)告展示了使用PEIdSignatures的特征碼找出的用于給該程序加殼的工具(如果有的話),以及利用開源的程序庫PEFile對給定PE程序分析得到的一份詳盡輸出。生成的報(bào)告類似于下圖:
圖5
在本例中,頭部似乎是遭到了破壞,這說明惡意軟件試圖給反匯編制造困難。
關(guān)于特征碼報(bào)告
這個(gè)是當(dāng)惡意軟件運(yùn)行后,由Zero Wine生成的最有趣的報(bào)告 這個(gè)報(bào)告展示了最令人感興趣的API調(diào)用和值。下面的例子很容易理解:
圖6
“Signature”報(bào)告告訴我們,該惡意軟件創(chuàng)建了互斥鎖“H-E-L-L-B-O-T”(進(jìn)程標(biāo)識(shí)符0009),并且將自身復(fù)制到 c:windowssystem32msmgrxp.exe,然后,執(zhí)行了這個(gè)文件(process 0018)。惡意軟件的這個(gè)副本將檢查互斥鎖“H-E-L-L-B-O-T”,如果該互斥鎖業(yè)已存在,則將該二進(jìn)制文件拷貝到c:funny_pic.scr及其它地方。
有了上面的這些報(bào)告,編寫一份簡單的行為報(bào)告已經(jīng)不成問題。
四、加殼軟件
總的說來,Zero Wine能夠較好地運(yùn)行惡意軟件,然而,當(dāng)它遇到加殼軟件時(shí)就會(huì)出現(xiàn)各種問題,例如wine幾乎總是無法對付被Armadillo 加過殼的PE程序;并且,有時(shí)候“Report”和“Signature”這兩個(gè)部分會(huì)同時(shí)收不到任何數(shù)據(jù)。好在“Headers”和“Strings”報(bào)告部分總能提供二進(jìn)制文件(盡管不是惡意軟件的行為)的有關(guān)信息。
五、對于Zero Wine的檢測
對于WINE 環(huán)境的檢測其實(shí)很簡單。例如,可以通過注冊表項(xiàng)HKLMSoftwareWine或者HKCUSoftwareWine來檢測它。同時(shí)還可以檢查所有的Windows關(guān)鍵系統(tǒng)文件的文件大小來進(jìn)行檢測。當(dāng)運(yùn)行在WINE中的時(shí)候,這些文件會(huì)小得令人難以置信,但是同樣的文件在實(shí)際的Windows系統(tǒng)中卻具有碩大的身軀。另外一種“高級(jí)”檢測技術(shù)是,打開任意一個(gè)關(guān)鍵的Windows系統(tǒng)文件,并反編譯入口點(diǎn)。當(dāng)運(yùn)行在WINE中的時(shí)候,反編譯后將得到如下所示的一些簡單指令:
.text:10001000 public start
.text:10001000 start proc near
.text:10001000 mov eax, 1
.text:10001005 retn 4
.text:10001005 start endp
對于比較懶惰的人來說,只需在.text:10001000中搜索二進(jìn)制串B8 01 00 00 00 C2 04 00就可以了。
六、使用Zero Wine的危險(xiǎn)性
首先請記住,在自己的計(jì)算機(jī)上運(yùn)行惡意軟件絕不是一個(gè)好主意。如果可能的話,要盡量將虛擬機(jī)(或物理機(jī)器)與現(xiàn)實(shí)世界隔離開來。有時(shí)候,我們迫不得已允許惡意軟件連接現(xiàn)實(shí)世界,但請記住,這樣做可能傷及無辜。更重要的是,您還必須記住,即使把WINE的沙箱配置成只能使用C盤,但是對于一個(gè)能夠逸出WINE沙箱的惡意軟件來說,它不僅能夠跑到C盤之外,還能夠波及您的物理計(jì)算機(jī)以及整個(gè)網(wǎng)絡(luò)。
七、結(jié)束語
Zero Wine是一個(gè)開源的(GPL v2)研究項(xiàng)目,用來對惡意軟件的行為進(jìn)行動(dòng)態(tài)分析。Zero Wine只是使用WINE在一個(gè)安全的虛擬沙箱(也就是在一個(gè)隔離的環(huán)境中)運(yùn)行惡意軟件來收集該程序調(diào)用的API的有關(guān)信息。Wine使用調(diào)試環(huán)境變量WINEDEBUG來輸出惡意軟件調(diào)用過的API,當(dāng)然也包括惡意軟件所傳遞的值。有了這些信息,惡意軟件的行為分析將變得非常輕松。
本文詳細(xì)介紹了Zero Wine的工作原理以及使用方法,并對Zero Wine生成的報(bào)告進(jìn)行了相應(yīng)的解釋,最后介紹了在使用Zero Wine過程中需要注意的問題,希望本文對您的工作學(xué)習(xí)能夠有所幫助。