一、引言

惡意軟件如今已經發展為威脅網絡安全的頭號公敵,為了逃避安全設施的檢測,其制作過程也越來越復雜,其中一個典型做法是在軟件中集成DGA(Domain Generation Algorithm)算法,產生速變域名,該方式作為備用或者主要的與C2服務器通信的手段,可以構造更加魯棒的僵屍網絡,做到對感染肉雞的持續性控制。對應地,針對DGA算法的研究現在也是安全圈討論的熱點話題,學術界和工業界也有大量DGA域名檢測的工作,但是在實際使用中存在誤報過多的現象。由於傳統DNS使用明文進行數據傳輸,造成嚴重的用戶隱私泄露問題,DoT(DNS-over-TLS)、DoH(DNS-over-http)協議陸續通過RFC標准,用於保護用戶隱私,但另一方面,加密DNS的使用將給DGA域名的檢測帶來新的挑戰。

本文首先對DGA域名的背景做簡單介紹,然后對各種DGA域名檢測方法做梳理和匯總,並選擇其中一種方法用於實際產品測試,對結果進行深入分析並給出相應建議,接着簡單介紹加密DNS給DGA檢測帶來的挑戰和檢測加密DGA流量方法,最后總結DGA域名檢測目前工作的不足和待解決的問題。

二、背景

近年來,惡意軟件的數量和復雜度持續增長,催生了大量黑色產業鏈和網絡犯罪行為,據統計,網絡空間犯罪的資本市場到2018年止已經高達1500億美元[1],為了維持持續的經濟效益或其他目的,攻擊者對肉雞的管理是僵屍網絡控制的重要問題,對肉雞的進行有效管理,不僅有利於各種攻擊類型的發起,更可以延長攻擊被發現時間,並且實現攻擊者真實身份的隱藏。現代惡意軟件一般通過使用DGA算法與C2服務器建立通信,從而達到上述目的。

1 DGA域名原理

惡意軟件利用DGA算法與C2服務器進行通信的原理如圖1[2]所示,客戶端通過DGA算法生成大量備選域名,並且進行查詢,攻擊者與惡意軟件運行同一套DGA算法,生成相同的備選域名列表,當需要發動攻擊的時候,選擇其中少量進行注冊,便可以建立通信,並且可以對注冊的域名應用速變IP技術,快速變換IP,從而域名和IP都可以進行快速變化。

很顯然,在這種方式下,傳統基於黑名單的防護手段無法起作用,一方面,黑名單的更新速度遠遠趕不上DGA域名的生成速度,另一方面,防御者必須阻斷所有的DGA域名才能阻斷C2通信,因此,DGA域名的使用使得攻擊容易,防守困難[3]。

圖1 DGA域名工作原理

2 DGA域名分類

DGA算法由兩部分構成,種子(算法輸入)和算法,可以根據種子和算法對DGA域名進行分類,DGA域名可以表示為AGD(Algorithmically-Generated Domains)。

2.1 按照種子進行分類

種子是攻擊者和客戶端惡意軟件共享的一個DGA算法的輸入參數之一,不同的種子得出的DGA域名是不一樣的。一般來說,種子可按如下方式進行分類:

1.基於時間的種子(Time dependence)。DGA算法將會使用時間信息作為輸入,如:感染主機的系統時間,http響應的時間等。

2.是否具有確定性(Determinism)。主流的DGA算法的輸入是確定的,因此AGD可以被提前計算,但是也有一些DGA算法的輸入是不確定的,如:Bedep[4]以歐洲中央銀行每天發布的外匯參考匯率作為種子,Torpig[5]用twitter的關鍵詞作為種子,只有在確定時間窗口內注冊域名才能生效。

根據種子的分類方法,DGA域名可以分為以下4類:

1.TID(time-independent and deterministic),與時間不相關,可確定;

2.TDD(time-dependent and deterministic),與時間相關,可確定;

