那個導(dǎo)致美國斷網(wǎng)的Mirai 又出現(xiàn)帶DGA變種,內(nèi)置了域名生成算法。
連續(xù)導(dǎo)致美國和德國斷網(wǎng)事件的Mirai惡意軟件,不僅感染并控制了越來越多的攝像頭等聯(lián)網(wǎng)設(shè)備,組成潛在威脅更大的僵尸網(wǎng)絡(luò),其自身還不斷出現(xiàn)新的變種,近日360網(wǎng)絡(luò)安全研究院全球首次確認(rèn)了早先Mirai 7547端口傳播樣本中的DGA機(jī)制。
概要
兩個星期前,360網(wǎng)絡(luò)安全研究院發(fā)現(xiàn)2個新的感染載體(也即TCP端口7547和5555變種)被用來傳播Mirai惡意軟件。
研究院的Ye Genshen快速設(shè)置了一些蜜罐,并且很快取得收獲:11月28日一天就捕獲了11個樣本。 迄今為止,我們的蜜罐已從6個托管服務(wù)器捕獲了53個獨立樣本。
在分析其中一個新樣本時,研究院的同事Qu Wenji發(fā)現(xiàn)一些類似DGA的代碼,并猜測變種中包含有DGA功能,這個猜測很快就從我們的沙箱數(shù)據(jù)中得到驗證。詳細(xì)的逆向工作顯示,在通過TCP端口7547和5555分發(fā)的Mirai樣本中確實存在DGA特征。本文中將介紹這些最新的發(fā)現(xiàn),將我們找到的DGA的屬性總結(jié)如下:
1.? 使用3個頂級域名:online/tech/support;
2.? L2域名固定長度12字符,每個字符從“a”到“z”中隨機(jī)選擇;
3.? 域名僅由月、日和硬編碼的種子字符串確定;
4.? 每天只生成一個域名,因此最多存在365個 DGA域名;
5.? DGA域名僅在硬編碼的C2域名無法解析時使用。
通過逆向獲取的DGA知識,我們在程序中重新實現(xiàn)了DGA,并用它來預(yù)測所有365個可能的域名。當(dāng)進(jìn)一步確認(rèn)這些域名的注冊信息時,我們發(fā)現(xiàn)其中部分域名已經(jīng)被MIRAI作者注冊,列表如下:
圖0, 已經(jīng)被注冊的DGA域名
值得一提的是,作者 dlinchkravitz@gmail.com在更早時間已經(jīng)注冊了其他Mirai C2域名:
zugzwang.me email dlinchkravitz@gmail.com
樣本和分析
本文中用作說明的樣本如下:
1. MD5: bf136fb3b350a96fd1003b8557bb758a
2. SHA256: 971156ec3dca4fa5c53723863966ed165d546a184f3c8ded008b029fd59d6a5a
3. File type: ELF 32-bit LSB executable, MIPS, MIPS-I version 1 (SYSV), statically linked, stripped
樣品做了去符號處理但未加殼。根據(jù)以分析Mirai樣本經(jīng)驗,我們很快就確定了其主要模塊。比較代碼發(fā)現(xiàn),resolvcncaddr函數(shù)的CFG(流程控制圖)與先前發(fā)現(xiàn)的樣本非常不同。 新版本的CFG如圖1所示。
圖1, 新版本的resolv_cnc_addr 流程控制圖
在函數(shù)開始處,由于在樣本中硬編碼了多達(dá)3個C2域名,所以生成隨機(jī)數(shù)以從第一和第二個C2域名中隨機(jī)選擇一個,如圖2所示。
圖2, resolv_cnc_addr 函數(shù)第一部分
如果被選中的C2域名無法解析,則bot并不解析未選擇的域名或第三域名,而是將根據(jù)當(dāng)前日期判斷是決定是否去執(zhí)行DGA代碼分支還是去解析第三個C2域名,如圖3。
圖3, 決定是否進(jìn)入DGA 代碼分支
從上述代碼片段我們可以看出,如果當(dāng)前日期在11月1日和12月3日之間,將去解析第3個C2域名。否則將執(zhí)行DGA代碼分支。這可以理解為作者不希望DGA域名在12月4日之前被啟用,這也恰好被前文提及首個被注冊的Mirai DGA域名對應(yīng)于12月4日所映證。 DGA主函數(shù)名為dgagendomain。域名完全是基于種子數(shù)字和當(dāng)前日期生成的。種子通過調(diào)用strtol()從硬編碼的十六進(jìn)制格式字符串進(jìn)行轉(zhuǎn)換。看起來字符串“\x90\x91\x80\x90\x90\x91\x80\x90”是一個錯誤的配置,這會導(dǎo)致strtol()總是返回0。
代碼中通過調(diào)用time()和localtime()的C庫函數(shù)得到本地日期。但只有月和日被使用,如圖4所示。
圖4, dga_gen_domain 函數(shù)片段
L2域名是通過反復(fù)執(zhí)行圖5所示的代碼塊來生成的。其長度由$ t5和$ t2確定,它們的值在圖4中設(shè)置,從中我們可以確定L2域名長度是12。
圖5, 生成L2域名的循環(huán)代碼片段
TLD(Top Level Domain)由寄存器$S0中的殘余值確定,如圖6所示。 我們可以看到在這里使用了3個TLD。
圖6, 確定TLD 的代碼分支
IOC
目前,DGA相關(guān)的特性存在于如下樣本,所有這些DGA樣本中的種子字符串和算法都完全相同:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
|
005241cf76d31673a752a76bb0ba7118
05891dbabc42a36f33c30535f0931555
0eb51d584712485300ad8e8126773941
15b35cfff4129b26c0f07bd4be462ba0
2da64ae2f8b1e8b75063760abfc94ecf
41ba9f3d13ce33526da52407e2f0589d
4a8145ae760385c1c000113a9ea00a3a
551380681560849cee3de36329ba4ed3
72bbfc1ff6621a278e16cfc91906109f
73f4312cc6f5067e505bc54c3b02b569
7d490eedc5b46aff00ffaaec7004e2a8
863dcf82883c885b0686dce747dcf502
bf136fb3b350a96fd1003b8557bb758a
bf650d39eb603d92973052ca80a4fdda
d89b1be09de36e326611a2abbedb8751
dbd92b08cbff8455ff76c453ff704dc6
eba670256b816e2d11f107f629d08494
|
樣本中的硬編碼C2域名如下:
1
2
3
4
|
zugzwang.me
tr069.online
tr069.tech
tr069.support
|
我們將密切關(guān)注DGA變種的后續(xù)變化,敬請關(guān)注后續(xù)更新。
來源:安全客