杜 鵬 丁世飛
(中國(guó)礦業(yè)大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院 江蘇徐州 221116) (礦山數(shù)字化教育部工程研究中心(中國(guó)礦業(yè)大學(xué)) 江蘇徐州 221116)
僵尸網(wǎng)絡(luò)指的是被攻擊者使用惡意代碼感染的終端組成的網(wǎng)絡(luò),而這些感染僵尸程序的終端稱為僵尸主機(jī)(bot).攻擊者通過利用軟件漏洞等方式,使受害主機(jī)感染惡意僵尸程序,并通過一對(duì)多的命令控制(command and control, C&C)信道,控制僵尸主機(jī)完成指定的攻擊行為[1].僵尸網(wǎng)絡(luò)是危害網(wǎng)絡(luò)安全的主要威脅之一[2].僵尸網(wǎng)絡(luò)已有較長(zhǎng)的歷史,第1個(gè)具有惡意攻擊行為的僵尸網(wǎng)絡(luò)是于1999年6月發(fā)現(xiàn)的PrettyPark[3].攻擊者可通過部署并控制僵尸網(wǎng)絡(luò)進(jìn)行多種網(wǎng)絡(luò)攻擊,例如分布式拒絕服務(wù)攻擊(DDoS)、竊取個(gè)人信息數(shù)據(jù)、發(fā)送垃圾郵件、加密勒索等[4].隨著僵尸網(wǎng)絡(luò)的發(fā)展,攻擊者設(shè)計(jì)出了多種類型的命令控制信道,大多數(shù)僵尸網(wǎng)絡(luò)依賴于命令控制服務(wù)器(C&C server)完成攻擊者與僵尸主機(jī)之間的通信[5].僵尸網(wǎng)絡(luò)的檢測(cè)有多種方法[6-10],針對(duì)僵尸網(wǎng)絡(luò)依賴的命令控制服務(wù)器,一旦發(fā)現(xiàn)僵尸網(wǎng)絡(luò)依賴的命令控制服務(wù)器對(duì)應(yīng)的域名,通過使用黑名單、Sinkhole或奪取命令控制服務(wù)器的方式,使僵尸網(wǎng)絡(luò)失效[11-12].采用固定IP或域名的僵尸網(wǎng)絡(luò),其命令控制服務(wù)器容易被發(fā)現(xiàn)然后被關(guān)閉.為了對(duì)抗安全研究者,僵尸網(wǎng)絡(luò)會(huì)采用域名生成算法(domain generation algorithm, DGA)隨機(jī)生成大量的命令控制服務(wù)器域名,這使得發(fā)現(xiàn)僵尸網(wǎng)絡(luò)的命令控制服務(wù)器變得更加困難[13].于是DGA域名的檢測(cè)成為了防范僵尸網(wǎng)絡(luò)的重要研究課題之一.
僵尸網(wǎng)絡(luò)利用DGA域名的原理是,僵尸網(wǎng)絡(luò)作者在僵尸程序中編入設(shè)計(jì)好的DGA算法,僵尸程序根據(jù)該DGA算法生成大量的DGA域名并周期性產(chǎn)生一個(gè)域名列表.僵尸網(wǎng)絡(luò)作者會(huì)注冊(cè)某些域名作為這個(gè)僵尸網(wǎng)絡(luò)的命令控制服務(wù)器.之后,僵尸程序會(huì)根據(jù)該列表依次與表中的域名進(jìn)行連接,如果一個(gè)域名解析成功,而且僵尸程序收到所屬的僵尸網(wǎng)絡(luò)協(xié)議的回復(fù),這時(shí)僵尸主機(jī)便與命令控制服務(wù)器通信成功,即可完成攻擊者的指令.一旦該域名被網(wǎng)絡(luò)安全研究者發(fā)現(xiàn)后被運(yùn)營(yíng)商屏蔽,此時(shí)攻擊者可注冊(cè)DGA域名列表的下一個(gè)域名,這樣攻擊者可以保證命令控制服務(wù)器對(duì)應(yīng)的域名仍能解析成功,保持命令控制服務(wù)器與僵尸主機(jī)的通信,從而增強(qiáng)僵尸網(wǎng)絡(luò)的隱蔽性.這種技術(shù)被研究者稱作domain flux[14].由于domain flux的良好特性,使用DGA域名的domain flux在僵尸網(wǎng)絡(luò)中十分流行.常見的DGA算法通常結(jié)合時(shí)間、字典和硬編碼的常量來生成域名[15],例如基于HTTP協(xié)議的僵尸網(wǎng)絡(luò)Torpig[14],會(huì)根據(jù)時(shí)間通過預(yù)先定義的計(jì)算方式生成字符串,然后在該字符串后連接若干種頂級(jí)域名,完成一個(gè)DGA域名的生成.直到今天,仍有多種僵尸網(wǎng)絡(luò)利用DGA域名來提高自身的隱蔽性[16].
因此DGA域名檢測(cè)是發(fā)現(xiàn)僵尸網(wǎng)絡(luò)的重要途徑之一.在面對(duì)海量的域名解析請(qǐng)求中發(fā)現(xiàn)DGA域名,機(jī)器學(xué)習(xí)技術(shù)成為DGA域名檢測(cè)的關(guān)鍵技術(shù)環(huán)節(jié).目前僵尸網(wǎng)絡(luò)DGA域名檢測(cè)方法取得了不錯(cuò)的進(jìn)展,早期的使用域名字符串特征的檢測(cè)方法主要采用人工定義的特征為基礎(chǔ)的機(jī)器學(xué)習(xí)技術(shù),機(jī)器學(xué)習(xí)技術(shù)使從海量域名服務(wù)請(qǐng)求數(shù)據(jù)中自動(dòng)發(fā)現(xiàn)僵尸網(wǎng)絡(luò)DGA域名成為可能.
近年來深度學(xué)習(xí)取得了飛速發(fā)展,在計(jì)算機(jī)視覺[17-18]、自然語言處理[19]、智能體決策[20]等多項(xiàng)任務(wù)中不斷刷新性能表現(xiàn)記錄,并應(yīng)用到具體的工業(yè)場(chǎng)景中.基于深度學(xué)習(xí)的DGA域名檢測(cè)方法也得到了安全研究者的重視.深度學(xué)習(xí)的一大優(yōu)勢(shì)就是可以自動(dòng)發(fā)現(xiàn)有效的特征并做出分類,判斷一個(gè)域名是否是DGA域名,完成DGA域名的檢測(cè)工作.此外,不同的僵尸網(wǎng)絡(luò)家族生成的DGA域名可按照所屬家族進(jìn)行多分類.深度學(xué)習(xí)方法可以適用于DGA域名的多分類問題,監(jiān)督信息為DGA域名的家族,經(jīng)過訓(xùn)練具備識(shí)別生成該DGA域名的僵尸網(wǎng)絡(luò)家族的能力.
目前使用域名字符串特征的檢測(cè)方法仍存在一些難點(diǎn).DGA域名的訓(xùn)練數(shù)據(jù)來源于真實(shí)的網(wǎng)絡(luò)環(huán)境,由于被發(fā)現(xiàn)的不同僵尸網(wǎng)絡(luò)家族的DGA域名數(shù)量差距較大,因此DGA域名數(shù)據(jù)存在不平衡問題.這會(huì)影響到基于深度學(xué)習(xí)的DGA域名檢測(cè)方法在多分類問題上的性能表現(xiàn).小樣本的僵尸網(wǎng)絡(luò)家族在多種性能度量指標(biāo)上較低.
針對(duì)上述問題,本文設(shè)計(jì)一種基于混合詞向量的深度學(xué)習(xí)模型,應(yīng)用到DGA域名檢測(cè)與分類這一具有現(xiàn)實(shí)意義的網(wǎng)絡(luò)安全場(chǎng)景中.該方法首次結(jié)合了DGA域名的字符級(jí)詞向量與雙字母組(bigram,2-Gram)級(jí)詞向量,令深度學(xué)習(xí)架構(gòu)可以同時(shí)利用不同尺度的詞向量表示信息來提取特征.同時(shí)本文設(shè)計(jì)了一種適用于DGA域名檢測(cè)任務(wù)的深度學(xué)習(xí)模型,該模型使用了混合詞向量的并行深度學(xué)習(xí)架構(gòu).實(shí)驗(yàn)表明,本文提出的方法可以提高在DGA域名多分類問題上的性能.
DGA域名檢測(cè)在針對(duì)僵尸網(wǎng)絡(luò)的防御中扮演十分重要的角色,因此DGA域名檢測(cè)是網(wǎng)絡(luò)安全的一個(gè)研究重點(diǎn),其研究成果多次出現(xiàn)在信息安全的頂級(jí)會(huì)議中.在2010年,Antonakakis等人[21]提出域名聲望系統(tǒng)Notos,通過分析被動(dòng)域名系統(tǒng)(passive domain name system, PDNS)數(shù)據(jù),建立多種手工特征,通過2個(gè)層次的聚類來發(fā)現(xiàn)與已知的惡意域名和IP地址之間的聯(lián)系,最后計(jì)算域名的聲望分?jǐn)?shù),刻畫該域名為DGA域名的可能性.Notos依賴于大量的惡意域名歷史數(shù)據(jù),無法對(duì)單一域名做到實(shí)時(shí)檢測(cè).
Bilge等人[22]提出了另一個(gè)使用PDNS數(shù)據(jù)發(fā)現(xiàn)DGA域名的系統(tǒng)EXPOSURE.該系統(tǒng)使用了與域名系統(tǒng)(domain name system, DNS)協(xié)議相關(guān)的特征,例如基于時(shí)間的特征、基于DNS響應(yīng)的特征、基于域名的特征等.其中基于域名的特征是直接與域名字符串本身相關(guān)的特征,由手工定義的2個(gè)特征組成,數(shù)字字符占總字符數(shù)的比例與有意義的最長(zhǎng)子串占總字符數(shù)的比例.該系統(tǒng)使用的分類器是決策樹,使用上述手工特征進(jìn)行監(jiān)督學(xué)習(xí).
除了上述2種經(jīng)典的結(jié)合DNS數(shù)據(jù)檢測(cè)DGA域名外,大量研究工作只使用域名字符串的特征進(jìn)行DGA域名檢測(cè).Yadav等人[23-24]同時(shí)使用域名簇的1-Gram與2-Gram的統(tǒng)計(jì)特征,計(jì)算DGA域名集合與非DGA域名集合的1-Gram與2-Gram的分布,分布之間的差異使用KL距離度量,聚類結(jié)果與標(biāo)簽集合的差異使用Jaccard距離度量.
Antonakakis等人[25]通過觀察DGA技術(shù)的特點(diǎn)發(fā)現(xiàn),僵尸網(wǎng)絡(luò)在使用DGA域名技術(shù)時(shí)會(huì)查詢大量不存在的域名(non-existent domain, NXDomain),而且相同的僵尸網(wǎng)絡(luò)會(huì)查詢相似的不存在的域名.手工定義不存在的域名的統(tǒng)計(jì)特征,通過聚類發(fā)現(xiàn)潛在的DGA域名簇,之后將不同的域名簇使用隱馬爾可夫模型(hidden Markov model, HMM)進(jìn)行分類.同樣地,這項(xiàng)工作也針對(duì)包含大量域名的域名簇進(jìn)行分類,無法對(duì)單一域名做到實(shí)時(shí)檢測(cè).
這些經(jīng)典方法全部采用手工定義的特征.隨著深度學(xué)習(xí)的發(fā)展,直到2016年,Woodbridge等人[26]首次將深度學(xué)習(xí)應(yīng)用到DGA域名的檢測(cè)中.特別是在只使用域名字符串特征的DGA域名檢測(cè)任務(wù)中,深度學(xué)習(xí)能夠自動(dòng)提取特征的優(yōu)勢(shì)凸顯出來,DGA域名檢測(cè)取得了相當(dāng)程度的進(jìn)步.Woodbridge等人[26]使用長(zhǎng)短期記憶網(wǎng)絡(luò)(long short-term memory, LSTM),將域名字符串作為輸入,經(jīng)過詞向量層生成字符級(jí)詞向量,之后由LSTM層提取時(shí)序特征,送入邏輯回歸層完成分類.使用深度學(xué)習(xí)可以實(shí)現(xiàn)單一域名的實(shí)時(shí)檢測(cè).這項(xiàng)工作在DGA域名的二分類任務(wù)中取得了很好的效果,但在識(shí)別DGA域名家族的多分類任務(wù)中,由于數(shù)據(jù)不平衡性,其結(jié)果仍有提升空間.
最近的研究工作中,Yu等人[27-28]和Vinayakumar等人[29]分別對(duì)多種深度學(xué)習(xí)架構(gòu)在DGA域名檢測(cè)任務(wù)中進(jìn)行了實(shí)驗(yàn)對(duì)比,比較了多種典型的卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network, CNN)與循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network, RNN).DGA域名檢測(cè)可以看作一類特殊的短文本分類任務(wù),在這些實(shí)驗(yàn)中,基于深度學(xué)習(xí)架構(gòu)的方法普遍優(yōu)于基于手工特征的分類方法.但同樣地,這些方法在DGA域名家族多分類任務(wù)中仍有提高空間.
本文提出的基于混合詞向量的方法,有效地提高了域名字符串的信息利用程度.通過結(jié)合字符級(jí)詞向量和雙字母組詞向量,很大程度上保留了數(shù)據(jù)在2種粒度上的特征.該方法設(shè)計(jì)了一種使用窗口特征序列的結(jié)合CNN與LSTM的深度學(xué)習(xí)架構(gòu),較好地發(fā)現(xiàn)2種粒度上的局部特征與長(zhǎng)期依賴特征.
DGA域名檢測(cè)工作中,針對(duì)每一個(gè)域名X,判斷屬于DGA域名或是正常域名,這是二分類問題;判斷屬于正常域名或是DGA域名的具體家族,這是多分類問題.
非DGA的正常域名,就是我們?nèi)粘TL問互聯(lián)網(wǎng)時(shí)提供正常各項(xiàng)互聯(lián)網(wǎng)服務(wù)的域名,如baidu.com,google.com等.正常域名通常是由具有意義的單詞或單詞片段組成,而正如上面的例子,DGA域名通常是由雜亂無意義的字符組成,例如chaqsxphhmr.org.直觀上看,DGA域名與正常域名在字符分布上應(yīng)存在差異,考慮到自然語言中的英文單詞或中文拼音,其元音與輔音字母的分布存在一定的規(guī)律性,存在著多種元音字母與元音字母,輔音字母與輔音字母的固定組合方式.而在使用DGA算法生成的域名字符串中,這樣的字母分布特點(diǎn)并不明顯.于是考慮使用深度學(xué)習(xí)模型進(jìn)行DGA域名的檢測(cè)與分類,深度學(xué)習(xí)模型可以發(fā)現(xiàn)字符之間隱含的分布特征.
深度學(xué)習(xí)模型只能處理經(jīng)過數(shù)值化的張量,而不能直接處理字符形式的數(shù)據(jù).因此在自然語言處理中,常用的處理方式是采用詞向量的技術(shù).首先我們將字符串中的單詞量化,使用one-hot編碼將單詞編為長(zhǎng)度為V的向量.其中V為字典集的大小,通常來說是語料中出現(xiàn)的所有單詞的個(gè)數(shù).經(jīng)過one-hot編碼后,每個(gè)單詞用的向量(o1,o2,…,oV)來表示,V個(gè)元素中只有一個(gè)元素是1,其余元素為0.one-hot編碼的維度是字典集大小V.但如果直接使用one-hot編碼送入深度學(xué)習(xí)模型中學(xué)習(xí),那么將會(huì)導(dǎo)致模型參數(shù)數(shù)量巨大且非常稀疏的問題,同時(shí)one-hot編碼忽略了單詞與單詞之間存在的語義關(guān)系.這將導(dǎo)致較差的訓(xùn)練效果.
因此在將one-hot編碼后的域名字符串直接送入深度學(xué)習(xí)模型進(jìn)行訓(xùn)練之前,首先需要經(jīng)過詞嵌入層生成每個(gè)單詞的詞向量.詞向量是每個(gè)單詞映射到維度比V低得多的實(shí)數(shù)域上的向量,不同的維度包含了不同的語義信息.在常見的自然語言處理任務(wù)中,常使用Word2Vec[30]等方法生成詞向量.這是一種使用了遷移學(xué)習(xí)思想的預(yù)訓(xùn)練方法,Word2Vec的詞嵌入層由一層線性的隱含層組成.將互聯(lián)網(wǎng)上的大量網(wǎng)頁作為無監(jiān)督學(xué)習(xí)的語料,進(jìn)行語言模型的任務(wù),根據(jù)當(dāng)前詞預(yù)測(cè)上下文中可能出現(xiàn)的詞最大化訓(xùn)練數(shù)據(jù)上下文中的詞出現(xiàn)概率,這樣可以學(xué)習(xí)自然語言中包含語義信息的詞向量.
但在DGA域名檢測(cè)問題中,由于大量DGA域名是由看似無規(guī)律的雜亂的字符組成,其域名大多并不是一個(gè)自然語言中存在的單詞,因此直接使用Word2Vec等預(yù)訓(xùn)練方法是難以進(jìn)行的.在DGA域名檢測(cè)任務(wù)中,將域名中的每個(gè)字符看作一個(gè)獨(dú)立的“詞”,也就是針對(duì)每個(gè)字符生成一個(gè)字符級(jí)詞向量.一個(gè)完整的域名記為X,為了方便使用神經(jīng)網(wǎng)絡(luò)進(jìn)行學(xué)習(xí),我們規(guī)定每個(gè)域名字符串的長(zhǎng)度為數(shù)據(jù)集的最大域名長(zhǎng)度L1,對(duì)于長(zhǎng)度不足L1的域名字符串,從字符串頭補(bǔ)全0向量.為了與后面雙字母組級(jí)詞向量進(jìn)行區(qū)分,這些常量的下標(biāo)為1,雙字母組級(jí)詞向量中的常量下標(biāo)為2.那么域名X由L1個(gè)字符xi組成,即
X=(x1,x2,…,xL1),
(1)
之后對(duì)每個(gè)字符xi量化表示.我們?cè)O(shè)定輸入的字符種類數(shù)為V1,即包含了域名字符串中所有可能出現(xiàn)的字符的字典大小為V1.這樣就可以建立一個(gè)字符到one-hot編碼的映射,每個(gè)字符使用一個(gè)V1維的one-hot向量表示.其中只有第i個(gè)元素是1,其余都是0.
xi=(o1,o2,…,oV1)T,
(2)
這樣每個(gè)域名X經(jīng)過one-hot編碼后的維度為(V1,L1).
之后我們將域名字符串的one-hot編碼送入詞嵌入層,我們的詞嵌入層與Word2Vec采用的詞嵌入層類似,是一個(gè)矩陣W1∈RV1×N1,W1的每一行是每個(gè)字符對(duì)應(yīng)的N1維詞向量vi.
(3)
具體而言,給定一個(gè)字符xi的one-hot向量中,oi=1,oi′=0,i≠i′,該字符對(duì)應(yīng)的詞向量即為矩陣W1的第i行,vi∈RN1.每個(gè)域名X通過詞嵌入層得到的字符級(jí)詞向量為E1∈RN1×L1.與Word2Vec的語言模型訓(xùn)練詞向量的方式不同,在DGA域名檢測(cè)任務(wù)中,我們根據(jù)域名對(duì)應(yīng)的標(biāo)簽進(jìn)行具體任務(wù)的監(jiān)督學(xué)習(xí)得到詞向量,學(xué)習(xí)的參數(shù)W1即為詞向量表.
Yadav等人[23-24]所做工作中表明,雙字母組的統(tǒng)計(jì)特征可以用于DGA域名檢測(cè),同時(shí)通過觀察DGA域名與非DGA正常域名的字符分布的特點(diǎn),2個(gè)不同的字符組合會(huì)包含更多的語義信息.我們提出結(jié)合使用字符級(jí)詞向量與雙字母組級(jí)詞向量的混合詞向量DGA域名檢測(cè)深度學(xué)習(xí)模型.雙字母組級(jí)詞向量與字符級(jí)詞向量的詞嵌入層結(jié)構(gòu)相似,與字符級(jí)詞向量不同的是,雙字母組指的是2個(gè)相鄰字符作為一個(gè)基本詞語單位,完成one-hot編碼并送入詞嵌入層中.例如baidu.com的雙字母組序列為ba,ai,id,du,u.,.c,co,om.同樣地,根據(jù)數(shù)據(jù)集中的最大域名長(zhǎng)度指定每個(gè)域名的最大雙字母組長(zhǎng)度為L(zhǎng)2,對(duì)長(zhǎng)度不足L2的字符串補(bǔ)0,域名X由L2個(gè)雙字母組序列xi組成.由于2個(gè)相鄰字符的組合方式更加多樣,因此雙字母組字典大小將大于字符級(jí)字典大小.我們將雙字母組字典大小記為V2,建立包含2個(gè)字符的雙字母組的V2維one-hot向量,得到每個(gè)域名X的雙字母組序列的維度為(V2,L2).之后送入雙字母組詞嵌入層中進(jìn)行訓(xùn)練,W2∈RV2×N2,產(chǎn)生雙字母組詞向量.那么該域名的雙字母組詞向量為E2∈RN2×L2.經(jīng)過2個(gè)不同的詞嵌入層,我們分別得到字符級(jí)詞向量E1和雙字母組級(jí)詞向量E2.這2組詞向量分別包含了字符粒度上的隱含語義信息,以及在2相鄰字符粒度上的隱含語義信息,這將更有利于深度學(xué)習(xí)模型完成域名的分類任務(wù).
為了自動(dòng)發(fā)現(xiàn)域名字符串的隱含特征,我們使用深度學(xué)習(xí)模型來提取特征并進(jìn)行分類任務(wù).卷積神經(jīng)網(wǎng)絡(luò)和循環(huán)神經(jīng)網(wǎng)絡(luò)作為2種應(yīng)用廣泛的深度學(xué)習(xí)模型,在多項(xiàng)任務(wù)中取得了非常好的效果.總體而言卷積神經(jīng)網(wǎng)絡(luò)善于發(fā)現(xiàn)局部特征,但不易發(fā)現(xiàn)序列特征,而循環(huán)神經(jīng)網(wǎng)絡(luò)善于發(fā)現(xiàn)序列特征,能夠發(fā)現(xiàn)數(shù)據(jù)的長(zhǎng)期依賴關(guān)系[31].因此我們考慮結(jié)合卷積神經(jīng)網(wǎng)絡(luò)與循環(huán)神經(jīng)網(wǎng)絡(luò)的特點(diǎn)設(shè)計(jì)我們的深度學(xué)習(xí)模型,我們的深度學(xué)習(xí)模型如圖1所示.該深度學(xué)習(xí)模型由基于字符級(jí)詞向量的網(wǎng)絡(luò)與基于雙字母組詞向量的網(wǎng)絡(luò)并聯(lián)而成,域名輸入依次經(jīng)過詞嵌入層、卷積神經(jīng)網(wǎng)絡(luò)層、循環(huán)神經(jīng)網(wǎng)絡(luò)層、全連接層和稠密層,最終輸出域名的分類結(jié)果.其中循環(huán)神經(jīng)網(wǎng)絡(luò)層采用長(zhǎng)短期記憶網(wǎng)絡(luò)[32],各層網(wǎng)絡(luò)的細(xì)節(jié)如下所述.
Fig. 1 The overall architecture of the model for DGA domain name detection based on deep learning models with mixed word embedding圖1 基于混合詞向量深度學(xué)習(xí)模型的DGA域名檢測(cè)模型總體架構(gòu)圖
我們使用的詞嵌入層如圖1所示,包含2個(gè)并行的詞向量層,分別是字符級(jí)詞向量層和雙字母組級(jí)詞向量層.首先對(duì)域名字符串進(jìn)行預(yù)處理,生成域名的字符序列和雙字母組序列,并補(bǔ)0至各序列的最大長(zhǎng)度.根據(jù)我們使用的數(shù)據(jù)集的統(tǒng)計(jì)信息,最大域名長(zhǎng)度為49個(gè)字符,因此域名字符序列最大長(zhǎng)度L1=49,域名雙字母組序列最大長(zhǎng)度L2=48.域名字符序列字典大小直接取ASCII字符種類數(shù),即V1=256.域名雙字母組序列字典大小V2=2 000.詞向量維度皆取n=128.之后字符序列送入字符級(jí)詞向量層,雙字母組序列送入雙字母組詞向量層,得到2個(gè)粒度的詞向量:
E1=W1TXL1,
(4)
E2=W2TXL2.
(5)
域名字符串是一維的文本序列,對(duì)應(yīng)地,我們采用一維卷積神經(jīng)網(wǎng)絡(luò).一維卷積窗口在詞向量序列上滑動(dòng),檢測(cè)不同位置上的特征,來自動(dòng)發(fā)現(xiàn)不同的域名中含有的隱含模式.
設(shè)域名字符串包含L個(gè)詞向量,每個(gè)詞向量記作ei.由于字符級(jí)詞向量與雙字母組級(jí)詞向量在結(jié)構(gòu)上是類似的,這里不再分開討論.ei∈Rn,是域名中第i個(gè)字符或雙字母組對(duì)應(yīng)的詞向量,E∈RL×n為長(zhǎng)度為L(zhǎng)的域名的詞向量序列.設(shè)一維卷積核的長(zhǎng)度為k,那么卷積核表示為m∈Rk×d.為了獲得域名的局部特征,對(duì)于域名的每一個(gè)字符或雙字母組的位置j,建立一個(gè)窗口向量wj.窗口向量的長(zhǎng)度與卷積核長(zhǎng)度相同,也就是由連續(xù)的k個(gè)詞向量組成,記為
wj=(ej,ej+1,…,ej+k-1),
(6)
窗口向量wj∈Rk×n.之后對(duì)每個(gè)窗口向量使用卷積核m進(jìn)行卷積運(yùn)算,那么每個(gè)窗口向量產(chǎn)生一個(gè)窗口特征圖aj,
(7)
aj的計(jì)算過程中,b是偏置項(xiàng),f是非線性激活函數(shù),通常使用tanh或RELU,⊙是元素乘法.按行連接域名的每個(gè)窗口向量進(jìn)行卷積運(yùn)算產(chǎn)生的每個(gè)窗口特征圖,得到該域名的一個(gè)維度的特征圖A,A∈Rl-k+1.
A=(a1,a2,…,al-k+1).
(8)
卷積神經(jīng)網(wǎng)絡(luò)中經(jīng)常同時(shí)使用多個(gè)卷積核,這里我們記卷積核數(shù)目為nc.這樣每一個(gè)卷積核產(chǎn)生一個(gè)維度的特征圖,nc個(gè)卷積核將產(chǎn)生nc個(gè)維度的特征圖,將它們按列連接,最終得到域名特征圖FM:
FM=[A1;A2;…;Anc].
(9)
按列連接使用;表示,F(xiàn)M∈R(l-k+1)×nc.在我們的模型中,窗口大小取k=3,卷積層同時(shí)使用64個(gè)卷積核.字符級(jí)卷積神經(jīng)網(wǎng)絡(luò)中,字符序列長(zhǎng)度L1=49,那么字符級(jí)窗口特征圖FM∈R47×64;雙字母組卷積神經(jīng)網(wǎng)絡(luò)中,雙字母組序列長(zhǎng)度為L(zhǎng)2=48,那么雙字母組級(jí)窗口特征圖FM∈R46×64.卷積神經(jīng)網(wǎng)絡(luò)層卷積窗口原理如圖2所示:
Fig. 2 The convolution windows in the convolution layer圖2 卷積神經(jīng)網(wǎng)絡(luò)層卷積窗口原理示意圖
卷積神經(jīng)網(wǎng)絡(luò)通常使用最大池化層或均值池化層對(duì)特征圖進(jìn)行處理,使得卷積神經(jīng)網(wǎng)絡(luò)提取的特征更顯著,但在我們的模型中,沒有采用池化層,考慮到之后采用循環(huán)神經(jīng)網(wǎng)絡(luò)的主要目的是發(fā)現(xiàn)域名的序列之間的時(shí)序依賴關(guān)系,池化層離散地選取特征圖將破壞特征圖之間的時(shí)序依賴關(guān)系.因此我們的模型中沒有使用池化層.
在我們的模型中,循環(huán)神經(jīng)網(wǎng)絡(luò)層采用長(zhǎng)短期記憶網(wǎng)絡(luò),即LSTM.一個(gè)LSTM單元由輸入門it、輸出門和遺忘門ft構(gòu)成.重復(fù)的LSTM單元可記錄每一個(gè)時(shí)刻的狀態(tài),在本問題中,每一個(gè)時(shí)刻就是域名的每一個(gè)字符或雙字母組位置.輸入門控制新的輸入值流入單元的程度,遺忘門控制值在單元中保留的程度,輸出門控制決定哪些值用于輸出激活LSTM單元.每個(gè)單元由前一個(gè)隱藏狀態(tài)ht-1和當(dāng)前時(shí)刻的輸入xt決定,xt包含了it和ft,它們共同計(jì)算得到當(dāng)前記憶單元ct和當(dāng)前隱藏狀態(tài)ht.LSTM單元內(nèi)函數(shù)定義如下:
it=σ(Wi(ht-1,xt)+bi),
(10)
ft=σ(Wf(ht-1,xt)+bf),
(11)
qt=tanh(Wq(ht-1,xt)+bq),
(12)
ot=σ(Wo(ht-1,xt)+bo),
(13)
ct=ft⊙ct-1+it⊙qt,
(14)
ht=ot⊙tanh(ct),
(15)
σ表示sigmoid函數(shù),tanh是雙曲正切函數(shù),⊙表示元素乘法.在LSTM網(wǎng)絡(luò)中,所有單元中的向量都具有相同的維度,在我們的模型中,LSTM單元中的向量維度和卷積神經(jīng)網(wǎng)絡(luò)輸出的窗口特征圖的維度相同,都為nc=64.LSTM層的輸入的特征向量為式(9)所示的域名特征圖FM,在字符級(jí)網(wǎng)絡(luò)結(jié)構(gòu)中,LSTM層輸入的特征向量的維度是(47,64);在雙字母組級(jí)網(wǎng)絡(luò)結(jié)構(gòu)中,LSTM層輸入的特征向量的維度是(46,64).
LSTM層通過如下步驟進(jìn)行反向傳播更新權(quán)值:
(16)
(17)
(18)
LSTM單元中使用多種門的設(shè)計(jì)是為了存儲(chǔ)長(zhǎng)距離序列的狀態(tài),可以緩解梯度消失的問題.LSTM為時(shí)序數(shù)據(jù)學(xué)習(xí)長(zhǎng)期依賴而設(shè)計(jì),因此選用LSTM來學(xué)習(xí)卷積層提取的高層特征的時(shí)序依賴關(guān)系.
為了防止過擬合,我們?cè)贚STM層后使用Drop -out. Dropout在訓(xùn)練時(shí)隨機(jī)移除網(wǎng)絡(luò)中LSTM層和特征融合層之間的邊,也就是忽略一定比例的LSTM單元,從而實(shí)現(xiàn)網(wǎng)絡(luò)的正則化.在我們的模型中,Dropout的比例為0.1.
在特征融合層,我們采用向量連接操作,將字符級(jí)LSTM和雙字母組級(jí)LSTM提取的特征連接起來,進(jìn)行特征融合,使最后的稠密層分類器可以同時(shí)使用不同粒度的特征.設(shè)字符級(jí)LSTM的輸出向量為(Schar1,Schar2,…,Scharnc),雙字母級(jí)LSTM的輸出向量為(Sbigram1,Sbigram2,…,Sbigramnc),在特征融合層,得到特征融合向量:
feature=(schar1,schar2,…,scharnc,sbigram1,sbigram2,…,sbigramnc).
(19)
其中nc=64,特征融合向量的維度為 R128.
稠密層基于融合的特征完成最終的分類功能.根據(jù)任務(wù)的不同,稠密層也略有不同.在DGA域名檢測(cè)的二分類任務(wù)中,稠密層僅由一個(gè)節(jié)點(diǎn)構(gòu)成.在域名的DGA家族多分類任務(wù)中,稠密層節(jié)點(diǎn)數(shù)為域名的家族種類數(shù),也就是多分類問題的標(biāo)簽類別數(shù).由那么稠密層的神經(jīng)元表示如下:
(20)
其中f是一個(gè)非線性激活函數(shù),在DGA域名檢測(cè)的二分類任務(wù)中,激活函數(shù)為sigmoid;在域名的DGA家族多分類任務(wù)中,激活函數(shù)為softmax,公式為
(21)
損失函數(shù)為交叉熵?fù)p失,通過Adam優(yōu)化算法完成反向傳播訓(xùn)練模型:
(22)
本節(jié)介紹本文模型在DGA域名檢測(cè)問題上的實(shí)驗(yàn),使用Keras和TensorFlow實(shí)現(xiàn).Keras是一個(gè)高層次的深度學(xué)習(xí)編程框架,集成了多種神經(jīng)網(wǎng)絡(luò)的實(shí)現(xiàn).Keras基于Python編程語言和TensorFlow后端,支持在GPU上加速訓(xùn)練模型.
實(shí)驗(yàn)采用2個(gè)數(shù)據(jù)集,使用360 Netlab DGA開放數(shù)據(jù)[33](以下簡(jiǎn)稱360數(shù)據(jù)集)為DGA樣本數(shù)據(jù),使用Alexa訪問量全球排名前100萬的網(wǎng)站域名數(shù)據(jù)集[34](以下簡(jiǎn)稱Alexa數(shù)據(jù)集)作為非DGA樣本數(shù)據(jù).
截至2018年9月,360數(shù)據(jù)集包含了42個(gè)DGA域名家族,每條域名數(shù)據(jù)包含家族、域名和驗(yàn)證時(shí)間.由于部分家族的域名數(shù)量過少,我們采用與文獻(xiàn)[26]相同的實(shí)驗(yàn)設(shè)置,除去數(shù)量最少的10個(gè)域名家族中的所有域名數(shù)據(jù),只選取32個(gè)域名家族的域名數(shù)據(jù)用于訓(xùn)練與驗(yàn)證.360數(shù)據(jù)集中的所有域名在DGA域名識(shí)別的二分類問題中,被認(rèn)作DGA陽性,即輸出標(biāo)簽為1.
另一方面,考慮到每日龐大的訪問量,Alexa數(shù)據(jù)集中的域名在各種DGA域名識(shí)別的研究中均被視為非DGA的正常域名,因此在DGA域名識(shí)別的二分類問題中,被認(rèn)作DGA陰性,即輸出標(biāo)簽為0.
在域名家族的多分類問題中,Alexa數(shù)據(jù)集域名作為單獨(dú)一類,與360數(shù)據(jù)集中的32類域名,共同組成具有33個(gè)類別的多分類監(jiān)督數(shù)據(jù).同時(shí),這2個(gè)數(shù)據(jù)集中的所有域名包含的字母都已轉(zhuǎn)換為小寫字母,這是因?yàn)镈NS協(xié)議中域名對(duì)大小寫不敏感,因此字母的大小寫不在特征的考慮范圍內(nèi).2個(gè)數(shù)據(jù)集中的最大域名長(zhǎng)度為49 B.
在本節(jié)中,我們?cè)贏lexa數(shù)據(jù)集和360數(shù)據(jù)集上設(shè)計(jì)實(shí)驗(yàn)驗(yàn)證基于混合詞向量的深度學(xué)習(xí)方法,包括基于混合詞向量的LSTM模型、基于混合詞向量的CNN模型和基于混合詞向量的CNN-LSTM模型.進(jìn)行2組實(shí)驗(yàn)來驗(yàn)證我們提出的基于混合詞向量深度學(xué)習(xí)模型有效性:第1組實(shí)驗(yàn)是DGA域名檢測(cè)的二分類實(shí)驗(yàn).第2組實(shí)驗(yàn)是域名家族的多分類實(shí)驗(yàn).通過本模型與對(duì)比模型在相同數(shù)據(jù)集上進(jìn)行訓(xùn)練與測(cè)試,依照評(píng)價(jià)指標(biāo)驗(yàn)證混合詞向量帶來的性能提升.
首先我們對(duì)數(shù)據(jù)進(jìn)行預(yù)處理,從數(shù)據(jù)集中剔除無關(guān)字段,360數(shù)據(jù)集只保留家族字段與域名字段,Alexa數(shù)據(jù)集中只保留域名字段.之后在二分類任務(wù)中,整合2個(gè)數(shù)據(jù)集的域名數(shù)據(jù),作為深度學(xué)習(xí)模型的輸入數(shù)據(jù),給360數(shù)據(jù)集中的域名標(biāo)簽為1,Alexa數(shù)據(jù)集的域名標(biāo)簽為0.在多分類任務(wù)中,深度學(xué)習(xí)模型的輸入數(shù)據(jù)也是域名數(shù)據(jù),Alexa數(shù)據(jù)集中的所有域名的標(biāo)簽為Alexa家族,360數(shù)據(jù)集中的域名標(biāo)簽為對(duì)應(yīng)的DGA家族字段,將這些家族名稱用1~33的整型數(shù)字唯一標(biāo)識(shí),作為多分類任務(wù)的標(biāo)簽.之后我們生成域名數(shù)據(jù)的字符序列和雙字母組序列,補(bǔ)零至各序列的最大長(zhǎng)度.并把字符和雙字母組看作語言的基本單位“單詞”,生成字符字典和雙字母組字典,并把所有的“單詞”唯一映射到one-hot向量.此時(shí)完成數(shù)據(jù)的預(yù)處理.
數(shù)據(jù)預(yù)處理完成后,劃分訓(xùn)練集和測(cè)試集,測(cè)試集占總數(shù)據(jù)集的20%,按照所有類別隨機(jī)生成訓(xùn)練集和測(cè)試集.我們將字符序列的one-hot向量輸入到對(duì)比模型中,將字符序列和雙字母組序列的one-hot向量輸入到本文提出的模型中,進(jìn)行訓(xùn)練與測(cè)試.
我們使用Adam方法優(yōu)化目標(biāo)函數(shù),超參選擇如下:學(xué)習(xí)率為0.001,β1=0.9,β2=0.999,ε=10-8,decay=0.0.
DGA域名檢測(cè)的二分類任務(wù)中,我們采用精確率(precision)、召回率(recall)、F1值和ROC曲線下面積(AUC)進(jìn)行對(duì)模型的評(píng)價(jià).其中二分類任務(wù)中的精確率、召回率和F1值為微平均(micro average).
域名的DGA家族多分類任務(wù)中,我們采用精確率、召回率和F1值分別在微平均(micro average)和宏平均(macro average)下的值進(jìn)行評(píng)價(jià),如表1所示:
Table 1 Evaluation Metrics in the Experiments表1 實(shí)驗(yàn)采用的評(píng)價(jià)指標(biāo)
Note:Crepresents the total number of classes.
在2個(gè)實(shí)驗(yàn)中,我們采用相同的對(duì)比模型.我們選用文獻(xiàn)[26]提出的LSTM模型和文獻(xiàn)[29]提出的較新的CNN模型.在自然語言處理領(lǐng)域的研究中,LSTM模型在文本分類、機(jī)器翻譯、文本生成等多項(xiàng)任務(wù)中取得了很好的表現(xiàn),已成為多種任務(wù)中的基準(zhǔn)測(cè)試模型.直到2016年,Woodbridge等人[26]首次將LSTM應(yīng)用到DGA域名分類中,并取得了優(yōu)于當(dāng)時(shí)所有的非深度學(xué)習(xí)方法.在2015年,Zhang等人[35]通過實(shí)驗(yàn)發(fā)現(xiàn)字符級(jí)一維卷積神經(jīng)網(wǎng)絡(luò)在自然語言處理的多項(xiàng)任務(wù)中優(yōu)于LSTM方法.文獻(xiàn)[29]選取CNN用于DGA域名檢測(cè)任務(wù),實(shí)驗(yàn)表明取得了很好效果.
此外,文獻(xiàn)[29]的實(shí)驗(yàn)結(jié)果表明,在DGA域名檢測(cè)的二分類實(shí)驗(yàn)與多分類實(shí)驗(yàn)中,基于手工特征的非深度學(xué)習(xí)方法的分類性能都不如LSTM模型.這些機(jī)器學(xué)習(xí)模型包括邏輯回歸、隨機(jī)森林、決策樹和樸素貝葉斯.因此我們選取性能更好的LSTM模型以及CNN模型作為本實(shí)驗(yàn)的對(duì)比模型.
具體來說,LSTM模型的詞向量維度為128維,送入128維的LSTM層中,最后送到稠密層輸出預(yù)測(cè)值.CNN模型中,詞向量維度為128維,1維卷積大小為3,步長(zhǎng)為1,沒有填充,激活函數(shù)為RELU,后跟最大化池化層,大小為2,送入激活函數(shù)為RELU的稠密層,最后送入sigmoid或softmax層進(jìn)行分類.在CNN-LSTM模型中,我們使用的模型的超參數(shù)選擇已經(jīng)在第3節(jié)中提及,重復(fù)部分不再贅述.其中,基于字符級(jí)詞向量的LSTM模型記為L(zhǎng)STM,基于混合詞向量的LSTM模型記為L(zhǎng)STM-MWE;基于字符級(jí)詞向量的CNN模型記為CNN,基于混合詞向量的CNN模型記為CNN-MWE;基于字符級(jí)詞向量的LSTM-CNN模型記為L(zhǎng)STM-CNN,基于混合詞向量的LSTM-CNN模型記為L(zhǎng)STM-CNN-MWE.
DGA域名檢測(cè)的二分類結(jié)果如表2所示.可以看出,我們的模型和3種對(duì)比模型在二分類任務(wù)的4個(gè)評(píng)價(jià)指標(biāo)上都取得了相當(dāng)好的結(jié)果,說明深度學(xué)習(xí)模型在DGA域名檢測(cè)任務(wù)中具有非常優(yōu)秀的性能.這4種模型在二分類任務(wù)中的性能差距不明顯.
Table 2 Test Results for Binary Classification 表2 二分類實(shí)驗(yàn)測(cè)試結(jié)果
Notes: The best results for each metric are shown in boldface.
在第2組實(shí)驗(yàn)中,全部33個(gè)域名家族的在3種評(píng)價(jià)指標(biāo)上的結(jié)果如表3~5所示.根據(jù)實(shí)驗(yàn)結(jié)果可以發(fā)現(xiàn),通過使用本文提出的混合詞向量方法,本文實(shí)驗(yàn)中選取的3種深度學(xué)習(xí)模型都有性能提升,特別是在宏平均精確率、宏平均召回率和宏平均F1值上有較明顯的提升.說明混合詞向量可有效提升在不平衡數(shù)據(jù)集中小樣本類別的分類性能.考慮到類別不平衡的數(shù)據(jù)集上,分類器的分類性能主要受限于小樣本類別,采用混合詞向量可有效增加樣本數(shù)據(jù)的信息利用度,從而緩解由于訓(xùn)練數(shù)據(jù)量不足帶來的影響.在實(shí)際應(yīng)用中,可選擇采用混合詞向量設(shè)計(jì)分類器模型,來提高分類性能表現(xiàn).
Table 3 Test Results of LSTM and LSTM-MWE for Multi-Class Classification 表3 LSTM模型與LSTM-MWE模型的多分類實(shí)驗(yàn)測(cè)試結(jié)果
Continued (Table 3)
Notes: The best results for each metric are shown in boldface.
Table 4 Test Results of CNN and CNN-MWE for Multi-Class Classification表4 CNN模型與CNN-MWE模型的多分類實(shí)驗(yàn)測(cè)試結(jié)果
Continued (Table 4)
Notes: The best results for each metric are shown in boldface.
Table 5 Test Results of CNN-LSTM and CNN-LSTM-MWE for Multi-Class Classification表5 CNN-LSTM模型與CNN-LSTM-MWE模型的多分類實(shí)驗(yàn)測(cè)試結(jié)果
Continued (Table 5)
Notes: The best results for each metric are shown in boldface.
通過實(shí)驗(yàn)我們發(fā)現(xiàn),本文使用的CNN-LSTM模型在只使用字符級(jí)詞向量的實(shí)驗(yàn)中,性能表現(xiàn)優(yōu)于文獻(xiàn)[26]提出的LSTM方法,也優(yōu)于文獻(xiàn)[29]提出的CNN方法.在使用混合詞向量后,本文使用的CNN-LSTM模型在6種方法中(LSTM,LSTM-MWE,CNN,CNN-MWE,CNN-LSTM,CNN-LSTM-MWE),精確率、召回率和F1值這3種評(píng)價(jià)指標(biāo)的微平均和宏平均皆為最優(yōu),具有最好的分類性能,說明本文提出的基于混合詞向量的深度學(xué)習(xí)模型是有效的.
此外,CNN和CNN-LSTM兩個(gè)模型,在使用混合詞向量后,零檢出域名家族的數(shù)目減少.實(shí)驗(yàn)證明我們提出的基于混合詞向量的深度學(xué)習(xí)模型有著最好的特征提取能力與分類效果,且在一定程度上緩解了數(shù)據(jù)不平衡性帶來的負(fù)面影響.
通過觀察CNN-LSTM-MWE模型零檢出的3類域名家族的域名數(shù)據(jù),我們發(fā)現(xiàn),這些域名家族的數(shù)據(jù)量過少,而且這些家族的域名字符串本身也有一些特點(diǎn).其中matsnu家族的域名完全由隨機(jī)挑選的自然語言中的英文單詞和連接線構(gòu)成,如cause-walk-girlfriend.com,這類域名完全仿照真實(shí)的非DGA正常域名,具有很強(qiáng)的隱蔽性,因此從字符和雙字母組的分布特征上看,與正常域名十分類似.而另外2個(gè)所有模型全部零檢出的域名家族,pykspa_v2_real和tempedreve,其具體的域名數(shù)據(jù)例子如ilihen.net,sxilgdils.com,通過觀察可以發(fā)現(xiàn),這些域名的長(zhǎng)度較短,能夠提供的有效特征相對(duì)較少,而且字符串中含有在自然語言的單詞中常見的雙字母組合,這可能導(dǎo)致了這些域名難以被準(zhǔn)確分類.
本文提出了一種基于混合詞向量深度學(xué)習(xí)模型的DGA域名檢測(cè)方法,該方法首次在DGA域名檢測(cè)任務(wù)中使用混合詞向量的并行深度學(xué)習(xí)架構(gòu).針對(duì)域名數(shù)據(jù)的字符分布特點(diǎn)以及不同家族域名數(shù)據(jù)存在不平衡性的特點(diǎn),本文設(shè)計(jì)了字符級(jí)詞向量與雙字母組級(jí)詞向量,這2類詞向量分別可以學(xué)習(xí)字符級(jí)別與雙字母組級(jí)別的語義信息.本文設(shè)計(jì)了適用于DGA域名檢測(cè)的深度學(xué)習(xí)模型,主要部分由卷積神經(jīng)網(wǎng)絡(luò)和LSTM組成.將這2組不同粒度的詞向量分別輸入至字符級(jí)神經(jīng)網(wǎng)絡(luò)與雙字母組級(jí)神經(jīng)網(wǎng)絡(luò)后進(jìn)行特征融合,送入最終的分類器,在DGA域名檢測(cè)二分類任務(wù)中與域名家族的多分類任務(wù)中取得了很好的分類效果.本文設(shè)計(jì)了包括CNN,LSTM,CNN-LSTM等多種深度學(xué)習(xí)模型的對(duì)比模型,通過精確率、召回率、F1值和AUC值等多種評(píng)價(jià)方法對(duì)本模型進(jìn)行了充分的驗(yàn)證.實(shí)驗(yàn)結(jié)果表明,本文提出的基于混合詞向量深度學(xué)習(xí)模型的DGA域名檢測(cè)方法在分類精度方面優(yōu)于許多已有的基于深度學(xué)習(xí)的DGA域名檢測(cè)方法.因此,本文的提出的模型是可行的.
DGA域名家族的多分類任務(wù)存在數(shù)據(jù)不平衡性的問題,本文提出的模型在小樣本域名家族的識(shí)別上較為明顯地優(yōu)于許多已有的基于深度學(xué)習(xí)的DGA域名檢測(cè)方法,在一定程度上緩解了數(shù)據(jù)不平衡性帶來的影響.針對(duì)DGA域名檢測(cè)問題與域名家族多分類問題的研究,未來可從以下2個(gè)方面進(jìn)行深入研究:1)針對(duì)DGA域名數(shù)據(jù)的不平衡性進(jìn)行深入研究,改進(jìn)深度學(xué)習(xí)模型,可考慮多任務(wù)學(xué)習(xí)在DGA域名檢測(cè)與分類問題上的應(yīng)用.2)針對(duì)DGA域名的深度語義表征方法深入研究,本文提出的方法中雙字母組級(jí)詞向量與經(jīng)典的字符級(jí)詞向量提升了模型的分類性能,通過數(shù)據(jù)學(xué)習(xí)更好的語義表征將進(jìn)一步提升模型的多分類效果.提高DGA域名家族的多分類任務(wù)的性能表現(xiàn)將提升防御僵尸網(wǎng)絡(luò)“看得見”的能力,可產(chǎn)生更有價(jià)值的威脅情報(bào),對(duì)于有力保障網(wǎng)絡(luò)安全有著重要的實(shí)際意義.