【PC樣本分析】大灰狼RAT樣本分析
作者論壇賬號:yusakul?
樣本為遠控客戶端,樣本聯(lián)網(wǎng)下載大灰狼遠控dll,其導出函數(shù)DllFuUpgradrs注冊自啟服務、連接服務端,接收服務端指令來控制用戶系統(tǒng)。

樣本執(zhí)行流程
[1.?]()樣本概況
[1.1??]()樣本信息
File:菲律賓確診新型肺炎病毒.exe
Size: 217088bytes
MD5: 30C13ED8030DDA8A578E822B60E3B24F
SHA1: A54F9C32425AD9FDBA48938418508BA54582EDE6
CRC32: 1B8896E5
[1.2??]()測試環(huán)境及工具
運行平臺:Windows 7 X64
系統(tǒng)監(jiān)控工具:火絨劍
調(diào)試工具:IDA?Pro、OD
[2.?沙箱監(jiān)控]()

打開N62.dll文件(解密該文件)

釋放自身到系統(tǒng)目錄并啟動

寫入的注冊表鍵值
[3.?]()逆向分析
[3.1?]()菲律賓確診新型肺炎病毒.exe分析

PE文件基本信息
3.1.1?入口函數(shù)
檢查當前系統(tǒng)版本配置分辨率。

?

判斷系統(tǒng)版本

設置屏幕分辨率
3.1.2 payload的下載與解密
檢查payload文件是否存在:

文件不存在,則下載N62.dll:

文件存在則讀取N62.dll,檢查標識是否一致

檢查payload標識
動態(tài)調(diào)試下查看到payload打開位置:

讀取C:\Program Files\AppPath\N62.dll
檢查payload存在且標識正確后,解密N62.dll,并加載它,遍歷導出表尋找到payload的需要的導出函數(shù)地址:DllFuUpgradrs

動態(tài)調(diào)試dump解密后的N62.dll,下圖可以看到解密后的PE文件魔數(shù)”MZ”。

N62.dll解密完成
3.1.2.1?解密算法

解密函數(shù)
觀察解密操作特征,得知加密算法為RC4算法,其為對稱算法,通過簡單的異或?qū)崿F(xiàn)加解密。

RC4算法初始化函數(shù)

加解密函數(shù)
3.1.2.2?加載payload: N62.dll

通過讀取PE文件關(guān)鍵字段:imagebase加載基址、sizeofimage加載在內(nèi)存中的大小。
根據(jù)基址和大小,在基址地址申請相應大小的空間,加載dll并修改內(nèi)存屬性為可執(zhí)行。
3.1.2.3?獲取并調(diào)用導出函數(shù)DllFuUpgradrs

解析導出表
實現(xiàn)手段:根據(jù)加載基址獲取數(shù)據(jù)目錄表,獲取到數(shù)據(jù)表的第0項:導出表地址。遍歷導出表得到需要的函數(shù)地址。

對比導出函數(shù)名稱
簡單驗證地址非零后,樣本直接調(diào)用DllFuUpgradrs函數(shù),參數(shù)為一段密文與密鑰。

調(diào)用DllFuUpgradrs([密文],[key])

N62.dll?導出表

DllFuUpgradrs地址
[3.2 payload-N62.dll]()
Dump得到N62.dll,文件被加殼(upx殼)。

N62.dll文件信息

N62.dll脫殼后信息
3.2.1?導出函數(shù)DllFuUpgradrs
動態(tài)調(diào)試查看函數(shù)調(diào)用時的寄存器、堆棧與內(nèi)存信息:

DllFuUpgradrs調(diào)用
函數(shù)DllFuUpgradrs行為基本描述:
(1)?????傳入?yún)?shù)分別為密文和密鑰
(2)?????解密密文,將得到的明文賦值給各個全局變量
(3)?????明文內(nèi)容包括服務器信息,各類設置的參數(shù)
(4)?????復制自身到系統(tǒng)目錄運行,并設置開機自啟
(5)?????創(chuàng)建多個注冊表鍵值
(6)?????連接服務端,并創(chuàng)建線程接收處理服務端指令
(7)?????主要遠控功能包括:文件管理、屏幕監(jiān)視、攝像頭記錄、音頻記錄、鍵盤記錄、遠程shell、系統(tǒng)管理。

解密并根據(jù)明文賦值

解密密文操作:異或

根據(jù)明文給各變量賦值

獲取本進程路徑

檢查運行在系統(tǒng)目錄

創(chuàng)建服務開機自啟
DllFuUpgradrs查詢注冊表檢查自身服務是否開啟:

檢查服務

查詢注冊表
DllFuUpgradrs檢查服務完成,開始連接服務端,并獲取功能分發(fā)函數(shù)OnRecvive:

連接服務端
3.2.2?連接服務端
樣本與服務端通訊使用TCP socket,host與port均為前文解密的明文數(shù)據(jù)。
Host: 91.193.102.149
Port: 0x51

Socket通信
連接完成,創(chuàng)建線程接收服務端數(shù)據(jù),并處理對應指令:

創(chuàng)建線程:recv & OnReceive
3.2.3?接收&處理指令線程
上節(jié)中,連接服務端完成后,則創(chuàng)建線程接收并處理服務端指令。

新線程基本操作:
(1)接收服務端數(shù)據(jù);
(2)解密數(shù)據(jù)(rc4算法);
(3)解析數(shù)據(jù)包獲取指令;
(4)分發(fā)功能執(zhí)行OnReceive函數(shù)。
具體見下圖。

接收數(shù)據(jù),并解密

解析獲取指令,并執(zhí)行功能分發(fā)函數(shù)
3.2.4?功能分發(fā)
功能分發(fā)函數(shù)OnRecvive地址如下:

OnRecvive地址
OnRecvive地址在函數(shù)DllFuUpgradrs中,隨服務端地址、服務端端口、創(chuàng)建的本地服務名稱一同保存到結(jié)構(gòu)體對象(類對象),作為參數(shù)提供給各種成員函數(shù)引用。

獲取功能分發(fā)函數(shù)地址
OnRecvive分發(fā)執(zhí)行主要功能如下,包括:文件管理、屏幕監(jiān)視、攝像頭、鍵盤記錄、錄音、系統(tǒng)管理、遠程shell等等。

OnRecvive
3.2.4.1?文件管理

文件管理
3.2.4.2?屏幕監(jiān)控
基本流程為:掃描光標資源保存,掃描屏幕并轉(zhuǎn)化為位圖,將數(shù)據(jù)發(fā)送。

屏幕監(jiān)視線程


屏幕監(jiān)視初始化函數(shù)

發(fā)送圖片數(shù)據(jù)
3.2.4.3?攝像頭

壓縮視頻數(shù)據(jù),并發(fā)送

XViD視頻編碼
3.2.4.4?鍵盤記錄

攔截鍵盤消息

記錄鍵位虛擬碼

讀取記錄文件發(fā)送
3.2.4.5?錄音

錄音
3.2.4.6 Shell管理

遠程運行cmd,并獲取回顯
3.2.4.7?系統(tǒng)管理


操作各項系統(tǒng)設置
[4.?網(wǎng)絡行為]()
[4.1?]()服務端主機信息
IP地址為91.193.102.149;
Port端口為81(0x51)、9090(0x2382)。
[4.2?]()上線方式
除C&C服務器接收消息,還額外有三種上線方式:

其他3種上線方式
論壇原帖地址:https://www.52pojie.cn/thread-1330693-1-1.html