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