?

基于N-gram 和Transformer 的DGA 惡意域名檢測

2022-10-18 01:48蘆天亮閆尚義張建嶺
關鍵詞:域名字符詞組

楊 成, 蘆天亮, 閆尚義, 張建嶺

(中國人民公安大學信息網絡安全學院, 北京 100038)

0 引言

如今,人們的生活越來越離不開互聯網,截至2021 年6 月,我國網民規模達10.11 億,較2020 年底新增網民2 175 萬,互聯網普及率達71.6%[1]。但是互聯網的應用在豐富人們生活的同時,也帶來了很多安全隱患。 在訪問網站時,輸入的域名會通過DNS 服務解析為IP 地址,進而定位到目標服務器瀏覽相應的Web 服務。 因為域名系統本身沒有安全檢測機制,所以惡意軟件、病毒常使用DNS 服務與外部服務器通信[2]。

惡意域名作為惡意軟件、病毒與惡意服務器的通信載體,被黑客APT 組織廣泛運用。 為滿足攻擊者的攻擊需求,以及防止惡意域名被安全廠商發現,無法繼續展開攻擊行為,攻擊者常使用域名生成算法(Domain Generation Algorithm, DGA)生成大量的惡意域名,還可以實現隱藏真正惡意服務器的目的。

現有惡意域名檢測算法檢測效果不夠好,并且無法挖掘域名深層次特征。 鑒于此,本文提出了一種新的惡意域名檢測方法,主要工作和貢獻如下:

(1) 在數據處理階段,使用N-gram 算法處理數據集,并使用word-hashing 技術增添域名中字符的首尾位置信息,該模型能夠深入地學習惡意域名的字符位置特征,增強模型的魯棒性;

(2) 在模型訓練階段,運用Transformer 模型識別惡意域名,進一步加深了模型對惡意域名中字符位置信息、字符特征等深層特征的學習,提升了識別的準確率;

(3) 對Alexa 和360 安全實驗室提供的數據集進行實驗,與Nalve Bayesia 算法、XGBoost 算法、RNN 模型、LSTM 模型等進行對比。 實驗表明,本文提出的算法的準確率達96.04%, 召回率達95.99%,優于大多數主流惡意域名檢測算法。

1 相關工作

1.1 惡意域名生成算法

攻擊者為了應對封堵IP 和域名等措施,使用DGA 算法生成大量候選域名列表,域名列表會隨DGA 選擇參數的不同而不斷變化,有效地掩護了真實的惡意服務器,為傳輸病毒、木馬、惡意程序提供了便捷。 域名生成算法使用時間、特定字符串等參數通過異或、哈希等操作生成一系列偽隨機字符串[3]。 隨著學者對DGA 算法研究的深入,針對惡意域名檢測的方法也在不斷地完善與發展,但在檢測已有惡意域名的同時,新的DGA 家族變體也隨之出現,360 安全實驗室公開的惡意域名家族多達54 個。

DGA 選擇的生成參數,主要分為2 類。

(1) 靜態DGA。 生成的域名不依賴種子的域名生成算法,這類域名生成算法有一定幾率在生成時產生相同的域名。

(2) 基于種子的DGA。 根據種子所選的不同分為2 類:

①一類使用硬編碼的種子生成域名,如使用推特熱門話題作為種子;以歐洲中央銀行每天發布的外匯參考匯率作為種子;以日期作為隨機種子。

②一類基于字典生成的域名,該域名多為單詞組合生成,從結構上看與合法域名較為相似。

每類DGA 代表的惡意域名家族見表1。

表1 域名生成算法分類

1.2 惡意域名檢測技術

惡意域名檢測研究主要分為2 類:基于流量分析和基于域名字符特征的惡意域名檢測[4]。

(1)基于流量分析的惡意域名檢測

基于流量分析的惡意域名檢測方法[5]主要從域名使用者運用的Fast-Flux 和Domain-Flux 技術研究。 Fast-Flux 技術[6]用于應對防御者進行IP 限制策略,攻擊者在擁有大量主機的基礎上,為每個主機的IP 配置較小的TTL 值,實現惡意域名通過DNS解析IP 地址的快速轉變,使防御者的IP 限制策略失效。 Domain-Flux 技術[7]使用DGA 生成大量的備用域名,只從中選取一個域名作為命令與控制服務器(Command and Control,C&C)的域名,該技術使得域名禁用的策略失效。

