翟繼強(qiáng),馬文亭,肖亞軍
(哈爾濱理工大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,哈爾濱 150080)
基于特征的網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)(NIDS)在檢測(cè)過(guò)程中可能會(huì)產(chǎn)生大量誤報(bào),增加了分析NIDS警報(bào)的難度,降低了NIDS系統(tǒng)的檢測(cè)性能[1-3].誤報(bào)源于NIDS檢測(cè)方法的固有局限性.基于特征的檢測(cè)很大程度上取決于一組檢測(cè)入侵的規(guī)則,規(guī)則越嚴(yán)格,安全級(jí)別越高[4].這種情況下,誤報(bào)的數(shù)量將會(huì)增加.放寬規(guī)則可以減少誤報(bào)的數(shù)量,但安全級(jí)別將同時(shí)下降.因此,我們必須權(quán)衡考慮低誤報(bào)率與檢測(cè)精度之間的關(guān)系.
本文提出了利用Apriori-KNN算法的警報(bào)過(guò)濾器來(lái)降低基于特征的NIDS的警報(bào)誤報(bào)率的過(guò)濾方法.主要研究在不犧牲安全性情況下基于特征的NIDS如何實(shí)現(xiàn)降低誤報(bào)率.基于特征的NIDS(如Snort)產(chǎn)生的警報(bào),直接輸出作為警報(bào)過(guò)濾器的輸入,利用數(shù)據(jù)挖掘技術(shù)對(duì)已經(jīng)輸出的警報(bào)進(jìn)行二次處理[5].利用無(wú)攻擊情況下的“正?!本瘓?bào)對(duì)基于特征的NIDS的正常警報(bào)模式進(jìn)行建模,利用基于Apriori-KNN算法對(duì)警報(bào)進(jìn)行過(guò)濾,誤報(bào)則直接忽略將真正的警報(bào)輸出進(jìn)行處理.
KNN算法是數(shù)據(jù)挖掘技術(shù)中的一種分類算法,其中心思想類似于“物以類聚,人以群分”[6,7].KNN依據(jù)距離度量從訓(xùn)練集中找出其最近的k個(gè)數(shù)據(jù)點(diǎn),將k個(gè)數(shù)據(jù)點(diǎn)中的主導(dǎo)標(biāo)簽分配給新數(shù)據(jù).若k=1,則新數(shù)據(jù)點(diǎn)由其最近的數(shù)據(jù)點(diǎn)確定.由于該算法實(shí)現(xiàn)簡(jiǎn)單和分類有效性,KNN通常被用作標(biāo)準(zhǔn)分類器[8].
Apriori算法是一種可以有效地解決頻繁項(xiàng)集任務(wù),挖掘關(guān)聯(lián)規(guī)則的算法[9].該算法主要利用關(guān)聯(lián)規(guī)則的方法進(jìn)行分類,計(jì)算頻繁項(xiàng)集與規(guī)則.關(guān)聯(lián)規(guī)則可以用X→Y表示(X,Y表示相互獨(dú)立的項(xiàng)集,即X∩Y≠Φ),支持度(sup)和置信度(conf)用于度量其規(guī)則的關(guān)聯(lián)強(qiáng)度.
Apriori-KNN算法將關(guān)聯(lián)規(guī)則轉(zhuǎn)化為可量化的,然后與KNN算法結(jié)合.將是否含有頻繁項(xiàng)集Xi(Xi=0或者Xi=1)作為一個(gè)屬性,作為KNN算法的距離計(jì)算公式的變量.bool(Xi)表示是否存在頻繁項(xiàng)集Xi,其對(duì)每一類的均值為conf(Xi→Yi).結(jié)合KNN的距離公式得到新的歐幾里得的距離測(cè)試樣例與訓(xùn)練樣例(x,yi)的距離d如公式(1)所示:
(1)
設(shè)參數(shù)α為向量x詞頻的均值.X(1)表示為1-項(xiàng)集,X(2)表示2-項(xiàng)集,依此類推.在分類方面,項(xiàng)數(shù)多的項(xiàng)集會(huì)明顯高于項(xiàng)數(shù)少的項(xiàng)集,因此設(shè)定ki=i的參數(shù)對(duì)項(xiàng)集 X(k)進(jìn)行修正.修改距離公式如公式(2)所示:
(2)
在上述闡述的基礎(chǔ)上,該Apriori-KNN算法的具體步驟如下:
1)首先對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理.
2)通過(guò)步驟1),得到bool模型和vsm模型.
依據(jù)信息增益方法對(duì)數(shù)據(jù)進(jìn)行降維,根據(jù)其公式(3)選取前j個(gè)特征作為新的bool模型.
(3)
3)根據(jù)步驟2)的bool模型進(jìn)行關(guān)聯(lián)規(guī)則挖掘,利用Apriori算法產(chǎn)生頻繁項(xiàng)集與規(guī)則,計(jì)算頻繁項(xiàng)集的置信度和其對(duì)任意分類的置信度.
4)根據(jù) tf-idf公式計(jì)算 vsm 模型關(guān)鍵字權(quán)值:
(4)
排序取前K個(gè)特征.
5)根據(jù)上述更改的KNN距離公式(2)計(jì)算測(cè)試樣例與訓(xùn)練數(shù)據(jù)集的相似度.
6)通過(guò)KNN的分類規(guī)則進(jìn)行分類,為了提高其分類的準(zhǔn)確度,該算法使用距離加權(quán)表決公式:
(5)
公式(5)中wi=1/i.
KNN算法中取 k 個(gè)特征詞構(gòu)成特征詞庫(kù),而Apriori 算法取 j 個(gè)詞構(gòu)成特征項(xiàng)集.根據(jù)以上的準(zhǔn)備工作,Apriori-KNN算法的分類過(guò)程圖如圖1所示.
Apriori-KNN算法是利用Apriori算法對(duì)傳統(tǒng)的KNN算法進(jìn)行優(yōu)化,解決由文章長(zhǎng)短影響的語(yǔ)義關(guān)聯(lián)和詞頻等問(wèn)題,從而提高KNN算法分類的準(zhǔn)確率.相比于KNN算法,Apriori-KNN算法在分類的準(zhǔn)確率和召回率方面均有明顯的提高.
基于Apriori-KNN算法的入侵檢測(cè)系統(tǒng)警報(bào)過(guò)濾機(jī)制結(jié)構(gòu),除了通用 NIDS 結(jié)構(gòu)的部分外,還包括警報(bào)過(guò)濾模塊.如圖2所示.
圖1 Apriori-KNN算法的分類過(guò)程圖Fig.1 Classification process of Apriori-KNN algorithm
許多NIDS都是基于規(guī)則的,不僅編碼實(shí)現(xiàn)困難,而且也無(wú)法檢測(cè)到新的入侵行為[11-14].針對(duì)NIDS的弊端提出了依賴于數(shù)據(jù)挖掘的分類方法,利用基于Apriori-KNN算法的警報(bào)過(guò)濾機(jī)制降低誤報(bào)率.當(dāng)網(wǎng)絡(luò)環(huán)境受到攻擊時(shí),基于特征的NIDS會(huì)產(chǎn)生不同于正常安全情況下的警報(bào).而且在某些攻擊情況下,可能發(fā)出正常情況下不存在的警報(bào)類型.該方法用于判斷輸入的警報(bào)序列是否偏離正常情況.如果出現(xiàn)偏離正常情況的現(xiàn)象,判斷為可能存在攻擊行為,需要做進(jìn)一步調(diào)查.如果產(chǎn)生的警報(bào)與無(wú)攻擊的情況非常相似,判斷被攻擊的風(fēng)險(xiǎn)很低.
圖2 基于Apriori-KNN的算法入侵檢測(cè)系統(tǒng)結(jié)構(gòu)Fig.2 Based on Apriori-KNN algorithm intrusion detection system structure
下面將介紹如何模擬正常警報(bào)模式以及檢測(cè)偏離狀態(tài)與正常模式的偏差.在無(wú)攻擊的情況下,N是由NIDS產(chǎn)生的不同的警報(bào)類型,采用N維空間建立正常的警報(bào)模式.空間中的數(shù)據(jù)點(diǎn)P的屬性(A1,A2,A3,…,An)表示在時(shí)間段為T(mén)時(shí)不同類型的警報(bào)數(shù)量.將沒(méi)有經(jīng)歷任何攻擊產(chǎn)生的警報(bào)定義為“正?!秉c(diǎn),這些警報(bào)被認(rèn)為是“安全的”并被視為誤報(bào).如圖3(a)表示數(shù)據(jù)集點(diǎn)表示無(wú)入侵行為情況下正常的點(diǎn).用上述方法為新警報(bào)創(chuàng)建新數(shù)據(jù)點(diǎn)并判斷新警報(bào)是否為誤報(bào).新點(diǎn)(白點(diǎn))與正常點(diǎn)(黑點(diǎn))的距離相當(dāng)于該警報(bào)與正常模式的偏離.即新點(diǎn)接近正常點(diǎn),則被認(rèn)為是正常的,且認(rèn)為在這段時(shí)間內(nèi)產(chǎn)生的警報(bào)是誤報(bào).圖3(a)表示是一個(gè)正常點(diǎn)的模型示例.如果滿足以下任何一種情況,認(rèn)為新點(diǎn)是異常的:遠(yuǎn)離正常點(diǎn)(圖3(b))或者由正常點(diǎn)不存在的新警報(bào)類型組成,此時(shí)產(chǎn)生的警報(bào)是真正警報(bào).
圖3 誤報(bào)模型中的正常點(diǎn)與異常點(diǎn)示例-標(biāo)號(hào)的數(shù)據(jù)點(diǎn)(黑點(diǎn))是離新數(shù)據(jù)點(diǎn)(白點(diǎn))最近的5個(gè)點(diǎn)Fig.3 Example of normal and abnormal points in the false alarm model-Numbered points are the 5 nearest normal(black)points from the new(white)point
根據(jù)以上對(duì)于新警報(bào)的判斷原理,采用Apriori-KNN算法作為分類算法判斷新的數(shù)據(jù)點(diǎn)是否正常.根據(jù)Apriori-KNN算法中的距離d判斷點(diǎn)與點(diǎn)之間的相似性,距離d越小表示相似性越大.被分類的數(shù)據(jù)點(diǎn)的最終相似性得分是其距離最接近的k個(gè)正常點(diǎn)的距離的平均值.相似性數(shù)值高于閾值T,則該點(diǎn)被認(rèn)為是異常的.反之說(shuō)明屬于誤報(bào),應(yīng)該被過(guò)濾掉.
圖4 基于Apriori-KNN算法的警報(bào)過(guò)濾機(jī)制的詳細(xì)結(jié)構(gòu)Fig.4 Detailed structure of alarm filtering mechanism based on Apriori-KNN algorithm
圖4介紹基于Apriori-KNN算法的警報(bào)過(guò)濾層的內(nèi)部構(gòu)造.基于Apriori-KNN算法的警報(bào)過(guò)濾機(jī)制主要由數(shù)據(jù)標(biāo)準(zhǔn)化,警報(bào)存儲(chǔ)和警報(bào)過(guò)濾三部分組成.數(shù)據(jù)標(biāo)準(zhǔn)化包含兩個(gè)部分:特征選擇和格式轉(zhuǎn)換.特征選擇是對(duì)輸入警報(bào)進(jìn)行預(yù)處理,格式轉(zhuǎn)換是根據(jù)預(yù)處理特征集將基于特征的NIDS警報(bào)轉(zhuǎn)換為標(biāo)準(zhǔn)警報(bào)(數(shù)據(jù)標(biāo)準(zhǔn)化的輸出警報(bào)).具體的特征選擇取決于NIDS的具體類型.以Snort為例,從Snort警報(bào)中提取8個(gè)特征,如描述,分類、優(yōu)先級(jí)、報(bào)文類型、源IP地址、源端口號(hào)、目的IP地址和目的端口號(hào),然而對(duì)于測(cè)試Apriori-KNN算法以上特征均不適合直接使用,需將這些特征進(jìn)行標(biāo)準(zhǔn)化.所有警報(bào)將使用其在數(shù)據(jù)集中發(fā)生的概率來(lái)表示.在警報(bào)存儲(chǔ)的組件中,所有傳入的標(biāo)準(zhǔn)警報(bào)將被存儲(chǔ)到數(shù)據(jù)庫(kù)中,警報(bào)過(guò)濾組件將執(zhí)行過(guò)濾誤報(bào).為了更好的測(cè)試降低誤報(bào)率的算法,可通過(guò)對(duì)一些現(xiàn)有數(shù)據(jù)集(例如DARPA數(shù)據(jù)集)來(lái)標(biāo)記標(biāo)準(zhǔn)警報(bào),并對(duì)基于Apriori-KNN的警報(bào)過(guò)濾機(jī)制進(jìn)行周期性測(cè)試.
該方法提出過(guò)濾警報(bào)的模型均獨(dú)立于網(wǎng)絡(luò)入侵檢測(cè)系統(tǒng)(如圖5),無(wú)需對(duì)現(xiàn)有檢測(cè)配置進(jìn)行更改.警報(bào)數(shù)據(jù)集是利用“正?!本瘓?bào)來(lái)構(gòu)建誤報(bào)模型.警報(bào)過(guò)濾過(guò)程是對(duì)從基于特征的NIDS連續(xù)不斷輸出的警報(bào)進(jìn)行過(guò)濾,只需將過(guò)濾過(guò)程中被留下的警報(bào)進(jìn)行二次檢測(cè).整個(gè)減少誤報(bào)率的過(guò)程可看作是基于特征的NIDS的插件.簡(jiǎn)而言之,NIDS輸出的警報(bào)流通過(guò)過(guò)濾器,將真正的警報(bào)輸出并進(jìn)行處理,誤報(bào)則忽略.
圖5 NIDS與降低誤報(bào)率過(guò)程之間的關(guān)系Fig.5 Relationship between IDS and the proposed false alarm reduction processes
算法測(cè)試通過(guò)對(duì)基于特征的NIDS(即Snort)在不同情況下的性能進(jìn)行比較,通過(guò)兩個(gè)不同數(shù)據(jù)集(DARPA數(shù)據(jù)集和真實(shí)數(shù)據(jù)集)在Snort進(jìn)行兩次獨(dú)立實(shí)驗(yàn),并獲取和分析實(shí)驗(yàn)結(jié)果.
DARPA是唯一經(jīng)過(guò)深入研究,具有文獻(xiàn)記錄和公開(kāi)可用的用于測(cè)試入侵檢測(cè)系統(tǒng)的標(biāo)記的數(shù)據(jù).在實(shí)驗(yàn)中,使用1999年DARPA數(shù)據(jù)集來(lái)測(cè)試基于Apriori-KNN算法的警報(bào)過(guò)濾機(jī)制的性能.在DARPA 1999數(shù)據(jù)集中,誤報(bào)可以通過(guò)從第1周和第3周重播到Snort來(lái)獲得,在這兩個(gè)星期內(nèi)數(shù)據(jù)包不受任何攻擊,因此,該時(shí)間段內(nèi)的任何警報(bào)都可以被認(rèn)為是誤報(bào).利用數(shù)據(jù)包生成器(Colasoft Packet Builder)向Snort發(fā)送惡意數(shù)據(jù)包來(lái)模擬一些攻擊,從而獲得了真實(shí)警報(bào).DARPA數(shù)據(jù)集測(cè)試產(chǎn)生的警報(bào)數(shù)如表1所示.
表1 Snort生成的警報(bào)數(shù)
Table 1 Number of alarms generated by Snort
產(chǎn)生警報(bào)第2周第4周第5周 誤報(bào)1448241057767 真正警報(bào)971723982172 警報(bào)總數(shù)2419965039939
為了測(cè)試Apriori-KNN算法的性能,利用DARPA數(shù)據(jù)集分別對(duì)本文算法的過(guò)濾機(jī)制和KNN分類器在Snort進(jìn)行測(cè)試.DARPA數(shù)據(jù)集在Apriori-KNN算法和KNN算法產(chǎn)生的誤報(bào)數(shù)量如表2所示.
在第2周、第4周和第5周DARPA數(shù)據(jù)集在Apriori-KNN、KNN與Snort的識(shí)別率見(jiàn)表3,Apriori-KNN警報(bào)過(guò)濾機(jī)制能夠在KNN分類器的基礎(chǔ)上再次提高Snort的識(shí)別率,降低了誤報(bào)率.
如表1所示,由Snort在DARPA數(shù)據(jù)集上生成的標(biāo)記警報(bào)(真實(shí)警報(bào)和誤報(bào)),第2周誤報(bào)數(shù)量為14482.表2、表3分別呈現(xiàn)了使用基于Apriori-KNN算法的警報(bào)過(guò)濾機(jī)制后的剩余警報(bào)(誤報(bào))數(shù)量與識(shí)別率,識(shí)別率用來(lái)衡量識(shí)別誤報(bào)和真實(shí)警報(bào)的準(zhǔn)確性.實(shí)驗(yàn)結(jié)果表明,基于Apriori-KNN算法的警報(bào)過(guò)濾機(jī)制具有較高的識(shí)別精度,減少誤報(bào)數(shù)量.
表2 DARPA數(shù)據(jù)集在Apriori-KNN、KNN、Snort誤報(bào)數(shù)量
Table 2 Number of false alarm for DARPA datasets in Apriori-KNN,KNN,Snort
時(shí)間誤報(bào)數(shù)量Apriori-KNNKNNSnort第2周2047241214482第4周7929264105第5周115713287767
表3 DARPA數(shù)據(jù)集在Apriori-KNN算法的警報(bào)過(guò)濾器Snort降低誤報(bào)
Table 3 Snort alarms reduced by based on the Apriori-KNN false alarm filter on the DARPA data set
時(shí)間識(shí)別率(%)Apriori-KNNKNNSnort第2周91.5490.0340.15第4周87.8285.7536.88第5周88.3586.6321.85
為了進(jìn)一步測(cè)試基于Apriori-KNN算法的警報(bào)過(guò)濾器Snort的性能,使用真正的網(wǎng)絡(luò)流量跟蹤產(chǎn)生的數(shù)據(jù)集對(duì)該機(jī)制進(jìn)行第二次實(shí)驗(yàn).真實(shí)數(shù)據(jù)集是由部署在CSLab中具有公共IP域(這個(gè)IP地址不同于教育領(lǐng)域)的蜜罐提供.它由兩臺(tái)服務(wù)器組成:Honeywall和一臺(tái)用于模擬服務(wù)列表的虛擬機(jī)(如HTTP,FTP).外部用戶可以通過(guò)網(wǎng)絡(luò)連接訪問(wèn)蜜罐,攻擊者還可以對(duì)其發(fā)起惡意攻擊或進(jìn)行隨機(jī)掃描.這種情況下,蜜罐可以看作是通過(guò)記錄正常數(shù)據(jù)包和惡意數(shù)據(jù)包的所有傳入流量來(lái)收集真實(shí)網(wǎng)絡(luò)數(shù)據(jù).將真實(shí)數(shù)據(jù)集分三部分,分別表示為DAY1,DAY2和DAY3.
表4給出了使用基于Apriori-KNN算法的警報(bào)過(guò)濾器進(jìn)行降低誤報(bào)率實(shí)驗(yàn)結(jié)果,其中警報(bào)過(guò)濾機(jī)制可以實(shí)現(xiàn)警報(bào)大約85%的識(shí)別率(識(shí)別精度在很大程度上取決于算法的訓(xùn)練.例如,通過(guò)測(cè)試更多的數(shù)據(jù)集,Apriori-KNN算法甚至可以達(dá)到90%以上的識(shí)別精度).
表4 基于Apriori-KNN算法的警報(bào)過(guò)濾器測(cè)試真實(shí)數(shù)據(jù)的性能
Table 4 Performance of the Apriori-KNN-based false alarm filter on the real data set
警報(bào)DAY1DAY2DAY3減少警報(bào)前568988297341減少警報(bào)后85410772172識(shí)別率(%)84.9987.8085.96
實(shí)驗(yàn)結(jié)果顯示使用DARPA數(shù)據(jù)集測(cè)試時(shí),識(shí)別率可以高達(dá)91.54%,相對(duì)于snort誤報(bào)率而言明顯減少.在使用收集的真實(shí)數(shù)據(jù)集進(jìn)行測(cè)試時(shí),識(shí)別率可以達(dá)到87.80%.使用基于Apriori-KNN算法的警報(bào)過(guò)濾器前后的警報(bào)差最多有7752個(gè),明顯減少了誤報(bào)的數(shù)量,降低了誤報(bào)率.
本文針對(duì)于基于特征的NIDS存在的高誤報(bào)率問(wèn)題,提出了一種利用Apriori-KNN算法的警報(bào)過(guò)濾機(jī)制的入侵檢測(cè)系統(tǒng).用N維空間對(duì)正常的警報(bào)模式進(jìn)行建模,其中每個(gè)維度對(duì)應(yīng)于一種警報(bào)類型.模型中的數(shù)據(jù)點(diǎn)表示某個(gè)時(shí)間段的警報(bào)分布,而其每個(gè)屬性值是該時(shí)間段內(nèi)特定類型的警報(bào)數(shù).在研究中,根據(jù)Apriori-KNN算法中改進(jìn)的歐氏距離d將新數(shù)據(jù)點(diǎn)分類為正常或異常.通過(guò)對(duì)DARPA數(shù)據(jù)集和收集真實(shí)數(shù)據(jù)集的測(cè)試與分析,證明本方法可以在不犧牲NIDS的安全性能前提下,有效地減少NIDS誤報(bào)率,提高系統(tǒng)性能.