3.TDN(time-dependent and non-deterministic),與時間相關,不可確定;

4.TIN(time-independent and non-deterministic),與時間不相關,不可確定;

2.2 按照生成算法進行分類

現有DGA生成算法一般可以分為如下4類:

1.基於算術。該類型算法會生成一組可用ASCII編碼表示的值,從而構成DGA域名,流行度最高。

2.基於哈希。用哈希值的16進制表示產生DGA域名,被使用的哈希算法常有:MD5,SHA256。

3.基於詞典。該方式會從專有詞典中挑選單詞進行組合,減少域名字符上的隨機性,迷惑性更強,字典內嵌在惡意程序中或者從公有服務中提取。

4.基於排列組合。對一個初始域名進行字符上的排列組合。

根據種子和生成算法的不同,DGA域名可以選擇不同種子類型和算法類型的組合方式,因此最終DGA域名的生成形式多樣性高。

3 DGA域名存活時間

Plohmann Daniel等人[3]對43個惡意軟件家族做逆向分析,實現了DGA算法並對超過1億個DGA域名做分析,結合WHOIS信息,統計出了不同DGA家族域名存活時間的分布。每個DGA家族的域名存活詳細信息不在此列出,感興趣的讀者可以直接閱讀原文。

總結來說DGA域名的存活時間一般較短,大部分域名的存活時間為1-7天,因此DGA域名這種存活時間短的特性對防守方的檢測實時性提出了更高的要求,防守方需要在盡量短的時間內對檢測出DGA域名,並作出相應的處置措施,才能有效降低風險。

三、檢測

DGA域名自曝光以來,其檢測工作就在持續進行,在不同場景、不同時期,檢測方法也呈現出一定區別,本節梳理相關工作並在實際產品中進行測試,給出算法在實際場景中遇到的問題和優化建議。

1 相關工作

按照檢測方法的不同,DGA域名檢測大致可以分為以下兩種:基於文本分析、基於行為分析。

基於文本分析的代表工作有[9][10][11],[9]通過分析DGA域名與正常域名之間字符分布的差異,對IP產生的域名進行批量分類,[10]通過LSTM算法分析DGA域名與正常域名之間的差異,可以判定每個域名是否為DGA域名, 由於DGA域名的請求過程中會產生大量NXDomain,[11]對NXDomain進行分類,有效識別DGA域名。

基於行為分析的代表工作有[12][13],[12]對同一主機產生的NXDomain進行聚類和分類,可以發現感染主機,進一步發現C2域名,[13]將檢測問題轉為圖的推理問題,從代理日志構造主機與域名之間的關系圖,用一些真實信息作為種子作為圖的輸入,然后使用信念傳播算法估計域名為惡意的邊緣概率。

2 產品測試

該部分分為兩部分,離線模型訓練和線上產品檢測。我們利用深度學習技術,自動化提取特征,對NXDomain進行分類,找出其中的DGA域名[15]。

2.1 模型訓練

數據集:我們從DGArchive[14]收集DGA域名,其中包含約4570萬個DGA域名,包含62個DGA家族,另外收集收集了大量良性NXDomain,包含1530萬個域名,以這些數據為原始輸入,進行有監督學習。

預處理:首先我們剔除良性NXDomain數據集中的少量噪聲和DGArchive中的噪聲,構造更加純凈的數據集,然后對數據集中包含的字符進行one-hot編碼,作為神經網絡模型的輸入。

數據采樣:由於各個類別的數據量不一致,為了使分類結果不產生偏差,我們確定一個閾值,對高於該閾值的類別進行下采樣,最終保證每個類別的域名數量一致。

模型選擇:選擇CNN、LSTM、BiLSTM三種神經網絡模型進行測試,神經網絡最后一層分別選擇:sigmod和sofmax兩種函數,實現二分類和多分類,並且進行模型調參。

交叉驗證:對數據集進行5折交叉驗證。