(2)基于域名字符特征的惡意域名檢測

由于IP 地址不便于記憶,為了滿足人們記憶和訪問的需求,所以發明了域名,其本身包含豐富的特征信息。 合法域名使用的域名長度往往小于惡意域名的長度;參考英文單詞的結構[8],合法域名的平均記憶字元數常小于惡意域名的對應值,并且合法域名中不常見到超過連續3 個的重復字母,而DGA生成的域名可能包括更多的連續字符。

使用機器學習方法的惡意域名檢測常使用上述字符特征進行研究。 根據合法域名與惡意域名字符分布上的差異,Yadav 等[9]通過查看同一組IP 地址中域名的unigram 和bigram 特征分布檢測惡意域名;Agyepong 等[10]根據字符分布的頻率分析和域名加權分數的方法檢測DGA;王紅凱等[11]利用域名長度等特征提出了一種基于隨機森林識別惡意域名的方法;Shi 等[12]結合字符特征、DNS 特征和網站的whois 信息使用極限學習機(Extreme Machine Learning,ELM)模型識別惡意域名。

傳統機器學習的方法提取域名字符特征分析惡意域名工作量大,耗費的時間過長,并且該方法提取的特征可能會被DGA 使用者回避,如基于字典的域名生成算法產生的惡意域名不易被傳統方法檢測。深度學習方法較傳統機器學習方法的模型更復雜,它可以挖掘數據集深層次的特征,能夠從訓練集中的有限特征集合中推導出新的特征。

趙科君等[13]利用word-hashing 技術[14]將所有域名轉換為二元語法字符串,使用詞袋模型將域名映射到了高維的向量空間,之后搭建5 層深度神經網絡對轉換為高維向量的域名進行訓練分類檢測。傳統RNN 算法難以解決惡意域名實驗中梯度擴散的情況,Xu 等[15]使用雙向遞歸神經網絡算法提取有效的語義特征,使用遞歸網絡有效地解決了梯度擴散和梯度爆炸的問題。

惡意域名檢測問題中,許多學者使用LSTM 模型,試圖尋找域名中更多的特征。 Ghosh 等[16]使用改進的LSTM 模型,在傳統LSTM 模型上加入ALOHA(Auxiliary Loss Optimization for Hypothesis Augmentation)[17],增加了對基于詞匯生成的惡意域名的檢測準確率。 徐國天等[18]為了解決獨熱編碼中稀疏矩陣和維度災難等問題,采用詞向量嵌入對域名中的字符編碼,并且融合卷積神經網絡和長短期記憶網絡訓練惡意域名檢測模型,提高了算法的效率。 張斌等[19]使用CNN 網絡提取域名中字符組合的特征避免N-gram 的特征稀疏分布的問題,之后使用LSTM 挖掘域名字符串中的上下文信息。 王甜甜等[20]構建雙向長短時記憶神經網絡和卷積神經網絡的混合模型BiLSTM-CNN,在其構建的待檢測域名集合中實現了域名分類。 張鑫等[21]為了解決縮略域名上存在的誤報率高的問題,采用LSTM 改進了Transformer 模型的編碼方式,以更好地捕獲字符位置信息,該模型能有效區分DGA 和縮略域名。

從上面的研究可以看出,學者們在DGA 的檢測中,在對網絡流量、DNS 解析信息、域名字符等信息統計的基礎上,利用機器學習或深度學習算法進行惡意域名分類或惡意域名家族的聚類。 但對于某些惡意域名家族可能并不適用,并且攻擊者會回避隨機生成域名的特征,如suppobox 家族的域名。 面對這類域名,需要挖掘更好的統計特征,本文使用Ngram 模型,并運用包含注意力機制的Transformer 模型,該算法能較好地處理文本數據,可以有效地對惡意域名進行分類。

2 惡意域名檢測模型

為了進一步提升識別惡意域名的準確率,本文基于Transformer 網絡架構,提出了基于N-gram、word-hashing、特征增益的惡意域名檢測方法,模型分為數據處理、模型訓練、域名類別預測3 個階段,從位置信息、字符特征等方面更深入地挖掘了惡意域名的特點,檢測過程如圖1 所示。

