劉立婷,歐毓毅
(廣東工業(yè)大學(xué)計算機(jī)學(xué)院,廣東 廣州 510006)
僵尸網(wǎng)絡(luò)在各種網(wǎng)絡(luò)安全威脅中扮演著重要的角色,這些安全威脅包括DDoS攻擊、垃圾郵件、信息盜竊等。為了有效地實施惡意行為,僵尸網(wǎng)絡(luò)常利用域名生成算法(Domain Generation Algorithm, DGA)以偽隨機(jī)的方式生成大量的域名,攻擊者只需從中選取少量域名進(jìn)行注冊即可與C&C(Command and Control)服務(wù)器進(jìn)行通信。DGA域名具有數(shù)量龐大和靈活性強(qiáng)的特點,這增加了網(wǎng)絡(luò)安全管理人員檢測網(wǎng)絡(luò)可疑行為和維護(hù)網(wǎng)絡(luò)安全的難度[1-3]。
隨著DGA域名檢測方法的不斷完善,新的DGA域名家族及其變體也層出不窮。不同DGA域名家族所攻擊的對象不同,如CryptoLocker是一種勒索軟件,該軟件在感染計算機(jī)后,會自動鎖定計算機(jī)桌面和加密所有文檔資料,導(dǎo)致用戶無法正常使用[4];Conficker針對 Windows 操作系統(tǒng)的漏洞進(jìn)行攻擊,具有蠕蟲病毒和下載病毒等多種屬性[5];Ramnit是一種擁有多種傳播方式的蠕蟲病毒,它可以監(jiān)控感染主機(jī)的網(wǎng)絡(luò)訪問活動以及掃描和瀏覽服務(wù)器中的文件系統(tǒng)以獲取敏感信息等[6]。不同的惡意攻擊往往會使用不同的域名生成算法,為了幫助安全人員快速響應(yīng)攻擊行為、采取針對措施,不僅需要檢測出DGA域名,更需要精確區(qū)分出不同的DGA域名家族。
早期,研究者們采用黑白名單的方法來檢測DGA域名,但此類方法僅能識別已收集的DGA域名,無法對整個DGA家族做出針對性防御[7]。為了克服黑名單檢測方法的缺點,研究者們開始采用基于特征工程的機(jī)器學(xué)習(xí)方法檢測DGA域名,此類方法常用的特征為:基于域名字符統(tǒng)計特征和DNS流量特征[8-10]。文獻(xiàn)[11]使用語義分析方法、詞嵌入和詞性來分析詞間和域間的相關(guān)性,最后利用集成分類器進(jìn)行分類。文獻(xiàn)[12]提出了一種掩碼N-grams,其中字符組成N-grams被映射為輔音、元音、數(shù)字和非字母數(shù)字,并使用隨機(jī)森林進(jìn)行分類。文獻(xiàn)[13]提出了一種基于DNS查詢數(shù)據(jù)的DGA域名檢測方法。以上基于機(jī)器學(xué)習(xí)的檢測方法雖然一定程度上提高了惡意域名檢測率和分類效果,但是需要消耗大量時間和人力來提取域名特征,并且人工提取的特征很容易被有針對性的DGA繞過,不足以應(yīng)對DGA域名的動態(tài)特性。
深度學(xué)習(xí)的發(fā)展為DGA域名的檢測提供了新思路,它無須手工提取特征,模型可以自學(xué)習(xí)域名特征,不僅實現(xiàn)了端到端的實時檢測,而且進(jìn)一步提高了DGA域名檢測率。文獻(xiàn)[14]提出了一種基于長短期記憶(Long Short-Term Memory, LSTM)神經(jīng)網(wǎng)絡(luò)的DGA域名檢測方法,該檢方法能夠自動提取域名序列的時序特征,且性能明顯優(yōu)于傳統(tǒng)機(jī)器學(xué)習(xí)方法。在此基礎(chǔ)上,文獻(xiàn)[15]提出了一種結(jié)合LSTM和注意力機(jī)制的DGA域名分類模型,該模型考慮了域名中不同位置字符的權(quán)重,比單一的LSTM算法具有更高的檢測率,但是在多分類任務(wù)中,模型對CryptoLocker、Locky、Necurs和Ramnit這4類DGA域名分類效果不佳。針對LSTM訓(xùn)練和檢測速度慢的問題,文獻(xiàn)[16]提出了一種基于實時深度學(xué)習(xí)的惡意域名檢測系統(tǒng)fast3DS,該系統(tǒng)基于輕量級的全卷積檢測模型,采用數(shù)據(jù)處理和模型推理加速技術(shù)的檢測管道實現(xiàn)了實時檢測。文獻(xiàn)[17]提出了一種混合神經(jīng)模型Bilbo,該模型首次將CNN和LSTM并行用于檢測DGA域名。相比于單一模型,Bilbo對3種基于字典的DGA家族分類效果更佳。但該模型僅對3個DGA域名家族進(jìn)行檢測,未對其他類型DGA家族進(jìn)行討論。文獻(xiàn)[18]提出了一種基于LSTM和數(shù)量相關(guān)優(yōu)化方法相結(jié)合的檢測模型(LSTM.PQDO),實現(xiàn)了重采樣比例的動態(tài)優(yōu)化,提高了在數(shù)據(jù)量不平衡情況下惡意域名的檢測率,但在多分類任務(wù)中仍有12個DGA家族的分類F1值低于0.5。文獻(xiàn)[19]在向量嵌入階段采用字符級和單詞級相結(jié)合的嵌入方式,使用動態(tài)卷積算法進(jìn)行檢測,有效地提升了檢測效率。文獻(xiàn)[20]將BiGRU與MCNN串連構(gòu)建BiGRU-MCNN,先用BiGRU學(xué)習(xí)字符間的依賴關(guān)系,再利用MCNN的不同網(wǎng)絡(luò)通道從多方面學(xué)習(xí),以提取DGA域名的深層隱藏信息。文獻(xiàn)[21]結(jié)合字符級詞向量和雙字母組詞向量,提出了一種基于混合詞向量的DGA域名檢測方法,該檢測方法相比于只基于字符級詞向量的模型有更好的分類性能,但是在多分類任務(wù)中仍存在3類零檢出的DGA域名。
綜上所述,雖然現(xiàn)有研究在區(qū)分良性域名和DGA域名的檢測任務(wù)上表現(xiàn)良好,但由于DGA家族類別多、部分家族字符分布相似、樣本數(shù)據(jù)不平衡等原因,現(xiàn)有方法難以充分捕獲域名字符串深層語義信息,在區(qū)分不同DGA域名家族的多分類任務(wù)中性能較差。
針對上述問題,本文利用深層金字塔卷積神經(jīng)網(wǎng)絡(luò)(Deep Pyramid Convolution Neural Networks, DPCNN)較強(qiáng)的深層特征提取能力,并采用SENet[22](Squeeze-and-Excitation Networks)進(jìn)行優(yōu)化構(gòu)建DPCNN-SE,SENet的通道注意力機(jī)制能夠?qū)W習(xí)通道間依賴關(guān)系,從而抑制無用特征,加強(qiáng)重要特征的傳遞;同時,將雙向LSTM網(wǎng)絡(luò)(Bidirectional Long Short-Term Memory Network, BiLSTM)和自注意力機(jī)制(Self-attention Mechanism, SM)結(jié)合構(gòu)建時序模型BiLSTM-SA提取時序特征,避免單一卷積神經(jīng)網(wǎng)絡(luò)忽略DGA域名中上下文語義信息的問題,最后將2種特征融合后進(jìn)行DGA域名檢測。實驗結(jié)果驗證了本文方法的有效性,與現(xiàn)有深度學(xué)習(xí)方法相比,在多項評價指標(biāo)中均有更優(yōu)表現(xiàn)。
本文提出的融合注意力機(jī)制與并行混合網(wǎng)絡(luò)的DGA域名檢測方法網(wǎng)絡(luò)結(jié)構(gòu)如圖1所示,由詞嵌入層、DPCNN-SE、BiLSTM-SA、全連接層4個部分組成。首先,在嵌入層對域名數(shù)據(jù)進(jìn)行預(yù)處理并向量化,以便輸入網(wǎng)絡(luò)模型進(jìn)行訓(xùn)練;接著進(jìn)行特征提取,由DPCNN-SE和BiLSTM-SA分別提取域名序列的深層空間語義特征和上下文的時序依賴特征;將BiLSTM-SA和DPCNN-SE提取的特征向量進(jìn)行融合,并送入全連接層完成最終的分類任務(wù)。
圖1 模型總體結(jié)構(gòu)圖
由于深度學(xué)習(xí)模型無法直接處理字符串?dāng)?shù)據(jù),因此需在詞嵌入層將域名數(shù)據(jù)轉(zhuǎn)換成可處理的數(shù)字矩陣。
一條完整的域名由英文句號“.”分隔成多個部分,例如“baidu.com”“#”,“com”與“cn”為頂級域名,“baidu”和“360”為二級域名,以此類推,域名最左邊還可以有三級、四級等次級域名。每條域名可以使用26個英文字母a~z(不區(qū)分大小寫)、數(shù)字0~9和英文連詞符“-”進(jìn)行組合,加上用于域名分隔的“.”,域名由“abcdefghijklmnopqrstuvwxyz0123456789-.”這38種字符組成。依據(jù)上述的域名數(shù)據(jù)特點構(gòu)建一個字符字典:將域名中所有38種合法字符“abcdefghijklmnopqrstuvwxyz0123456789-.”對應(yīng)為1~39的數(shù)字,利用字典將域名字符串轉(zhuǎn)化為向量,例如“baidu.com”轉(zhuǎn)化為字符向量[2,1,9,4,21,38,3,15,13]。
為了保證模型輸入的形狀一致,需將所有字符向量長度統(tǒng)一處理為l,超出l的進(jìn)行截斷,不足l則使用0進(jìn)行填充,本文設(shè)置l為64。最后,把預(yù)處理后的域名字符向量映射到浮點數(shù)字矩陣E中,E再輸入深度學(xué)習(xí)模型中進(jìn)行訓(xùn)練,本文設(shè)置E的維度為l×d,其中嵌入維度d為32。
為了解決普通CNN無法有效捕獲域名序列的長距離依賴,造成特征丟失的問題,本文將DPCNN[22]引入到域名檢測任務(wù)中。DPCNN使用等長卷積替代普通卷積,等長卷積的方式能獲取每個詞位上更高級、更準(zhǔn)確的上下文信息;同時,DPCNN固定了特征圖的數(shù)量,并在每次卷積操作后使用1/2池化,不僅使得每個卷積層的計算量減半,而且增大了模型感知長文本片段的能力,提取更多高維度語義信息。本文利用SENet的通道注意力機(jī)制改進(jìn)DPCNN,構(gòu)建DPCNN-SE網(wǎng)絡(luò),其網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示。
圖2 DPCNN-SE的結(jié)構(gòu)
DPCNN-SE由1個組合卷積塊和多個疊加塊組成,其中,1個疊加塊由1個1/2池化、2個等長卷積層、1個SENet組成。DPCNN-SE的具體實現(xiàn)細(xì)節(jié)如下:
1)組合卷積。
設(shè)置卷積步長為1,大小分別為2×32、3×32、4×32的卷積核,對詞嵌入層輸出的詞向量矩陣E進(jìn)行組合卷積,可以提取域名不同字符組合間的特征圖作為嵌入向量,便于后續(xù)高級特征的提取。
2)1/2池化。
DPCNN-SE在每次卷積后進(jìn)行池化操作,池化時固定特征圖數(shù)量不變,采用卷積核大小為3,步長為2的Max-Pooling進(jìn)行下采樣。每次1/2池化后,序列長度減半,計算量隨之減半,形成一個金字塔的形狀,而每個詞位能夠感知的文本片段長度翻倍。
3)等長卷積。
4)殘差連接。
殘差連接用于解決梯度破碎或梯度爆炸問題,能有效避免深層網(wǎng)的退化問題[24]。在DPCNN-SE中組合卷積后的文本序列被直接無損連接到疊加塊上,并與Pre-activation后的序列進(jìn)行加和;同時,在每個疊加塊的池化前也引入殘差連接,這能夠有效緩解梯度消散的問題,確保特征的有效傳遞。
5)SENet。
DPCNN-SE中每個疊加塊最后一層為SENet,SENet通過激勵壓縮的方式計算特征通道間的依賴,為特征通道重新分配權(quán)重,從而抑制與當(dāng)前DGA家族無關(guān)或不重要的特征,挑選出最具代表性的深層局部特征。SENet的結(jié)構(gòu)如圖3所示。
圖3 SENet的結(jié)構(gòu)
SENet計算和分配特征通道權(quán)重的具體過程:輸入特征圖X維度為c×h×w,其中c為通道數(shù),h、w分別為單個通道的高和寬。首先經(jīng)過1個全局平均池化層Fsq,將單個通道的h×w個特征編碼為一個全局特征:
(1)
接著,使用Fex運(yùn)算求得各個通道間的權(quán)重:
s=Fex(z,W)=σ(g(z,W))=σ(W2ReLU(W1z))
(2)
X′=Fscale(Xc,sc)=sc·Xc
(3)
最后,將帶有權(quán)重信息的X′輸入到下一個疊加塊中。
基于卷積神經(jīng)網(wǎng)絡(luò)構(gòu)建的DPCNN-SE著重于提取深層空間局部特征,而LSTM可以學(xué)習(xí)DGA域名的時間序列特征。傳統(tǒng)的LSTM網(wǎng)絡(luò)只能依據(jù)之前時刻的時序信息來預(yù)測下一時刻的輸出,缺乏學(xué)習(xí)域名序列逆向關(guān)聯(lián)信息的能力。本文對傳統(tǒng)LSTM進(jìn)行改進(jìn),把自注意力機(jī)制融合到雙向LSTM網(wǎng)絡(luò)中,構(gòu)建用于域名時序特征提取的BiLSTM-SA模型,結(jié)構(gòu)如圖4所示。
圖4 BiLSTM-SA的結(jié)構(gòu)
1)BiLSTM。
BiLSTM由多個LSTM門控制循環(huán)單元組成,每個LSTM門控制單元由遺忘門ft、輸入門it、輸出門ot組成,式(4)~式(9)為單個LSTM單元更新的過程,其中xt為LSTM當(dāng)前時刻t的輸入;ht-1、ht分別是上一個單元和本單元的隱藏層狀態(tài);Wf、Wi、Wc,Wo為各自對應(yīng)的權(quán)重矩陣;bf、bi、bc、bo為各自對應(yīng)的偏置;σ為Sigmoid激活函數(shù),tanh為雙曲正切函數(shù)。
ft=σ(Wf·[ht-1,xt]+bf)
(4)
it=σ(Wi·[ht-1,xt]+bi)
(5)
(6)
(7)
ot=σ(Wo·[ht-1,xt]+bo)
(8)
ht=ot×tanh(ct)
(9)
每個LSTM門控循環(huán)單元都會使用LSTM的當(dāng)前輸入xt和上一個單元的隱藏層狀態(tài)ht-1來更新自身狀態(tài),以完成整個LSTM模型的更新。BiLSTM層的最終輸出由前向LSTM和逆向LSTM的輸出共同決定,即將2個方向的LSTM單元輸出相加。在t時刻時,BiLSTM的輸出表示為:
ht=h1t+h2t
(10)
2)自注意力機(jī)制。
自注意力機(jī)制用于對域名序列進(jìn)行重新加權(quán),學(xué)習(xí)域名字符組合在域名中的重要程度,挑選出關(guān)鍵的全局時序特征,有效增強(qiáng)捕獲關(guān)鍵特征的能力。首先,根據(jù)式(11)和式(12)得到注意力權(quán)重值分別為α1,α2,α3,…,αn:
Source(s,hi)=vTtanh(w1s+w2hi+bi)
(11)
(12)
其中,Source是相似度計算函數(shù),s為隨機(jī)初始化向量,隨著模型訓(xùn)練而更新,vT、w1、w2為權(quán)值矩陣,bi為偏置項。式(12)利用Softmax函數(shù)對注意力權(quán)重進(jìn)行概率化,得到注意力權(quán)重分布值。最后,使用注意力權(quán)重αi對hi進(jìn)行加權(quán),得到含有注意力概率分布的域名表示向量ci,具體計算公式為:
(13)
全連接層將DPCNN-SE和BiLSTM-SA的輸出進(jìn)行特征融合,融合后的域名特征經(jīng)隱藏層激活后,完成最終的分類任務(wù)。本文的域名分類任務(wù)有2種:一種是判斷輸入域名是DGA域名還是正常域名的二分類任務(wù),即DGA域名的檢測;一種是把DGA域名歸類到具體DGA家族的多分類任務(wù)。2個任務(wù)的激活函數(shù)均為Softmax,計算公式為:
(14)
其中,n為分類的類別數(shù)。
本文實驗在Windows10系統(tǒng)上進(jìn)行,硬件環(huán)境處理器為AMD ryzen3 2200g@3.5 GHz,運(yùn)行內(nèi)存為16 GB和用于加速模型訓(xùn)練的GPU:GeForceRTX 1060 6 GB GPU。模型的實現(xiàn)基于Pytorch和CUDA深度學(xué)習(xí)框架,版本分別是1.8.0和11.1。具體實驗的仿真參數(shù)如表1所示。
表1 仿真參數(shù)設(shè)置
本文實驗采用的數(shù)據(jù)集由DGA域名數(shù)據(jù)集和良性域名數(shù)據(jù)集2個部分?jǐn)?shù)據(jù)組成。惡意域名數(shù)據(jù)集來源于360Netlab網(wǎng)站公開的DGA域名數(shù)據(jù),本文從中選取了53273條惡意域名作為DGA域名數(shù)據(jù)集,其中包含25種數(shù)據(jù)量較為充足的DGA域名家族。另外,良性域名數(shù)據(jù)集則來自Alexa網(wǎng)站中的訪問量排名前53273的域名。良性域名與DGA域名比例為1∶1,將2組數(shù)據(jù)集合并后作為本文實驗的數(shù)據(jù)集,共計106546條,具體分布如表2所示。將數(shù)據(jù)集以8∶1∶1的比例隨機(jī)抽取后,分別設(shè)置為訓(xùn)練集、驗證集和測試集,其中,訓(xùn)練數(shù)據(jù)用于訓(xùn)練深度學(xué)習(xí)模型;驗證集用于衡量模型在訓(xùn)練過程中的性能;測試集用于評估訓(xùn)練完成后模型的性能。
表2 26類域名數(shù)量
本文實驗采用準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1值以及ROC曲線作為模型評價指標(biāo)。其中準(zhǔn)確率代表預(yù)測正確的樣本數(shù)占樣本總數(shù)的比率;精確率代表預(yù)測正確的正類占模型預(yù)測為正類總數(shù)比率;召回率代表預(yù)測正確的正類占所有正類總數(shù)的比率;F1值是精確度和召回率的諧波平均值,只有當(dāng)精確率和召回率都很高時,F(xiàn)1值才會高;ROC(Receiver Operating Characteristic, ROC)曲線將真陽率(True Positive Rate, TPR)和假陽率(False Positive Rate, FPR)以圖示的方法結(jié)合起來,可準(zhǔn)確地反映TPR和FPR的關(guān)系,是判斷分類器綜合性能的代表。模型評價指標(biāo)的計算公式如下:
(15)
(16)
(17)
(18)
(19)
其中,TP是真正類的數(shù)量,F(xiàn)P是假正類的數(shù)量,TN是真負(fù)類的數(shù)量,F(xiàn)N是假負(fù)類的數(shù)量。
為全面驗證本文模型各個部分的性能,將本文模型分解,進(jìn)行消融實驗。對比方法有DPCNN、BiLSTM、DPCNN-SE、BiLSTM-SA、DPCNN-SE+BiLSTM-SA(本文方法),實驗結(jié)果如圖5所示。
圖5 對于模型結(jié)構(gòu)進(jìn)行的消融實驗結(jié)果
從圖5中可知,相比原始的DPCNN和BiLSTM,加入了通道注意力(SENet)的DPCNN-SE和融合了自注意力的BiLSTM-SA在精確率、召回率、F1和準(zhǔn)確率上均有更好的表現(xiàn),這說明2種注意力機(jī)制能夠聚焦域名的關(guān)鍵特征,以更好地區(qū)分出不同DGA家族。而本文方法將DPCNN-SE、BiLSTM-SA這2種網(wǎng)絡(luò)提取的關(guān)鍵信息進(jìn)行融合,有效利用了重要的空間局部特征和時序依賴特征,進(jìn)一步提高了模型的分類能力,在5種模型中表現(xiàn)最優(yōu)。
為了驗證本文方法相較現(xiàn)有DGA域名檢測方法的有效性,實驗中設(shè)置了CNN[25]、LSTM[14],Bilbo[17]、BiGRU-MCNN[20]這4個模型作為對比模型,其中CNN、LSTM為單一模型,Bilbo和BiGRU-MCNN為基于2種網(wǎng)絡(luò)構(gòu)建的混合模型:
1)CNN模型,采用文獻(xiàn)[25]中的網(wǎng)絡(luò)結(jié)構(gòu),利用卷積核在域名序列上滑動以獲取序列特征信息,特征信息經(jīng)最大池化層后輸入到分類層,實現(xiàn)對惡意域名的檢測。
2)LSTM模型,采用文獻(xiàn)[14]中的網(wǎng)絡(luò)結(jié)構(gòu),使用多個LSTM門控制單元充分提取域名序列的長依賴關(guān)系,最后通過分類層進(jìn)行檢測和分類。
3)Bilbo模型,采用文獻(xiàn)[17]中的網(wǎng)絡(luò)結(jié)構(gòu),并行單向LSTM和淺層CNN組成特征提取模塊,最后通過分類層輸出分類結(jié)果。
4)BiGRU-MCNN模型,采用文獻(xiàn)[20]提出的串行網(wǎng)絡(luò)結(jié)構(gòu),先利用雙向的GRU學(xué)習(xí)的字符間依賴,再輸入多通道CNN提取DGA域名的局部特征。
在相同實驗環(huán)境和數(shù)據(jù)集的設(shè)置下,將本文方法與4個對比模型進(jìn)行對比,每個模型在二分類任務(wù)中的Accuracy、Precision、Recall以及F1值如圖6所示。
圖6 5種模型檢測性能的比較
由圖6可知,在DGA域名的二分類任務(wù)(即檢測任務(wù))中,5種模型都具有良好的檢測性能,4個評價指標(biāo)均達(dá)到95%以上。普通的單一模型CNN和LSTM的檢測性能表現(xiàn)較差,而基于2種混合網(wǎng)絡(luò)構(gòu)建的Bilbo和BiGRU-MCNN表現(xiàn)較好。相較于對比模型,本文方法的檢測性能有著更佳的表現(xiàn),4個評價指標(biāo)均達(dá)到了96.8%以上。
表3所示為5種模型對不同DGA域名家族的多分類性能比較。與模型在二分類任務(wù)中的表現(xiàn)類似,單一模型CNN和LSTM表現(xiàn)較差,并且普通的CNN模型在域名語義信息的提取能力上不如LSTM;Bilbo基于CNN和LSTM構(gòu)建,在所有評價指標(biāo)上均超過單一的CNN或單一LSTM模型,主要是因為Bilbo采用了混合模型,對域名的關(guān)鍵信息提取有著積極作用;而BiGRU-MCNN采用了GRU與CNN的串行的混合模型,能在學(xué)習(xí)字符間全局依賴的基礎(chǔ)上進(jìn)一步學(xué)習(xí)局部特征,相比普通的CNN、LSTM和Bilbo均有一定提升。
表3 5種模型域名家族分類性能比較
相較于對比模型,本文方法的綜合表現(xiàn)最佳,精確率和F1值均達(dá)90%以上,與并行的Bilbo模型相比,在精確率、召回率、F1值和準(zhǔn)確率上分別提高了8.52個百分點、3.53個百分點、5.97個百分點和1.26個百分點;與串行的BiGRU-MCNN相比,精確率、召回率、F1值和準(zhǔn)確率上分別提高了6.22個百分點、0.9個百分點、4.87個百分點和2.23個百分點。這說明本文方法在結(jié)合深層金字塔網(wǎng)絡(luò)和BiLSTM優(yōu)勢的基礎(chǔ)上,通過2種注意力機(jī)制為網(wǎng)絡(luò)提取的特征重新賦予權(quán)重,有效減少了無用特征的干擾,保留了更多有效信息,從而更好地識別出不同的DGA域名家族。
為了進(jìn)一步分析模型多分類任務(wù)中的性能,表4詳細(xì)地列出了5種模型對25個DGA域名家族分類結(jié)果的F1值,F(xiàn)1值綜合了召回率和精確率2個評估指標(biāo),能較好地體現(xiàn)模型的整體分類性能。由表4可知,本文方法在對25種DGA域名的多分類任務(wù)中,F(xiàn)1值在80%以上的有22種,F(xiàn)1值在95%以上的有12種,F(xiàn)1值在99%以上的有7種。
表4 5種模型多分類F1值對比
相較對比模型,本文方法在25個DGA域名家族分類結(jié)果上有21個F1值最高,在剩余的Mydoom、Nymaim、Qadars、Tinba這4個DGA家族中,由于Mydoom訓(xùn)練數(shù)據(jù)過少,導(dǎo)致模型過擬合,本文方法相較BiGRU-MCNN有一定下降,而Qadars與Tinba的F1值均在94%以上,且與表現(xiàn)最佳模型的差距小于1個百分點。相較4種現(xiàn)有的模型,本文方法的多分類性能綜合表現(xiàn)更優(yōu)。
值得注意的是,由于Nymaim家族采用了基于單詞表的生成算法,其字符串構(gòu)成與良性域名十分相似,且長度較短,因而5種基于字符串特征的端到端模型均無法進(jìn)行有效識別。
DGA域名家族之間的樣本數(shù)量存在較大的差異,容易對分類器性能造成影響,ROC曲線不受類別不平衡的影響,能較好地度量分類器的穩(wěn)定性和泛化能力,ROC曲線下的面積AUC(Area Under Curve)越大,說明模型性能越好。如圖7所示,CNN和Bilbo的表現(xiàn)不佳,模型的穩(wěn)定性較差;BiGRU-MCNN通過先后2步的特征學(xué)習(xí),穩(wěn)定性相較CNN和Bilbo有了明顯的提升。而當(dāng)檢測模型TPR達(dá)到0.95時,本文方法的ROC曲線表現(xiàn)最佳,AUC達(dá)到0.9953,超過了所有對比模型。這說明本文方法能提取域名的高級空間語義信息和時序特征,并通過2種注意力機(jī)制挑選出關(guān)鍵特征,降低無關(guān)特征的干擾,使得分類器的性能具有更好的魯棒性和更強(qiáng)的泛化能力。
表5所示是5種模型的浮點運(yùn)算次數(shù)(FLOPs)、模型參數(shù)量(Params)與推理時間。通過表5可知,普通的CNN和LSTM網(wǎng)絡(luò)采用簡單的淺層網(wǎng)絡(luò)結(jié)構(gòu),計算復(fù)雜度低、推理時間較短;Bilbo、BiGRU-MCNN與本文模型均為融合模型、參數(shù)較多、計算量相對較大。但相比Bilbo模型,本文方法的FLOPs、參數(shù)量和推理時間分別減少了71.89%、85.21%、44.40%;相較BiGRU-MCNN,本文方法在3個指標(biāo)上分別減少了65.60%、80.58%、31.90%。這是因為Bilbo與BiGRU-MCNN的CNN部分均使用了較多尺寸的多通道卷積核,這樣雖然能獲取更多低級特征,但也使模型的計算量變大,而且較難學(xué)習(xí)高級語義信息;本文方法減少了組合卷積的數(shù)量,并引入DPCNN的思想構(gòu)建更深的CNN分支,通過固定特征圖數(shù)量和每次池化后計算量減半的方式有效降低了模型復(fù)雜度。因此,本文方法不僅能捕獲域名的高維度語義信息、提升模型性能,而且具備更低的計算復(fù)雜度,相比其他混合模型具有更強(qiáng)的實用性。
表5 5種模型復(fù)雜度比較
針對現(xiàn)有方法對DGA域名家族識別效果不佳的問題,本文提出了一種融合注意力機(jī)制與并行混合網(wǎng)絡(luò)的DGA域名檢測方法,先建立字符字典將域名字符串表示成向量矩陣,接著構(gòu)建并行混合網(wǎng)絡(luò)提取高級局部特征和時序依賴特征,并分別使用通道注意力機(jī)制和自注意力機(jī)制對2種特征進(jìn)行重新挑選,最后將2種特征融合進(jìn)行分類。相比CNN、LSTM、Bilbo、BiGRU-MCNN等深度學(xué)習(xí)模型,本文方法在精確率、召回率、F1值和ROC曲線下面積等多個評估指標(biāo)上均有明顯優(yōu)勢。
未來的工作將從以下2個方面展開:1)針對Nymaim這類較難識別的隱性DGA域名進(jìn)行研究,可考慮加入域名DNS流量、IP地址等外部特征作為分類依據(jù);2)針對未知DGA域名家族的檢測,現(xiàn)有研究大多僅適用于已知DGA域名家族的識別,在處理未知DGA家族時有可能將其錯誤分類為已知域名,從而造成誤判,如何動態(tài)地更新DGA家族數(shù)據(jù)庫,保證模型的可靠性值得進(jìn)一步研究。