劉浩杰 皇甫道 李巖 王濤



摘?? 要:僵尸網絡是指采用一種或多種傳播手段,將大量主機感染僵尸病毒,從而在主控者和被感染主機之間,通過命令控制服務器,形成一個一對多控制的網絡。攻擊者操縱僵尸網絡通常會使用多個域名來連接至C2服務器,達到操控受害者主機的目的。這些域名一般被硬編碼在惡意程序中,使得攻擊者能便捷地更改這些域名。為了躲避封禁,這些域名通常由域生成算法(Domain Generation Algorithms,DGA)生成。針對普遍的機器學習檢測DGA域名方式存在樣本不充分及通用型不強的問題,文章在研究了大量DGA域名生成算法的基礎上進一步完善黑白樣本,利用文本分析的手段結合GaussianHMM、LSTM、BernoulliNB模型提取具備普遍區分能力的特征,構建一個具備低風險結構的通用DGA檢測集成學習方法。
關鍵詞:僵尸網絡;惡意域名;域名生成算法;集成學習
中圖分類號:TP309????????? 文獻標識碼:A
A universally ensemble learning method of malicious domain detection
LiuHaojie HuangFudaoyi LiYan? WangTao
Abstract: Botnet refers to the use of one or more means of transmission, which will infect varieties of servers with zombie virus, therefore could result in a potential one to many control network between the controller and the infected servers. In order to gain the control of the infected servers, establishment of connections from multiple domains to C2 server would normally be used upon virus network. These domains could be programmed into codes, which could be easily changed by the hackers. To avoid being banned, these domains are normally generated by using Domain Generation Algorithms(DGA). Actually, some studies showed machine learning methods to cope with the issue mentioned. However, these methods does have issues such as insufficient samples and non-universal. This paper focus on the improvements of WriteBlack Sampling based on the fundamental of DGA by using text analysis in combination with GaussianHMM, LSTM, BernoulliNB. These models could effectively subtract the key features, therefore construct a low risk structured universally used DGA ensemble machine learning model.
Key words: botnet; malicious domain; domain generation algorithms; ensemble learning
1 引言
域名系統(Domain Name System)作為互聯網的核心基礎建設設施,主要是進行域名解析,域名解析為可訪問的互聯網IP地址,看似簡單卻異常重要。隨著黑產的云化和人工智能化,互聯網的規模不斷擴大,網絡出現漏洞和遭受黑產攻擊的可能性也越來越大。作為守方安全從業人員也面臨著愈加嚴峻的考驗,黑產攻擊手段推陳出新的同時互聯網安全防護技術也是亦步亦趨,形成了一場沒有硝煙、沒有終點的持久戰。在眾多的黑產攻擊技術當中,僵尸網絡就是最常被采用的攻擊手段,例如連續導致美國和德國斷網的Mirai惡意軟件,便內置了DGA域名生成算法,不僅感染控制了大量的攝像頭等互聯網終端設備組成僵尸網絡,其自身還不斷出現新的變種。僵尸網絡采用不同的DGA算法生成大量的隨機域名,對傳統的防護手段帶來了極大的考驗。
1.1 DGA生成原理
域名在構造上可分為主機名和域名(頂級域名或二、三級域等),各Lable以點號分割,各Lable最長63個字符,而且總長度不能超過255。DGA域名在構造上一般用隨機算法來生成主機名,因此只對DGA算法生成的主機名的字符串進行分析。本次實驗搜集了大量DGA生成算法的源碼,對每一種典型的生成方式進行了觀察和研究。簡單來說,DGA域名生成的原理是基于硬編碼的常量以及字典,通過加入一些隨機種子,利用一定的加密算法,生成一系列偽隨機字符串來作為域名,如圖1所示。
1.2 DGA相關研究
近年來,隨著互聯網安全越來越被重視,網絡安全成了一個熱門的話題。大量的學者、企業安全從業人員對惡意域名進行了深入研究。目前,針對惡意域名的檢測方法可以分為主動分析和被動分析兩種。主動分析方法一般包括DNS探測、網頁內容分析及人工專家模式分析。被動分析包括黑白名單規則匹配、機器學習、圖論。理論上,DGA域名的數量是可以無限生成的,傳統的黑名單方式每增加一條域名黑名單,就意味著服務器會增加一份負擔,因此使用機器學習的手段檢測來DGA域名成了對抗黑產的有效手段。傳統機器學習手段需要大量的特征提取,然后投入到傳統的機器學習模型對這些特征進行分類。常用的機器學習算法有隨機森林、XGBoost、lightGBM、支持向量機、HMM等。深度學習方法將每個字符或N-Gram后的字符組合當作一個特征,簡化了特征轉換方式,利用復雜的神經網絡,主動去學習各個字符上下文之間的關系。目前,主流的深度學習方法有LSTM、CNN、GAN。
Jonathan Woodbridge等人將N-Gram后的域名字符組合序列投入LSTM模型,分別用softmax和sigmoid作為網絡輸出層的激活函數,形成多元分類模型和二元分類模型,并使用ROC曲線和F1得分等對模型進行評估,取得了良好的效果[1]。Enrico Bocchi等人利用知識圖譜與網絡攻擊行為相結合,形成網絡連通圖,并利用無監督學習對某個典型的惡意網絡行為進行聚類,形成標簽數據集。最后利用樹模型對知識圖譜和網絡行為挖掘的特征進行分類,實現惡意域名檢測的目的[2]。張洋,柳廳文等人分析了主動分析和被動分析兩種模式,采用了機器學習的手段,從詞法特征和網絡屬性特征兩個方面,提出了一種基于多元屬性的20個特征惡意域名檢測方式,詞法方面有域名的長度、數字的個數、大寫字母個數、數字域名占比。網絡屬性方面有TTL平均值、A記錄個數、AS個數、NS個數、NS分散度等,并采用準確率、召回率、F1值對隨機森林分類器對1662個域名的分類效果進行評估[3]。牛晉平等人通過對僵尸網絡的綜述性研究,通過聚類方法對其查詢、攻擊的行為特征進行分析,這種方法的好處是突破了基于域名文本特征檢測的瓶頸[4]。
2 完善樣本
目前,基于機器學習的被動分析檢測模式成為了DGA檢測的主流。大多數研究者使用的特征提取方式和機器學習方法在各自數據集上能夠取得較高的評分,但是訓練樣本往往是不充分的。具體表現在訓練樣本的DGA家族覆蓋率較低,總量也較少,這樣使得訓練樣本比較“單純”,模型也很容易取得較高的評分。事實上,每個DGA生成算法的代碼編寫習慣不同,生成的字符組成一般也是在給定的一些固定的隨機種子字符上下波動。當訓練樣本中DGA家族數量較少或樣本分布高度集中的時候,機器學習方法很容易學習到某種潛在的規律,并取得非常低的經驗風險。然而,把這個模型應用到陌生的DGA域名上時,其召回率就會明顯縮水,這也說明其結構風險較高。
2.1 補充白樣本
Alexa每天在網上搜集的信息超過1000GB,給出多達幾十億的網址鏈接,而且為其中的每一個網站進行排名,是當前擁有URL數量最龐大、排名信息發布最詳盡的網站。本文使用Alexa全球排名前100萬的網站域名作為訓練白樣本的數據質量是很合適的,但是在一些特殊的應用領域,常用域名可能并沒有體現在這份數據當中。因此對于如何補充訓練白樣本,考慮用三種方式來實現。
(1)添加行業公司及行業域名:將公司自身各子系統域名,以及與公司業務相關的外部域名加入訓練集白樣本。
(2)從站長之家爬取國內TOP5.7萬的域名作為白樣本。
(3)加入牛津詞典中的英文詞匯作為訓練白樣本。
2.2 補充黑樣本
在實驗中發現,循環神經網絡具備十分強大的記憶和模擬能力。然而,即使模型對訓練集和測試集都達到了99.7%的準確度,但是當把這個模型應用到一個新的DGA算法生成的域名中測試,模型的召回率卻只有70%左右。這或許不是絕對的壞事,因為過高的召回率可能也意味著模型同樣具有較高的誤判率。理論上來說,由于每個人代碼的編寫習慣不同,通過使用不同的硬編碼、隨機種子和加密算法將會生成完全不同“風格”的DGA域名。DGA域名的樣本空間幾乎是無限大的,但也不必過于沮喪,它們之間也必然存在著隱晦的潛在聯系,只要訓練樣本愈加充分,機器學習模型也就會具有更加強壯。為了實現上述目的,研究者搜羅了Github上公開的40個僵尸網絡家族的DGA域名生成算法。其中360netlab重疊且數量較少的DGA家族,利用DGA生成算法將該家族訓練樣本補充至20000,同時針對360netlab中不存在的DGA域名家族,生成20000新樣本用于模型的訓練。
2.3 樣本調整
不同的DGA算法會有一定概率生成相同DGA域名,一個域名在黑樣本中可能會出現多次。在實際使用當中可以根據從正負樣本均衡的情況和樣本的重要性綜合考慮是否去重。
對于黑白樣本中都有的域名,按照其重要性來決定其標簽。如某個域名在某個DGA家族出現過一次,同時在公司及相關行業域名白名單中也存在,將該域名定義為白樣本;若是與英文詞匯中某個詞匯重疊,將其視為黑樣本來看待。同時,將DGA域名家族添加到73個,豐富黑樣本的同時也緩解了樣本不均衡的問題,最終調整后的樣本分布如表1所示。
3 特征工程
從文本分析的角度去區分正常域名和異常域名,有兩個方向:一是,提取組成域名每個字母的統計指標,然后投入一個分類器去訓練;二是,將一個字符或相鄰的幾個字符看作一個狀態,把整個組成域名的字符組合當作一個序列去訓練出一個狀態轉換模型,從而計算出一個是否為DGA域名的概率評分。研究者希望訓練一個盡可能通用的DGA檢測模型,因此在提取特征的時候也應該充分考慮特征的通用型,即對大多數DGA域名具備區分能力。
3.1 統計特征提取
人眼去區分正常域名和DGA域名時,看起來比較“順眼”會覺的更“像”是正常域名 , 如 google.com, youtube.com。正常人在取域名的時候,通常會選取比較貼合業務的幾個順口的單詞組合,具備好讀、好記、有一定含義這些特點。而DGA域名由隨機種子結合一定的算法生成,組成主機名的字符串大多不可讀,順序混亂且隨機性較強,與正常域名存在一定差異。
3.1.1 域名長度
大多數正常域名都不會太長,太長的話也不符合好記這個條件。在隨機種子長度不變的情況下,大多數DGA算法生成的域名長度是固定的,由于不同的DGA生成算法,不同的攻擊者所設置的隨機種子長度不同,生成的DGA域名長度也不同。這里將域名長度表示為|d|。
3.1.2 域名元輔音字母占比
出于“好讀”的目的,正常的域名元音字母的比例會比較高,輔音字母的比例比較低;而隨機生成的DGA域名則相反。
(1)元音字母占比:
其中|d|為域名字符長度,Count(d,Vowel),為元音字母個數。
(2)輔音字母占比
其中Count(d,Consonant)為輔音字母個數。
3.1.3 域名字符去重后數量占比
去重后的字母個數與域名長度的比例,從某種程度上反映了域名字符組成的統計特征[5]。
其中|Distinct(d)|為域名字符去重后的長度。
3.2 域名N-gram切割后的衍生特征
N-Gram方法常用語自然語言處理,常用于計算基于N-Gram模型定義的字符串距離,利用N-Gram模型評估語句是否合理等。N-Gram中N的取值為{1,2,3,4,5...},利用N-Gram對域名進行切割,然后統計切割后的字符組合分別在黑白域名集合中出現的概率。域名忽略字母的大小寫,并將數字全部泛化為0后,由{.,_,-,0,a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u,v,w,x,y,z}共30個有效字符組成,這時可能的字符組合的維度為30n。當n取值過高時,特征空間的維度爆炸式增長,對LSTM、HMM這類需要計算狀態轉換矩陣的算法來說,則需要海量的樣本去消化這些特征,也就是說n的取值越高模型過擬合的風險也就越高,越需要大量的訓練樣本。由于正常域名的長度一般也不會很長,因此n取值為2或3時比較適宜。以google為例,2-Gram后的字符組合集合為Set(google)={go,oo,og,gl,le}。
抽象成數學語言,有如下表示:
(1)d:域名;
(2)D:域名集合;
(3)Set(d):域名 N-Gram 切割后的字符集合;
(4)Positive:正常域名集合;
(5)Negative:DGA域名集合;
(6)Total:全體域名集合;
(7)Count(d,D):N-Gram切割后的字符集合Set(d)元素在域名集合D中出現的次數和;
(8)Statistic(d,D):域名集合D中包含Set(d)元素的域名個數和。
根據上述表達,提取N-Gram衍生特征圖表示:
(1)域名N-Gram DGA頻率可表示為公式:
(2)域名N-Gram逆向文本頻率(IDF):
(3)域名N-Gram DGA詞性比例:
(4)域名N-Gram正常詞性比例:
3.3 平均HMM系數
將組成域名的每個字符轉換成對應的ASCII碼作為該字符的狀態表示,如google等,轉換成形如[103,111,111,103,108,101],長度為6的向量表達。然后使用默認參數的GaussianHMM模型,用白找黑的思想訓練正樣本,并將訓練后的GaussianHMM模型應用于待測域名,計算出一個HMM系數,然后利用準確率、召回率和F1得分分別對訓練集及測試集進行評估。這里用到了10萬個白樣本,設置閾值后改模型表現如表2所示。
可見HMM作為區分DGA域名的一個變量,具備一定的區分能力,但進一步提升效果還需要增加變量。
3.4 樸素貝葉斯系數
常用的樸素貝葉斯(Naive Bayesian)算法有三種,分別為GaussianNB、MultinomialNB和BernoulliNB。域名進行2-Gram切割后的特征向量維度為900,對這900個不同的字符組合建立詞袋模型,利用詞袋模型將每個域名轉換成特征向量。由于面對的是稀疏的二元離散特征向量,所以采用BernoulliNB算法,它假設特征的先驗概率為二元伯努利分布,如下式:
其中Ck為Y的類別,這里為0或1,分別代表正常域名和DGA域名。同樣,xjl也取值為0和1。
本文使用Scikit-learn中的BernoulliNB算法,對隨機抽取的100萬正負樣本進行訓練,然后分別利用準確率、召回率和F1得分對訓練集及測試集進行評估,如表3所示。
3.5 LSTM系數
長短期記憶網絡(Long Short-Term Memory,LSTM)是一種時間循環神經網絡,它解決了簡單神經網絡(RNN)存在的長序列訓練過程中的梯度消失和梯度爆炸的問題。相比于簡單的RNN,LSTM能夠再更長的序列中有更好的表現。LSTM非常適合大規模數據的訓練,具備異常強大的模擬能力,理論上能以任意精度擬合任意復雜度的函數,充分學習到域名序列中上下文之間的潛在關聯。這里使用了Keras深度學習模型包對2-Gram后的構建循環神經網絡,網絡結構如表4所示。
隨著樣本的豐富和多元化,僅用一個全鏈接層的擬合效果并不是非常理想。因此,本文在在LSTM層和最后的全鏈接層中間添加了一個32節點的全鏈接層,同時加入兩個Dropout層進一步降低網絡結構風險。最后以Sigmoid函數作為輸出層的激活函數,將全部3036228個樣本投入LSTM模型,并利用準確率、召回率和F1得分分別對訓練集及測試集進行評估,如表5所示。
4 集成學習方法
為了模型能有更好的魯棒性,本文采用集成學習方法,基于訓練樣本、特征提取和模型結構三個方面的優化,提出了一種具有高魯棒性的惡意域名檢測方法,如圖2所示。
4.1 關于模型風險評估
很多時候為了地追求模型評分的好看而誤入歧途,忽略了模型的魯棒性,事實上,尤其是當訓練樣本較少時,模型是非常容易過擬合的。關于模型的選擇,監督學習有兩種策略,分別是最小化經驗風險和最小化結構風險。
(1)最小化經驗風險
這里L(x)為經驗風險函數,Θ為模型的參數;
當樣本量較少時,經驗風險最小化模型極易發生過擬合,尤其是樹家族模型和模擬能力非常強大的神經網絡模型。
(2)最小化結構風險
其中λ表示懲罰系數,J(f)表示模型結構風險函數。于是,選擇最佳模型就成了如何平衡經驗風險和結構風險的問題。
4.2 實驗結果
結合上節的特征工程提取的八個統計特征和三個模型系數特征分別訓練隨機森林、SVM、邏輯回歸二元分類器,形成集成方法。實驗結果表明,集成后的方法相比單個HMM、BernoulliNB和LSTM模型具有更高的準確率和召回率,同時泛化能力和通用型也得到了提升,如表6所示。
5 結束語
DGA域名樣本沒有絕對的黑和白,多數人看起來毫無邏輯的域名也有可能被注冊為正常的域名使用。同樣的,實踐證明DGA生成算法也有一定概率生成Aleax網站TOP排名完全相同的域名。因此一味追求模型的經驗風險最小并非最佳的解決方案。與國內外學者針對DGA域名檢測動輒0.999的準確率相比,本文覆蓋更多的DGA域名家族和域名白樣本,融合多個模型預測系數再加上多元統計特征和N-Gram衍生特征,利用懲罰系數令每個特征對最終的結果都作出一部分貢獻,從而達到降低模型結構風險的目的。因此,針對國內企業生產場景更具備普遍適用性。
參考文獻
[1]? ?Woodbridge J ,? Anderson H S ,? Ahuja A , et al. Predicting Domain Generation Algorithms with Long Short-Term Memory Networks[J].? 2016.
[2]? ?Bocchi E , Grimaudo L , Mellia M , et al. MAGMA network behavior classifier for malware traffic[J]. Computer Networks, 2016:S1389128616300949.
[3]? ?張洋,柳廳文,沙泓州,等.基于多元屬性特征的惡意域名檢測[J].計算機應用,2016, 36(4):941-944.
[4]? ?牛晉平,袁林.僵尸網絡及檢測技術探索[J].軟件工程, 2016,19(4):16-18.
[5]? ?劉焱.Web安全之機器學習入門[M].北京:機械工業出版社, 2017.126
[6]? ?張永斌,陸寅,張艷寧.基于組行為特征的惡意域名檢測[J].計算機科學,2012,40(8).
[7]? ?黃凱,傅建明,黃堅偉,李鵬偉.一種基于字符及解析特征的惡意域名檢測方法[J].計算機仿真,2018,35(03):287-292.
[8]? ?蔡冰,馬旸,王林汝.一種惡意域名檢測技術的研究與實現[J].江蘇通信,2015, 31(4):59-62.
[9]? ?臧小東,龔儉,胡曉艷.基于AGD的惡意域名檢測[J].通信學報, 2018,v.39;No.373(7):19-29.
[10]? ?Mowbray M, Hagen J. Finding Domain-Generation Algorithms by Looking at Length Distribution[C]// IEEE International Symposium on Software Reliability Engineering Workshops. 2014.
[11]? ?Abbink J . Popularity-based Detection of Domain Generation Algorithms: Or: How to detect botnets?[C]// International Conference on Availability. ACM, 2017.
[12]? ?楊佳寧,陳柯宇,曹凱,郭嫻.工業互聯網安全態勢感知核心技術分析[J].網絡空間安全,2019,10(04):61-66.
作者簡介:
劉浩杰(1992-),男,漢族,安徽阜陽人,南京大學,學士,蘇寧科技集團,算法研究員;主要研究方向和關注領域:網絡安全、滲透測試、人工智能與機器學習。
皇甫道一(1990-),男,漢族,江蘇淮安人,南京郵電大學,學士,蘇寧科技集團高級工程師;主要研究方向和關注領域:應用安全、安全AI、企業安全建設。
李巖(1994-),男,漢族,河南南陽人,江蘇科技大學,碩士,蘇寧科技集團,工程師;主要研究方向和關注領域:機器學習、數據挖掘、Web應用安全。
王濤(1990-),男,漢族,河南駐馬店人,合肥工業大學,學士,蘇寧科技集團,高級技術經理;主要研究方向和關注領域:Web安全、安全管理。