圖1 模型檢測流程

2.1 word-hashing

自然語言處理問題中,常使用one-hot encoding的方法將文本信息轉換為深度學習可以直接使用的向量形式,但是其生成的向量非常稀疏,面對onehot encoding 產生的稀疏矩陣,常使用word2vec 技術將高維向量空間映射到低維向量空間。 因為惡意域名的樣本單元以字符串為單位,沒有上下文環境,會破壞域名的特征信息,所以word2vec 技術無法對惡意域名樣本轉換成向量后的空間降維。

本文采用word-hashing 技術的目的是降低詞袋向量中的維數,word-hashing 技術基于N-gram 方法,對每一個字符串的首部和尾部添加一個符號標志位(如“#”),之后使用N-gram 方法處理,以域名“www.baidu.com”為例,處理過程如圖2 所示。

圖2 word-hashing 算法處理“www.baidu.com”

因為英文字母是有限的,所以選擇bigram 或trigram 算法產生的子字符串結果是有限的,其維度不會過大,相較于使用one-hot Encoding 方法會產生巨大的稀疏矩陣,選擇N-gram 算法可以提高資源利用率。 針對惡意域名檢測問題,基于N-gram 的word-hashing 方法將域名樣本轉化為向量,一定程度上節約了深度學習搭建時的內存損耗,并且特征模型不用隨樣本增加而修改。

2.2 N-gram

N-gram 是一種基于統計的語言模型算法,在自然語言處理的過程中實現了“聯想”行為。 對于一個確定的字符串,N-gram 算法處理過的結果是該字符串所有長為N 的子字符串,對于域名“www.linkedin.com”,當N=2 時,處理過程如圖3 所示。

圖3 N-gram(N=2)算法處理“linkedin.com”

N-gram 算法認為一個單詞的出現依賴其他的若干詞語,因此可以用來判斷一個句子的構成是否合理,并且,當獲得足夠多的信息時,所預測的信息越準確。

惡意域名檢測中運用N-gram 算法以字母為最小單元,并且為了避免N-gram 結果冗余,僅使用二級域名作為模型的輸入部分,將頂級域忽略。 假設我們現在有n個字母組成的域名s= (w1,w2,…,wn),每一個字母wi都與第一個字母w1到其前一個字母wn-1有關,如式(1)所示。

式(1)在運算過程中會帶來過多的變量,同時對于N-gram 模型,在N取的較大時,得到的結果會十分稀疏。 為了解決這個問題,利用馬爾可夫鏈的假設,第i個字母wi出現的概率僅與當前字母前N個字母有關,通過馬爾可夫鏈的假設大幅縮減了式(1)的計算量,此時的情況如式(2)所示。

2.3 Transformer

Transformer 網絡[22]是融入注意力機制的Encoder-Decoder 模型。 常見的Encoder-Decoder 框架使用RNN 網絡實現,但因其依賴序列順序特征,使訓練不能并行進展,所以效率較慢。 在Transformer網絡中,因為大量使用自注意力機制,該網絡可以并行處理數據,并且自注意力機制在處理過程中,輸入和輸出都來源同一序列,能夠很好地捕獲全局信息。在惡意域名檢測的應用中,并沒有生成文本,所以主要用到了Transformer 結構中的Encoder 部分,本文使用的Transformer 結構如圖4 所示。

圖4 Transformer(Encoder 部分)結構

在Transformer 網絡中沒有像RNN 中的順序結構,所以需要元素的位置信息,位置信息的計算如式(4)所示。

其中,pos為字母在域名字符串中的位置,i是字母向量的位置,dmodel是字母向量的維度,在i為奇數時,使用cos 函數處理,i為偶數時,使用sin 函數處理。

Transformer 的核心是多頭注意力機制,多頭注意力機制由多個自注意力機制構成。 自注意力機制是將Q(Query)、K(Key)進行相似度計算,與V(Value)相乘后得到權重求和的過程,如式(5)所示。

其中,n表示多頭注意力機制中的頭數,Wo是線性變化的參數矩陣。

3 實驗

3.1 數據集和測試環境

本文使用的數據集包括合法域名和惡意域名,合法域名來自Alexa 網站收集的排名前100 萬的域名集合,惡意域名來自360 網絡安全實驗室公開收集的不同DGA 家族的惡意域名,例如nymaim、necurs等知名惡意域名家族的惡意域名共計100萬條。

本文的實驗基于keras 的深度學習框架,后端使用Tensorflow 模塊。 具體的實驗環境如表2所示。

表2 實驗環境配置

3.2 數據處理

隨機抽取合法域名和惡意域名各1 萬條數據作為實驗的數據集,對于每一個域名,因為合法域名和惡意域名一級域名的特征不明顯,所以舍棄一級域名,構成數據集D1。

對于數據集D1,經過bigram 處理后共有1 417個詞組元素,trigram 處理后共有31 220 個詞組元素,4-gram 處理后共有127 469 個詞組元素,5-gram處理后共有138 636 個詞組元素。 對D1中的合法域名和惡意域名分別使用N-gram 算法,得到域名的詞組元素分布如圖5(a)和(b)所示。

圖5 合法域名和惡意域名詞組元素頻率的分布(部分)

由合法域名和惡意域名的N-gram(N=2,3)結果分布,可以看出DGA 生成的惡意域名的詞組元素與合法域名分割的詞組元素頻率有很大的差異,同時惡意域名的詞組元素分布較為均勻,而合法域名的詞語元組分布差異很大,所以bigram 分割后產生的詞組元素具有較好的域名分類特征。

N=4,5 時,由于詞組元素位數增多,合法域名字符串已經可以看出明顯的單詞特征,而D1數據集中的惡意域名經過N-gram 算法處理后,不存在這些類詞組元素的字符串,通過分析N-gram 算法處理后,詞組元素的數字特征如表3 所示。

表3 N-gram 算法結果分析

分析中使用均值、方差、偏度和峰度作為數字特征的指標分析兩類域名N-gram 處理后的結果。 均值是表示詞組元素分布集中趨勢的指標;方差能看出詞組元素的數量變化趨勢;偏度能夠看出域名的詞組元素分布是否對稱;峰度能夠得到域名詞組元素數據分布相較正態分布的不同。

從表3 可以看出,除N=1 外,N-gram 處理后合法域名和惡意域名的詞組元素具有相同的特征。 在N=2,3,4,5 時,惡意域名詞組元素的方差均小于合法域名的詞組元素,方差小說明域名詞組元素分布的均勻,為隨機生成的域名;方差大,則詞組元素分布集中,是人為干預產生的域名。 惡意域名詞組元素的偏度小于合法域名詞組元素,在數據分布上,惡意域名較合法域名有更好的對稱性。 從峰度來看,惡意域名的數據分布比合法域名的數據分布更貼合正態分布。

以bigram 處理后的數據為例,實驗中使用word-hashing 技術,在每個二級域名的首部和尾部添加上標識符“#”,數據元素由1 417 個增加到了1 486 個,首尾標志的增加標注了域名的部分位置信息,在沒有大幅造成冗余的同時,豐富了識別過程中的特征。 所以使用N-gram 算法和word-hashing 組合的數據預處理方法能夠有效提取域名的字符頻率和字符位置信息特征。

3.3 實驗結果及分析

3.3.1 評價指標

實驗中使用準確率(Acc)評價算法對域名的分類精度,使用召回率(recall)評價模型對惡意域名的分類情況,準確率的計算公式如式(8)所示。

其中,TP表示惡意域名且被預測為惡意域名的數量,FN表示惡意域名但被預測為合法域名的數量,TN表示合法域名且被預測為合法域名的數量,FP表示合法域名但被預測為惡意域名的數量。

召回率的計算公式如式(9)所示。

由式(9)可以看出TP+FN為數據集中惡意域名的總數,所以召回率可以計算出模型對惡意域名的檢測效果。

為了驗證本文提出的基于bigram 和Transformer的框架檢測惡意域名的結果,本文設計了4 組實驗,以下實驗均在keras 深度學習框架下,Tensorflow 后端和sklearn 模塊中實現。

3.3.2 N-gram 算法對比實驗

為了選擇出效果更好的語言模型,對N-gram 技術中N的取值進行分析。 對于N≥3 時,雖然可以捕獲更多的特征,對字符預測的能力也顯著提升,但是在模型中產生大量的稀疏矩陣,容易導致算出的概率失真,并且參數空間很大會造成維數災難,模型在訓練時對時間和內存會產生巨大的損耗,導致實驗不能順利進行。 在原有N-gram 和Transformer 檢測模型的基礎上,使用基于L1 正則化的特征選擇算法對特征進行優化,經過特征增益處理,除了實現篩選特征的目的,還對高維的矩陣進行了降維,大大降低了實驗時間和內存損耗,使實驗可行。

對N的取值進行測試,探究最合適的N的取值,結果如表4 所示。

表4 N-gram 算法對比

實驗結果表明,模型中使用brigram 處理數據得到的效果最好。 隨著N值的變化,雖然得到的詞組元素種類不斷增加,但因為詞組元素的基本單位在擴充,域名中符合同一種類的詞組元素的數目必然減少,所以訓練得到的有效特征減少。 以“linkedin”為例,其“li”詞組元素在數據集D1中共有749 個,經過trigram 處理后,“lin”詞組元素在D1中共有192 個,少于二元詞組元素處理的結果。 同時,訓練得到的模型識別的準確率不斷降低,且召回率不斷升高,說明發生了過擬合現象。

3.3.3 網絡模型對比實驗

數據集均用bigram 處理,將輸出后的結果用經典的機器學習和深度學習算法進行比較,實驗選取Nalve Bayesia 算法、XGBoost 算法、RNN 模型、LSTM模型與Transformer 模型進行對比,實驗結果如圖6所示。

圖6 模型訓練算法對比

可以看出,由于Transformer 模型能夠提取更多的字母的位置關系,同時使用多頭注意力機制,算法能夠捕捉更多的字詞組合間的特征,所以在惡意域名分類問題上取得了較好的效果。

3.3.4 多頭注意力head 對比實驗

對于Transformer 模型中,head 的數量也會對實驗產生影響,通過改變head 的值進行實驗,實驗結果如圖7 所示。

圖7 準確率和召回率變化趨勢

從圖7 可以看到,當head 數量為5 時,模型的Acc和recall均達到最好效果,此時改變head 數量并不能對模型的檢測效果有所提高,即增加對特征矩陣的線性映射的次數,無法在增加的線性空間內提取出有效的特征。 根據該實驗結果,檢測模型中head的值取5 時會使惡意域名檢測效果達到最優。

3.3.5 消融實驗對比

為了進一步驗證檢測模型中各部分對實驗的影響,對本文提出的N-gram 和Transformer 惡意域名檢測模型進行消融實驗。 首先使用bigram 和Transformer 實驗,為了驗證word-hashing 的有效性,使用word-hashing 處理后的數據集進行惡意域名檢測;之后通過增加L1 正則化,對特征增益前后的模型進行對比,驗證特征增益對模型的影響,實驗結果如表5所示。

表5 消融實驗分析

從表5 可以看出,使用word-hashing 可以增加域名字符串中的首尾位置信息,使模型檢測的準確率和召回率小幅提升。 添加L1 正則化后,模型訓練的時間大幅減小,同時,模型的準確率增加了1.80%,召回率增加了1.15%,結果表明,L1 正則化后增益的特征能夠更準確地檢測出惡意域名。

綜上所述,本文提出的N-gram 和Transformer 框架可以有效、準確地檢測惡意域名。

4 結語

針對現有惡意域名檢測算法提取深層特征較少的現狀,提出了N-gram 和Transformer 的深度學習框架,提高了域名內字母位置信息、字母間組合關系特征的提取效果。 針對惡意域名檢測問題,本框架還有需要改進的方面,域名預處理嘗試使用組合Ngram 的結果;對網絡模型優化,使得更貼合惡意域名的應用場景,提高識別的準確率。

接下來將會挖掘字母間其他深層的特征,如,相鄰的輔音分布、輔音元音組合的統計。 此外,針對對抗生成網絡、文本生成算法[23]進一步研究,網絡結構是否能抵御惡意樣本的攻擊也是今后研究的主要內容。

猜你喜歡
域名字符詞組
論高級用字階段漢字系統選擇字符的幾個原則
《江蘇教育研究》官方網站域名變更公告
《江蘇教育研究》官方網站域名變更公告
字符代表幾
一種USB接口字符液晶控制器設計
圖片輕松變身ASCⅡ藝術畫
副詞和副詞詞組
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合