* 本文原創(chuàng)作者:ArkTeam/Shadow_KK,本文屬FreeBuf原創(chuàng)獎勵計劃,未經(jīng)許可禁止轉(zhuǎn)載
Domain Generation Algorithm(DGA)是一項(xiàng)古老但一直活躍的技術(shù),是中心結(jié)構(gòu)僵尸網(wǎng)絡(luò)賴以生存的關(guān)鍵武器,該技術(shù)給打擊和關(guān)閉該類型僵尸網(wǎng)絡(luò)造成了不小的麻煩,研究人員需要快速掌握域名生成算法和輸入,對生成的域名及時進(jìn)行sinkhole。
背景
僵尸網(wǎng)絡(luò)指攻擊者(Botmaster)出于惡意目的,通過命令控制信道(C&C Channel)操控一群受害主機(jī)(Bots)所形成的攻擊平臺。通過該平臺,攻擊者可以發(fā)起多種常見攻擊,包括DDoS、垃圾郵件、釣魚攻擊、點(diǎn)擊欺詐、在線身份竊取、比特幣挖掘/竊取、加密勒索等。
同傳統(tǒng)惡意代碼形態(tài)相比,僵尸網(wǎng)絡(luò)的攻擊實(shí)現(xiàn)依賴攻擊者和受害主機(jī)之間的信息交互,即攻擊者需要告知僵尸主機(jī)命令,僵尸主機(jī)才可發(fā)起相應(yīng)的攻擊,命令的下發(fā)通過命令控制信道實(shí)現(xiàn),這是僵尸網(wǎng)絡(luò)構(gòu)建的核心,也是攻防雙方博弈的關(guān)鍵點(diǎn)。
在早期中心結(jié)構(gòu)的僵尸網(wǎng)絡(luò)中,僵尸主機(jī)通常采用輪詢的方法訪問硬編碼的C&C 域名或 IP來訪問命令控制服務(wù)器,獲取攻擊者命令,由于硬編碼的域名或IP固定且數(shù)量有限,防御人員通過逆向掌握該部分內(nèi)容后可對該域名進(jìn)行有效的屏蔽,阻斷其命令控制途徑,使其失去控制源并逐漸消亡。該種缺陷稱之為中心節(jié)點(diǎn)失效(single-point-of-failure)。
基本概念
為了解決上述問題,攻擊者使用Domain Flux協(xié)議來對抗防御人員的關(guān)閉,僵尸主機(jī)訪問的C&C域名不再是靜態(tài)硬編碼,而是根據(jù)一定算法動態(tài)生成的、變化的域名,攻擊者和肉雞通信的集合點(diǎn)(rendezvous points)動態(tài)變化,防御人員難以關(guān)閉,該域名生成算法稱之為DGA(Domain Generation Algorithm),算法的輸入稱為Seeds,涵蓋日期、社交網(wǎng)絡(luò)搜索熱詞、隨機(jī)數(shù)或字典,如圖1所示,生成的一串特殊字符前綴(比如kvbtltjwoxf52b68nslulzgvevh44bvatey)添加TLD后得到最終域名資源,該域名稱為AGD(Algorithmically-Generated Domain),攻擊者只需成功注冊并讓肉雞訪問到一個AGD即可實(shí)現(xiàn)僵尸網(wǎng)絡(luò)的控制,而防御人員為了徹底關(guān)閉該僵尸網(wǎng)絡(luò),需要屏蔽所有的AGD,成本極大,因此,Domain Flux被認(rèn)為是一種非常健壯的命令控制協(xié)議。
圖1 DGA實(shí)現(xiàn)示意圖
發(fā)展歷史
早期Domain Flux僵尸網(wǎng)絡(luò)為2007年出現(xiàn)的Torpig和Karken,前者以Twitter熱點(diǎn)話題為seed,后者則以當(dāng)前日期為輸入。最經(jīng)典的案例為2008年出現(xiàn)的Conficker,該僵尸網(wǎng)絡(luò)以日期為輸入,每天生成不同的域名,其中A變種在3小時內(nèi)生成250個域名嘗試連接,而2009年出現(xiàn)的C變種更將該數(shù)字提高到了50000個,但實(shí)際訪問時只會挑選其中500個進(jìn)行嘗試。
2011年發(fā)現(xiàn)的ZeuS_Gameover具備在線身份竊取和惡意軟件安裝功能,該僵尸網(wǎng)絡(luò)采用Domain Flux協(xié)議,每天生成1000個純字符域名,TLD包括com, biz, org, net, ru 和info;今年2月出現(xiàn)的勒索軟件Locky以隨機(jī)數(shù)和當(dāng)前日期作為輸入,但一天只生成并訪問6個域名,DGA詳情請參考FORCEPOINT分析報告[1],更多的Domain Flux僵尸網(wǎng)絡(luò)案例見圖2[2]。
圖2 DGA僵尸網(wǎng)絡(luò)案例一覽
案例簡析
今年2月出現(xiàn)的勒索軟件Locky同樣采用DomainFlux協(xié)議,其變種樣本層出不窮,算法輸入不斷變化。以公開的v3版本算法為例[5],如圖3所示,不同樣本硬編碼初始隨機(jī)數(shù)(seed)、偏移量(shift)以及TLD(tlds)三部分信息。
圖3 不同樣本硬編碼的DGA配置信息
其DGA算法以當(dāng)前年月日為輸入,結(jié)合上述硬編碼信息進(jìn)行一系列變化,最終得到結(jié)果值k,如圖4所示。
圖4 Locky v3DGA實(shí)現(xiàn)核心代碼
如圖5所示,K值決定了域名前綴的長度(7~17位)和內(nèi)容,由純小寫字母組成,TLD也同樣由K值決定,前綴和TLD組合得到了最終生成域名(如圖6所示)。更多Locky DGA詳情請參考FORCEPOINT分析報告[1]。
圖5 AGD生成
圖6 生成的AGD結(jié)果
特點(diǎn)分析
DGA的優(yōu)勢:
1.較為健壯的尋址方式,可對抗域名黑名單屏蔽、靜態(tài)聲望系統(tǒng)以及特征碼檢測系統(tǒng);
2.是一種理想的備用信道協(xié)議,可作為back up手段恢復(fù)僵尸網(wǎng)絡(luò)控制,如Zeus v3。
DGA的缺點(diǎn):
1.需要逐一遍歷AGD,尋址效率相對較低;
2.大量NXDomain流量導(dǎo)致通信易被檢測發(fā)現(xiàn);
3.如果AGD數(shù)量過多,出于時間和金錢成本開銷,攻擊者難以全部注冊,防御人員可以提前搶注并通過sinkhole手段測量或劫持僵尸網(wǎng)絡(luò)。
防御簡述
對于Domain Flux僵尸網(wǎng)絡(luò)的檢測需要從協(xié)議實(shí)現(xiàn)引發(fā)的“異常”來進(jìn)行判斷,可用于檢測的特征包含以下幾個方面:
1.尋址過程中會產(chǎn)生大量NXDomain報文,從主機(jī)角度來看,數(shù)量上比正常用戶要高,比如Murofet每天產(chǎn)生超過10個NXDomain,而據(jù)Damballa Labs觀測結(jié)果顯示,92%正常用戶不會超過10個;
2. TTL普遍較低,解析的IP地址可能存在復(fù)用的現(xiàn)象(歷史綁定的域名為惡意域名);
3.如果某域名的DNS解析數(shù)在一個時間窗內(nèi)的呈現(xiàn)爆炸性增長隨后迅速下降,該域名很有可能為AGD(如圖3所示);
4.為了防止和已注冊域名發(fā)生碰撞,AGD的長度通常較長;
5.AGD不具備可讀性,同正常域名相比違反元輔音組合規(guī)律,字母分布呈現(xiàn)完全隨機(jī)化的特點(diǎn),其熵值通常較高,利用n-gram模型(bigram和trigram)[3]描述可以發(fā)現(xiàn)差異性。
圖7 AGD DNS查詢流量
總結(jié)
Domain Flux雖然是種古老的協(xié)議,但時至今日該方法仍十分有效,使攻擊者在攻防博弈過程中占據(jù)上風(fēng),根據(jù)flux思量衍生的URL Flux亦為攻擊者提供了新的武器,從防御的角度而言,Domain Flux的對抗固然離不開逆向工程,但Passive DNS與機(jī)器學(xué)習(xí)算法相結(jié)合才是更高效的檢測方法。
參考文獻(xiàn)
[1]Nicholas Griffin. LOCKY’S NEWDGA –SEEDING THE NEW DOMAINS .https://blogs.forcepoint.com/security-labs/lockys-new-dga-seeding-new-domains
[2]Daniel P. DGArchive A deep diveinto domain generating malware.https://www.botconf.eu/wp-content/uploads/2015/12/OK-P06-Plohmann-DGArchive.pdf
[3]Lital Asher-Dotan. The FBI vs.GameOver Zeus: Why The DGA-Based Botnet Wins.http://www.cybereason.com/the-fbi-vs-gameover-zeus-why-the-dga-based-botnet-wins/
[4]phunter.用機(jī)器學(xué)習(xí)識別隨機(jī)生成的C&C域名.http://drops.wooyun.org/tips/6220
[5]Antonakakis M, Demar J, ElisanC, et al. Dgas and cyber-criminals: A case study[J]. 2012.
[6]Barabosch T, Wichmann A, LederF, et al. Automatic extraction of domain name generation algorithms fromcurrent malware[C]//Proc. NATO Symposium IST-111 on Information Assurance andCyber Defense, Koblenz, Germany. 2012.
* 本文原創(chuàng)作者:ArkTeam/Shadow_KK,本文屬FreeBuf原創(chuàng)獎勵計劃,未經(jīng)許可禁止轉(zhuǎn)載