馮中華,黃 河,周 佳,劉曉毅,張文博
(1.中國電子科技集團公司第三十研究所,四川 成都 610041;2.中國人民解放軍61660 部隊,北京 100089)
近年來,勒索病毒、挖礦軟件、僵尸網絡等惡意軟件在互聯網泛濫成災[1],已嚴重威脅到互聯網的安全。這類惡意軟件的主要特點是被感染主機需接收命令和控制(Command and Control server,C&C)服務器的控制指令,被感染主機與C&C 服務器之間主要通過域名進行傳輸控制協議/網際協議(Transmission Control Protocol/Internet Protocol,TCP/IP)通信。因此,惡意域名檢測成為檢測和防御這類惡意軟件的重要方式。為了規避安全防護裝備的檢測和封堵,實現對被感染主機的長期持續控制,C&C 服務器與被感染主機之間的域名采用域名生成算法(Domain Generation Algorithm,DGA)生成[2],實現域名和互聯網協議(Internet Protocol,IP)地址快速動態變換。傳統惡意域名檢測主要采用威脅情報庫方式,檢測域名是否在惡意域名庫中。但隨著DGA 域名技術的不斷發展和改進,形成了大量的DGA 域名并快速變換[3],因此威脅情報庫異常龐大,從而導致檢測效率低下,威脅情報庫的更新周期也無法跟上DGA 域名的變換速度。DGA 域名的使用使得攻擊容易、防守困難[4],給傳統的基于威脅情報庫的惡意域名檢測方式帶來巨大挑戰。
機器學習技術成為應對DGA 域名的主要途徑,常見的有基于長短期記憶網絡(Long Short-Term Memory networks,LSTM)和卷積神經網絡(Convolutional Neural Network,CNN)等機器學習算法檢測DGA 域名[5]。相關的研究有:文獻[6]對樸素貝葉斯算法、XGBoost、多層感知機用于DGA域名檢測的效果進行了對比;文獻[7]通過分析DGA 域名與正常域名之間字符分布的差異,對IP產生的域名進行批量分類;文獻[8]通過LSTM 算法分析DGA 域名與正常域名之間的差異,判定每個域名是否為DGA 域名;文獻[9]考慮到DGA 域名的請求過程中會產生大量NXDomain,因此對NXDomain 進行分類,有效識別DGA 域名。
梯度提升樹(Gradient Boosting Decision Tree,GBDT)算法作為機器學習領域中的一個重要算法,是一種基于決策樹的集成算法,通過構造多個弱學習器為基學習器,結果累加作為輸出,在數據分析和預測中表現了突出的效果。XGBoost[10]是一個優化的分布式梯度提升庫,在梯度提升框架下實現機器學習算法,以高效、靈活、便攜的特點,在業界應用廣泛,非常適合解決DGA 域名檢測這種分類問題。
梯度提升樹算法屬于集成算法中boosting 類的一種算法,適用于解決現實中的分類和回歸問題。XGBoost 是優秀的梯度提升樹算法的工程實現,在業界應用非常廣泛。本文采用XGBoost 框架實現的梯度提升樹算法,研究利用梯度提升樹算法用于檢測DGA 域名的實現方法,總體思路如圖1 所示。

圖1 基于梯度提升樹的DGA 域名檢測方法研究思路
(1)樣本數據構建。梯度提升樹算法是一種有監督機器學習算法,需要充足的樣本數據支撐,收集的樣本數據包括正常域名樣本數據和DGA 域名樣本數據,并根據樣本數據類型標注樣本分類 標識。
(2)模型訓練調優。模型訓練調優包括樣本向量化處理、樣本特征提取、模型訓練和模型參數調優等內容。由于域名是字符串,而算法運算處理對象是數值,因此要先進行向量化處理,提取樣本特征數據,將文本型樣本轉換為算法可處理的數值型樣本,再基于數值樣本進行模型訓練調優,生成生產可用的DGA 域名檢測模型。
(3)模型實測。利用實際生產環境中提取到的域名對DGA 域名檢測模型進行驗證,檢驗訓練出的DGA 檢測模型在實際網絡中的效果。本文主要通過收集互聯網中非樣本數據中的DGA 域名,提交檢測模型進行判定,并根據判定結果驗證檢測模型的檢測準確率。
DGA 域名有很多家族,根據域名生成算法可以分為基于算術、基于哈希、基于詞典和基于排列組合4 類。根據360 網絡安全實驗室(360 Netlab)公開的DGA 域名數據統計分析,當前互聯網中最活躍的60 個DGA 域名家族的客戶端IP 和DNS 請求統計數據如圖2 和圖3 所示。