實驗結果。圖2為3種神經網絡模型的多分類統計結果,由於包含的DGA家族數量較多,多分類的實驗效果總體表現不佳。我們查看每種DGA家族的分類情況,如圖3所示,我們隨機選擇33種DGA家族和良性域名進行展示(34類),可以發現很多DGA家族幾乎可以做到100%的分類准確率,尤其是基於字典的DGA家族,如:suppobox,banjori,volatile等。

圖2 不同神經網絡模型的多分類統計結果

圖3 CNN多分類(34分類)的混淆矩陣

我們將多分類中所有DGA家族的類別合成一種類別,比較二分類與FANCI[11]的實驗結果,如圖4所示,實驗結果表明,我們在二分類上具有很高的准確率,並且優於現有的基於NXDomain檢測DGA域名的方案。

圖4 二分類結果

2.2 產品測試

在離線模型中,我們發現各種深度學習算法的表現相差不大,挑選速度最快的CNN模型用於產品的日志檢測,檢測過程如下。

選取2019年產品DNS日志,挑選出其中的NXDomain進行檢測,共計669萬域名。經過如下過濾手段:

本地白名單。我們構建了本地白名單列表,二級域名如果能匹配上該列表則過濾該域名,過濾后剩余545萬域名。

頂級域名合法。數據中存在大量頂級域名不存在的DNS請求,這些域名不是DGA域名,過濾后剩余463萬域名。

Alexa_top_10000。Alexa top 10000的域名一般認為都是對大型企業的訪問,理論上不存在DGA域名,過濾后剩余444萬域名。

將剩余的444萬個域名通過保存的CNN模型進行檢測,檢測結果顯示有42萬DGA域名。

2.3 結果驗證

2.3.1確定誤報

對檢測出的高可疑的DGA域名進行分析,制定如下將誤報的策略:

1.去除二級域名為”afftb288.com”的域名,檢測結果中有38萬主域名為“afftb288.com”,如“41959214.afftb288.com”、“34308479.afftb288.com”,雖然該域名屬於賭博網站,但經判定該域名不符合DGA域名特征,過濾。

2.去除主域名長度小於等於5的域名,由於DGA域名要避免與正常域名碰撞,被惡意軟件使用的DGA域名長度一般也大於5,因此刪除此類域名,如“baidu.com”中,主域名“baidu”長度 <=5,需要進行過濾。

3.刪除正規機構域名,檢測結果中有少量正規機構的域名,如”ztmbec.com”,“speedy.com.ar”等。

經過上述過濾手段,待確認域名剩余2.7w

2.3.2確定DGA域名

根據公開的威脅情報,我們發現兩類DGA域名,

第一類包含2572DGA域名,其中主域名有206個,如:

lhsjtcl.com

dfwpmpm.me

lzxemfc.com

tmhufuf.com

zccaotl.com

orahcre.org

eoerkfc.com

pycbumk.com

第二類為挖礦木馬C2,如:zeruuoooshfrohlo.su,大約110個,

2.3.3持續監測

對於剩余2萬多高可疑DGA域名,我們給出DGA域名的置信度評分和可能的惡意軟件家族信息,並進行持續監控、與惡意樣本關聯分析等后續操作。

四、發展

DGA域名從最開始的偽隨機字符串開始進入人們的視野,由於該方式產生域名的字符分布與正常域名的分布有明顯區別,易被檢測,攻擊者轉而使用基於字典的DGA域名算法,從字符分布上盡量擬合正常域名,極大地降低了字符的隨機性。近年來,隨着DNSCrypt、DoT、DoH等DNS加密協議的制定和部署,越來越多的惡意軟件使用加密流量逃脫監控,並且有研究表明已經發現使用DoH的惡意軟件[6]。

