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