◆林思明 陳騰躍 梁煜麓
基于BiLstm神經(jīng)網(wǎng)絡(luò)的DGA域名檢測(cè)方法
◆林思明 陳騰躍 梁煜麓
(廈門安勝網(wǎng)絡(luò)科技有限公司 福建 361008)
DGA域名檢測(cè)是檢測(cè)僵尸網(wǎng)絡(luò)C&C通信的關(guān)鍵技術(shù)之一,傳統(tǒng)的檢測(cè)方法通常是基于黑名單過濾、統(tǒng)計(jì)特征。傳統(tǒng)檢測(cè)方法存在大量瓶頸,包括:特征提取繁瑣,自動(dòng)化程度低,編碼實(shí)現(xiàn)難度較高,檢測(cè)率偏低以及誤報(bào)率偏高等。針對(duì)上述問題,提出一種基于BiLstm神經(jīng)網(wǎng)絡(luò)的DGA域名檢測(cè)方法。首先,采用詞袋模型對(duì)域名進(jìn)行處理,將字符類型的域名轉(zhuǎn)換為適合BiLstm神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù),然后基于BiLstm神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)適合DGA域名檢測(cè)的各層神經(jīng)網(wǎng)絡(luò)的參數(shù),構(gòu)建能夠?qū)崿F(xiàn)DGA域名的特征自主學(xué)習(xí)的最優(yōu)檢測(cè)模型,從而實(shí)現(xiàn)DGA域名的檢測(cè)。所提方法能夠自動(dòng)提取DGA域名的特征,完全脫離人工特征提取;實(shí)現(xiàn)較高的檢測(cè)率以及較低的誤報(bào)率。
神經(jīng)網(wǎng)絡(luò);域名檢測(cè)
隨著互聯(lián)網(wǎng)使用不斷的普及,以僵尸網(wǎng)絡(luò)為代表的惡意域名攻擊數(shù)量也在不斷的增長(zhǎng)。僵尸網(wǎng)絡(luò)(BotNet)是指使用將大量僵尸主機(jī)(Bot)感染病毒,通過命令與控制服務(wù)器(Command and Control Server,C&C Server)形成一個(gè)可一對(duì)多控制的網(wǎng)絡(luò)。攻擊者通過使用多個(gè)域名鏈接到C&C服務(wù)器,以達(dá)到操作入侵設(shè)備的目的。2017年中國(guó)互聯(lián)網(wǎng)網(wǎng)絡(luò)安全報(bào)告指出聯(lián)網(wǎng)智能設(shè)備惡意程序控制服務(wù)器IP地址約1.5萬個(gè),位于境外的IP地址占比約81.7%;被控聯(lián)網(wǎng)智能設(shè)備IP地址約293.7萬個(gè),其中控制規(guī)模在1萬個(gè)以上的僵尸網(wǎng)絡(luò)39個(gè),5萬個(gè)以上的5個(gè),其余的均為10到10000不等的僵尸網(wǎng)絡(luò)。由此可見僵尸網(wǎng)絡(luò)對(duì)網(wǎng)絡(luò)安全運(yùn)行和用戶數(shù)據(jù)安全都是極具威脅的存在。
惡意域名的檢測(cè)是遏制僵尸網(wǎng)絡(luò)的主要手段之一,為了躲避域名黑名單檢測(cè)技術(shù)手段,一種利用隨機(jī)字符來生成C&C域名算法應(yīng)運(yùn)而生,簡(jiǎn)稱DGA。因此DGA域名檢測(cè)成為檢測(cè)僵尸網(wǎng)絡(luò)C&C通信的一個(gè)重要的環(huán)節(jié)。
傳統(tǒng)的DGA域名檢測(cè)通常是基于黑名單過濾、統(tǒng)計(jì)特征。傳統(tǒng)的DGA檢測(cè)方法存在特征提取繁瑣,自動(dòng)化程度低,編碼實(shí)現(xiàn)難度較高,檢測(cè)率偏低以及誤報(bào)率偏高等瓶頸。針對(duì)上述問題,本文提出一種基于BiLstm神經(jīng)網(wǎng)絡(luò)的DGA域名檢測(cè)方法。首先,采用詞袋模型對(duì)域名進(jìn)行處理,將字符類型的域名轉(zhuǎn)換為適合BiLstm神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù),然后基于BiLstm神經(jīng)網(wǎng)絡(luò)設(shè)計(jì)適合DGA域名檢測(cè)的各層神經(jīng)網(wǎng)絡(luò)的參數(shù),構(gòu)建能夠?qū)崿F(xiàn)DGA域名的特征自主學(xué)習(xí)的最優(yōu)檢測(cè)模型,從而實(shí)現(xiàn)DGA域名的檢測(cè)。針對(duì)DGA域名檢測(cè)實(shí)驗(yàn)表明,本文所提方法很好的解決了傳統(tǒng)DGA域名檢測(cè)存在的瓶頸,取得了較好的檢測(cè)結(jié)果。
一個(gè)完整的域名由兩個(gè)或者兩個(gè)以上部分組成,各個(gè)部分使用英文的句號(hào)”.”分隔。至少包含一個(gè)頂級(jí)域名和一個(gè)二級(jí)域名。例如: baidu.com; 由一個(gè)頂級(jí)域名com和一個(gè)二級(jí)域名baidu組成。域名的最后一個(gè)"."的右邊部分稱為頂級(jí)域名或一級(jí)域名(TLD),最后一個(gè)"."的左邊部分稱為二級(jí)域名(SLD) ;以英文的句號(hào)”.”為分隔符,以此類推二級(jí)域名的左邊部分為三級(jí)域名,三級(jí)域名的左邊部分為四級(jí)域名。DGA域名是由字符和數(shù)字結(jié)合隨機(jī)算法生成的頂級(jí)域名除外的部分。因此本文在后面提到的域名均是不考慮頂級(jí)域名部分,只對(duì)除了頂級(jí)域名外的部分進(jìn)行特征提取。
由域名分析剔除頂級(jí)域名后,引入詞袋模型對(duì)域名進(jìn)行處理,構(gòu)建適合BiLSTM神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù)。
域名自身字符串包含豐富的詞法特征,與自然語(yǔ)言非常相似,適合用自然語(yǔ)言的處理方式。而詞袋(BoW)模型就是將自然語(yǔ)言中的詞進(jìn)行數(shù)學(xué)化的一種方式。
圖 1 域名結(jié)構(gòu)
BoW可以理解為一種直方圖統(tǒng)計(jì),是用于自然語(yǔ)言處理和信息檢索中的一種簡(jiǎn)單的文檔表示方法。 BoW模型忽略掉文檔的語(yǔ)法和語(yǔ)序等要素,其只是作為若干詞匯的集合,在文檔中每個(gè)單詞的出現(xiàn)都是獨(dú)立的。
由域名分析可得到域名是由0到9;a到z;英文句號(hào)”.”;符號(hào)”_”及符號(hào)”-”組成,共38個(gè)符號(hào),為此形成如下圖2所示的詞袋。
圖 2 詞袋
通過詞袋模型,把域名轉(zhuǎn)化為適合BiLstm神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù),轉(zhuǎn)換原理如圖3所示。轉(zhuǎn)換過程中,域名的長(zhǎng)度限制為100個(gè)字符;當(dāng)域名長(zhǎng)度不夠100個(gè)字符時(shí),轉(zhuǎn)換時(shí)使用數(shù)值40進(jìn)行填充。
圖 3 轉(zhuǎn)換原理
目前檢測(cè)DGA域名的方法主要有傳統(tǒng)的統(tǒng)計(jì)特征和基于深度學(xué)習(xí)。相比較于傳統(tǒng)的統(tǒng)計(jì)特征,深度學(xué)習(xí)模型擁有優(yōu)秀的自動(dòng)特征提取能力。
LSTM 是深度學(xué)習(xí)模型中一種特殊的RNN模型,可用于學(xué)習(xí)長(zhǎng)期依賴信息,處理序列數(shù)據(jù),在文本分類、翻譯等領(lǐng)域廣泛使用。LSTM 通過刻意的設(shè)計(jì)來避免長(zhǎng)期依賴問題,它是從左往右推進(jìn)的,就像傳送帶一樣,將信息從上一個(gè)單元傳送到下一個(gè)單元,和其他部分只有很少的相互作用。圖4為L(zhǎng)STM的推導(dǎo)圖及計(jì)算公式,其整體的推導(dǎo)過程和RNN是一致的,唯一的區(qū)別在于LSTM的每個(gè)神經(jīng)元。圖5為L(zhǎng)STM每個(gè)神經(jīng)元內(nèi)部推導(dǎo)圖及計(jì)算公式,LSTM巧妙的在每個(gè)神經(jīng)元的內(nèi)部增加了輸入門限,遺忘門限和輸出門限,使得自循環(huán)的權(quán)重發(fā)生變化。輸入門限,一個(gè)Sigmoid層,觀察ht?1和xt,對(duì)于神經(jīng)元狀態(tài)ct?1中的每一個(gè)元素,輸出一個(gè)0~1之間的數(shù),1表示完全保留該信息,0表示完全丟棄該信息。遺忘門限,一個(gè)Sigmoid層決定我們要更新哪些信息,并由一個(gè)tanh層創(chuàng)造了一個(gè)新的候選值,結(jié)果在(-1, 1)(?1,1)范圍。輸出門限,控制哪些信息需要輸出。
圖 4 LSTM的推導(dǎo)圖及計(jì)算公式
圖 5 LSTM每個(gè)神經(jīng)元內(nèi)部推導(dǎo)圖及計(jì)算公式
BiLSTM是在LSTM的基礎(chǔ)上演變而來的;與LSTM相比較,BiLSTM同時(shí)考慮了過去的特征和未來的特征,使用兩個(gè)LSTM,一個(gè)正向輸入序列,一個(gè)反向輸入序列,再將兩者的輸出結(jié)合起來作為最終的結(jié)果。BiLSTM的隱藏層需要保存兩個(gè)值,一個(gè)參數(shù)Ci參與正向計(jì)算,另一個(gè)參數(shù)C′i參與反向計(jì)算,最終輸出的yi取決于Ci和C′i。圖6為BiLSTM的推導(dǎo)圖及計(jì)算公式。
在1.2節(jié)中,使用Bow模型處理DGA域名,使得域名中的每個(gè)字符變得獨(dú)立,字符所在域名中的語(yǔ)法和語(yǔ)序被隱藏起來,而BiLstm可以很好的保留文檔的過去特征、未來特征和時(shí)序特征,完美解決了該問題,使得DGA域名中的每個(gè)字符的語(yǔ)法和語(yǔ)序重新顯現(xiàn)。
圖 6 BiLSTM的推導(dǎo)圖及計(jì)算公式
(1)實(shí)驗(yàn)數(shù)據(jù)集
本文實(shí)驗(yàn)數(shù)據(jù)集包含正域名樣本和負(fù)域名樣本,正域名樣本主要來自于Alexa網(wǎng)站收集的前100萬的域名;負(fù)域名樣本使用360開源的前100萬的DGA域名,并且給正負(fù)樣本標(biāo)注相應(yīng)的分類標(biāo)簽。Alexa收集的前100萬的域名為正樣本,標(biāo)注為0;360開放的前100萬的DGA域名為負(fù)樣本,標(biāo)注為1。對(duì)所使用的域名數(shù)據(jù)集進(jìn)行數(shù)據(jù)劃分為訓(xùn)練集160萬個(gè)、驗(yàn)證集20萬個(gè)、測(cè)試集20萬個(gè);訓(xùn)練集、驗(yàn)證集和測(cè)試集的正負(fù)樣本各一半。
(2)實(shí)驗(yàn)調(diào)參
本文使用的是Keras框架結(jié)合Tensorflow進(jìn)行實(shí)驗(yàn)。經(jīng)過反復(fù)的實(shí)驗(yàn),最終選取最佳參數(shù)值為:學(xué)習(xí)率a=0.1;訓(xùn)練輪數(shù)epochs = 200;訓(xùn)練batch_size = 512;Dropout = 0.5;激活函數(shù)使用sigmoid;整個(gè)網(wǎng)絡(luò)模型如圖8所示。
圖 8 網(wǎng)絡(luò)模型
(3)實(shí)驗(yàn)結(jié)果分析
本文在相同的數(shù)據(jù)集的基礎(chǔ)上進(jìn)行了兩組實(shí)驗(yàn),兩組實(shí)驗(yàn)的區(qū)別在于一個(gè)使用了LSTM一個(gè)使用BiLSTM;表1是兩個(gè)模型訓(xùn)練檢測(cè)率和測(cè)試檢測(cè)率。
表1 兩個(gè)模型訓(xùn)練檢測(cè)率和測(cè)試檢測(cè)率
從表1的實(shí)驗(yàn)結(jié)果可以得出BiLSTM的效果要明顯優(yōu)于LSTM。LSTM對(duì)域名的每個(gè)字符產(chǎn)生的向量的處理方式都是一樣的,即使不同域名在不同位置的相同字符所產(chǎn)生的向量也是一樣的。而BiLSTM把字符的位置及未來特征等都考慮在內(nèi);結(jié)合了位置關(guān)系的BiLSTM比沒有結(jié)合位置關(guān)系的LSTM的識(shí)別率提高了0.07。
整個(gè)實(shí)驗(yàn)的過程中,僅僅是將實(shí)驗(yàn)數(shù)據(jù)進(jìn)行標(biāo)識(shí)和數(shù)據(jù)集劃分,沒有建立任何依賴人工提取特征的工程,完全實(shí)現(xiàn)自動(dòng)提取DGA域名的特征。
實(shí)驗(yàn)使用的BiLSTM神經(jīng)網(wǎng)絡(luò)方法取得了較好的效果,訓(xùn)練檢測(cè)率達(dá)到99.54%,測(cè)試檢測(cè)率達(dá)到99.41%。
本文針對(duì)傳統(tǒng)的DGA域名檢測(cè)方法所存在的瓶頸,提出了基于BiLstm神經(jīng)網(wǎng)絡(luò)的DGA域名檢測(cè)方法,并且對(duì)該方法進(jìn)行了實(shí)驗(yàn)。通過實(shí)驗(yàn)的過程和實(shí)驗(yàn)結(jié)果驗(yàn)證了該方法能夠有效的解決傳統(tǒng)的DGA域名檢測(cè)方法所存在的特征提取繁瑣,自動(dòng)化程度低,編碼實(shí)現(xiàn)難度較高,檢測(cè)率偏低以及誤報(bào)率偏高的問題。
[1]Bidirectional LSTM-CRF Models for Sequence Tagging.
[2]End-to-end Sequence Labeling via Bi-directional LSTM-CNNs-CRF.
[3]QUIRK C,MOONEY R,GALLEY M.Language to code:Learning semantic parsers for if-this-then-that recipes[C]// Proceedings of the 53rd Annual Meeting of the Association for Computational Linguistics(ACL-15).Beijing, China:ACL,2015:878-888.
[4]J.Lafferty, A.McCallum,and F. Pereira.2001.Conditional random ?elds: Probabilistic models for segmenting and labeling sequence data. Proceedings of ICML.
[5]AlexGraves.SupervisedSequence Labelling with Recurrent Neural Networks.Textbook,Studies in Computational Intellige nce,Springer,2012.
[6]張維維.基于詞素特征的輕量級(jí)域名檢測(cè)算法[J].軟件學(xué)報(bào),2016.