張 斌 廖仁杰
(中國人民解放軍戰(zhàn)略支援部隊信息工程大學 鄭州 450001)
(河南省信息安全重點實驗室 鄭州 450001)
攻擊者通過構(gòu)造惡意域名達到誘導用戶點擊釣魚網(wǎng)站、搭建命令與控制通道等目的,并且可結(jié)合Fast-Flux和Domain-Flux技術(shù)增強惡意域名躲避檢測的能力[1],如何準確、高效地檢測惡意域名是網(wǎng)絡安全領域亟需解決的問題。
基于合法域名和惡意域名在字符構(gòu)成上的差異[2],通常將惡意域名檢測轉(zhuǎn)化為對域名字符串的短文本分類研究。目前,基于域名字符串進行惡意域名檢測的方法按特征提取的不同主要分為以下兩類:第1類是基于手工特征提取的惡意域名檢測方法,該方法從自然語言分析角度提取語言特征,如詞素指標[2],有意義字符占比[3],N-Gram語法特征的KL散度、編輯距離與Jaccard系數(shù)[4]等作為域名特征,結(jié)合機器學習進行檢測,此類方法對由隨機字符拼接組成的惡意域名具有較好檢測效果,但檢測效果依賴特征工程,對不斷更新的惡意域名變種需設計新的特征集,同時對通過單詞拼接方式生成的惡意域名檢測誤報率較高;第2類是基于深度學習模型卷積神經(jīng)網(wǎng)絡(Convolution Neural Network,CNN)和長短期記憶網(wǎng)絡(Long Short Term Memory,LSTM)的惡意域名檢測方法:基于CNN的檢測模型通過卷積核提取域名字符串中不同長度字符組的局部特征,設計CNN串聯(lián)、并聯(lián)[5,6]結(jié)構(gòu)進行檢測,此類模型檢測速度快,但為提高惡意域名檢測準確率,還需提取域名字符串深層次序列特征[7];基于LSTM[8]的惡意域名檢測模型通過提取域名字符串的序列特征進行域名檢測,如以域名字符串的嵌入向量為輸入的LSTM模型[9]和代價敏感的LSTM.MI[10]模型,比僅采用CNN的檢測模型具有更高檢測準確率,但僅考慮單字符序列特征,對單詞拼接類惡意域名檢測效果不佳。文獻[11]設計CNN與LSTM相結(jié)合的惡意域名檢測模型,采用混合詞向量作為輸入,通過結(jié)合域名字符串單字符和雙字符序列特征提高模型多分類檢測性能,但對單詞拼接類惡意域名的檢測準確率還需進一步提高。
綜上,為提高深度學習模型檢測惡意域名的準確率,考慮域名字符串中不同長度字符(單字符與多字符)組合的序列特征差異,在文獻[11]的基礎上,提出一種CNN與LSTM相結(jié)合的包含多條特征提取分支的惡意域名檢測模型。其中,CNN用于提取域名不同長度字符組合的局部特征,LSTM用于提取不同長度字符組合局部特征的序列特征,同時引入注意力機制為LSTM不同位置輸出的序列特征動態(tài)分配權(quán)值,通過特征加權(quán)降低填充字符對特征提取的干擾并增強序列特征提取能力。實驗表明,結(jié)合域名不同長度字符組合的序列特征進行域名檢測可有效提高惡意域名檢測準確率,尤其是單詞拼接類惡意域名的檢測準確率。
基于CNN與LSTM提取域名單字符和多字符組序列特征進行惡意域名檢測的模型組成如圖1所示。
圖1 基于CNN與LSTM相結(jié)合的惡意域名檢測模型(LSTM-Parallel CNN ATT-LSTM,L-PCAL)
該模型由輸入層、特征提取層和輸出層構(gòu)成。其中,輸入層將域名字符串轉(zhuǎn)換為能被深度學習模型處理的數(shù)值向量,包含字符串長度補齊、onehot編碼和嵌入向量學習3個階段,輸出域名字符串的嵌入向量。
特征提取層包含LSTM層、1維卷積神經(jīng)網(wǎng)絡(One-Dimension Convolution Neural Network,1D-CNN)層和結(jié)合注意力機制的長短期記憶網(wǎng)絡(ATTention-based LSTM,ATT-LSTM)層,其中LSTM層用于提取域名字符串單字符序列特征;1維卷積神經(jīng)網(wǎng)絡層采用不同尺寸卷積核提取域名字符串中相鄰字符局部特征,該層可看作域名字符串的N-Gram特征提取器;結(jié)合注意力機制的長短期記憶網(wǎng)絡層采用LSTM提取1D-CNN輸出的深層次序列特征并結(jié)合注意力機制降低填充字符對序列特征提取的干擾。
輸出層將LSTM層輸出特征與多個ATT-LSTM分支輸出特征進行拼接,再經(jīng)過Dropout層和激活函數(shù)為Sigmoid的全連接層處理,輸出域名檢測結(jié)果y。
本層的輸入為2級域名標簽。首先,將輸入字符串長度統(tǒng)一為L,根據(jù)域名標簽第1個字符必須為字母的限制,在長度不足L的域名標簽前端填充“0”字符,得到長度為L的域名字符串,記為
其中,ci為域名字符串中第i個 字符,ci∈{[a-z],[0-9],-},i∈{1,2,...,L}。然后,建立以域名字符串中字符為鍵,one-hot向量為索引值的字典D,并根據(jù)字典將域名字符串S轉(zhuǎn)化為數(shù)值向量,記為
其中,D(ci)為字符ci在D中 的索引值,i∈{1,2,...,L}。S D由one-hot向量組成,其特征維度大、特征值分布稀疏的特點將影響模型檢測效果,采用Word2Vec技術(shù)[12]將S D轉(zhuǎn)換為低維、稠密的嵌入向量,記為
其中,ei∈Rd為第i個字符的嵌入層向量,i∈{1,2,...,L},d為字符嵌入向量維度。
本層通過深度學習網(wǎng)絡提取域名字符串的不同長度字符組合的序列特征,該層由LSTM層、1D-CNN層和ATT-LSTM層構(gòu)成。
2.3.1 LSTM層
該層用于提取域名字符串單字符序列特征[9],將域名字符串嵌入向量 SE=[e1e2...eL]按e1至eL的順序輸入到LSTM單元進行特征提取,將輸入eL后的輸出作為域名字符串的單字符序列特征,記為
其中,LSTM()表示LSTM單元的特征運算,hL-1=LSTM(hL-2,eL-1)為輸入eL-1時LSTM隱藏層輸出,dLSTM為LSTM單元隱藏層輸出向量維度。
2.3.2 1D-CNN層
域名字符串的N-Gram統(tǒng)計數(shù)據(jù)反映合法域名與惡意域名在不同長度字符組合的差異,是惡意域名檢測的常用特征,但傳統(tǒng)N-Gram特征存在隨N值增大,特征維度指數(shù)增加、特征值稀疏分布的問題。為避免該問題,采用1D-CNN將域名字符串中相鄰字符組合轉(zhuǎn)化為維度固定、數(shù)值分布稠密的特征向量??紤]已有研究和計算開銷,選取尺寸為2,3,4的卷積核提取域名字符串的2-Gram,3-Gram和4-Gram特征。
對于域名字符串嵌入向量 SE=[e1e2...eL],1D-CNN通過尺寸為k,k∈{2,3,4}的卷積核w,w∈Rk×d進行特征提取包含以下兩個步驟:卷積運算,將卷積核看作數(shù)據(jù)處理窗口,提取 SE中與卷積核尺寸相同的數(shù)據(jù)與卷積核進行點積運算,再通過非線性激活函數(shù)運算得到對應位置的特征輸出;卷積核移動,改變卷積核在 SE的位置進行卷積運算得到不同位置的特征值,輸出SE中長度為k的字符組合特征x
其中,j為卷積核w的 位置參數(shù),m與n為卷積運算參數(shù),·為乘運算,f為非線性激活函數(shù),b為偏置項,w與b通過模型訓練進行更新。在實際中,采用多個尺寸相同但參數(shù)不同的卷積核進行特征提取,記寬度為k的卷積核個數(shù)為Nk,將Nk個卷積核所提取到的特征向量拼接,記為
其中,xi為第i個 卷積核提取得到的長度為k的字符組合特征。
2.3.3 ATT-LSTM層
為利用域名字符串上下文語義信息進行域名檢測,采用LSTM提取1D-CNN輸出多字符組特征包含的序列特征??紤]輸入層用于字符串長度填充的“0”字符對特征提取造成的干擾,引入前向反饋注意力機制[13],通過引入注意力自學習函數(shù)動態(tài)為不同位置的LSTM單元輸出分配權(quán)重,增強序列特征提取過程中抗干擾能力[14],結(jié)合注意力機制的LSTM單元如圖2所示。
圖2 結(jié)合注意力機制的LSTM單元(ATT-LSTM)
圖中特征向量為卷積核尺寸為k的卷積層提取得到的特征向量輸入到LSTM單元得到不同位置的隱藏層輸出,記為
其中,ht為輸入(:,t)時的隱藏層輸出,中第t列數(shù)據(jù)構(gòu)成的向量。為計算不同位置隱藏層輸出的權(quán)重,引入自學習函數(shù),記為
其中,f為tanh函數(shù),Wα為網(wǎng)絡權(quán)重,bα為偏置項,Wα和bα通過模型訓練進行參數(shù)更新。采用Softmax函數(shù)對權(quán)重進行歸一化,得到歸一化權(quán)重,記為
將隱藏輸出h與歸一化權(quán)重α進行加權(quán)求和,得到字符數(shù)量為k的多字符組序列特征,記為
將3個ATT-LSTM分支輸出的多字符組序列特征向量與LSTM層提取的單字符序列特征向量進行拼接,得到域名字符串的特征向量F
將F輸入到激活函數(shù)為Sigmoid的全連接層,輸出域名判別結(jié)果y,其中y∈[0,1]。在訓練過程中加入Dropout層,即按照一定概率忽略域名字符串特征向量中部分位置的特征值,以降低模型訓練過擬合的風險。采用交叉熵損失函數(shù)對檢測模型訓練效果進行量化,定義為
其中,N為訓練樣本數(shù)量,為樣本真實標簽,yi為模型預測標簽。
本節(jié)驗證L-PCAL的有效性,選用Tensorflow 2.0和深度學習庫Keras,GPU為NVIDA GTX 860M,使用Python語言實現(xiàn)檢測模型搭建、訓練與測試。
數(shù)據(jù)集中合法域名樣本來自Alexa統(tǒng)計的域名列表[15],隨機選擇35000條數(shù)據(jù)構(gòu)成合法域名數(shù)據(jù)集;惡意域名樣本來自360網(wǎng)絡實驗室[16],考慮到不同惡意域名樣本數(shù)量不均衡(如madmax類僅含1條數(shù)據(jù),emotet類包含370747條數(shù)據(jù))對模型訓練和檢測效果的影響,進行以下處理:對于樣本數(shù)量大于2000的惡意域名類別,隨機選取2000個樣本作為實驗樣本,其次,刪除樣本集中數(shù)量小于5的惡意域名類別,最終構(gòu)成包含41個類別,樣本總數(shù)為35199的惡意域名數(shù)據(jù)集。將惡意域名與合法域名數(shù)據(jù)集合并后按5:1:1的數(shù)量比例拆分為訓練集、驗證集和測試集,其中合法域名標簽設置為0,惡意域名標簽設置為1。
選取Bi-Gram DT,LSTM[9],Bi-LSTM[5],Stack-CNN[5],Parallel-CNN[6],L-PCL,PCAL和CAL-PCAL作為L-PCAL的對比模型,其中Bi-Gram DT為基于域名字符串Bi-Gram特征的決策樹檢測模型、L-PCL為圖1模型中去除注意力機制后構(gòu)成的模型,PCAL為圖1模型中去除LSTM層后構(gòu)成的模型,CAL-PCAL為圖1模型中將LSTM層替換為卷積核尺寸為1的卷積層與ATT-LSTM單元串聯(lián)構(gòu)成的模型。
實驗參數(shù)設置如下:模型參數(shù):LSTM隱藏層輸出維度為64;CNN中非線性激活函數(shù)為線性整流函數(shù)(Rectified Linear Unit,ReLU),均添加偏置項,不同尺寸卷積核數(shù)量均為32;Stack-CNN中卷積核尺寸為3和2;Parallel-CNN中卷積核尺寸為2,3,4;Dropout層丟失率為0.5,其余網(wǎng)絡參數(shù)均為默認設置。輸入層參數(shù):域名字符串長度L為60,嵌入向量維度為32。模型訓練:每輪迭代訓練樣本數(shù)量為100,為防止訓練過擬合,將在驗證集上取得最小損失值的模型作為最終模型。
在測試集上進行模型性能評估,結(jié)果統(tǒng)計為以下4類:
TP(True Positive):被正確判別為惡意域名的樣本數(shù);FP(False Positive):被錯誤判別為惡意域名的樣本數(shù);TN(True Negative):被正確判別為合法域名的樣本數(shù);FN(False Negative):被錯誤判別為合法域名的樣本數(shù)。實驗參考的判別標準為
其中,查準率和誤報率反映模型判別結(jié)果的可信度;查全率反映模型的漏報情況;F1分數(shù)反映模型綜合性能,F(xiàn)1分數(shù)值越大說明模型性能越好。
為驗證L-PCAL的有效性,采用測試集測試不同模型的惡意域名二分類準確性,結(jié)果如表1所示,表中測試時間為模型檢測10000條域名數(shù)據(jù)的處理耗時,各模型分別運行10次,最終結(jié)果取平均值。
由表1可知,Bi-Gram DT的各項檢測性能指標與基于深度學習的檢測模型差距較大,主要是由于Bi-Gram字符特征僅包含域名相鄰距離為2的字符組特征且不包含域名字符串序列特征,從而導致較高誤報率和較低的F1分數(shù);由CNN構(gòu)成的檢測模型可提取域名字符串的局部特征,但需設計更深層的網(wǎng)絡提取域名字符串長距離語義信息以提高檢測準確性;由LSTM構(gòu)成的檢測模型可提取域名字符串序列特征,F(xiàn)1分數(shù)較由CNN構(gòu)成的檢測模型提升較大,其中,Bi-LSTM模型具有較低的誤報率3.38%和較高的查準率96.49%,說明通過LSTM提取域名序列特征進行域名檢測能有效提高檢測準確率。
表1 模型檢測性能對比表
L-PCAL與L-PCL,PCAL,CAL-PCAL的對比實驗采用控制變量的方法展開,L-PCAL與L-PCL的對比結(jié)果驗證了引入注意力機制的有效性、與PCAL的對比結(jié)果說明了引入單字符序列特征的有效性、與CAL-PCAL的對比結(jié)果說明采用未結(jié)合注意力機制的LSTM用于單字符序列特征提取可取得較優(yōu)的檢測性能。L-PCAL結(jié)合域名字符串單字符序列特征和多字符組序列特征進行域名檢測,具有最高的召回率93.91%和最高的F1分數(shù)0.9466。
在檢測時間消耗方面,由于影響各模型運行耗時的因素包括模型參數(shù)規(guī)模、模型運算操作數(shù)、數(shù)據(jù)存取帶寬等,故采用整體檢測耗時作為模型檢測效率的評價指標。Parallel CNN完成1次運算的操作數(shù)為62433次,測試耗時為0.57 s;LSTM完成1次運算的操作數(shù)為1491201次,測試耗時為4.46 s;L-PCAL為提高檢測準確率,引入CNN與LSTM相結(jié)合的特征提取分支和注意力機制增加了模型的參數(shù)復雜度,其運算耗時主要集中在4個用于序列特征提取的LSTM單元,完成1次運算的操作數(shù)為5981408次,測試耗時為12.67 s。L-PCAL雖有較高計算復雜度,但其可在最高F1分數(shù)下達到789個/s的惡意域名檢測速度,具有較高的檢測效率和準確性。
檢測模型的誤報率和查全率的綜合性能可采用觀測者操作特性(Receiver Operating Characteristic,ROC)曲線進行衡量,其中ROC曲線與橫坐標面積(Area Under Curve,AUC)越大,說明模型性能越好。在相同的測試集下,不同模型在惡意域名檢測二分類任務中的ROC曲線如圖3所示。
圖3 ROC曲線對比圖
為刻畫不同模型ROC曲線的差異,表2給出了不同誤報率情況下,各模型的TPR和AUC對比結(jié)果。
由表2可知,L-PCAL在相同誤報率情況下較對比模型具有最高的TPR和AUC值,說明模型通過多分支結(jié)構(gòu)提取域名字符串不同長度字符組合的序列特征,可在較低誤報率情況下有效區(qū)分合法域名與惡意域名,確保模型檢測結(jié)果的可靠性。
表2 不同模型TPR與AUC對比表
攻擊者為躲避不斷升級的惡意域名檢測技術(shù),以mastnu和suppobox為代表的惡意程序從預存單詞列表選取單詞,通過單詞拼接的方式生成惡意域名,如face-calculate.com。此類惡意域名在字符構(gòu)成上與合法域名相似度較高,導致基于特征工程和基于深度學習的檢測方法檢測此類惡意域名誤報率較高。
為驗證L-PCAL檢測單詞拼接類惡意域名的檢測性能,選取惡意域名樣本中mastnu和suppobox構(gòu)成單詞拼接類惡意域名樣本集,表3給出了不同深度學習檢測模型在該樣本集上的檢測準確率。
對比表3和表1可知,基于深度學習的惡意域名檢測模型對于單詞拼接類惡意域名的檢測準確率明顯降低,尤其對于matsnu類別,部分深度學習模型檢測準確率為0,說明此類模型無法區(qū)分單詞拼接類惡意域名與合法域名的字符構(gòu)成差異,從而將此類惡意域名誤判為合法域名。單詞拼接類惡意域名與合法域名在詞語搭配方面存在差異,例如,合法域名“nationaljournal”為名詞與名詞搭配,而matsnu類的惡意域名“attempttrust”為動詞與動詞組合,語義信息難以理解。為有效檢測單詞拼接類惡意域名,L-PCAL首先通過不同卷積層提取域名不同長度字符組合的局部特征差異,再通過LSTM單元提取整體序列特征對域名做進一步區(qū)分,并引入注意力機制降低填充字符造成的干擾。L-PCAL在兩類單詞拼接類惡意域名樣本檢測中,檢測準確率分別為25.58%和85.34%,較對比模型中表現(xiàn)最好的LSTM在兩個類別的檢測準確率分別提升24.8%和3.77%,有效提高單詞拼接類惡意域名的檢測準確率。
表3 單詞拼接類惡意域名檢測準確率對比表
ATT-LSTM層引入注意力機制的目的如下:(1)降低輸入層用于長度填充的“0”字符對多字符組序列特征提取的干擾;(2)增大域名字符串中部分字符組合所處位置的序列特征在輸出特征中所占權(quán)重。為驗證引入注意力機制的有效性,選取合法域名baidu,nationaljournal和惡意域名iwtiojtudnjkrgallso,attempttrust作為L-PCAL輸入,將ATT-LSTM單元中注意力結(jié)果輸出并采用熱力圖進行可視化,如圖4所示,圖中每一行數(shù)據(jù)代表一條注意力分支在位置41~60的注意力取值。
由圖4(a)可知,3個注意力分支權(quán)重在“baidu”字符串左側(cè)填充字符“0”所處位置注意權(quán)值較小,故可有效降低在序列特征提取過程中填充字符造成的干擾。其次,合法域名字符串的權(quán)重僅在少數(shù)位置取得較大數(shù)值,如圖4(b)中“nationaljournal”的權(quán)重在包含元音的字段“ourn”所處位置取得較大數(shù)值,而惡意域名字符串的權(quán)重較大值出現(xiàn)在隨機字符組合對應位置和單詞拼接類惡意域名的單詞連接處,如圖4(c)中字段“jkrgal”所處位置和圖4(d)中“attempt”與“trust”連接處。通過注意力權(quán)值可視化一方面驗證了引入注意力機制在消除干擾和增加部分字符組序列特征權(quán)重的有效性,另一方面為L-PCAL的序列特征提取過程提供一定的可解釋性分析。
圖4 注意力權(quán)值可視化
本文提出一種基于CNN與LSTM相結(jié)合的惡意域名檢測模型。該模型采用多個分支提取域名字符串中不同長度字符組合的序列特征刻畫域名字符串的字符構(gòu)成差異,并引入注意力機制降低特征提取過程中的噪聲干擾。實驗結(jié)果表明,所提模型能有效提高惡意域名檢測準確率,尤其對惡意域名matsnu的檢測準確率提高較大。下一步工作將引入模型壓縮方法,以降低模型參數(shù)規(guī)模和模型運算時間。