張 鑫,程 華,房一泉
(華東理工大學(xué)信息科學(xué)與工程學(xué)院,上海 200237)
近年來WannaCry等惡意軟件爆發(fā),對政府、能源、制造業(yè)等關(guān)鍵基礎(chǔ)設(shè)施造成重大損失[1]。惡意軟件使用隨機(jī)生成的DGA(Domain Generation Algorithm)域名,與C&C(Command and Control)服務(wù)器建立通信連接,躲避安全軟件檢測。文獻(xiàn)[2]系統(tǒng)地分析了43個(gè)惡意軟件,超過半數(shù)的惡意軟件采用DGA作為唯一的通信方式,因此準(zhǔn)確有效地檢測DGA域名對于惡意軟件的發(fā)現(xiàn)具有重要意義。
基于機(jī)器學(xué)習(xí)的DGA域名檢測方法通過提取域名的統(tǒng)計(jì)信息[3]和流量特征[4]對DGA域名進(jìn)行檢測,存在誤報(bào)率較高、精確率低等問題。引入深度學(xué)習(xí)等方法后,DGA域名檢測精確率獲得了較大的提高;文獻(xiàn)[5]用長短期記憶網(wǎng)絡(luò)LSTM(Long Short-Term Memory)檢測DGA域名,對隨機(jī)性高、長度較長的DGA域名檢測獲得了高精確率;文獻(xiàn)[6]用LSTM與域名注冊信息結(jié)合的方式,有效地區(qū)分類似英語單詞的DGA域名,如suppobox、matsnu種類;文獻(xiàn)[7]用門控循環(huán)單元結(jié)合注意力機(jī)制,關(guān)注域名序列中隨機(jī)性高的字符組合,提高了對低隨機(jī) DGA 域名的識別率。
基于循環(huán)神經(jīng)網(wǎng)絡(luò)的DGA檢測方法對正常的縮略域名有較高的誤報(bào)率,如將“jd.com”識別為DGA域名。使用文獻(xiàn)[7]的方法對本文域名數(shù)據(jù)集進(jìn)行檢測,誤報(bào)為DGA的域名中縮略域名占64.5%。從單字符的角度分析,縮略域名具有較高的隨機(jī)性,其通常來自于單詞縮寫,因此事實(shí)上字符間存在長程依賴性;而基于循環(huán)神經(jīng)網(wǎng)絡(luò)的檢測方法只對相鄰字符計(jì)算,從而間接獲取長程依賴性,不能有效地辨別縮略域名。
文本翻譯任務(wù)中的Transformer[8]模型能提取句子中單詞間的指代關(guān)系等,通過自注意力獲得單詞間的依賴性,可以提取域名中單個(gè)字符和所有字符間依賴性;其可以通過多頭映射將域名線性映射到不同子空間內(nèi),計(jì)算多個(gè)子空間內(nèi)域名字符的依賴性,提取字符間的更多層信息。本文在Transformer模型的編碼過程中,提出用LSTM對域名編碼進(jìn)行改進(jìn),以更好地捕獲字符位置信息。由此構(gòu)建基于Transformer的DGA域名檢測方法MHA(Multi-Head Attention based DGA detection method)。對比實(shí)驗(yàn)表明,該方法在獲得更高精確率的情況下,可以有效降低縮略域名的誤報(bào)率。
縮略域名的字符是單詞或拼音的縮寫,保留其中最具代表性的字符,期望與單詞或拼音表達(dá)相同的語義信息,因此保留字符構(gòu)成了縮略域名的主體結(jié)構(gòu)。
縮略后域名的隨機(jī)性增加,如武漢大學(xué)域名:whu.edu.cn,將“wuhanuniversity”縮略為“whu”?!皐uhanuniversity”的相對熵為0.86,而“whu”的相對熵為1,接近DGA的平均熵0.98[7]??s略域名具有較高的隨機(jī)性,增加了DGA域名檢測難度。
單個(gè)字符并不能表達(dá)出具體語義,多個(gè)字符組合才體現(xiàn)出語義信息,如域名“hljswt”中“hlj”3個(gè)字符表示”HeiLongJiang”。字符“h”“l(fā)”和“j”,分別來自于“hei”“l(fā)ong”和“jiang”的第1個(gè)字符,縮略前字符間不是直接相鄰的,其依賴性需要從全稱域名或縮略域名中學(xué)習(xí)。例如,可以從“heilongjiangfupin”或“hljgvc”中學(xué)習(xí)到字符“h”“l(fā)”和“j”間的依賴性。因此,可以從全稱域名中學(xué)習(xí)不相鄰字符的依賴性,用于縮略域名的檢測。
采用點(diǎn)互信息PMI(Pointwise Mutual Information)[9]計(jì)算域名中字符的依賴性[10]:
其中,p(x,y)為字符x和y同時(shí)出現(xiàn)的頻率;p(x)為字符x出現(xiàn)的頻率;p(y)為字符y出現(xiàn)的頻率。圖1為DGA域名、縮略域名、全稱域名字符間點(diǎn)互信息。
Figure 1 Pointwise mutual information of domain name characters圖1 域名字符間點(diǎn)互信息
圖1表明DGA域名字符間PMI差別很小,縮略域名的PMI位于DGA域名和全稱域名之間,相對DGA有明顯差異,說明縮略域名具有較強(qiáng)的依賴性。
表1中,全稱域名是單詞組合,其中固定組合的字符同時(shí)出現(xiàn)的頻率高,字符依賴性大;非固定組合中字符同時(shí)出現(xiàn)的頻率低,字符依賴性弱;導(dǎo)致全稱域名依賴性方差大。而縮略域名用到的字符組合保持了頻率高、依賴性強(qiáng)的特點(diǎn),而被縮略的字符頻率低、依賴性弱,導(dǎo)致方差遠(yuǎn)大于DGA域名的方差,均值接近于DGA域名的均值。
DGA域名字符間依賴性差別很小,真實(shí)域名中字符依賴性差別較大,因此本文提出提取域名字符間的依賴性,突出依賴性強(qiáng)的字符,從而在識別過程中降低誤報(bào)率。
Table 1 Statistical characteristics of PMI between domain name characters表1 域名字符間點(diǎn)互信息的統(tǒng)計(jì)特征
以“heilongjiang”為例,計(jì)算合法域名中含“h”“l(fā)”“j”3個(gè)字符的域名的PMI,如表2所示,“hl”“l(fā)j”“hj”的PMI值遠(yuǎn)高于其他字符組合的PMI值,依賴性明顯強(qiáng)于其他字符。這說明在真實(shí)域名中存在一定固定結(jié)構(gòu)的字符對,若在檢測域名時(shí),突出固定字符對的依賴性,可提高檢測效果。
Figure 2 Character dependence computation by self-attention圖2 自注意力計(jì)算字符依賴性
Table 2PMIof legitimate domain name
表2 合法域名PMI
hjjlhlcjhtjtlthglf35.2431.2430.257.256.506.506.505.525.50
Transformer模型可以計(jì)算句子中單詞間的依賴關(guān)系,被廣泛應(yīng)用在自然語言處理中。可基于Transformer在域名檢測中提取字符間依賴性,獲得域名內(nèi)部的字符組合結(jié)構(gòu),解決縮略域名誤報(bào)率高的問題。
Transformer模型由多個(gè)相同的層組成,每個(gè)層包含1個(gè)多頭自注意力機(jī)制和前饋網(wǎng)絡(luò)。模型僅通過自注意力機(jī)制計(jì)算輸入x=(x1,x2,…,xm)和輸出y=(y1,y2,…,ym),將句子中的每個(gè)詞和該句子中的所有詞進(jìn)行注意力計(jì)算,目的是學(xué)習(xí)句子內(nèi)部的依賴關(guān)系,捕獲句子的內(nèi)部結(jié)構(gòu)。
注意力機(jī)制用于提高局部關(guān)注,可描述為將查詢(query)和1組鍵(key)值(value)對映射到輸出,表示為:
Attention(Q,K,V)=softmax(QKT)V
其中,Q,K,V均為輸入矩陣,分別代表查詢、鍵和值。在key-value鍵值對與查詢語句query的注意力計(jì)算中,key-value為源語句,query為目標(biāo)語句,即計(jì)算目標(biāo)語句與源語句之間的關(guān)系。當(dāng)源語句與目標(biāo)語句相同時(shí),計(jì)算的便是語句自身的內(nèi)部關(guān)系。
為使模型能夠充分提取內(nèi)部關(guān)系,研究人員引入了多頭注意力,多頭注意力允許模型在不同的位置共同關(guān)注來自不同表示子空間的信息[8]。多頭注意力對輸入的query、key和value進(jìn)行多次線性映射,再對線性映射后的值進(jìn)行注意力計(jì)算,得到多個(gè)注意力結(jié)果連接,再次進(jìn)行線性映射,得到多頭注意力輸出,表示為:
MultiHead(Q,K,V)=
Concat(head1,…,headh)Wo
PMI計(jì)算字符間的依賴性只能根據(jù)整體域名樣本的統(tǒng)計(jì)特征,不具有學(xué)習(xí)能力。Transformer模型使用自注意力計(jì)算字符間的依賴性,可通過模型訓(xùn)練學(xué)習(xí)到域名字符間依賴性,如圖2所示。
將域名中每個(gè)字符與該域名中所有字符進(jìn)行依賴性計(jì)算:
dij=C[i]×C[j]
其中,C[i],C[j]分別是第i個(gè)字符和第j個(gè)字符在域名矩陣中的表示。dij為第i個(gè)字符和第j個(gè)字符間的依賴性,實(shí)現(xiàn)了忽略字符間隔的依賴性計(jì)算。
字符間的依賴性用Softmax歸一化,得到歸一化(權(quán)重)依賴性矩陣D:
D=Softmax(C·CT)
其中,D是權(quán)重,與域名矩陣C相乘得到依賴性加權(quán)的域名矩陣A∈Rl×l(l為域名長度):
A=D·C
圖3為域名“bjut”和域名“beijing”的字符依賴性矩陣,顏色越深表明依賴性越強(qiáng)。2個(gè)域名都包含關(guān)鍵字符“b”和“j”,語義都為北京,2個(gè)字符在域名中的間距不同,模型將2個(gè)域名中字符“b”和“j”的強(qiáng)依賴性都檢測出來了,這表明模型能夠計(jì)算字符間長距離依賴。
Figure 3 Domain name character dependence圖3 域名字符依賴性
Transformer模型中的位置編碼基于自定義的三角函數(shù)實(shí)現(xiàn),表示為:
PE(pos,2i)=sin(pos/100002i/d)
PE(pos,2i+1)=cos(pos/100002i/d)
其中,pos為字符在域名中的位置序號,i∈(0,d)為維度,d為字符嵌入維度。
該位置編碼不具有學(xué)習(xí)能力,僅提供模糊的相對位置信息[11],對域名字符進(jìn)行位置編碼時(shí),位置編碼信息和字符無關(guān),只和字符出現(xiàn)的位置有關(guān),使得編碼向量不能有效地結(jié)合字符的上下文信息和位置信息。為此,本文引入LSTM對域名進(jìn)行編碼,以代替位置編碼。
LSTM輸入門將向量化后的字符有選擇地輸入到神經(jīng)元中,遺忘門控制對上1時(shí)刻學(xué)習(xí)到的字符信息的遺忘程度,在t時(shí)刻存儲器內(nèi)存儲該時(shí)刻前學(xué)習(xí)到的字符向量St-1。遺忘門的輸入為向量Gt,Gt由當(dāng)前時(shí)刻輸入的節(jié)點(diǎn)向量xt,與上1時(shí)刻輸出向量ht-1拼接而成,輸出門得到當(dāng)前字符編碼,包含了該時(shí)刻前學(xué)習(xí)到的字符向量St-1和當(dāng)前字符向量xt。
LSTM字符編碼包含了字符級的上下文信息和位置信息,從而將字符信息和字符位置信息結(jié)合起來。
本文提出基于Transformer模型的DGA域名檢測方法MHA,如圖4所示,由LSTM編碼、多頭自注意力機(jī)制、Software組成,分類器輸出結(jié)果。
Transformer模型中編碼器由6個(gè)相同的層組成,每層都包含1次多頭自注意力計(jì)算。在自然語言處理中,單詞量很大,因此需要多次運(yùn)算獲得單詞間的依賴信息;鑒于域名中字符種類較少,本文只使用單層的多頭自注意力機(jī)制來捕獲字符間的依賴性。
Figure 4 Diagram of DGA domain name detection method (MHA)圖4 DGA域名檢測方法MHA框圖
(1)編碼。
通過嵌入層訓(xùn)練,得到域名字符向量化表示:
C={C1,C2,C3,…,Cl}
其中,C為域名矩陣,Ci為單個(gè)字符的向量化表示,l為域名長度。并用LSTM層對字符向量編碼,得到域名編碼。
(2)多頭自注意力。
多頭自注意力計(jì)算中,每1頭即為1次線性映射。對域名編碼E進(jìn)行多次線性映射,得到不同子空間內(nèi)域名表示Ei。在每個(gè)子空間內(nèi)對Ei進(jìn)行自注意力計(jì)算,其依賴性權(quán)重加權(quán)后域名表示為Ai。對提取的Ai進(jìn)行連接,線性變換后得到矩陣α:
α=concat(A1,A2,A3,…,Ah)W
其中,W∈Rhd×1為參數(shù)矩陣,Ai為不同頭計(jì)算的依賴性加權(quán)矩陣,α∈Rl×l為多頭自注意力計(jì)算后域名的矩陣表示,concat為連接函數(shù)。
(3)全連接與Softmax。
將α輸入全連接層降維后,再輸入Softmax層進(jìn)行分類檢測,域名分類得到域名預(yù)測標(biāo)簽(DGA或正常域名):
?=Softmax(Dense(α))
定義訓(xùn)練損失函數(shù)loss為真實(shí)標(biāo)簽的負(fù)對數(shù)似然率:
loss=-∑logP?,I
其中,I是域名真實(shí)標(biāo)簽,P?,I為?被模型分類為I的概率。
實(shí)驗(yàn)數(shù)據(jù)為2級域名,其中真實(shí)域名來自網(wǎng)絡(luò),主要為各地方政府機(jī)關(guān)、學(xué)校等包含地域信息的域名;DGA域名來自網(wǎng)絡(luò)安全公司系統(tǒng)中無法檢測的DGA域名。表3包括域名數(shù)據(jù)集的域名種類、數(shù)據(jù)集大小、最大最小長度等信息,數(shù)據(jù)集的80%數(shù)據(jù)用于訓(xùn)練模型,10%用于模型訓(xùn)練時(shí)驗(yàn)證,10%用于最終測試。訓(xùn)練輪數(shù)最大為30,驗(yàn)證集上若連續(xù)2輪準(zhǔn)確率沒有提升則結(jié)束模型訓(xùn)練。
Table 3 Domain datasets表3 域名數(shù)據(jù)集
4.2.1 與傳統(tǒng)方法比較
將本文MHA方法與Transformer方法、ATT-GRU方法[7]、邏輯回歸(LR)方法、支持向量機(jī)(SVM)方法進(jìn)行對比,其中Transformer模型使用模型自帶的位置編碼,其他結(jié)構(gòu)和MHA完全相同。本文方法和Transformer、ATT-GRU方法的參數(shù)選擇相同,包括嵌入層維度128維,LSTM選取128個(gè)單元,Dropout率均為0.5。
對模型評價(jià)采用精確率Precision和召回率Recall以及F1值。精確率反映模型對DGA域名的查準(zhǔn)率,召回率反映模型對DGA域名的查全率,F(xiàn)1值綜合考慮模型的有效性。
實(shí)驗(yàn)結(jié)果如表4所示,MHA方法的F1值為0.970 2,是所有方法中最好的,表明MHA模型的整體表現(xiàn)最好。傳統(tǒng)應(yīng)用統(tǒng)計(jì)特征的LR方法和SVM方法各項(xiàng)指標(biāo)最差,說明基于統(tǒng)計(jì)方法不能有效區(qū)分DGA和縮略域名。
ATT-GRU的精確率和召回率均低于基于Transformer的2種方法,說明縮略域名相鄰字符間的關(guān)聯(lián)性弱,基于循環(huán)神經(jīng)網(wǎng)絡(luò)的方法不適合檢測縮略域名。另外,MHA的召回率和精確率比Transformer分別提高了1.67%和1.05%,表明MHA可學(xué)習(xí)的位置編碼能夠有效地表示域名字符的上下文信息,提升了分類效果。
Table 4 Precision,Recall and F1 score of different methods表4 不同方法的精確率、召回率和F1值
4.2.2 誤報(bào)率分析
在保證精確率的前提下,誤報(bào)率是安全系統(tǒng)考慮的重點(diǎn)。誤報(bào)的發(fā)生會造成大量系統(tǒng)資源的誤消耗,長期的高誤報(bào)會降低安全檢測的可靠性。
本文分別對縮略域名、中文全拼域名和DGA域名進(jìn)行檢測。評價(jià)標(biāo)準(zhǔn)為誤報(bào)率,計(jì)算方式為:
本文將DGA域名標(biāo)記為正樣本,真實(shí)域名標(biāo)記為負(fù)樣本。TN表示被模型分類正確的負(fù)樣本,F(xiàn)P表示被模型分類錯誤的正樣本,i表示為縮略域名或全稱域名。
由表5可知,縮略域名的誤報(bào)率均高于全稱域名的,表明縮略域名較全稱域名更難檢測。從方法分析,基于深度學(xué)習(xí)的方法在2類域名上的表現(xiàn)均好于傳統(tǒng)機(jī)器學(xué)習(xí)的方法,深度學(xué)習(xí)方法具有更好的學(xué)習(xí)能力。MHA方法在5種方法中表現(xiàn)最好,說明注意力機(jī)制解決了縮略域名和DGA域名難以區(qū)分的問題,從而降低了模型的誤報(bào)率,提升了模型的可靠性。
MHA方法在縮略域名誤報(bào)率上比ATT-GRU降低了2.98%,說明基于依賴性檢測DGA域名的方法解決了基于隨機(jī)性方法對高隨機(jī)縮略域名誤報(bào)率高的問題。
對比Transformer,MHA方法在2類域名誤報(bào)率上分別降低了1.19%和0.56%,說明基于LSTM的編碼方式能夠有效地獲取字符位置信息,對于縮略域名誤報(bào)率的降低幅度更大。
Table 5 Detecting results comparison of different domains name detection methods表5 不同種類域名檢測結(jié)果比較
4.2.3 多頭注意力分析
不同頭(Head)數(shù)量在測試集上的準(zhǔn)確率和損失值的變化如圖5所示。
Figure 5 Trends of accuracy and loss value圖5 準(zhǔn)確率與損失值變化趨勢
隨著頭數(shù)量的增加,準(zhǔn)確率隨之上升,損失值隨之下降。當(dāng)頭數(shù)量達(dá)到6時(shí),準(zhǔn)確率和損失值趨于平穩(wěn),此時(shí)增加頭的數(shù)量無法提升模型的準(zhǔn)確率,即增加對域名矩陣進(jìn)行線性映射的次數(shù),無法在增加的線性空間內(nèi)提取出有效的字符依賴性。因此,本文中選取頭數(shù)量為6。
在不同頭(Head)對應(yīng)的子空間內(nèi),對域名進(jìn)行自注意力運(yùn)算得到字符間依賴性權(quán)值,如圖6所示是本文方法對黑龍江科技廳域名“hljkjt”的檢測結(jié)果。
圖6a是頭為2時(shí)計(jì)算的域名字符依賴性,圖6b是頭為5時(shí)計(jì)算的域名字符依賴性。前者檢測出字符“h”“l(fā)”和“j”間的依賴性較強(qiáng),后者檢測出“k”“j”和“t”間的依賴性較強(qiáng),2個(gè)頭分別檢測出代表黑龍江的字符“hlj”和代表科技廳的字符“kjt”。不同的頭可檢測域名內(nèi)不同字符依賴性,多頭可從更大的線性空間內(nèi)檢測字符依賴性,可以充分提取域名內(nèi)字符依賴性。
Figure 6 Character dependence in different subspaces圖6 不同子空間內(nèi)字符依賴性
4.2.4 訓(xùn)練中準(zhǔn)確率與損失函數(shù)值分析
圖7中,MHA在第24輪訓(xùn)練收斂,比Transformer收斂所需的輪次多。因?yàn)镸HA使用LSTM計(jì)算字符編碼,而Transformer使用函數(shù)計(jì)算位置編碼,無需學(xué)習(xí)字符位置信息,MHA方法降低了時(shí)間效率。
Figure 7 Training accuracy and loss value trends圖7 訓(xùn)練準(zhǔn)確率與損失值變化趨勢
由圖7a可知,MHA方法的準(zhǔn)確率從第15輪就提高到95%,之后又緩慢提高到98.54%;Transformer在第15輪收斂,其準(zhǔn)確率達(dá)到96.98%;ATT-GRU經(jīng)過25輪后其準(zhǔn)確率提高到93.7%,MHA的準(zhǔn)確率最高。圖7b中,MHA和Transformer在初始階段損失值明顯低于ATT-GRU的,多頭注意力機(jī)制更適合處理域名分類任務(wù)。在15輪后,Transformer的損失值趨于穩(wěn)定,MHA則有明顯降低,此時(shí)LSTM編碼優(yōu)于Transformer的位置編碼。
綜合準(zhǔn)確率和損失函數(shù),MHA中使用LSTM對域名編碼,結(jié)合Transformer中的多頭注意力機(jī)制能更好地分辨縮略域名和DGA,有助于其更好地收斂。
本文分析了合法域名和DGA域名中字符間依賴關(guān)系的不同,得到了縮略域名字符間長程依賴性的計(jì)算方法,基于此,提出了基于Transformer模型的DGA檢測方法(MHA方法)。通過LSTM提取字符信息改進(jìn)和替代Transformer中的位置編碼。實(shí)驗(yàn)表明,MHA方法考慮和學(xué)習(xí)到了字符間的依賴性,相比現(xiàn)有方法,較好地提高了DGA域名識別率,降低了對縮略域名的誤報(bào)率,整體模型的評價(jià)優(yōu)于現(xiàn)有方法。