馮中華,黃 河,周 佳,劉曉毅,張文博
(1.中國電子科技集團(tuán)公司第三十研究所,四川 成都 610041;2.中國人民解放軍61660 部隊(duì),北京 100089)
近年來,勒索病毒、挖礦軟件、僵尸網(wǎng)絡(luò)等惡意軟件在互聯(lián)網(wǎng)泛濫成災(zāi)[1],已嚴(yán)重威脅到互聯(lián)網(wǎng)的安全。這類惡意軟件的主要特點(diǎn)是被感染主機(jī)需接收命令和控制(Command and Control server,C&C)服務(wù)器的控制指令,被感染主機(jī)與C&C 服務(wù)器之間主要通過域名進(jìn)行傳輸控制協(xié)議/網(wǎng)際協(xié)議(Transmission Control Protocol/Internet Protocol,TCP/IP)通信。因此,惡意域名檢測(cè)成為檢測(cè)和防御這類惡意軟件的重要方式。為了規(guī)避安全防護(hù)裝備的檢測(cè)和封堵,實(shí)現(xiàn)對(duì)被感染主機(jī)的長(zhǎng)期持續(xù)控制,C&C 服務(wù)器與被感染主機(jī)之間的域名采用域名生成算法(Domain Generation Algorithm,DGA)生成[2],實(shí)現(xiàn)域名和互聯(lián)網(wǎng)協(xié)議(Internet Protocol,IP)地址快速動(dòng)態(tài)變換。傳統(tǒng)惡意域名檢測(cè)主要采用威脅情報(bào)庫方式,檢測(cè)域名是否在惡意域名庫中。但隨著DGA 域名技術(shù)的不斷發(fā)展和改進(jìn),形成了大量的DGA 域名并快速變換[3],因此威脅情報(bào)庫異常龐大,從而導(dǎo)致檢測(cè)效率低下,威脅情報(bào)庫的更新周期也無法跟上DGA 域名的變換速度。DGA 域名的使用使得攻擊容易、防守困難[4],給傳統(tǒng)的基于威脅情報(bào)庫的惡意域名檢測(cè)方式帶來巨大挑戰(zhàn)。
機(jī)器學(xué)習(xí)技術(shù)成為應(yīng)對(duì)DGA 域名的主要途徑,常見的有基于長(zhǎng)短期記憶網(wǎng)絡(luò)(Long Short-Term Memory networks,LSTM)和卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Network,CNN)等機(jī)器學(xué)習(xí)算法檢測(cè)DGA 域名[5]。相關(guān)的研究有:文獻(xiàn)[6]對(duì)樸素貝葉斯算法、XGBoost、多層感知機(jī)用于DGA域名檢測(cè)的效果進(jìn)行了對(duì)比;文獻(xiàn)[7]通過分析DGA 域名與正常域名之間字符分布的差異,對(duì)IP產(chǎn)生的域名進(jìn)行批量分類;文獻(xiàn)[8]通過LSTM 算法分析DGA 域名與正常域名之間的差異,判定每個(gè)域名是否為DGA 域名;文獻(xiàn)[9]考慮到DGA 域名的請(qǐng)求過程中會(huì)產(chǎn)生大量NXDomain,因此對(duì)NXDomain 進(jìn)行分類,有效識(shí)別DGA 域名。
梯度提升樹(Gradient Boosting Decision Tree,GBDT)算法作為機(jī)器學(xué)習(xí)領(lǐng)域中的一個(gè)重要算法,是一種基于決策樹的集成算法,通過構(gòu)造多個(gè)弱學(xué)習(xí)器為基學(xué)習(xí)器,結(jié)果累加作為輸出,在數(shù)據(jù)分析和預(yù)測(cè)中表現(xiàn)了突出的效果。XGBoost[10]是一個(gè)優(yōu)化的分布式梯度提升庫,在梯度提升框架下實(shí)現(xiàn)機(jī)器學(xué)習(xí)算法,以高效、靈活、便攜的特點(diǎn),在業(yè)界應(yīng)用廣泛,非常適合解決DGA 域名檢測(cè)這種分類問題。
梯度提升樹算法屬于集成算法中boosting 類的一種算法,適用于解決現(xiàn)實(shí)中的分類和回歸問題。XGBoost 是優(yōu)秀的梯度提升樹算法的工程實(shí)現(xiàn),在業(yè)界應(yīng)用非常廣泛。本文采用XGBoost 框架實(shí)現(xiàn)的梯度提升樹算法,研究利用梯度提升樹算法用于檢測(cè)DGA 域名的實(shí)現(xiàn)方法,總體思路如圖1 所示。
圖1 基于梯度提升樹的DGA 域名檢測(cè)方法研究思路
(1)樣本數(shù)據(jù)構(gòu)建。梯度提升樹算法是一種有監(jiān)督機(jī)器學(xué)習(xí)算法,需要充足的樣本數(shù)據(jù)支撐,收集的樣本數(shù)據(jù)包括正常域名樣本數(shù)據(jù)和DGA 域名樣本數(shù)據(jù),并根據(jù)樣本數(shù)據(jù)類型標(biāo)注樣本分類 標(biāo)識(shí)。
(2)模型訓(xùn)練調(diào)優(yōu)。模型訓(xùn)練調(diào)優(yōu)包括樣本向量化處理、樣本特征提取、模型訓(xùn)練和模型參數(shù)調(diào)優(yōu)等內(nèi)容。由于域名是字符串,而算法運(yùn)算處理對(duì)象是數(shù)值,因此要先進(jìn)行向量化處理,提取樣本特征數(shù)據(jù),將文本型樣本轉(zhuǎn)換為算法可處理的數(shù)值型樣本,再基于數(shù)值樣本進(jìn)行模型訓(xùn)練調(diào)優(yōu),生成生產(chǎn)可用的DGA 域名檢測(cè)模型。
(3)模型實(shí)測(cè)。利用實(shí)際生產(chǎn)環(huán)境中提取到的域名對(duì)DGA 域名檢測(cè)模型進(jìn)行驗(yàn)證,檢驗(yàn)訓(xùn)練出的DGA 檢測(cè)模型在實(shí)際網(wǎng)絡(luò)中的效果。本文主要通過收集互聯(lián)網(wǎng)中非樣本數(shù)據(jù)中的DGA 域名,提交檢測(cè)模型進(jìn)行判定,并根據(jù)判定結(jié)果驗(yàn)證檢測(cè)模型的檢測(cè)準(zhǔn)確率。
DGA 域名有很多家族,根據(jù)域名生成算法可以分為基于算術(shù)、基于哈希、基于詞典和基于排列組合4 類。根據(jù)360 網(wǎng)絡(luò)安全實(shí)驗(yàn)室(360 Netlab)公開的DGA 域名數(shù)據(jù)統(tǒng)計(jì)分析,當(dāng)前互聯(lián)網(wǎng)中最活躍的60 個(gè)DGA 域名家族的客戶端IP 和DNS 請(qǐng)求統(tǒng)計(jì)數(shù)據(jù)如圖2 和圖3 所示。
圖2 DGA 家族客戶端IP 數(shù)量統(tǒng)計(jì)
圖3 DGA 家族DNS 請(qǐng)求數(shù)量統(tǒng)計(jì)
由于不同家族采用的DGA 算法不同,其域名呈現(xiàn)的特征也不同,根據(jù)360 網(wǎng)絡(luò)安全實(shí)驗(yàn)室的數(shù)據(jù)統(tǒng)計(jì),互聯(lián)網(wǎng)常見的DGA 家族域名特征如表1 所示。
對(duì)于有監(jiān)督機(jī)器算法而言,樣本集構(gòu)建非常關(guān)鍵。為訓(xùn)練出有效的檢測(cè)模型,域名樣本數(shù)據(jù)要足夠豐富和有代表性,并且有利于樣本打標(biāo)處理,才能讓檢測(cè)模型學(xué)習(xí)到有效的特征數(shù)據(jù),提高檢測(cè)的準(zhǔn)確率。本文研究的目的主要是識(shí)別惡意域名,不區(qū)分惡意域名的家族,樣本數(shù)據(jù)集包括白樣本和黑樣本,白樣本是信譽(yù)度高的合法域名,黑樣本是已知的用于網(wǎng)絡(luò)攻擊的惡意域名。域名樣本數(shù)據(jù)集構(gòu)成如圖4 所示。
圖4 域名樣本數(shù)據(jù)集構(gòu)成
白名單數(shù)據(jù)本文采用Alexa 的域名數(shù)據(jù)。Alexa為全球知名的專門從事世界網(wǎng)站排名的公司,其數(shù)據(jù)集包含了多達(dá)幾十億網(wǎng)址的排名,域名數(shù)據(jù)有一定的權(quán)威性,本文選擇其排名前100 萬的域名作為白名單樣本數(shù)據(jù),如圖5 所示。
圖5 Alexa 網(wǎng)站排名數(shù)據(jù)示例
黑名單數(shù)據(jù)采用360 Netlab 公開的DGA 域名數(shù)據(jù),截至2022 年9 月已收集了190 多個(gè)DGA域名家族總計(jì)一百多萬的域名數(shù)據(jù)。360 Netlab 的DGA 域名數(shù)據(jù)集包含DGA 家族、域名和驗(yàn)證起始時(shí)間等信息,格式如圖6 所示。
圖6 360 Netlab DGA 域名數(shù)據(jù)示例
在進(jìn)行檢測(cè)模型訓(xùn)練前,需要對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,對(duì)每條域名進(jìn)行分類標(biāo)識(shí)。本文主要討論DGA域名的檢測(cè)方法,不對(duì)DGA 域名家族進(jìn)行分類,其中,域名分為合法域名(用0 標(biāo)識(shí))和惡意域名(用1 標(biāo)識(shí))兩類,預(yù)處理時(shí)白樣本分類標(biāo)識(shí)全部設(shè)為0,黑樣本分類標(biāo)識(shí)全部設(shè)為1。
檢測(cè)模型訓(xùn)練與驗(yàn)證針對(duì)前面準(zhǔn)備的域名樣本數(shù)據(jù)集,通過域名向量化處理、特征提取、模型訓(xùn)練、模型驗(yàn)證、參數(shù)調(diào)優(yōu)等一系列工作,最后輸出可用的DGA 域名檢測(cè)模型,流程如圖7 所示。
圖7 檢測(cè)模型訓(xùn)練流程
域名向量化處理是指通過一定的方法將文本形式的域名轉(zhuǎn)換為梯度提升樹算法可處理的數(shù)值矩陣,向量化轉(zhuǎn)換的結(jié)果將直接影響檢測(cè)模型的效果。目前,向量化轉(zhuǎn)換的方法有很多,包括域名長(zhǎng)度、元音字母比例、唯一字符比例、平均Jarccard系數(shù)等。DGA 最初產(chǎn)生的域名以隨機(jī)字符串為主,因此通過長(zhǎng)度統(tǒng)計(jì)、字符比例等統(tǒng)計(jì)特征來識(shí)別效果明顯,但近幾年DGA 算法生成的域名從字符分布上與正常域名擬合度非常高,統(tǒng)計(jì)特征與正常域名區(qū)分度不高??紤]到所有域名都是字符串,本文采用詞袋模型對(duì)樣本庫進(jìn)行建模,利用CountVectorizer 將域名樣本數(shù)據(jù)集進(jìn)行N-Gram 轉(zhuǎn)換處理,實(shí)現(xiàn)域名樣本向量化。轉(zhuǎn)換關(guān)鍵參數(shù)設(shè)置如表2 所示。
表2 域名N-Gram 轉(zhuǎn)換關(guān)鍵參數(shù)設(shè)置
域名樣本N-Gram 轉(zhuǎn)換處理核心代碼如圖8 所示。
圖8 域名向量化轉(zhuǎn)換核心處理代碼
CountVectorizer 在對(duì)域名樣本進(jìn)行N-Gram 處理時(shí),將統(tǒng)計(jì)詞在所有樣本中出現(xiàn)的詞頻,并根據(jù)詞頻排序,選擇頻度最高的前N個(gè)詞作關(guān)鍵詞,形成詞匯表和詞頻稀疏矩陣,作為后續(xù)梯度提升樹算法模型訓(xùn)練的輸入數(shù)據(jù)。域名向量化處理后提取的部分特征名稱和特征值如圖9 和圖10 所示。
圖9 從域名樣本集提取的詞匯表示例
圖10 向量化稀疏矩陣數(shù)據(jù)示例
模型訓(xùn)練的主要工作基于前面N-Gram 模型轉(zhuǎn)換生成的向量化域名樣本庫,對(duì)梯度提升樹算法模型進(jìn)行反復(fù)訓(xùn)練調(diào)優(yōu),得到DGA 域名檢測(cè)模型。
模型訓(xùn)練階段需先將向量化樣本數(shù)據(jù)通過調(diào)用train_test_split 函數(shù)拆分為訓(xùn)練集和驗(yàn)證集,然后基于訓(xùn)練集訓(xùn)練算法模型,再通過驗(yàn)證集評(píng)估模型 效果。
在模型訓(xùn)練開始階段,采用XGBoost 分類器的默認(rèn)算法參數(shù)值進(jìn)行DGA 域名檢測(cè)模型訓(xùn)練,并利用驗(yàn)證集對(duì)檢測(cè)模型進(jìn)行驗(yàn)證。
默認(rèn)算法參數(shù)訓(xùn)練得到的檢測(cè)模型驗(yàn)證結(jié)果和特征統(tǒng)計(jì)情況如圖11 和圖12 所示。
圖11 默認(rèn)參數(shù)模型訓(xùn)練驗(yàn)證結(jié)果統(tǒng)計(jì)
圖12 默認(rèn)參數(shù)模型訓(xùn)練特征提取統(tǒng)計(jì)
從上述驗(yàn)證結(jié)果可以看出,梯度提升樹算法在不做任何調(diào)優(yōu)的情況下,訓(xùn)練得到的DGA 域名檢測(cè)模型的綜合準(zhǔn)確率已達(dá)95%,合法域名檢測(cè)準(zhǔn)確率為93%、召回率為98%、F1 分?jǐn)?shù)為95%,DGA域名檢測(cè)準(zhǔn)確率為98%、召回率為93%、F1 分?jǐn)?shù)為95%,分類效果還是比較理想。
檢測(cè)模型調(diào)優(yōu)的主要工作是調(diào)整算法參數(shù)反復(fù)訓(xùn)練和驗(yàn)證,直至找到理想的參數(shù)設(shè)置。梯度提升樹算法包括分類算法和回歸算法,其重要參數(shù)分兩類,第一類是Boosting 框架的重要參數(shù),第二類是弱學(xué)習(xí)器即CART 回歸樹的重要參數(shù)。本文主要是用梯度提升樹算法對(duì)域名進(jìn)行分類,相關(guān)重要參數(shù)說明如表3 所示。
表3 GBDT 分類器調(diào)優(yōu)參數(shù)說明
梯度提升樹算法的參數(shù)之間會(huì)相互影響,為高效找到模型參數(shù)組合,需利用網(wǎng)格搜索和交叉驗(yàn)證方法。網(wǎng)格搜索和交叉驗(yàn)證方法根據(jù)預(yù)設(shè)的參數(shù)范圍,自動(dòng)調(diào)整模型參數(shù)設(shè)置,并對(duì)模型進(jìn)行驗(yàn)證分析,經(jīng)比較后給出最優(yōu)參數(shù)設(shè)置。參數(shù)優(yōu)化調(diào)整核心代碼如圖13 所示。
圖13 網(wǎng)格搜索和交叉驗(yàn)證參數(shù)調(diào)優(yōu)代碼
鑒于計(jì)算資源限制,本文只對(duì)部分關(guān)鍵參數(shù)進(jìn)行了調(diào)優(yōu)驗(yàn)證,XGBoost 分類器的最優(yōu)參數(shù)設(shè)置組合如表4。
表4 XGBoost 優(yōu)化參數(shù)設(shè)置
將XGBoost 分類器的參數(shù)設(shè)為上述過程找到的最佳參數(shù)搭配生成調(diào)優(yōu)后的檢測(cè)模型,利用驗(yàn)證集對(duì)調(diào)優(yōu)后的檢測(cè)模型進(jìn)行驗(yàn)證,檢測(cè)模型的綜合準(zhǔn)確率提升到98%,合法域名檢測(cè)準(zhǔn)確率為98%、召回率為99%、F1 分?jǐn)?shù)為98%,DGA 域名檢測(cè)準(zhǔn)確率為99%、召回率為98%、F1 分?jǐn)?shù)為98%。檢測(cè)模型驗(yàn)證結(jié)果如圖14 和圖15 所示。
圖14 優(yōu)化模型驗(yàn)證結(jié)果統(tǒng)計(jì)
圖15 優(yōu)化模型特征提取統(tǒng)計(jì)
為驗(yàn)證深度學(xué)習(xí)得到的DGA 檢測(cè)模型在作業(yè)環(huán)境的實(shí)際效果,本文從互聯(lián)網(wǎng)收集了不在本次構(gòu)建的樣本集中的DGA 域名,交檢測(cè)模型進(jìn)行判定。針對(duì)2 萬多個(gè)DGA 域名進(jìn)行檢測(cè),準(zhǔn)確率達(dá)100%。驗(yàn)證結(jié)果如圖16 所示。
圖16 檢測(cè)模型實(shí)測(cè)結(jié)果
隨著機(jī)器學(xué)習(xí)和人工智能技術(shù)的蓬勃發(fā)展,機(jī)器學(xué)習(xí)和人工智能技術(shù)逐漸深入到人們生活的方方面面,也不斷應(yīng)用到網(wǎng)絡(luò)安全威脅檢測(cè)中。DGA 域名是與C&C 服務(wù)器通信的主流手段,DGA 域名檢測(cè)成為檢測(cè)和防御僵尸網(wǎng)絡(luò)、勒索病毒的重要方式。本文基于梯度提升樹算法,探索機(jī)器學(xué)習(xí)在DGA域名檢測(cè)的實(shí)現(xiàn)方法,有重要的現(xiàn)實(shí)意義。
本文基于公開的DGA 域名和網(wǎng)站排名信息構(gòu)建域名樣本數(shù)據(jù),對(duì)梯度提升樹算法模型進(jìn)行訓(xùn)練和調(diào)優(yōu),得到基于梯度提升樹算法的DGA 域名檢測(cè)模型,實(shí)現(xiàn)了DGA 域名的高效檢測(cè),可作為DGA域名研究治理的參考實(shí)現(xiàn)方法。該檢測(cè)方法實(shí)驗(yàn)室驗(yàn)證效果良好,但鑒于作者能力和樣本數(shù)據(jù)的限制,檢測(cè)模型的檢測(cè)能力還需要在實(shí)際網(wǎng)絡(luò)中長(zhǎng)期 驗(yàn)證。