圖2 DGA 家族客戶端IP 數量統計

圖3 DGA 家族DNS 請求數量統計
由于不同家族采用的DGA 算法不同,其域名呈現的特征也不同,根據360 網絡安全實驗室的數據統計,互聯網常見的DGA 家族域名特征如表1 所示。
對于有監督機器算法而言,樣本集構建非常關鍵。為訓練出有效的檢測模型,域名樣本數據要足夠豐富和有代表性,并且有利于樣本打標處理,才能讓檢測模型學習到有效的特征數據,提高檢測的準確率。本文研究的目的主要是識別惡意域名,不區分惡意域名的家族,樣本數據集包括白樣本和黑樣本,白樣本是信譽度高的合法域名,黑樣本是已知的用于網絡攻擊的惡意域名。域名樣本數據集構成如圖4 所示。

圖4 域名樣本數據集構成
白名單數據本文采用Alexa 的域名數據。Alexa為全球知名的專門從事世界網站排名的公司,其數據集包含了多達幾十億網址的排名,域名數據有一定的權威性,本文選擇其排名前100 萬的域名作為白名單樣本數據,如圖5 所示。

圖5 Alexa 網站排名數據示例
黑名單數據采用360 Netlab 公開的DGA 域名數據,截至2022 年9 月已收集了190 多個DGA域名家族總計一百多萬的域名數據。360 Netlab 的DGA 域名數據集包含DGA 家族、域名和驗證起始時間等信息,格式如圖6 所示。

圖6 360 Netlab DGA 域名數據示例
在進行檢測模型訓練前,需要對數據進行預處理,對每條域名進行分類標識。本文主要討論DGA域名的檢測方法,不對DGA 域名家族進行分類,其中,域名分為合法域名(用0 標識)和惡意域名(用1 標識)兩類,預處理時白樣本分類標識全部設為0,黑樣本分類標識全部設為1。
檢測模型訓練與驗證針對前面準備的域名樣本數據集,通過域名向量化處理、特征提取、模型訓練、模型驗證、參數調優等一系列工作,最后輸出可用的DGA 域名檢測模型,流程如圖7 所示。

圖7 檢測模型訓練流程
域名向量化處理是指通過一定的方法將文本形式的域名轉換為梯度提升樹算法可處理的數值矩陣,向量化轉換的結果將直接影響檢測模型的效果。目前,向量化轉換的方法有很多,包括域名長度、元音字母比例、唯一字符比例、平均Jarccard系數等。DGA 最初產生的域名以隨機字符串為主,因此通過長度統計、字符比例等統計特征來識別效果明顯,但近幾年DGA 算法生成的域名從字符分布上與正常域名擬合度非常高,統計特征與正常域名區分度不高??紤]到所有域名都是字符串,本文采用詞袋模型對樣本庫進行建模,利用CountVectorizer 將域名樣本數據集進行N-Gram 轉換處理,實現域名樣本向量化。轉換關鍵參數設置如表2 所示。

表2 域名N-Gram 轉換關鍵參數設置
域名樣本N-Gram 轉換處理核心代碼如圖8 所示。

圖8 域名向量化轉換核心處理代碼
CountVectorizer 在對域名樣本進行N-Gram 處理時,將統計詞在所有樣本中出現的詞頻,并根據詞頻排序,選擇頻度最高的前N個詞作關鍵詞,形成詞匯表和詞頻稀疏矩陣,作為后續梯度提升樹算法模型訓練的輸入數據。域名向量化處理后提取的部分特征名稱和特征值如圖9 和圖10 所示。

