蔣鴻玲,邵秀麗
(南開大學(xué)信息技術(shù)科學(xué)學(xué)院,天津300071)
近年來,僵尸網(wǎng)絡(luò)的快速發(fā)展使因特網(wǎng)面臨嚴(yán)重的安全威脅.僵尸網(wǎng)絡(luò)是攻擊者(botmaster)通過傳播僵尸程序控制大量主機(jī),通過命令與控制信道(command and control,C&C)與僵尸主機(jī)通信并發(fā)布命令[1].攻擊者利用僵尸網(wǎng)絡(luò)可發(fā)起多種攻擊,如分布式拒絕服務(wù)攻擊、垃圾郵件、信息竊取等[2].
目前主流的僵尸網(wǎng)絡(luò)檢測方法是通過分析網(wǎng)絡(luò)流量來檢測.文獻(xiàn)[3]通過昵稱檢測IRC僵尸網(wǎng)絡(luò);文獻(xiàn)[4]通過PageRank算法計算主機(jī)級別,再根據(jù)已知的僵尸網(wǎng)絡(luò)信息進(jìn)行檢測;文獻(xiàn)[5]通過網(wǎng)絡(luò)通信圖識別P2P網(wǎng)絡(luò),再利用外部系統(tǒng)提供的信息區(qū)分合法P2P網(wǎng)絡(luò)與P2P僵尸網(wǎng)絡(luò);文獻(xiàn)[6-7]通過識別僵尸主機(jī)的惡意行為檢測僵尸網(wǎng)絡(luò).這些僵尸網(wǎng)絡(luò)檢測方法或者需要數(shù)據(jù)包的內(nèi)部信息,無法檢測加密的僵尸網(wǎng)絡(luò);或者依賴外部系統(tǒng)提供信息,不能獨(dú)立進(jìn)行檢測;或者依賴僵尸主機(jī)的惡意行為,在僵尸主機(jī)不發(fā)起攻擊時,不能有效檢測出僵尸網(wǎng)絡(luò).大多數(shù)現(xiàn)有的檢測方法無法自動學(xué)習(xí)僵尸的網(wǎng)絡(luò)流量特征,檢測系統(tǒng)無法自動進(jìn)行檢測學(xué)習(xí),沒有聯(lián)想記憶功能,因此本文提出基于神經(jīng)網(wǎng)絡(luò)的僵尸網(wǎng)絡(luò)檢測方法,用大量的樣本訓(xùn)練神經(jīng)網(wǎng)絡(luò)分類器,然后用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)分類器模型檢測僵尸網(wǎng)絡(luò).本文的檢測方法的優(yōu)點(diǎn)是:1)神經(jīng)網(wǎng)絡(luò)的輸入數(shù)據(jù)只需要數(shù)據(jù)包頭部信息,不需要數(shù)據(jù)包的內(nèi)部信息,可以檢測加密的僵尸網(wǎng)絡(luò);2)基于神經(jīng)網(wǎng)絡(luò)的檢測系統(tǒng)不依賴外部系統(tǒng)提供僵尸網(wǎng)絡(luò)的信息,能獨(dú)立完成檢測;3)神經(jīng)網(wǎng)絡(luò)分類器關(guān)注僵尸主機(jī)的控制命令流量,不依賴僵尸網(wǎng)絡(luò)的惡意行為,在僵尸主機(jī)處于“發(fā)呆”狀態(tài)下仍能檢測出僵尸網(wǎng)絡(luò);4)訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)分類器能自動記憶僵尸網(wǎng)絡(luò)的流量特征,當(dāng)新的流量達(dá)到,能快速得出檢測結(jié)果.
要通過網(wǎng)絡(luò)流量檢測僵尸網(wǎng)絡(luò),首先要明確僵尸網(wǎng)絡(luò)流量的特征.僵尸主機(jī)既有惡意攻擊行為也有C&C通信[6].僵尸主機(jī)不會持續(xù)不斷地進(jìn)行惡意攻擊,在Botmaster給僵尸主機(jī)發(fā)布命令前,僵尸主機(jī)保持“發(fā)呆”狀態(tài),不發(fā)起任何攻擊[8].此外,僵尸主機(jī)的攻擊往往很隱蔽,很難通過網(wǎng)絡(luò)流量檢測出來[9].相比之下,C&C 通信存在于僵尸網(wǎng)絡(luò)的整個生命周期中,因此本文通過識別僵尸網(wǎng)絡(luò)的C&C流量進(jìn)行檢測.
為了有效識別出僵尸網(wǎng)絡(luò)的C&C通信,首先確定最能區(qū)分出僵尸網(wǎng)絡(luò)的C&C通信流量和正常流量的特征.被僵尸網(wǎng)絡(luò)感染的用戶并不知道自己已被感染,仍然進(jìn)行正常的網(wǎng)絡(luò)活動,同時僵尸程序偷偷在后臺執(zhí)行,因此僵尸主機(jī)既有正常的流量也有僵尸網(wǎng)絡(luò)流量.如果以被測網(wǎng)絡(luò)的主機(jī)作為分析對象,僵尸網(wǎng)絡(luò)流量的特征會被大量正常流量覆蓋,因此本文將被測網(wǎng)絡(luò)內(nèi)部主機(jī)和外部主機(jī)作為一個主機(jī)對,以主機(jī)對作為分析對象,這樣可以有效分離出與內(nèi)部主機(jī)通信的合法主機(jī)和僵尸主機(jī).
為提取僵尸網(wǎng)絡(luò)主機(jī)對的特征,首先分析僵尸網(wǎng)絡(luò)的主機(jī)對和正常主機(jī)對的區(qū)別.僵尸主機(jī)為了獲取命令或者更新,需要頻繁/周期性地連接C&C服務(wù)器或者其他僵尸主機(jī)[10-11].與正常流量相比,僵尸主機(jī)間的C&C通信一般字節(jié)數(shù)較小,并且持續(xù)時間較短.而主機(jī)對的一次通信會形成一個流,因此主機(jī)對的通信特征可通過分析主機(jī)對間流的特征提取出來.由于僵尸網(wǎng)絡(luò)通常采用TCP協(xié)議通信,因此本文只分析TCP流,并提取主機(jī)對的TCP流的特征,而不考慮其他僵尸網(wǎng)絡(luò)流量特征,本文提取主機(jī)對的特征包括:
1)通信次數(shù),即TCP流個數(shù);
2)前后2次通信的時間間隔的平均值;
3)前后2次通信的時間間隔變化的平均值;
4)TCP流的字節(jié)數(shù)平均值;
5)TCP流的數(shù)據(jù)包個數(shù)平均值;
6)TCP流的持續(xù)時間平均值.
提取出這些特征后,每個主機(jī)對即可用1個六維的特征向量表示,特征向量的每一維表示主機(jī)對的一個特征.
首先用大量樣本訓(xùn)練神經(jīng)網(wǎng)絡(luò)分類器,然后用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)分類器檢測僵尸網(wǎng)絡(luò).圖1為基于神經(jīng)網(wǎng)絡(luò)的僵尸網(wǎng)絡(luò)檢測模型.
圖1 基于神經(jīng)網(wǎng)絡(luò)的僵尸網(wǎng)絡(luò)檢測模型Fig.1 Botnet detection model based on neural network
基于神經(jīng)網(wǎng)絡(luò)的僵尸檢測過程如下:
1)捕獲網(wǎng)絡(luò)流量.主要獲取被測網(wǎng)絡(luò)內(nèi)部主機(jī)和外部主機(jī)通信的數(shù)據(jù)包.2)形成流.2個主機(jī)間的一次通信會形成一個流,因此將原始數(shù)據(jù)包轉(zhuǎn)換為流.3)提取主機(jī)對的特征.主機(jī)對是指2個互相通信的主機(jī),即被測網(wǎng)絡(luò)內(nèi)部主機(jī)及與其通信的外部主機(jī).本文的神經(jīng)網(wǎng)絡(luò)檢測模型以主機(jī)對作為分析對象,是為了分離出與內(nèi)部被感染主機(jī)通信的合法主機(jī)和僵尸主機(jī).4)特征值預(yù)處理.對提取的主機(jī)對特征進(jìn)行預(yù)處理,通過歸一化操作使各個特征值的取值在同一范圍內(nèi).5)分類器設(shè)計.根據(jù)特征向量設(shè)計神經(jīng)網(wǎng)絡(luò)分類器各層神經(jīng)元的個數(shù).6)神經(jīng)網(wǎng)絡(luò)分類器訓(xùn)練.利用具有類標(biāo)簽的訓(xùn)練數(shù)據(jù)集對神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練,得到訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)分類器.7)僵尸網(wǎng)絡(luò)檢測.利用訓(xùn)練好的神經(jīng)網(wǎng)絡(luò)分類器檢測測試數(shù)據(jù)集中的僵尸網(wǎng)絡(luò),得到檢測結(jié)果.
其中,1)~4)是數(shù)據(jù)準(zhǔn)備及預(yù)處理;5)~6)是神經(jīng)網(wǎng)絡(luò)分類器的形成;7)是利用訓(xùn)練好的分類器檢測僵尸網(wǎng)絡(luò).
為了得到檢測性能好的神經(jīng)網(wǎng)絡(luò)分類器,首先要準(zhǔn)備訓(xùn)練數(shù)據(jù)并進(jìn)行預(yù)處理.訓(xùn)練數(shù)據(jù)要能體現(xiàn)出僵尸網(wǎng)絡(luò)流量的特征,區(qū)分出正常流量和僵尸網(wǎng)絡(luò)流量.訓(xùn)練數(shù)據(jù)準(zhǔn)備及預(yù)處理包括3個過程,首先是網(wǎng)絡(luò)流量捕獲,然后是流的形成,最后是主機(jī)對特征的提取和預(yù)處理.
2.1 .1 網(wǎng)絡(luò)流量捕獲
網(wǎng)絡(luò)流量捕獲主要抓取被測網(wǎng)絡(luò)內(nèi)部主機(jī)與外部主機(jī)通信的數(shù)據(jù)包.圖2為網(wǎng)絡(luò)流量捕獲圖.本文通過交換機(jī)端口鏡像技術(shù)采集真實網(wǎng)絡(luò)環(huán)境中的流量.流量采集器運(yùn)行tcpdump工具捕獲被測網(wǎng)絡(luò)內(nèi)主機(jī)訪問Internet的流量,由于僵尸網(wǎng)絡(luò)通常采用TCP協(xié)議通信,因此只采集TCP協(xié)議的數(shù)據(jù)包,每個小時新建一個pcap文件存儲數(shù)據(jù)包.數(shù)據(jù)解析器將采集的原始數(shù)據(jù)解析為文本文件,導(dǎo)入數(shù)據(jù)庫中.真實網(wǎng)絡(luò)環(huán)境中的流量都標(biāo)記為非僵尸網(wǎng)絡(luò)流量,僵尸網(wǎng)絡(luò)流量通過模擬產(chǎn)生,并導(dǎo)入到數(shù)據(jù)庫中,同時標(biāo)記為僵尸網(wǎng)絡(luò)流量.
圖2 網(wǎng)絡(luò)流量捕獲結(jié)構(gòu)Fig.2 Architecture of traffic capture
2.1 .2 流的形成
主機(jī)間的一次TCP通信會形成一個TCP流,因此首先將捕獲的原始TCP數(shù)據(jù)包轉(zhuǎn)化為TCP流.具有相同五元組(本地IP地址、本地端口號、遠(yuǎn)程IP地址、遠(yuǎn)程端口號、協(xié)議)的數(shù)據(jù)包集合構(gòu)成一個流,同時滿足前后相鄰的2個數(shù)據(jù)包的時間間隔小于閾值Tin(實驗中Tin=60 s).其中本地IP地址和本地端口號是被測網(wǎng)絡(luò)內(nèi)主機(jī)的IP地址和端口號,遠(yuǎn)程IP地址和遠(yuǎn)程端口號是被測網(wǎng)絡(luò)外的主機(jī)的IP地址和端口號.
一個TCP流通常以3次握手(SYN,SYN-ACK,ACK)開始,4 次握手(FIN,ACK,F(xiàn)IN,ACK)或者RST包結(jié)束.因此首先按照五元組對數(shù)據(jù)包分組,組中按照時間排序,每組從第1個數(shù)據(jù)包開始掃描,找出TCP 3次握手包作為TCP流的開始,TCP 4次握手包或者RST包作為TCP流的結(jié)束,從開始到結(jié)束的所有數(shù)據(jù)包組成一個TCP流.記錄每個TCP流,包括如下屬性:本地IP地址、本地端口號、遠(yuǎn)程IP地址、遠(yuǎn)程端口號、流的開始時間、流的結(jié)束時間、流中數(shù)據(jù)包個數(shù)和流的字節(jié)數(shù).
2.1 .3 特征提取及預(yù)處理
根據(jù)第1節(jié)所述,以主機(jī)對為分析對象,提取主機(jī)對通信的流的特征,每個主機(jī)對有6個特征,這樣,即可用下維向量表示一個主機(jī)對.
為了提高僵尸網(wǎng)絡(luò)的檢測率,在訓(xùn)練神經(jīng)網(wǎng)絡(luò)分類器前,需要對特征值進(jìn)行預(yù)處理.2.1.2中提取出的主機(jī)對的各個特征值的取值范圍差別很大,如果直接用提取出的特征向量作為神經(jīng)網(wǎng)絡(luò)輸入,則訓(xùn)練的效果會受取值較大的特征值所影響,因此要對特征值歸一化處理.歸一化操作將所有特征值映射到相同的范圍內(nèi),能有效提高神經(jīng)網(wǎng)絡(luò)分類器的分類性能.本文采用z-score方法進(jìn)行規(guī)范化:
圖3為特征值預(yù)處理的結(jié)果,前2列是主機(jī)對的IP地址,即內(nèi)部主機(jī)和遠(yuǎn)程主機(jī)的IP地址,第3~8列為主機(jī)對的特征值,最后一列是類標(biāo)簽,0表示非僵尸主機(jī)對,1表示僵尸主機(jī)對.從圖3可以看出,預(yù)處理后所有特征值的取值都在同一個范圍內(nèi).
圖3 數(shù)據(jù)預(yù)處理結(jié)果Fig.3 The results of data preprocessing
首先設(shè)計神經(jīng)網(wǎng)絡(luò)層次結(jié)構(gòu),主要是隱層的層數(shù),然后設(shè)計各層神經(jīng)元個數(shù),包括輸入層、隱層、輸出層的神經(jīng)元個數(shù),最后是神經(jīng)網(wǎng)絡(luò)的激活函數(shù).
本文的神經(jīng)網(wǎng)絡(luò)分類器采用單隱層結(jié)構(gòu),因為如果隱層較多,神經(jīng)網(wǎng)絡(luò)的訓(xùn)練會比較慢,尤其數(shù)據(jù)量比較大時,單隱層有較快的訓(xùn)練速度,且不會對網(wǎng)絡(luò)精度影響很大.考慮到網(wǎng)絡(luò)流量一般較大,本文的神經(jīng)網(wǎng)絡(luò)模型采用單隱層.
本文的單隱層BP神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)如圖4所示.對應(yīng)主機(jī)對的特征向量是六維的,因此輸入層設(shè)置了六個神經(jīng)元,分別是:1)TCP流個數(shù)flowCount;2)前后2個TCP流的時間間隔的平均值avgInterval;3)時間間隔變化的平均值avgItvChange;4)TCP流的字節(jié)數(shù)平均值avgByte;5)TCP流的數(shù)據(jù)包個數(shù)平均值avgPktCount;6)TCP流的持續(xù)時間平均值avgDuration.
圖4 單隱層BP神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)Fig.4 Model structure of BP neural network with a hidden layer
隱層神經(jīng)元個數(shù)根據(jù)式(2)可取3~12的值,實驗中對不同隱層神經(jīng)元個數(shù)進(jìn)行測試,選取最優(yōu)值.式(2)為文獻(xiàn)[12]指出的最佳隱層神經(jīng)元個數(shù),其中,k為隱層神經(jīng)元個數(shù),m為輸入層神經(jīng)元個數(shù),n為輸出層神經(jīng)元個數(shù),α為1~10的常數(shù).
輸出層的神經(jīng)元個數(shù)設(shè)置為2.第1個輸出神經(jīng)元用于表示非僵尸主機(jī)對,第2個輸出神經(jīng)元用于表示僵尸主機(jī)對.如果是僵尸網(wǎng)絡(luò)主機(jī)對,則第1個神經(jīng)元的輸出為0,第2個神經(jīng)元輸出為1;如果不是僵尸網(wǎng)絡(luò)主機(jī)對,則第1個神經(jīng)元輸出為1,第2個神經(jīng)元輸出為0.實際訓(xùn)練過程中,輸出神經(jīng)元的取值是[0,1].訓(xùn)練時,若第1個神經(jīng)元的值大于第2個,則將第1個神經(jīng)元取值置為1,將第2個神經(jīng)元取值置為0,并標(biāo)記為非僵尸網(wǎng)絡(luò)主機(jī)對.若第1個神經(jīng)元的值小于第2個,則將第1個神經(jīng)元取值置為0,將第2個神經(jīng)元取值置為1,并標(biāo)記為僵尸網(wǎng)絡(luò)主機(jī)對.
BP神經(jīng)網(wǎng)絡(luò)的激活函數(shù)采用S型函數(shù),如式(3):
神經(jīng)網(wǎng)絡(luò)分類器設(shè)計完成后,即可利用訓(xùn)練數(shù)據(jù)對神經(jīng)網(wǎng)絡(luò)進(jìn)行訓(xùn)練.BP神經(jīng)網(wǎng)絡(luò)的訓(xùn)練過程是不斷迭代的過程,其訓(xùn)練算法流程圖如圖5所示.
圖5 BP神經(jīng)網(wǎng)絡(luò)分類器訓(xùn)練算法流程Fig.5 Flow chart of BP neural network training algorithm
具體步驟如下:
1)初始化神經(jīng)網(wǎng)絡(luò)所需的各個參數(shù).參數(shù)包括輸入層到隱層的權(quán)值和偏置、隱層到輸出層的權(quán)值和偏置、權(quán)值和偏置的初始值是[-0.05,0.05]的隨機(jī)值.另外,還需要設(shè)置神經(jīng)網(wǎng)絡(luò)的期望誤差和最大訓(xùn)練次數(shù).本文設(shè)置的期望誤差是0.001,最大循環(huán)次數(shù)是1 000,即在1 000次循環(huán)內(nèi),誤差小于等于0.001,則BP神經(jīng)網(wǎng)絡(luò)分類器訓(xùn)練結(jié)束,否則循環(huán)1 000次后結(jié)束.
2)從訓(xùn)練樣本中選1組主機(jī)對,給神經(jīng)網(wǎng)絡(luò)的輸入節(jié)點(diǎn)賦值為主機(jī)對的6個特征.
3)計算神經(jīng)網(wǎng)絡(luò)的期望輸出,如果是僵尸網(wǎng)絡(luò)主機(jī)對,則輸出層的第1個節(jié)點(diǎn)賦值為0,第2個節(jié)點(diǎn)賦值為1,如果不是僵尸網(wǎng)絡(luò)主機(jī)對,則輸出層的第1個節(jié)點(diǎn)賦值為1,第2個節(jié)點(diǎn)賦值為0.
4)計算出輸入層到隱層再到輸出層各節(jié)點(diǎn)的輸出.
5)計算誤差E.
6)反向計算誤差信號.
7)調(diào)整神經(jīng)網(wǎng)絡(luò)的權(quán)值和偏置.
8)重復(fù)2)~7),直到達(dá)到期望誤差或者達(dá)到最大訓(xùn)練次數(shù)為止.
訓(xùn)練結(jié)束后,BP神經(jīng)網(wǎng)絡(luò)分類器已形成,即可用訓(xùn)練好的分類器檢測僵尸網(wǎng)絡(luò).
本文實驗數(shù)據(jù)采集了天津某高校校園網(wǎng)內(nèi)的網(wǎng)絡(luò)流量,通過核心交換機(jī)端口鏡像捕獲網(wǎng)絡(luò)流量,選擇其中一個端口,被測子網(wǎng)內(nèi)主機(jī)約200臺,白天的網(wǎng)絡(luò)流量為150~200 MB/s.實驗中采用了2011年4月6日的網(wǎng)絡(luò)流量,共24 h.真實網(wǎng)絡(luò)環(huán)境中的流量作為背景流量,將其解析后導(dǎo)入數(shù)據(jù)庫中,并注入模擬的僵尸網(wǎng)絡(luò)流量.隨機(jī)選取背景流量中若干臺主機(jī),替換僵尸主機(jī)的IP地址為這些主機(jī)的IP地址,使這些主機(jī)既有正常流量也有僵尸網(wǎng)絡(luò)流量,更符合真實場景.本文模擬的僵尸網(wǎng)絡(luò)流量特征符合現(xiàn)有大部分僵尸網(wǎng)絡(luò)流量特征,因而本文研究這類僵尸網(wǎng)絡(luò),其他類型的僵尸網(wǎng)絡(luò)不在本文研究范圍內(nèi).實驗用C#編寫程序,用SQL Server 2000數(shù)據(jù)庫存儲解析后的網(wǎng)絡(luò)流量數(shù)據(jù).
為了確定最佳隱層神經(jīng)元個數(shù),做了如下實驗.分別將隱層神經(jīng)元個數(shù)設(shè)置為3~12的不同值,觀察訓(xùn)練誤差和訓(xùn)練次數(shù)的變化情況.實驗中期望誤差為0.001,隱層神經(jīng)元個數(shù)取不同值時神經(jīng)網(wǎng)絡(luò)訓(xùn)練誤差都相同,因此只觀察訓(xùn)練次數(shù)的變化.圖6是不同隱層神經(jīng)元個數(shù)的訓(xùn)練循環(huán)次數(shù),從圖中可以看出訓(xùn)練循環(huán)次數(shù)隨著隱層神經(jīng)元個數(shù)增加而增大.在誤差相同情況下,訓(xùn)練次數(shù)越少越好,因此隱層神經(jīng)元個數(shù)為3時效果最佳,后續(xù)的實驗中都將隱層神經(jīng)元個數(shù)設(shè)為3.
圖6 不同隱層神經(jīng)元個數(shù)的訓(xùn)練循環(huán)次數(shù)Fig.6 The training times for different number of hidden layer neuron
圖7是期望誤差取不同值時的訓(xùn)練循環(huán)次數(shù),實驗數(shù)據(jù)取3次實驗的平均值.從圖中可以看出,期望誤差越大,訓(xùn)練循環(huán)次數(shù)越小.因此期望誤差大只需較少次數(shù)的循環(huán)誤差即可達(dá)到期望值,可提高神經(jīng)網(wǎng)絡(luò)訓(xùn)練效率.但是期望誤差大,神經(jīng)網(wǎng)絡(luò)分類器的精度就下降,因此要取一個合理的值,使神經(jīng)網(wǎng)絡(luò)分類器的精度和訓(xùn)練次數(shù)達(dá)到平衡,從圖7可以看出,期望誤差為0.002時效果較好.
圖7 期望誤差不同時的訓(xùn)練循環(huán)次數(shù)Fig.7 The training times for different expected error
為了驗證神經(jīng)網(wǎng)絡(luò)分類器檢測僵尸網(wǎng)絡(luò)的性能,本文用測試數(shù)據(jù)對神經(jīng)網(wǎng)絡(luò)分類器進(jìn)行測試,測試數(shù)據(jù)包含類標(biāo)簽,即是否是僵尸網(wǎng)絡(luò)主機(jī)對.本文采用檢測率(detection rate,DR)和誤報率(false positive rate,F(xiàn)PR)2個指標(biāo)對神經(jīng)網(wǎng)絡(luò)分類器的性能進(jìn)行評估.檢測率為僵尸主機(jī)被正確檢測出來的概率:
式中:TP表示正確檢測出的僵尸主機(jī)個數(shù),F(xiàn)N表示未被檢測出的僵尸主機(jī)個數(shù).誤報率為合法主機(jī)被錯誤地檢測為僵尸主機(jī)的概率,如式(5)
式中:FP為被錯誤地檢測為僵尸主機(jī)的合法主機(jī)個數(shù),TN為正確檢測出的合法主機(jī)個數(shù).
驗證時首先以測試數(shù)據(jù)作為神經(jīng)網(wǎng)絡(luò)的輸入,判斷神經(jīng)網(wǎng)絡(luò)的檢測結(jié)果和真實結(jié)果是否相同,然后分別統(tǒng)計TP、FN、FP和TN的值,最后根據(jù)式(4)和(5)計算檢測率和誤報率.圖8為期望誤差不同時算法的檢測率和誤報率.從圖8(a)可以看出,期望誤差為0.001到0.009時,檢測率都為100%,當(dāng)期望誤差為0.01時,檢測率下降到99.4%.
圖8 期望誤差不同時的檢測率和誤報率Fig.8 DR and FPR for different expected errors
從圖8(b)可以看出,隨著期望誤差的增大,誤報率呈上升趨勢,期望誤差為0.01時誤報率稍微降低但檢測率也降低.
綜上所述,期望誤差為0.001時檢測率和誤報率都達(dá)到最佳水平.從實驗中也可以看出本文算法的檢測率達(dá)到99%,誤報率在1%以下,具有較好的檢測性能.
本文提出了一種基于BP神經(jīng)網(wǎng)絡(luò)的僵尸網(wǎng)絡(luò)檢測方法.該方法以主機(jī)對作為分析對象,提取主機(jī)對之間通信的流量特征,然后將預(yù)處理后的特征作為神經(jīng)網(wǎng)絡(luò)的輸入,訓(xùn)練BP神經(jīng)網(wǎng)絡(luò)分類器,用訓(xùn)練好的分類器進(jìn)行僵尸網(wǎng)絡(luò)檢測.通過實驗確定了最佳的BP神經(jīng)網(wǎng)絡(luò)隱層神經(jīng)元個數(shù)和期望誤差,實驗表明,該方法有較高的檢測率和較低的誤報率,具有良好的性能.
[1]金鑫,李潤恒,甘亮,等.基于通信特征曲線動態(tài)時間彎曲距離的IRC僵尸網(wǎng)絡(luò)同源判別方法[J].計算機(jī)研究與發(fā)展,2012,49(3):481-490.
JIN Xin,LI Runheng,GAN Liang,et al.IRC botnets’homology identifying method based on dynamic time warping distance of communication feature curves[J].Journal of Computer Research and Development,2012,49(3):481-490.
[2]江健,諸葛建偉,段海新,等.僵尸網(wǎng)絡(luò)機(jī)理與防御技術(shù)[J].軟件學(xué)報,2012,23(1):82-96.
JIANG Jian,ZHUGE Jianwei,DUAN Haixin,et al.Research on botnet mechanisms and defenses[J].Journal of Software,2012,23(1):82-96..
[3]GOEBEL J,HOLZ T.Rishi:identify bot contaminated hosts by irc nickname evaluation[C]//Proceedings of USENIX First Workshop on Hot Topics in Understanding Botnets,Cambridge,USA,2007:1-12.
[4]FRANCOIS J,WANG S,STATE R,et al.BotTrack:tracking botnets using NetFlow and PageRank[M]//Lecture Notes in Computer Science.Valencia,Spain,2011:1-14.
[5]NAGARAJA S,MITTAL P,HONG C,et al.BotGrep:finding P2P bots with structured graph analysis[C]//Proceedings of the 19th USENIX Conference on Security.Washington,DC,USA,2010:1-16.
[6]GU G,PERDISCI R,ZHANG J,et al.BotMiner:clustering analysis of network traffic for protocol-and structure-independent botnet detection[C]//Proceedings of the 17th Conference on Security Symposium.San Jose,USA,2008:139-154.
[7]GU G,PORRAS P,YEGNESWARAN V,et al.BotHunter:detecting malware infection through IDSdriven dialog correlation[C]//Proceedings of the 16th USENIX Security Symposium.Boston,USA,2007:167-182.
[8]PRASAD K,REDDY A,KARTHIK M.Flooding attacks to internet threat monitors(ITM):modeling and counter measures using botnet and honeypots[J].International Journal of Computer Science and Information Technology,2011,3(6):159-172.
[9]ZHANG J,PERDISCI R,LEE W,et al.Detecting stealthy P2P Botnets using statistical traffic fingerprints[C]//Proceedings of IEEE/IFIP 41st International Conference on Dependable Systems and Networks.Hong Kong,China,2011:121-132.
[10]方濱興,崔翔,王威.僵尸網(wǎng)絡(luò)綜述[J].計算機(jī)研究與發(fā)展,2011,48(8):1315-1331.
FANG binxing,CUI Xiang,WANG Wei.Survey of botnets[J].Journal of Computer Research and Development,2011,48(8):1315-1331.
[11]WANG P,WU L,ASLAM B,et al.A systematic study on peer-to-peer botnets[C]//Proceedings on Computer Communications and Networks.San Francisco,USA,2009:1-8.
[12]飛思科技產(chǎn)品研發(fā)中心.神經(jīng)網(wǎng)絡(luò)理論與MATLAB7實現(xiàn)[M].北京:電子工業(yè)出版社,2005:1-108.