隨着加密DNS的進一步部署,預計將來有更多DGA域名通過加密DNS協議進行傳輸,針對使用DGA域名botnet的檢測將會更加困難,文章[7]利用pydig工具對DGA域名和正常域名發送請求,產生加密流量,做了進一步分析,去除TLS握手等階段的無效信息,文章對數據包大小進行分析,發現DGA域名與Alexa域名的的加密數據包大小分布存在明顯差異,圖5[7]表明,數據包大小可以在加密DNS流量中可以作為區分DGA域名的重要依據。

圖5 DGA域名與Alexa域名通過DoT協議傳輸的數據包大小分布

雖然文章沒有對加密協議、是否使用Padding技術、如何識別DoH流量等因素做深入討論,但這些因素對於數據包大小的影響很大,對檢測結果的影響有待進一步研究。

五、總結

DGA域名從2009年被曝光以來[5],至今發展了整整10年,雖然有大量文獻研究DGA域名的性質、檢測、防御、追蹤等一系列話題,也有大量機構參與DGA域名的阻斷、sinkhole工作,但是DGA域名迄今為止仍然作為一種主流與C2服務器通信的手段被廣泛采用,由於筆者能力限制,無法給出產生這種現象的原因,到底是學術論文中的方法在實際使用中有效性弱,還是工業界的部署、處置方式不當,需要進一步進行探索,總之我們對DGA域名的研究治理工作仍然任重而道遠。

參考文獻:

[1].N. Ismail, Global cybercrime economy generatesover $1.5tn, according to new study,https://www.information-age.com/globalcybercrime-economy-generates-over-1-5tn-according-to-newstudy-123471631/(2018)

[2].Patsakis, Constantinos, and FranCasino. "Hydras and IPFS: a decentralised playground for malware."International Journal of Information Security (2019): 1-13.

[3].Plohmann, Daniel, et al. "A comprehensive measurementstudy of domain generating malware." 25th {USENIX} SecuritySymposium ({USENIX} Security 16). 2016.

[4].https://www.cso.com.au/vendor_blog/20/arbor-networks/10130/bedeps-dga-trading-foreign-exchange-for-malware-domains/.2015

[5].Stone-Gross, Brett , et al. "YourBotnet is My Botnet: Analysis of a Botnet Takeover." Proceedings of the2009 ACM Conference on Computer and Communications Security, CCS 2009, Chicago,Illinois, USA, November 9-13, 2009 ACM, 2009.

[6].https://www.techbullion.com/the-first-malware-abuses-dns-over-https-doh/,(2019)

[7].Patsakis, Constantinos, Fran Casino, and Vasilios Katos."Encrypted and Covert DNS Queries for Botnets: Challenges andCountermeasures." Computers & Security (2019):101614.

[8].https://github.com/shuque/pydig

[9].Yadav S, Reddy A K K, Reddy A, et al.Detecting algorithmically generated malicious domain names[C]//Proceedings ofthe 10th ACM SIGCOMM conference on Internet measurement. ACM, 2010: 48-61

[10].Woodbridge, Jonathan, et al."Predicting domain generation algorithms with long short-term memorynetworks." arXiv preprint arXiv:1611.00791 (2016).

[11].Schüppen, Samuel, et al."{FANCI}: Feature-based Automated NXDomain Classification andIntelligence." 27th {USENIX} Security Symposium ({USENIX} Security 18).2018.

[12].Antonakakis, Manos, et al. "Fromthrow-away traffic to bots: detecting the rise of DGA-based malware."Presented as part of the 21st {USENIX} Security Symposium ({USENIX} Security12). 2012.

[13].Manadhata P K, Yadav S, Rao P, et al.Detecting malicious domains via graph inference[C]//European Symposium onResearch in Computer Security. Springer, 2014: 1-18.

[14].https://dgarchive.caad.fkie.fraunhofer.de

[15].Tong M, Sun X, Yang J, et al. D3N: DGADetection with Deep-Learning Through NXDomain[C]//International Conference on KnowledgeScience, Engineering and Management. Springer, Cham, 2019: 464-471.