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