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

從分析報告中可以清晰的看到,此word文件有創建進程的異常行為,另外也發現了異常的網絡行為,可以猜測這是一個下載器。經安全人員進一步分析發現,在word附件中使用了宏病毒,宏病毒由vb寫成,采用了加密混淆等方式逃避殺軟的檢測,見下圖:

vb腳本經過混淆,但依然可以看出有聯網的痕跡,如下段代碼可見http://和.com的痕跡:

啟用宏后打開此文檔會自動運行腳本,ProcessExplorer上可見其調用cmd.exe執行腳本命令:

該腳本首先通過dns查詢若干個惡意網址,連接成功后通過http下載exe文件并運行。通過跟蹤,發現其連上solvolab.com/sdB這個惡意網址,下載PE文件并運行。data chunk中可見可執行文件的PE頭中的標識和字段:


下載的可執行文件會自動運行并添加到服務,名稱為buildbuild:

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

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


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

此類殼沒法用工具自動脫殼,只能手脫。調試過程中發現這個殼的寫法還是比較常規的思路:
1) 調用VirtualAlloc為各個區段分配內存,將加密的區段數據解密到各自對應的內存空間,并調用VirtualProtect根據區段的屬性修改內存操作權限:

2) 調用LoadLibrary加載dll,調用GetProcAddress分別獲取dll中目標函數地址。
3) 跳到解密后的代碼執行,如下圖001A1000存放的為解碼后的.text區段代碼:

4) 中間穿插了GetTickCount等反調試手法:

若發現處在調試狀態,會通過遍歷進程的方式找到并結束自身進程。進程遍歷也是常規手法:
調用CreateToolhelp32Snapshot建立進程快照,通過Process32FirstW和Process32NextW進行遍歷來找到當前進程,然后通過CloseHandle直接結束進程。

判斷是否為當前進程的方法是在上圖Call ebx函數中實現,通過調用GetCurrentProcessId獲取當前進程ID,和保存的遍歷到的進程ID對比,相同就說明當前遍歷的進程信息為目標進程。

3.創建子進程
為干擾逆向分析,該樣本在運行過程中會調用CreateProcessW創建子進程。

在內存中修改CreationFlags入參為0×00000004(CREATE_SUSPENDED),使子進程創建后自動掛起,然后直接在od中找到其進程號attach即可調試子進程。

子進程創建成功后,病毒主要功能都在子進程中進行,而父進程將退出。

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


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


Winbrohc中實現了很多監控功能諸如文件遍歷、監控應用程序數據、檢索殺軟、搜索數據庫、修改history文件和注冊表等。
調用FindFirstFileW和FindNextFileW進行文件遍歷:

監控包括explorer、cmd、winword在內的多個程序:


獲取磁盤信息:

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


檢測殺軟:

監控explorer、cmd等常用程序:

獲取ProcessToken,提權:

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