一、前言
通過郵件投遞病毒文件是網(wǎng)絡(luò)攻擊常用的一種方式,因此防御郵件攻擊是每個(gè)安全團(tuán)隊(duì)都需要重點(diǎn)考慮的內(nèi)容。中興通訊每天都會收到數(shù)萬封外部郵件,為了及時(shí)檢測每封郵件是否含有惡意文件,中興ZInsight團(tuán)隊(duì)部署了自研的高級郵件防御系統(tǒng),針對每個(gè)郵件附件,通過動態(tài)行為分析的方式檢測是否存在威脅。本文介紹近期捕獲的一起攻擊事件,分析其攻擊過程。
二、攻擊郵件的捕獲與分析
近日,中興高級郵件防御系統(tǒng)捕獲了一批使用高危word附件進(jìn)行定向攻擊的釣魚郵件,攻擊對象均為同一項(xiàng)目團(tuán)隊(duì)成員,引起了安全人員的重視。下面是郵件附件的分析報(bào)告:

從分析報(bào)告中可以清晰的看到,此word文件有創(chuàng)建進(jìn)程的異常行為,另外也發(fā)現(xiàn)了異常的網(wǎng)絡(luò)行為,可以猜測這是一個(gè)下載器。經(jīng)安全人員進(jìn)一步分析發(fā)現(xiàn),在word附件中使用了宏病毒,宏病毒由vb寫成,采用了加密混淆等方式逃避殺軟的檢測,見下圖:

vb腳本經(jīng)過混淆,但依然可以看出有聯(lián)網(wǎng)的痕跡,如下段代碼可見http://和.com的痕跡:

啟用宏后打開此文檔會自動運(yùn)行腳本,ProcessExplorer上可見其調(diào)用cmd.exe執(zhí)行腳本命令:

該腳本首先通過dns查詢?nèi)舾蓚(gè)惡意網(wǎng)址,連接成功后通過http下載exe文件并運(yùn)行。通過跟蹤,發(fā)現(xiàn)其連上solvolab.com/sdB這個(gè)惡意網(wǎng)址,下載PE文件并運(yùn)行。data chunk中可見可執(zhí)行文件的PE頭中的標(biāo)識和字段:


下載的可執(zhí)行文件會自動運(yùn)行并添加到服務(wù),名稱為buildbuild:

三、下載的惡意樣本分析
對下載的buildbuild.exe樣本進(jìn)行分析,主要功能如下:
1.搜集smartcard信息
該樣本通過注冊表查詢smartCards信息:

逆向分析可見其存在查找4G卡的服務(wù)提供商,獲取虛擬按鍵等較明顯的搜集敏感信息的行為:


2.自寫殼
該樣本在PEiD中顯示“查無此殼”,也沒有任何語言信息,推測為不常見的殼,很有可能是自寫的。

此類殼沒法用工具自動脫殼,只能手脫。調(diào)試過程中發(fā)現(xiàn)這個(gè)殼的寫法還是比較常規(guī)的思路:
1) 調(diào)用VirtualAlloc為各個(gè)區(qū)段分配內(nèi)存,將加密的區(qū)段數(shù)據(jù)解密到各自對應(yīng)的內(nèi)存空間,并調(diào)用VirtualProtect根據(jù)區(qū)段的屬性修改內(nèi)存操作權(quán)限:

2) 調(diào)用LoadLibrary加載dll,調(diào)用GetProcAddress分別獲取dll中目標(biāo)函數(shù)地址。
3) 跳到解密后的代碼執(zhí)行,如下圖001A1000存放的為解碼后的.text區(qū)段代碼:

4) 中間穿插了GetTickCount等反調(diào)試手法:

若發(fā)現(xiàn)處在調(diào)試狀態(tài),會通過遍歷進(jìn)程的方式找到并結(jié)束自身進(jìn)程。進(jìn)程遍歷也是常規(guī)手法:
調(diào)用CreateToolhelp32Snapshot建立進(jìn)程快照,通過Process32FirstW和Process32NextW進(jìn)行遍歷來找到當(dāng)前進(jìn)程,然后通過CloseHandle直接結(jié)束進(jìn)程。

判斷是否為當(dāng)前進(jìn)程的方法是在上圖Call ebx函數(shù)中實(shí)現(xiàn),通過調(diào)用GetCurrentProcessId獲取當(dāng)前進(jìn)程ID,和保存的遍歷到的進(jìn)程ID對比,相同就說明當(dāng)前遍歷的進(jìn)程信息為目標(biāo)進(jìn)程。

3.創(chuàng)建子進(jìn)程
為干擾逆向分析,該樣本在運(yùn)行過程中會調(diào)用CreateProcessW創(chuàng)建子進(jìn)程。

