“白利用”是木馬對抗主動防御類軟件的一種常用手法。國內較早一批“白利用”木馬是通過系統文件rundll32.exe啟動一個木馬dll文件,之后又發展出劫持合法軟件的dll組件來加載木馬dll的攻擊方式。
隨著安全軟件對“白利用”的防御機制日益完善,木馬也在花樣翻新。近期,360QVM引擎團隊發現“華晨同步專家”遠控木馬家族采用了比較另類的“白利用”技術:該木馬利用白文件加載dll文件后,再次啟動白文件并卸載白進程內存空間,然后重新填充病毒代碼執行。
這種“移花接木”的手法,使得病毒代碼均通過白進程主模塊執行,能夠繞過多數安全軟件的主動防御規則,具有較強的存活能力。以下是對此木馬詳細的技術分析:
該木馬偽裝成“美女圖片”通過社交軟件、電子郵件等方式傳播,一旦中招,電腦將被黑客發送指令執行攝像頭監控、屏幕監控等遠程控制行為。目前已知該木馬主要變種達到22個。
圖:“華晨同步專家”遠控木馬及變種
圖:木馬執行過程
“華晨同步專家”木馬文件:
美女圖片.exe:運行后會釋放update.exe、ETComm.dll、wc.dat這三個文件,并運行update.exe。這種“三合一”的打包方式相比壓縮包更利于木馬傳播。
我們首先從ETComm.dll入手分析:
ETComm.dll分析過程
DllMain中首先獲取模塊完整路徑
比較自身完整路徑是否為C:\$WinBackUP.H1502\BinBackup\Images\update.exe
如果不在C:\$WinBackUP.H1502\BinBackup\Images
目錄下則將ETComm.dll
、wc.dat
、update.exe
拷貝過去,接下來直接進入100016A0
100016A0進來以后首先訪問C:\$WinBackUP.H1502\BinBackup\Images\wc.dat
申請一段內存后將wc.dat的內容讀進去
將讀出來的文件內容的前四位與0x36異或,得出0x14E00
將解密出來的0x14e00給到一個變量
緊接著就申請出來一塊0x14E00大小的內存
之后將這些數據作為參數傳遞到Zlib的解壓函數中
解出來的數據如下
由此我們可以得出wc.dat的結構,第一個DWORD存放的是UnpackFileSize,之后的數據存放的是壓縮后的文件數據,此時是最好的dump時機。
Dump出來的文件:
接下來是為內存運行exe做準備了
alignPEToMem函數主要作用為加載PE到內存,該函數主要內容為對其exe節數據進行初始化操作。AttachPE主要作用為創建外殼進程(盛大網絡ET語音啟動程序),并替換進程數據然后執行真正的病毒代碼
我們重點來看下AttachPE函數的行為:
首先掛起模式再次運行C:\$WinBackUP.H1502\BinBackup\Images\update.exe
調用GetThreadContext獲取信息目標進程的線程句柄
得到的信息存放在結構體lpContext
中,接著讀取了目標進程的lpContext
結構體中Ebx+8
的數據。
[lpContext.Ebx+8]
處存的是外殼進程的加載基址,該目標進程的基址為0x00400000
動態獲取ntdll
的ZwUnmapViewOfSection
并調用,卸載目標進程原外殼內存數據
重新在目標傀儡進程中申請傀儡代碼用到的內存,0x00400000
大小為2C000
內存申請成功后在傀儡進程的Context.ebx+8
中寫入新的基址(因為兩個文件基址都為0x400000
,所以這一步并沒有什么用,但是如果對于兩個基址不一樣的文件這一步就非常必要了)
然后在新申請的內存中寫入已經展開了所有節數據的病毒代碼,大小為0x2C000
重置運行環境中的入口地址,新的OEP為基址+0x0002A820
更新傀儡進程運行環境后恢復傀儡進程運行
至此ETComm.dll的任務已經完成,直接退出了進程
接下來我們來分析被偷梁換柱的update.exe進程
從入口點我們可以看出是UPX加殼
直接ESP定律到程序OEP,入口點代碼可以看出是VC6.0所編譯
來到Main函數我們可以看到先是調用了一些sleep(0)
后面有一些字符串單字節賦值,我們可以看出他拼出來的字符串是Kernel32.dll和GetMoudleFileNameA,分別給到了變量LibFileName和ProcName
動態獲取GetMoudleFileNameA
通過GetMoudleFileNameA獲取到文件所在路徑后,將該路徑寫入注冊表作為啟動項,啟動項名稱為“Realtek高清晰音頻管理器”
獲取資源中的名為“dll”的資源
解密算法為
xor 0xF1
add 0xF1
中間有很多sleep(0)做干擾
解出來的文件
Dump出來是dll簡單觀察發現是華晨遠控(Gh0st修改)
繼續往下就是內存加載dll。拋棄系統的LoadLibrary和GetProcAddress來自己實現則會使dll不用落地,其目的是躲避安全軟件的云查殺。
LoadLibrary的實現過程如下:
申請內存,寫入PE頭數據
循環拷貝各個節數據
處理重定位
讀取dll的引入表部分,加載引入表部分需要的,并填充需要的函數入口的真實地址
dll
修改各個節內存屬性,單獨設置其對應內存頁的屬性
執行DllMain函數
GetProcAddress實現過程:
調用自寫GetProcAddress獲取“Fi”導出函數并調用
Fi函數負責將整個遠控執行起來了。
以下是遠控基本信息:
遠控上線地址:dddd.ndiii.com
端口:2012
分組名稱:Default
遠控官網:http://www.jinjingltsh.com/
“華晨同步專家”官網號稱“擁有國家政府機關認證,與眾多安全廠商均有合作”,實際上完全是其捏造的。
通過以上分析我們看出,“華晨同步專家”遠控木馬的新穎之處,在于利用白進程內存運行exe,內存運行dll,真正的病毒文件并不落地,僅存活在內存當中,具有較強的免殺能力。
根據VirusTotal對此木馬較新變種樣本的掃描結果,57款殺毒軟件中有17款可以將其檢出,檢出率約為30%: