近期,火絨威脅情報(bào)中心監(jiān)測(cè)到一批相對(duì)更加活躍的“銀狐”系列變種木馬,火絨安全工程師第一時(shí)間提取樣本進(jìn)行分析。分析發(fā)現(xiàn)樣本具有檢測(cè)并利用多種系統(tǒng)特性實(shí)現(xiàn)持久化與繞過(guò)沙箱的行為,通過(guò)釋放白加黑文件,利用 svchost 內(nèi)存加載后門(mén)模塊實(shí)現(xiàn)遠(yuǎn)程控制。目前,火絨安全產(chǎn)品能夠有效攔截和查殺上述病毒,火絨6.0的內(nèi)存防護(hù)功能具備精準(zhǔn)處理此類(lèi)內(nèi)存加載病毒的能力,能夠及時(shí)識(shí)別和阻止惡意代碼在內(nèi)存中的執(zhí)行,從而保護(hù)用戶系統(tǒng)的安全,歡迎廣大用戶下載安裝火絨安全6.0產(chǎn)品并及時(shí)更新病毒庫(kù)以提高防御能力。(文末有彩蛋掉落)
查殺圖
樣本執(zhí)行流程如下所示:
流程圖
樣本分析
該樣本是一個(gè)攜帶惡意 Gh0st 后門(mén)病毒的 QT 程序,將加密的惡意代碼以資源的形式嵌入 PE 文件。當(dāng)程序執(zhí)行時(shí),這些惡意代碼會(huì)被釋放并利用 RPC 和 COM 等系統(tǒng)特性實(shí)現(xiàn)后門(mén)的持久化,從而在用戶不知情的情況下監(jiān)控電腦活動(dòng),持續(xù)收集信息并執(zhí)行惡意操作。
樣本的執(zhí)行分為三個(gè)階段。第一階段,初始樣本通過(guò)自解壓存儲(chǔ)在資源中的 shellcode ,執(zhí)行惡意代碼,隨后釋放 ggaa.exe 、zf_cef.dll 、cef.dat 三個(gè)白加黑文件;第二階段,樣本通過(guò) RPC 調(diào)用來(lái)啟動(dòng) ggaa.exe,利用 COM 接口系統(tǒng)回調(diào)執(zhí)行 shellcode ,之后通過(guò)創(chuàng)建掛起進(jìn)程和多次注入 svchost ,實(shí)現(xiàn)計(jì)劃任務(wù)持久化和后門(mén)功能;第三階段,樣本基于 IOCP 框架實(shí)現(xiàn) Gh0st 遠(yuǎn)程控制功能,包括讀取計(jì)算機(jī)信息、進(jìn)程注入、文件管理、屏幕查看、遠(yuǎn)程 shell-CMD 、下載執(zhí)行、鍵盤(pán)監(jiān)聽(tīng)、關(guān)閉計(jì)算機(jī)、內(nèi)網(wǎng)socket代理和回復(fù)心跳包功能。
通過(guò)分析初始樣本 demo.exe ,定位到惡意代碼加載函數(shù) shellcode_Exec() 。該樣本采用時(shí)間判斷進(jìn)行退出,并通過(guò) CMD 命令行實(shí)現(xiàn)延遲自我刪除后,執(zhí)行惡意代碼的解壓與運(yùn)行。
main logic
時(shí)間判斷
自刪除
在執(zhí)行延遲自刪除命令后,初始樣本采用 lz4 快速解壓算法解壓惡意代碼,分配可執(zhí)行內(nèi)存以實(shí)現(xiàn)惡意代碼調(diào)用。
執(zhí)行惡意代碼
分析發(fā)現(xiàn),惡意代碼采用修復(fù)IAT,重定位表的方式執(zhí)行內(nèi)存加載PE 。
內(nèi)存加載PE
對(duì)靜態(tài)分析內(nèi)存中的惡意 PE 文件進(jìn)行分析后發(fā)現(xiàn),其核心邏輯 main_logic 函數(shù)通過(guò) COM 組件改寫(xiě)防火墻規(guī)則,實(shí)現(xiàn)斷網(wǎng)并阻止樣本上傳。此外,樣本會(huì)檢測(cè)系統(tǒng)進(jìn)程中是否存在殺毒軟件,雖檢測(cè)后未執(zhí)行實(shí)際行為,但推測(cè)其之后可能會(huì)出現(xiàn)新的變種。
防火墻策略
隨后,樣本將“白加黑”后門(mén)文件釋放到本地磁盤(pán),并以相同方式刪除先前修改的防火墻規(guī)則以恢復(fù)網(wǎng)絡(luò)連接,同時(shí)調(diào)用 INetFwProfile 接口關(guān)閉防火墻。
釋放白加黑文件
創(chuàng)建 RPC 啟動(dòng)進(jìn)程
之后,通過(guò) RPC 調(diào)用 services.exe 并以 system 權(quán)限執(zhí)行g(shù)gaa.exe ,實(shí)現(xiàn)進(jìn)程鏈全白,從而繞過(guò)父進(jìn)程檢測(cè)。
RPC 調(diào)用 GUID
接著,樣本通過(guò) ntsvcs 管道通信進(jìn)行 RPC 調(diào)用,僅需使用 WriteFile 和 CreateFile 函數(shù)對(duì)管道讀寫(xiě),即可實(shí)現(xiàn) Windows 服務(wù)的創(chuàng)建和加載。
調(diào)用 RPC
利用 RPCView 工具對(duì) RPC 調(diào)用進(jìn)行監(jiān)控,發(fā)現(xiàn) RPC GUID {367abb81-9844-35f1-ad32-98f038001003} 由 services.exe 注冊(cè),之后啟動(dòng) ggaa.exe 。
RPC 調(diào)用過(guò)程
本地復(fù)現(xiàn)樣本對(duì) Notepad.exe 的 system 權(quán)限執(zhí)行如下。
本地復(fù)現(xiàn)
樣本以 SYSTEM 權(quán)限執(zhí)行白文件 ggaa.exe 并加載惡意文件 zf_cef.dll ,實(shí)現(xiàn)“白加黑”利用。其中,惡意 DLL 的導(dǎo)出函數(shù) cef_api_hash 加載并執(zhí)行惡意代碼。該惡意DLL通過(guò)讀取 cef.dat 文件加載代碼,使用內(nèi)存異或 0x3A 的方式解密并執(zhí)行惡意行為。
加載 zf_cef.dll
將本地 cef.dat 文件加載到內(nèi)存后,開(kāi)辟可執(zhí)行內(nèi)存區(qū)域,并通過(guò) COM 系統(tǒng)回調(diào)函數(shù)跳轉(zhuǎn)執(zhí)行惡意代碼,以繞過(guò)沙箱檢測(cè)機(jī)制。
COM 系統(tǒng)回調(diào)
通過(guò) CLSID {000001c6-0000-0000-C000-000000000046} ,對(duì)combase進(jìn)行分析,發(fā)現(xiàn)參數(shù)中存在回調(diào)函數(shù)地址。
分析 Combase
隨后,本地復(fù)現(xiàn)對(duì) COM 組件系統(tǒng)回調(diào)接口的回調(diào)執(zhí)行 shellcode (執(zhí)行 calc.exe )。
本地復(fù)現(xiàn)
之后,對(duì)惡意代碼分析發(fā)現(xiàn),該過(guò)程仍為內(nèi)存加載 PE 的過(guò)程。惡意 PE 利用 UPX3.96 壓縮殼進(jìn)行偽裝保護(hù)。手動(dòng)脫殼分析后,確認(rèn)該文件為一個(gè)古老的 Gh0st 后門(mén) DLL 。
同時(shí),惡意程序再次創(chuàng)建 dllhost 進(jìn)程,命令為:dllhost.exe /Processid:{F8284233-48F4-4680-ADDD-F8284233} 。
注入 dllhost
首先,該后門(mén) DLL 復(fù)制并解密惡意 shellcode 到內(nèi)存中,同時(shí)復(fù)制 ntdll 到內(nèi)存以繞過(guò) R3 的 Hook 。隨后,通過(guò)判斷進(jìn)程名稱和命令行參數(shù)執(zhí)行不同的惡意行為。
病毒參數(shù)執(zhí)行邏輯
病毒會(huì)先通過(guò) C:\\Windows\\ggaa.exe 啟動(dòng),進(jìn)行進(jìn)程名稱對(duì)比。未匹配到 taskmgr.exe、perfmon.exe 或 svchost.exe 時(shí),開(kāi)始執(zhí)行注入 svchost.exe -Install 操作,并通過(guò) svchost.exe -Install 實(shí)現(xiàn)安裝計(jì)劃任務(wù) C:\\Windows\\ggaa.exe -svc 。
隨后,該計(jì)劃任務(wù)執(zhí)行 C:\\Windows\\ggaa.exe -svc 對(duì) svchost.exe -k netsvcs 進(jìn)行二次注入,開(kāi)啟后門(mén)功能。同時(shí),它還對(duì) taskmgr.exe 進(jìn)行內(nèi)存屬性修改,并注入 perfmon.exe 以關(guān)閉Windows性能監(jiān)視程序。
詳細(xì)分析如下:
命令行參數(shù)判斷
首次執(zhí)行時(shí), ggaa.exe 不附加任何參數(shù)。該 exe 首先判斷自身進(jìn)程名是否是已被注入taskmgr.exe、perfmon.exe、與svchost.exe(后續(xù)行為注入的指定進(jìn)程)中,未匹配則調(diào)用 first_inject 函數(shù)將其注入 svchost.exe 中,同時(shí)附加參數(shù) -Instal l。
注入 svchost.exe
隨后,調(diào)用 first_inject 函數(shù)實(shí)現(xiàn)對(duì) svchost.exe 的 shellcode 注入。
首先,該 exe 判斷自身是否具有管理員權(quán)限。隨后創(chuàng)建 svchost.exe 進(jìn)程,并附加參數(shù) -Install 。接著,掛起 svchost.exe 進(jìn)程,向遠(yuǎn)程內(nèi)存寫(xiě)入 shellcode 。最后,通過(guò)修改線程上下文中的RIP寄存器,將進(jìn)程指向后門(mén)代碼的入口處。
注入實(shí)現(xiàn)
之后,通過(guò)附加進(jìn)程的方式對(duì) svchost.exe 進(jìn)行入口點(diǎn)斷點(diǎn)調(diào)試,分析發(fā)現(xiàn),添加 -Install 命令行參數(shù)后,該 exe 利用 COM 接口 GUID {3AD05575-8857-4850-9277-11B85BDB8E09} 添加計(jì)劃任務(wù),為后續(xù)惡意行為提供執(zhí)行環(huán)境。
計(jì)劃任務(wù)
通過(guò)計(jì)劃任務(wù) C:\\Windows\\ggaa.exe -svc 重新啟動(dòng)進(jìn)程,并通過(guò)注入 svchost.exe -k netsvcs 啟動(dòng)與惡意C2的連接,執(zhí)行惡意上線功能,實(shí)現(xiàn)遠(yuǎn)程控制。
二次注入
隨后,以相同方式創(chuàng)建進(jìn)程并掛起該進(jìn)程后,修改線程上下文以注入附加參數(shù) -k netsvcs ,從而開(kāi)啟網(wǎng)絡(luò)訪問(wèn),確保惡意代碼能夠通過(guò)網(wǎng)絡(luò)進(jìn)行通信。
線程注入
在 svchost.exe -k netsvcs 啟動(dòng)后,創(chuàng)建線程以注入 taskmgr.exe 和 perfmon.exe 進(jìn)程。同時(shí)開(kāi)啟后門(mén)功能,連接到惡意C2地址,實(shí)現(xiàn)遠(yuǎn)程控制。
連接 C2 地址
通過(guò)對(duì)協(xié)議分析發(fā)現(xiàn),該樣本的完整通信結(jié)構(gòu)采用了 IOCP (輸入輸出完成端口)模型。
IOCP 模型通信
對(duì)樣本接收的數(shù)據(jù)進(jìn)行功能判斷后,確認(rèn)該樣本具備經(jīng)典 Gh0st 功能,包括讀取計(jì)算機(jī)信息、進(jìn)程注入、文件管理、屏幕查看、遠(yuǎn)程 shell-CMD 、下載執(zhí)行、鍵盤(pán)監(jiān)聽(tīng)、關(guān)閉計(jì)算機(jī)、內(nèi)網(wǎng)socket代{過(guò)}{濾}理、回復(fù)心跳包功能。
功能表如下:
功能表
1.獲取計(jì)算機(jī)信息;
獲取計(jì)算機(jī)詳細(xì)信息
2.進(jìn)程注入功能;
進(jìn)程注入
3.下載執(zhí)行功能;
下載執(zhí)行
4.查看屏幕功能;
屏幕查看
5.關(guān)機(jī)功能;
關(guān)機(jī)
6.監(jiān)聽(tīng)鍵盤(pán),將鍵盤(pán)數(shù)據(jù)寫(xiě)入key文件,供后續(xù)網(wǎng)絡(luò)獲??;
鍵盤(pán)監(jiān)聽(tīng)
7.內(nèi)網(wǎng)http代{過(guò)}{濾}理功能;
socket代理
8.遠(yuǎn)程shell-cmd功能;
遠(yuǎn)程shell-cmd
9.文件管理功能:實(shí)現(xiàn)對(duì)文件的目錄創(chuàng)建、上傳下載、壓縮解壓與運(yùn)行;
文件功能
10.BYVOD功能加載文件過(guò)濾驅(qū)動(dòng)。
BYVOD
想象一下,你的電腦是一個(gè)溫馨的小家,本來(lái)生活安寧,歲月靜好。但是有一天,一個(gè)“潛伏者”——銀狐系列變種木馬病毒,趁你不注意的時(shí)候,偷偷溜進(jìn)你的溫馨小家里?!皾摲摺毕喈?dāng)狡猾,會(huì)利用家里的物品(系統(tǒng)特性)隱藏它攜帶的作惡工具,來(lái)避開(kāi)家里的監(jiān)控。接著它會(huì)尋找合適時(shí)機(jī),通過(guò)一些手法來(lái)重新釋放作惡工具,從而在你家開(kāi)一個(gè)新的后門(mén),方便和它的同伙一起,對(duì)你的小家進(jìn)行監(jiān)視和遠(yuǎn)程控制,并向外傳遞信息。
但是別擔(dān)心,目前火絨已經(jīng)可以攔截和清除這種木馬了。后續(xù),火絨也會(huì)支持?jǐn)r截和清除更多病毒。就像有雷達(dá)兵幫助我們探測(cè)處理“潛伏者”一樣,所以,記得更新你的火絨病毒庫(kù),守護(hù)你的電腦安全哦~