作者:
360安全衛士
·
2015/05/28 5:11
0x00 前言
“白利用”是木馬對抗主動防禦類軟體的一種常用手法。國內較早一批“白利用”木馬是透過系統檔案rundll32.exe啟動一個木馬dll檔案,之後又發展出劫持合法軟體的dll元件來載入木馬dll的攻擊方式。
隨著安全軟體對“白利用”的防禦機制日益完善,木馬也在花樣翻新。近期,360QVM引擎團隊發現“華晨同步專家”遠控木馬家族採用了比較另類的“白利用”技術:該木馬利用白檔案載入dll檔案後,再次啟動白檔案並解除安裝白程式記憶體空間,然後重新填充病毒程式碼執行。
這種“移花接木”的手法,使得病毒程式碼均透過白程式主模組執行,能夠繞過多數安全軟體的主動防禦規則,具有較強的存活能力。以下是對此木馬詳細的技術分析:
0x01 木馬分析
該木馬偽裝成“美女圖片”透過社交軟體、電子郵件等方式傳播,一旦中招,電腦將被駭客傳送指令執行攝像頭監控、螢幕監控等遠端控制行為。目前已知該木馬主要變種達到22個。
圖:“華晨同步專家”遠控木馬及變種
圖:木馬執行過程
“華晨同步專家”木馬檔案:
美女圖片.exe:執行後會釋放update.exe、ETComm.dll、wc.dat這三個檔案,並執行update.exe。這種“三合一”的打包方式相比壓縮包更利於木馬傳播。
- update.exe:盛大網路的ET語音啟動程式
- ETComm.dll:用於劫持盛大程式的木馬dll檔案
- wc.dat:zlib壓縮加密的遠端控制木馬
我們首先從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/
“華晨同步專家”官網號稱“擁有國家政府機關認證,與眾多安全廠商均有合作”,實際上完全是其捏造的。
0x02 總結
透過以上分析我們看出,“華晨同步專家”遠控木馬的新穎之處,在於利用白程式記憶體執行exe,記憶體執行dll,真正的病毒檔案並不落地,僅存活在記憶體當中,具有較強的免殺能力。
根據VirusTotal對此木馬較新變種樣本的掃描結果,57款防毒軟體中有17款可以將其檢出,檢出率約為30%:
本文章來源於烏雲知識庫,此映象為了方便大家學習研究,文章版權歸烏雲知識庫!