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