在內(nèi)存中修改CreationFlags入?yún)?×00000004(CREATE_SUSPENDED),使子進(jìn)程創(chuàng)建后自動掛起,然后直接在od中找到其進(jìn)程號attach即可調(diào)試子進(jìn)程。

子進(jìn)程創(chuàng)建成功后,病毒主要功能都在子進(jìn)程中進(jìn)行,而父進(jìn)程將退出。

以下皆為子進(jìn)程中運(yùn)行的功能。
4.信息收集和系統(tǒng)監(jiān)控
樣本沒有自己實(shí)現(xiàn)該功能,而是調(diào)用了第三方動態(tài)庫winimhc3.dll、winbrohc.dll、winhafnt.dll等。這些dll是 OCular Agent產(chǎn)品的重要組件。OCular Agent為一電腦監(jiān)控軟件,由SurveilStar Inc開發(fā),數(shù)字簽名為T.E.C Solutions (G.Z.)Limited,可以記錄電子郵件,聊天和即時(shí)信息,網(wǎng)站訪問,搜索歷史,計(jì)劃活動,文件操作等等。其動態(tài)庫常被殺軟識別為惡意軟件。


winimhc3逆向顯示很多監(jiān)控的痕跡,如IMHook、枚舉窗口等:


Winbrohc中實(shí)現(xiàn)了很多監(jiān)控功能諸如文件遍歷、監(jiān)控應(yīng)用程序數(shù)據(jù)、檢索殺軟、搜索數(shù)據(jù)庫、修改history文件和注冊表等。
調(diào)用FindFirstFileW和FindNextFileW進(jìn)行文件遍歷:

監(jiān)控包括explorer、cmd、winword在內(nèi)的多個(gè)程序:


獲取磁盤信息:

獲取各種瀏覽器和云盤中的用戶信息及歷史數(shù)據(jù):


檢測殺軟:

監(jiān)控explorer、cmd等常用程序:

獲取ProcessToken,提權(quán):

查找賬戶信息:
監(jiān)控郵件:
5.自刪除
6.自我復(fù)制
自我復(fù)制到在c:\windows\system32目錄下,目的是為了后續(xù)創(chuàng)建服務(wù)用:
4F4句柄在OD中查知為c:\windows\system32\buildbuld.exe:
這個(gè)過程并沒有直接調(diào)用kernel32的WriteFile實(shí)現(xiàn),而是通過外殼函數(shù)SHFileOperationW實(shí)現(xiàn),該函數(shù)最終會去調(diào)用WriteFile函數(shù):
SHFileOperation是一種外殼函數(shù),用它可以實(shí)現(xiàn)各種文件操作,如文件的拷貝、刪除、移動等,該函數(shù)使用起來非常簡單,它只有一個(gè)指向SHFILEOPSTRUCT結(jié)構(gòu)的參數(shù)。使用SHFileOperation( )函數(shù)時(shí)只要填寫該專用結(jié)構(gòu)–SHFILEOPSTRUCT,告訴Windows執(zhí)行什么樣的操作,以及其它重要信息就行了。
7.創(chuàng)建服務(wù)
使用之前自我復(fù)制的c:\windows\system32\buildbuild.exe文件創(chuàng)建服務(wù):
四、樣本分析總結(jié)
該樣本采用了很多方法干擾逆向,例如自寫殼、子進(jìn)程、反調(diào)試、以及調(diào)用第三方監(jiān)控軟件的dll等等。并且調(diào)試過程中發(fā)現(xiàn)該樣本總是用VirtualAlloc分配內(nèi)存,然后將要執(zhí)行的部分代碼拷入內(nèi)存中執(zhí)行,同時(shí)喜歡用類似call eax的函數(shù)調(diào)用手法,使得無法使用IDA等工具查看其代碼邏輯,只能依靠手調(diào)。
功能比較常規(guī),但是并沒有自己實(shí)現(xiàn),而是調(diào)用了第三方的監(jiān)控軟件中的dll,一方面功能大而全,另一方面其龐大的代碼量也可以起到干擾逆向的效果。
五、防御建議
郵件攻擊是非常普遍的一類網(wǎng)絡(luò)攻擊,當(dāng)企業(yè)收到的攻擊郵件集中于某一團(tuán)隊(duì)時(shí),需要格外注意,很可能是有目的的定向攻擊,需要及時(shí)預(yù)警,提醒團(tuán)隊(duì)加強(qiáng)防范,不要輕易打開郵件的附件和鏈接,對可疑文件進(jìn)行殺毒,必要時(shí)通過沙箱進(jìn)行動態(tài)行為檢測。
buildbuild.exe樣本MD5:
95240732d90027df7cb2c6c74804253b
|