技術(shù)分享-SSnatchLoader惡意軟件更新分析
SnatchLoader是一種“downloader”類型的惡意軟件專門用于將惡意軟件分發(fā)(或加載)到受感染的計(jì)算機(jī)系統(tǒng)上。 我們在2017年1月左右發(fā)現(xiàn)了該惡意軟件的網(wǎng)絡(luò)攻擊活動(dòng),該攻擊活動(dòng)一直持續(xù)了幾個(gè)月的時(shí)間才慢慢消失。最近,我們的研究人員發(fā)現(xiàn)該惡意軟件又開始發(fā)起新一輪的網(wǎng)絡(luò)攻擊活動(dòng)了,在此次網(wǎng)絡(luò)攻擊活動(dòng)中我們捕獲到了該惡意軟件的更新,并發(fā)現(xiàn)該惡意軟件正被用于加載Ramnit銀行特洛伊木馬。此外,該惡意軟件還使用了一個(gè)稱為“地理IP阻止”的有趣功能,以使得只有某些地理區(qū)域的計(jì)算機(jī)才會(huì)被感染。到目前為止,我們已經(jīng)能夠確定,至少英國和意大利是該惡意軟件攻擊的目標(biāo),但美國,法國和香港目前還不是。
SnatchLoader命令和控制面板的登錄頁面
介紹
幾個(gè)月前,有一個(gè)關(guān)于關(guān)于垃圾郵件廣告的Twitter ,當(dāng)時(shí)是一個(gè)未知的“downloader”惡意軟件,該惡意軟件專門用于將惡意軟件分發(fā)(或加載)到受感染的計(jì)算機(jī)系統(tǒng)上。根據(jù)我們的分析,該“downloader”惡意軟件是“SnatchLoader”惡意軟件的更新程序,KernelMode.info論壇在2017年1月期間有對SnatchLoader進(jìn)行簡要討論的相關(guān)帖子的。正如論壇上該帖子所述,盡管沒有進(jìn)行詳細(xì)的代碼比較,但SnatchLoader和H1N1 Loader的惡意軟件家族似乎有一些相似之處。除此之外,目前我們還沒有看到任何關(guān)于SnatchLoader惡意軟件的進(jìn)一步討論,因此本文我們將對SnatchLoader最新版本更新進(jìn)行分析。
樣本
Twitter 中引用的示例在VirusTotal上可以找到。 然而,我們的大多數(shù)靜態(tài)分析工作是在更新版本的“核心DLL”上執(zhí)行的,該更新程序的最新編譯日期為2017-10-04,該DLL在2017年10月11日首次被上傳到了VirusTotal上。
Windows API調(diào)用
通過我們的分析發(fā)現(xiàn),該惡意軟件對Windows API的調(diào)用都是在運(yùn)行時(shí)通過函數(shù)名哈希的方式進(jìn)行的,散列算法是ROL和XOR運(yùn)算的組合,在GitHub上可以找到該散列算法的一個(gè)Python代碼實(shí)現(xiàn)。以下是一些API函數(shù)名稱及其對應(yīng)的哈希表:
- RtlZeroMemory - > 0x6b6c652b
- CreateMutexW - > 0x43725043
- InternetConnectA - > 0x1d0c0b3e
靜態(tài)配置
一個(gè)靜態(tài)配置被加密存儲(chǔ)在DLL的PE Section中,目前我們已經(jīng)看到該Section的兩個(gè)名稱:.idata和.xdata .,具體如下圖所示:
Section的第一個(gè)DWORD(上圖中的0x99a8)用作密鑰生成函數(shù)的種子,此功能的Python實(shí)現(xiàn)在GitHub上可以找到 ,使用RC4算法和生成的密鑰可以解密剩余的數(shù)據(jù)。解密的配置可以分成兩個(gè)塊:第一個(gè)塊是XML結(jié)構(gòu)的配置數(shù)據(jù),具體如下圖所示(為了可讀性添加了空格):
SRV是命令和控制(C2)服務(wù)器的URL,TIME是回連的輪詢間隔(單位時(shí)間為分鐘),NAME是一個(gè)活動(dòng)標(biāo)識(shí)符(02.10可能意味著10月2日),KEY用于加密回連通信。
第二個(gè)配置塊是一個(gè)RSA證書,用于對下載的數(shù)據(jù)的執(zhí)行簽名檢查。
命令與控制
到目前為止,我們觀察到的所有C2 URL都是HTTPS的。 但是通過使用調(diào)試器,我們可以使用HTTP與服務(wù)器進(jìn)行通信,并以明文方式查看回連的通信網(wǎng)絡(luò)流量,具體如下圖所示:
惡意軟件對POST數(shù)據(jù)進(jìn)行了四次加密操作:
1.RC4加密,KEY來源于配置文件
2.Base64編碼
3.字符替換
4.使用“\ r \ n”分隔符把數(shù)據(jù)拆分成64字節(jié)的數(shù)據(jù)塊
有三個(gè)字符被替換了,并且它們都是可逆的:
+ 到 -
/ 至 _
. 到 =
響應(yīng)數(shù)據(jù)好像也被加密處理了,但并沒有經(jīng)過4次加密處理。
通信分為四種請求類型:
1.獲取動(dòng)態(tài)配置
2.發(fā)送系統(tǒng)信息
3.命令輪詢
4.發(fā)送命令結(jié)果
獲取動(dòng)態(tài)配置請求
以下是“獲取動(dòng)態(tài)配置”請求的純文本請求數(shù)據(jù):
- req=0&guid=FCD08AEE3C0E9409&name=02.10&trash=ulbncmamlxwjakbnbmaklvvhamathrgsfrpbsfrfqeqpatisgsfrqbtfrgqfrpbuithtisrctisgsfrqbujtiuistduith
各個(gè)請求字段的含義分別是:
- req:請求類型
- guid:bot ID
- name:來自靜態(tài)配置的NAME
- trash: 隨機(jī)長度的隨機(jī)字符
響應(yīng)如下所示:
- SUCCESS|<CFG><SRV>https://lookmans[.]eu/css/order.php|https://vertasikupper[.]eu/css/order.php</SRV><TIME>120</TIME><NAME>02.10</NAME><KEY>547bnw47drtsb78d3</KEY></CFG>|
該響應(yīng)可以分為兩個(gè)字段:狀態(tài)字段和數(shù)據(jù)部分。這里的狀態(tài)字段是“SUCCESS”,數(shù)據(jù)部分被封裝在“<CFG>塊”中,這個(gè)配置在代碼中稱為DYNAMIC配置。
發(fā)送系統(tǒng)信息請求
第二個(gè)回連請求發(fā)送一堆系統(tǒng)信息,如下所示:
- req=1&guid=FCD08AEE3C0E9409&name=02.10&win=9&x64=1&adm=1&det=0&def=0&nat=1&usrn=SYSTEM&cmpn=JOHN-PC&uagn=Mozilla/4.0 (compatible; MSIE 7.0; Windows NT 6.1; WOW64; Trident/4.0; SLCC2; .NET CLR 2.0.50727; .NET CLR 3.5.30729; .NET CLR 3.0.30729; Media Center PC 6.0; .NET4.0C; .NET4.0E)&sftl=AddressBook|Connection Manager|DirectDrawEx|Fontcore|IE40|IE4Data|IE5BAKEX|IEData|MobileOptionPack|SchedulingAgent|WIC|&prcl=[System Process]\r\nSystem\r\nsmss.exe\r\ncsrss.exe\r\nwininit.exe\r\ncsrss.exe\r\nwinlogon.exe\r\nservices.exe\r\nlsass.exe\r\nlsm.exe\r\nsvchost.exe\r\nVBoxService.exe\r\nsvchost.exe\r\nsvchost.exe\r\nsvchost.exe\r\nsvchost.exe\r\naudiodg.exe\r\nsvchost.exe\r\nsvchost.exe\r\nspoolsv.exe\r\nsvchost.exe\r\ntaskhost.exe\r\nsvchost.exe\r\ndwm.exe\r\nexplorer.exe\r\nVBoxTray.exe\r\nSearchIndexer.exe\r\nwmpnetwk.exe\r\nsvchost.exe\r\nsppsvc.exe\r\nsvchost.exe\r\nmscorsvw.exe\r\nmscorsvw.exe\r\nSearchProtocolHost.exe\r\nmsiexec.exe\r\nsvchost.exe\r\nTrustedInstaller.exe\r\ntaskhost.exe\r\nSearchFilterHost.exe\r\nmsiexec.exe\r\ndllhost.exe\r\ndllhost.exe\r\nmsiexec.exe\r\nsvchost.exe\r\n&trash=ilnyyiittddnoyyiblambllvwgblalakjvufynamblcmambllwugxlwkwjvu\r\n
req - 請求類型
guid - bot ID
name - 來自配置的NAME
win - Windows版本
x64 - 是64位架構(gòu)
adm - 是管理員
det - 與反分析相關(guān)
def - 檢測反分析過程名稱
nat - 具有RFC1918 IP地址
usrn - 用戶名
cmpn - 電腦名稱
uagn - 用戶代理
sftl - 從注冊表中的Uninstall 鍵值中列舉軟件
prcl - 進(jìn)程列表
垃圾 - 隨機(jī)長度的隨機(jī)字符
響應(yīng)如下所示:
SUCCESS|
命令輪詢請求
除了請求號(hào)是2之外,命令輪詢請求看起來類似于“獲取動(dòng)態(tài)配置”請求,一個(gè)示例響應(yīng)如下所示:
SUCCESS | <TASK> 20 | 1 | 2 || MZ ... \ X00 \ X00 </ TASK> |
該響應(yīng)具有兩個(gè)字段,第一個(gè)字段是狀態(tài)字段,第二個(gè)字段是數(shù)據(jù)部分。這里的數(shù)據(jù)可以是零個(gè)或多個(gè)以下字段的TASK塊:
任務(wù)ID
命令類型
命令arg1(例如文件類型)
命令arg2(例如哈希值)
命令數(shù)據(jù)(例如可執(zhí)行文件或URL)
SnatchLoader的主要功能是下載并加載其他惡意軟件系列,因此大多數(shù)命令類型和參數(shù)都支持以各種方式執(zhí)行。在這個(gè)例子中,命令是首先提取嵌入的可執(zhí)行文件然后執(zhí)行提取到的可執(zhí)行文件。其他一些支持的命令是:
插件功能
更新配置
更新程序
發(fā)送命令結(jié)果
最后一個(gè)回連類型用于發(fā)送命令的結(jié)果:
- req=3&guid=FCD08AEE3C0E9409&name=02.10&results=&trash=pffebxmawlawigdawkifcymbxmawlgebxlawkifcymbxmhebymbxlawkifcy
除了請求號(hào)是3之外,該請求類似于“命令輪詢”的請求,并且添加了一個(gè)附加參數(shù)(results)。 對于此請求,C2沒有任何的響應(yīng)內(nèi)容。
地理阻止和當(dāng)前有效載荷
到目前為止,我們發(fā)現(xiàn)了該C2服務(wù)器的一個(gè)有趣的特征,它們似乎正在基于源IP地址執(zhí)行某種地理阻塞操作。當(dāng)我們嘗試通過美國,法國或香港的TOR或VPN節(jié)點(diǎn)與C2服務(wù)器進(jìn)行互動(dòng)時(shí),服務(wù)器會(huì)響應(yīng)“404 Not found”錯(cuò)誤。但是,如果我們嘗試使用英國和意大利的VPN節(jié)點(diǎn),C2服務(wù)器則會(huì)對請求進(jìn)行回應(yīng)。一般來說,地理阻擋不是一個(gè)新的特征,但并不是特別常見的。
在撰寫本文時(shí),SnatchLoader僵尸網(wǎng)絡(luò)正在分發(fā)Ramnit惡意軟件(一個(gè)銀行惡意軟件),該銀行惡意軟件的編譯日期為2017年10月13日,該樣本可在VirusTotal上獲得 。
結(jié)論
在這篇文章里,我們對SnatchLoader下載器惡意軟件進(jìn)行了研究和分析,該惡意軟件最早我們可以追溯到2017年1月,并且在上周我們發(fā)現(xiàn)了該惡意軟件的更新。目前,該惡意軟件正在通過垃圾郵件廣告進(jìn)行傳播,并根據(jù)地理位置封鎖功能對某些特定的地理區(qū)域發(fā)起網(wǎng)絡(luò)攻擊。在撰寫本文時(shí),SnatchLoader正在將Ramnit惡意軟件在英國和意大利這兩個(gè)國家內(nèi)進(jìn)行傳播。