0x00 引言
- 惡意域名解析,是指用戶的正常 DNS解析請求解析到他人的服務器上或是攻擊者的惡意服務器上,而被解析的服務器上實際沒有相應的站點
- 對抗歷史
- 硬編碼IP→IP封鎖阻斷連接
- DNS域名解析定位C&C服務器→域名黑名單
- DGA→檢測識別DGA
- 使用DGA的優勢在於模糊了控制服務器的節點位置,該方法的靈活性還讓網絡安全管理員無法阻止所有可能的域名,並且注冊一些域名對攻擊者來說成本很低。
0x01 DGA
幾類常見的DGA域名:
-
Conficker是針對 Microsoft Windows操作系統的計算機蠕蟲,最初於 2008年末被發現。它使用Windows操作系統軟件中的缺陷和對管理員密碼的字典攻擊在形成僵屍網絡時傳播。幾乎所有以 Conficker為依托的高級惡意軟件技術都已被研究人員所熟知,但這種病毒的綜合使用使得它難以根除
-
CryptoLocker勒索軟件攻擊是一 種 針 對 運 行Microsoft Windows的計算機的木馬,它通過受感染的電子郵件附件以及現有的 GameoverZeus僵屍網絡傳播。它使用 DGA從英文字母表 a~y中隨機選取生成字符串長度為 12至 15的二級域名,每周大約生成1000個域名。
-
Ramnit是一種類似 Zeus的惡意軟件。它使用DGA與其C2服務器通信。感染后,樣本開始快速連續地對許多不同的域進行 DNS查詢。DGA使用隨機數生成器首先通過均勻地選擇 8到 19個字符之間的長度來確定第二級域的長度。接下來,DGA通過從“a”到“x”統一選取字母來確定第二級域(字母“z”不能被選中),然后附加靜態頂級域“.com”
-
symmi的所有隨機方面都是真正的偽隨機,它通過當前的日期和編碼常量,利用隨機數生成器生成種子。它包含三級域名,在第三級域中,除字母“j”之外,從元音和輔音中隨機交替的挑選字母,因此隨后的字母總是來自其他字符類,這樣選取的字符組成的域名幾乎是可讀的。生成第三級域后,DGA會附加配置的第二級和頂級字符串,如“.ddns.net”
-
Suppobox與現有的大部分 DGA都是利用偽隨機字符串生成的域名家族不同,它利用英文單詞列表,從英文單詞列表中隨機選擇兩個單詞連接在一起生成惡意域名。
-
從簡單的隨機繪制字符的方法到嘗試模擬真實域中的字符或單詞分布的方法。例如:ramnit使用從隨機種子開始的乘法、除法和模數的組合來創建域名;symmi為了能夠生成幾乎可發音的域名,隨機交替選擇元音或輔音類。另一方面,suppobox通過連接兩個偽隨機選擇的英語詞典單詞來創建域。
0x02 DGA域名檢測和應用
早期的研究,通過逆向惡意樣本的 DGA算法,提前搶注域名來控制惡意軟件與 C&C通信。但這種方法所消耗的人力資源過大且應用受限。(StoneGrossB,CovaM,CavallaroL,etal.Your Botnet is My Botnet:Analysis of a Botnet Takeover[C]//Proceeding sof the 16th ACM conference on Computer and communications security. ACM, 2009: 635-647.)
2.1 基於特征提取的機器學習方法的檢測
2.1.1 域名字符統計特征的檢測
- 利用合法域名與 DGA域名在字符分布上有明顯的差異,Davuth等以域名的bigram作為特征,通過人工閾值的方式過濾出現頻率較低的 bigram,采用支持向量機分類器檢測隨機域名。(DavuthN, Kim SR. Classification of malicious domain name susing support vector machine and bigram method [J].International Journal of Security& Its Applications, 2013, 7(1):51-58.)
- Yadav等通過查看同一組IP地址的所有域中的 unigram和 bigram特征分布,查找算法生成的域名的固有模式來檢測 DNS流量中的域名。(Yadav E, Reddy AKK, Reddy ALN, et al. Detecting algorithmically generated malicious domain names [C]//Acm Sigcomm Conference on Internet Measurement. DBLP, 2010.)
- 在域名長度上,Mowbray等在域名查詢服務中通過使用不尋常的字符串長度分布來檢測惡意域名。(Mowbray M, Hagen J.Finding domain generation algorithms by looking at length distribution [C]// IEEE International Symposiumon Software Reliability Engineering Workshops.USA:IEEE,2014:395-400.)
- 王紅凱等提出了一種基於隨機森林的隨機域名檢測方法。該方法以人工提取的域名長度、域名字符信息熵分布,元音輔音比、有意義的字符比率等特征來構建隨機森林模型訓練分類,實現對隨機域名的檢測。(王紅凱,張旭東,楊維永,等.基於隨機森林的 DGA域名檢測方法:中國,CN105577660A[P].2016-05-11)
- Agyepong等也利用算法生成域名與正常域名的字符分布的不同,分別利用域名K-L距離、編輯距離、Jaccard系數分別作為特征向量的識別效果(Agyepong E, Buchanan W J, Jones K. Detection of Algorithmically Generated Malicious Domain [C]//International Conference of Advanced Computer Science & Information Technology. 2018)
- 使用分詞算法將域名分割成單個詞,來擴展特征集的大小以提高檢測惡意域名的能力。(Wang W,Shirley K. BreakingBad:Detecting malicious domains using word segmentation[C]//Proceeding sof the 9th Workshop on Web 2.0 Security and Privacy (W2SP), 2015.)
2.1.2 DNS流量信息的檢測
- 在 DNS流量分析上面,提出了一種依賴於 fastflux僵屍網絡的三個特征:委托代理模式、惡意活動的執行者和硬件性能,來檢測Web服務是否被fastflux僵屍網絡實時托管。(Hsu C H, Huang C Y, Chen K T. Fast-flux bot detection in realtime[C]//International Conference on Recent Advances in Intrusion Detection. Springer-Verlag,2010)
- Blige等介紹了一個名為Exposure的系統,它利用 DNS分析技術來檢測涉及惡意活動的域,通過從 DNS流量中提取 15個特征來描述 DNS名稱的不同屬性以及查詢它們的方式。(Bilge L,Kirda E,Kruegel C,et al.EXPOSURE:Finding Malicious Domains Using Passive DNS Analysis[C]//Proceedings of the Network and Distributed System Security Symposium, NDSS2011, 2011.)
- Antonakakis等通過分析因名稱錯誤響應的域名的DNS查詢,也稱為 NXDOMAIN響應,即不存在 IP地址的域名,並設計了一個名為Pleisdes的系統來檢測 DGA生成的域。它主要利用由DGA生成的域名中,只有相對較少的域名成功解析為 C&C服務器的地址的特點。當 Pleiades找到一組NXDOMAIN時,它應用統計學習技術構建 DGA模型,然后用它來檢測用同一種 DGA算法的受感染的主機,並檢測與 DGA看起來類似的活動域名,因為其有可能指向僵屍網絡 C&C服務器的地址。Pleiades具有能夠發現和建模新的 DGA而無需勞動密集型惡意軟件逆向工程的優勢。另外 Pleiades通過監控本地網絡中的DNS流量來實現這些目標,而無需大規模部署先前工作所需的 DNS分析工具。(Antonakakis M,Perdisci R.From throw away traffic to bots:detecting the rise of DGA-based malware[C]//Usenix Conference on Security Symposium.2012)
- Zhou Y L等人也通過分析 NXDOMAIN響應來檢測 DGA域名。(Zhou Y L, Li Q S, Miao Q D, et al. DGA-Based Botnet Detection Using DNS Traffic [J].Journal of Internet Services and Information Security,2013,3(3/4):116 -123.)
- 通過DNS數據源及其豐富度、數據分析方法以及評估策略和度量,對近年來使用 DNS數據的惡意域名檢測技術的一般框架分類,並就 DNS領域下的檢測提出了一些挑戰:大規模的真實 DNS數據日志很少公開可用,惡意域的特征彈性以及缺少評估的具體方案。(①Yury Z, Issa K, Ting Y, et al.A Survey on Malicious Domains Detection through DNS Data Analysis [J]. ACM Computing Surveys, 2018, 51(4):1-36.②Sadegh T, Amine B, Chadi A, et al. Detecting Internet Abuse by Analyzing Passive DNS Traffic:A Survey of Implemented Systems [J].IEEE Communications Surveys&Tutorials, 2018, 20(4):3389-3415)
- 通過網絡的 DNS流量的上下文信息及域名的統計特征對潛在的 DGA分類有一定的成果,但是這些不能滿足實時檢測和預防的現實安全應用的需求。為滿足實時檢測的要求,諸多的實時方法都使用手工挑選的特征(例如:熵、字符串長度、元音比、輔音比等)。然而,這些依賴人工提取特征檢測方法存在着誤報率較高、整體檢測率低的問題。主要原因有兩方面:
- 大多數現有的基於網絡的僵屍網絡檢測方法僅限於數據包檢測級別,大多數方法也主要關注網絡流的部分特征,不能完全表征僵屍網絡的異常行為;
- 僵屍網絡與時俱進,利用先進的思想和技術來逃避檢測。特別是為了應對人工提取的特征檢測,攻擊者可以設計新的 DGA算法以繞過某些固定的特征。
2.2 基於無特征提取的深度學習方法的檢測
- 手工提取特征的缺點:
- 手工提取的特征容易規避
- 手工提取特征耗時
- Antonakakis等提出了無特征的實時技術隱馬爾可夫模型(HMM)。但HMM在檢測 DGA方面表現不佳(Antonakakis M, Perdisci R, Dagon D, et al. Building a Dynamic Reputation System for DNS [C]//Usenix Conference on Security. USENIX Association,2010)
- 提出了一種基於 Word-hashing技術的深度學習網絡對域名進行分類,其不僅避免了手工提取特征還發現了傳統統計方法無法發現的特征。(趙科軍,葛連升,秦豐林,等.基於 word-hashing的 DGA僵屍網絡深度檢測模型[J].東南大學學報(自然科學版),2017,47(S1):30-33)
2.2.1 RNN在域名檢測中的應用
循環神經網絡(RNN)因其能捕獲序列之間有意義的時間關系被應用於各種自然語言任務中。但 RNN在長鏈操作中易導致梯度消失問題,不具備學習長期依賴信息的能力。LSTM在 RNN的基礎上增加一個狀態信息使其能夠學習長期依賴信息,在長時間的學習模式方面非常擅長文本和言語處理,因此被廣泛應用。
- Woodbridge等利用長短期記憶網絡實現對 DGA的實時預測,而無需上下文信息或手動創建的特征。(Woodbridge J, Anderson H S, Ahuja A, et al. Predicting Domain Generation Algorithms with Long Short-Term Memory Networks [EB]. eprintar Xiv:1611.00791,. 2016.)
- Yu等為了比較深度學習方法的優勢,以傳統的機器學習方法中比較有效的基於特征構建的隨機森林模型作為基准實驗,利用 LSTM網絡和 CNN網絡進行域名 檢測分類比較。(Yu B, Gray D L, Pan J, et al. Inline DGA Detection with Deep Networks [C] // IEEE International Conference on Data Mining Workshops. IEEE, 2017.)在 整 體 檢 測 率 上,CNN和LSTM模型相對於隨機森林有突出的表現,但在個別DGA上表現不佳。存在的原因大概有兩方面:
- 數據不平衡導致檢測率低或識別誤差大;
- 傳統的DGA和基於字典的 DGA之間存在偏差的樣本分布。
- Tran等提出了一種改進的成本敏感的LSTM算法來應對 DGA域名數據多類不平衡的問題,相對原始敏感 LSTM算法,具有較高的准確率。(Tran D, Mac H, Tong V, et al. A LSTM-based framework for handling multiclass imbalance in DGA botnet detection [J]. Neurocomputing, 2018, 275: 2401 -2413.)
- Vinayakumar等也比較了幾種常見的神經網絡模型。他們對遞歸神經網絡(RNN)、身份遞歸神經網絡(I-RNN)、長期短期記憶(LSTM)、卷積神經網絡(CNN)和卷積神經網絡長短期內存(CNN-LSTM)體系結構五類神經網絡進行實驗比較。結果表明,深度學習方法,特別是遞歸神經網絡系列和混合網絡顯示出優越的性能,最高檢測率分別為 0.9945和 0.9879。主要原因是深度學習方法具有捕獲層次特征提取和序列輸入中的長期依賴性的固有機制。(Vinayakumar R, Soman K P, Poornachandran P, et al. Evaluating deep learning approaches to characterize and classify the DGA satscale [J].Journal of Intelligent & Fuzzy Systems, 2018, 34(3):1265-1276.)
以循環神經網絡為基本框架的檢測模型對隨機性高的DGA域名檢測准確率高,但對隨機性低的 DGA域名識別率低,導致對正常域名產生較高的誤報。因此,此類網絡在低隨機性和基於字典的 DGA域名成為其未來的主要發展點。
2.2.2 GAN在域名檢測的應用
GAN是一種深度學習模型,為生成模型提供了一個新的框架。它借鑒博弈論中的納什均衡思想,使生成器和鑒別器相互學習以生成模擬數據。生成器捕獲實際數據的分布,而鑒別器估計樣本來自訓練集的概率。
- 納什均衡:Nash equilibrium,又稱非合作博弈均衡,是博弈論的一個重要術語,在一個博弈過程中,無論對方的策略選擇如何,當事人一方都會選擇某個確定的策略,則該策略被稱作支配性策略。如果任意一位參與者在其他所有參與者的策略確定的情況下,其選擇的策略是最優的,那么這個組合就被定義為納什均衡。
- Anderson等利用了生成對抗網絡的思想,構建了基於深度學習的 DGA域名生成對抗樣本方法。在一系列的對抗輪回中,生成器學習生成檢測器越來越難以檢測的域名。相反地,檢測器通過更新其參數以提高檢測。其提出的生成對抗網絡是基於預先訓練的自動編碼器(編碼器+解碼器),其中自動編碼器先在Alexa的一百萬個域中訓練,以生成看起來更像真實域名的域。然后在生成對抗網絡中競爭性地重新組裝編碼器和解碼器,模型框架大致如圖 3所示。由於編解碼器是預訓練好的,因此,在對抗訓練中,只訓練生成模型的生成層和判別模型的邏輯回歸層。最后用隨機森林 DGA分類器來驗證生成的對抗樣本的表現力。(Anderson H S, Woodbridge J, Filar B. Deep DGA:Adversarially Tuned Domain Generation and Detection[C]//Acm Workshop on Artificial Intelligence&Security. ACM, 2016.)

- 采用了 GAN的思想來生成惡意域名對抗樣本,不同之處在於編碼器部分的設計,后者設計了基於的 Ascall編碼方式定義域名編、解碼器對域名字符進行向量映射及逆映射,然后將處理好的數據輸入對抗網絡。接着用生成的樣本與真實的數據的檢測率作對比實驗,以驗證生成的對抗樣本的有效性。(袁辰.基於對抗模型的惡意域名檢測方法的研究與實現[D].北京:北京建築大學,2018)
- GAN在自然圖像分類處理上取得了較好的成果,但是朴素 GAN在處理像序列這種離散數據上存在兩個問題:
- 生成器難以傳遞梯度更新
- 鑒別器難以評估非常完整的序列
- 將視角放在了鑒別器上,提出了一種基於生成對抗網絡的僵屍網絡檢測增強框架,該網絡通過生成器連續生成“假”樣本,並擴展標記的數量,以幫助原始模型進行僵屍網絡檢測和分類。(Yin C, Zhu Y, Liu S, et al. An enhancing framework for botnet detection using generative adversarial networks [C]// International Conference on Artificial Intelligence & Big Data. 2018)
2.3 基於附加條件的深度學習方法的檢測
單純的深度學習的檢測方法在應對越來越智能的DGA域名上的表現不佳,為此后面的研究都在深度學習方法的基礎上增加了附加條件以提高檢測率。
- LSTM在域名很長時,很難學會合理的表達。提出了一個結合注意機制的 LSTM模型。該模型將注意力集中在域中更重要的子串並改善域的表達,並在 DGA檢測中實現更好的性能,尤其是對於長域。在二元分類中,其誤報率分別低至 1.29%和假負率 0.76%(Chen Y,Zhang S,Liu J,et al.Towards a Deep Learning Approach for Detecting Malicious Domains[C]//IEEE International Conference on Smart Cloud(SmartCloud), IEEE, 2018.)
- 陳立皇等也提出了一種基於注意力機制的深度學習模型,不同的是,他們提出一種域名的多字符隨機性提取方法,提升了識別低隨機 DGA域名的有效性。(陳立皇,程華,房一泉.基於注意力機制的 DGA域名檢測算法[J].華東理工大學學報(自然科學版),2019, 45(3): 478-485.)
- Satoh等通過詞法分析和 Web搜索來估計域名隨機性,但該方法對域名長度較短時,無法區分,不包含在字典中的域名會被誤判。(Satoh A, Nakamura Y, Nobayashi D, et al. Estimating the Randomness of Domain Names for DGA Bot Callbacks [J]. IEEE Communications Letters,2018,22(7):1378-1381.)
- 為了逃避應用神經網絡的檢測技術,惡意域名已升級為多個單詞的組合來欺騙神經網絡的檢測。Curtin等提出了smash分數來評估 DGA域名像英文單詞的程度,然后設計了一種新的模型:遞歸神經網絡架構與域名注冊信息的組合。雖然實驗在對matsnu和 suppobox這種看起來像自然域名的家族的檢測效果好,但是在那些看起來不像自然域名DGA系列表現效果欠佳。(Curtin R R, Gardner A B, Grzonkowski S, et al. Detecting DGA domains with recurrent neural networks and side information [EB]. EprintarXiv:1810.02023,2018.)
0x04 結語及未來的研究方向
惡意軟件從簡單的利用域名生成算法生成偽隨機字符串的域名來和控制與命令服務器連接,發展到為躲避神經網絡檢測的更智能化的域名,即由英語單詞構成的域名。與之對抗的,網絡安全研究人員也從手工提取域名字符特征、DNS流量特征的機器學習方法發展到利用神經網路自動學習特征的轉變和改進來提高模型的檢測率與性能。
4.1 DGA域名變體的研究
DGA域名變體生成的域名大多數為了躲避基於字符特征的模型檢測,利用英語單詞列表隨機生成。雖然這類偽域名從馬爾可夫模型或是 n-gram分布的角度來看,都和正常域名沒有太大的區別。但是通過觀察這些域名可以看出域名的長度與正常域名相差較大,以及這些域名都是由幾個毫無關聯的單詞拼湊而成,因此可以針對這兩個角度對這類域名檢測。
- n-gram分布:N-Gram(有時也稱為N元模型)是自然語言處理中一個非常重要的概念,通常在NLP中,人們基於一定的語料庫,可以利用N-Gram來預計或者評估一個句子是否合理。另外一方面,N-Gram的另外一個作用是用來評估兩個字符串之間的差異程度。這是模糊匹配中常用的一種手段。參考:https://www.jianshu.com/p/4452cf120bd7
4.2 惡意域名對抗樣本的生成方法研究
- 現有的偽隨機域名生成方式大概分為兩類:
- 通過逆向工程等手段破解 DGA生成算法,還原 DGA算法生成偽隨機域名,但這類生成的域名大都具有固定模式,在有限數據集上訓練的模型缺乏對新的 DGA變體的預測。
- 通過生成對抗網絡來生成對抗樣本
利用 GAN生成了域名的對抗樣本,並用實驗證明了對抗樣本在充當惡意域名數據及預測未知DGA家族上有可觀的表現。但由於 GAN主要是處理連續數據,對離散序列數據的上表現較差,所以針對文本序列數據處理,提出了 SeqGAN(Sequence GenerativeAdversarialNetworks)來解決朴素 GAN在離散數據處理上的問題,並在語言文本上有不錯的表現。相信未來通過SeqGAN生成的域名對抗樣本會有更高的質量。(①Yu L, Zhang W, Wang J, et al. SeqGAN: Sequence Generative Adversarial Nets with Policy Gradient [C]//Proceedings of the Thirty First AAAI Conferenceon Ar tificial Intelligence(AAAI17).2017:2852-2858.②Pascual S, Bonafonte A, Serrà J. SEGAN: Speech Enhancement Generative Adversarial Network [EB]. Eprintar Xiv: 1703. 09452, 2017.)
4.3 惡意域名的檢測模型
基於現有的檢測模型,如何設計一個高效的檢測模型是一個難點,因為偽域名越來越智能化,可以逃避一般的神經網絡模型的檢測。同時如何將模型設計成為一個既可以作為單獨的模型,也可以作為更大的 DGA檢測系統的一部分,還可以包含網絡流量,運用到實時的網絡安全系統中也是未來的可發展點。