圖9 從域名樣本集提取的詞匯表示例

圖10 向量化稀疏矩陣數據示例
模型訓練的主要工作基于前面N-Gram 模型轉換生成的向量化域名樣本庫,對梯度提升樹算法模型進行反復訓練調優,得到DGA 域名檢測模型。
模型訓練階段需先將向量化樣本數據通過調用train_test_split 函數拆分為訓練集和驗證集,然后基于訓練集訓練算法模型,再通過驗證集評估模型 效果。
在模型訓練開始階段,采用XGBoost 分類器的默認算法參數值進行DGA 域名檢測模型訓練,并利用驗證集對檢測模型進行驗證。
默認算法參數訓練得到的檢測模型驗證結果和特征統計情況如圖11 和圖12 所示。

圖11 默認參數模型訓練驗證結果統計

圖12 默認參數模型訓練特征提取統計
從上述驗證結果可以看出,梯度提升樹算法在不做任何調優的情況下,訓練得到的DGA 域名檢測模型的綜合準確率已達95%,合法域名檢測準確率為93%、召回率為98%、F1 分數為95%,DGA域名檢測準確率為98%、召回率為93%、F1 分數為95%,分類效果還是比較理想。
檢測模型調優的主要工作是調整算法參數反復訓練和驗證,直至找到理想的參數設置。梯度提升樹算法包括分類算法和回歸算法,其重要參數分兩類,第一類是Boosting 框架的重要參數,第二類是弱學習器即CART 回歸樹的重要參數。本文主要是用梯度提升樹算法對域名進行分類,相關重要參數說明如表3 所示。

表3 GBDT 分類器調優參數說明
梯度提升樹算法的參數之間會相互影響,為高效找到模型參數組合,需利用網格搜索和交叉驗證方法。網格搜索和交叉驗證方法根據預設的參數范圍,自動調整模型參數設置,并對模型進行驗證分析,經比較后給出最優參數設置。參數優化調整核心代碼如圖13 所示。

圖13 網格搜索和交叉驗證參數調優代碼
鑒于計算資源限制,本文只對部分關鍵參數進行了調優驗證,XGBoost 分類器的最優參數設置組合如表4。

表4 XGBoost 優化參數設置
將XGBoost 分類器的參數設為上述過程找到的最佳參數搭配生成調優后的檢測模型,利用驗證集對調優后的檢測模型進行驗證,檢測模型的綜合準確率提升到98%,合法域名檢測準確率為98%、召回率為99%、F1 分數為98%,DGA 域名檢測準確率為99%、召回率為98%、F1 分數為98%。檢測模型驗證結果如圖14 和圖15 所示。

圖14 優化模型驗證結果統計

圖15 優化模型特征提取統計
為驗證深度學習得到的DGA 檢測模型在作業環境的實際效果,本文從互聯網收集了不在本次構建的樣本集中的DGA 域名,交檢測模型進行判定。針對2 萬多個DGA 域名進行檢測,準確率達100%。驗證結果如圖16 所示。

圖16 檢測模型實測結果
隨著機器學習和人工智能技術的蓬勃發展,機器學習和人工智能技術逐漸深入到人們生活的方方面面,也不斷應用到網絡安全威脅檢測中。DGA 域名是與C&C 服務器通信的主流手段,DGA 域名檢測成為檢測和防御僵尸網絡、勒索病毒的重要方式。本文基于梯度提升樹算法,探索機器學習在DGA域名檢測的實現方法,有重要的現實意義。
本文基于公開的DGA 域名和網站排名信息構建域名樣本數據,對梯度提升樹算法模型進行訓練和調優,得到基于梯度提升樹算法的DGA 域名檢測模型,實現了DGA 域名的高效檢測,可作為DGA域名研究治理的參考實現方法。該檢測方法實驗室驗證效果良好,但鑒于作者能力和樣本數據的限制,檢測模型的檢測能力還需要在實際網絡中長期 驗證。