李衛(wèi)華
(龍巖學(xué)院 信息工程學(xué)院,福建龍巖364012)
惡意網(wǎng)絡(luò)流是由不同類(lèi)型的惡意軟件產(chǎn)生的,攻擊者利用系統(tǒng)或軟件安全漏洞[1]來(lái)部署惡意軟件。近年來(lái),網(wǎng)絡(luò)異常流量的檢測(cè)和攻擊類(lèi)型的識(shí)別一直是研究的熱點(diǎn)[2-4]?,F(xiàn)有的惡意流量檢測(cè)主要集中在惡意軟件的檢測(cè)中,包括基于簽名和基于異常的檢測(cè)方法[5]。但由于這些檢測(cè)方法都需要對(duì)數(shù)據(jù)包進(jìn)行操作,從而產(chǎn)生巨大的計(jì)算開(kāi)銷(xiāo),因此并不適用于動(dòng)態(tài)的網(wǎng)絡(luò)環(huán)境。研究者開(kāi)始使用有監(jiān)督的機(jī)器學(xué)習(xí)來(lái)檢測(cè)惡意數(shù)據(jù)流(如C4.5決策樹(shù)[6]、神經(jīng)網(wǎng)絡(luò)[7]、貝葉斯[2]),也有研究者將無(wú)監(jiān)督學(xué)習(xí)算法用于惡意流量檢測(cè)和分析[8],并用來(lái)識(shí)別惡意軟件[9]。但隨著攻擊技術(shù)的發(fā)展,惡意數(shù)據(jù)流逐漸具有與正常數(shù)據(jù)流相似的統(tǒng)計(jì)特征。因此這些技術(shù)面臨著產(chǎn)生高假陽(yáng)性率的風(fēng)險(xiǎn),即大量的正常網(wǎng)絡(luò)數(shù)據(jù)流會(huì)被錯(cuò)誤地歸類(lèi)為惡意數(shù)據(jù)流。聚類(lèi)算法是常用的檢測(cè)識(shí)別方法,然而,由于無(wú)法控制聚類(lèi)過(guò)程中數(shù)據(jù)點(diǎn)的相似程度,現(xiàn)有的聚類(lèi)算法不適用于惡意網(wǎng)絡(luò)流的檢測(cè)。鑒于此,本文設(shè)計(jì)一個(gè)有效的聚類(lèi)算法,將惡意流的攻擊過(guò)程分為多個(gè)階段,利用基于參考點(diǎn)的策略來(lái)改進(jìn)密度空間聚類(lèi)算法。最后利用實(shí)驗(yàn)評(píng)估本文策略的有效性。
本文將IP數(shù)據(jù)流[10]作為網(wǎng)絡(luò)數(shù)據(jù)流的基本單元,并通過(guò)一個(gè)5元組來(lái)定義一個(gè)IP數(shù)據(jù)流。其中是源IP地址是源端口號(hào)是目的IP地址是目的端口號(hào)是協(xié)議類(lèi)型。IP流由n維特征向量表示,其中n是特征的個(gè)數(shù),xi是指從單個(gè) IP流中提取的統(tǒng)計(jì)特征。研究人員發(fā)現(xiàn)了超過(guò)200個(gè)可用于數(shù)據(jù)流分類(lèi)和聚類(lèi)的復(fù)雜特征,但如果在進(jìn)行數(shù)據(jù)流分類(lèi)/聚類(lèi)時(shí)使用了過(guò)多特征,就會(huì)產(chǎn)生很高的計(jì)算開(kāi)銷(xiāo)。因此本文僅使用幾個(gè)簡(jiǎn)單的特征[11]來(lái)對(duì)網(wǎng)絡(luò)惡意數(shù)據(jù)IP流(下文簡(jiǎn)稱(chēng)為“惡意流”)進(jìn)行檢測(cè),具有足夠的識(shí)別能力。我們使用網(wǎng)絡(luò)數(shù)據(jù)流的網(wǎng)絡(luò)層和傳輸層參數(shù)作為特征,如表1所示。
表1 網(wǎng)絡(luò)數(shù)據(jù)流的特征
我們首先對(duì)數(shù)據(jù)集進(jìn)行預(yù)處理。對(duì)于連續(xù)型的特征屬性值,通過(guò)將其取值范圍劃分為多個(gè)區(qū)間,從而將一個(gè)連續(xù)屬性值離散化。本文使用基于熵的離散化方法,假設(shè)閾值T將樣本S分為子集S1和S2,并假設(shè)共有K個(gè)類(lèi)是樣本S中類(lèi)的比例。子集S的類(lèi)熵定義如下:
假設(shè)S1S,且 S2=S-S1,則樣本S中關(guān)于特征F在閾值T下的類(lèi)信息熵定義如下:
若滿(mǎn)足公式(3)所示的條件,則認(rèn)為對(duì)樣本S以T作為閾值進(jìn)行劃分是可接受的。
其中,InG(F,T;S)是信息增益,N是樣本個(gè)數(shù),參數(shù)是常數(shù)。對(duì)于每個(gè)特征,我們根據(jù)可接受劃分(即滿(mǎn)足式(3)的劃分)將特征屬性值的取值范圍劃分為一系列區(qū)間,然后用不同的標(biāo)稱(chēng)(nominal)表示各個(gè)區(qū)間,該過(guò)程就是連續(xù)值的離散化。
惡意流的聚類(lèi)過(guò)程包括惡意流識(shí)別、特征提取、特征預(yù)處理、無(wú)監(jiān)督學(xué)習(xí)和聚類(lèi),惡意流的最小粒度為IP數(shù)據(jù)包。首先,根據(jù)數(shù)據(jù)流的5元組標(biāo)識(shí)將流量聚合成相應(yīng)的數(shù)據(jù)流。然后,從聚合后的數(shù)據(jù)流中提取特征,利用離散化方法對(duì)特征進(jìn)行預(yù)處理,將特征值轉(zhuǎn)化為標(biāo)稱(chēng)。接下來(lái),使用非對(duì)稱(chēng)二進(jìn)制對(duì)標(biāo)稱(chēng)進(jìn)行編碼。最后,使用聚類(lèi)算法來(lái)處理這些編碼后的標(biāo)稱(chēng)。某些惡意流具有與正常流相似甚至一樣的特征,因此要從數(shù)據(jù)流中分離惡意流就顯得尤為困難。像DDoS等這一類(lèi)的惡意流具有不同的攻擊階段,因此有必要將惡意流分成不同的階段,這能使分類(lèi)的過(guò)程變得更加容易。
對(duì)于編碼后的非對(duì)稱(chēng)二進(jìn)制特征,其兩種狀態(tài)并不是同等重要的。給定兩個(gè)非對(duì)稱(chēng)的二進(jìn)制特征,那么兩“1”(即正匹配)被認(rèn)為比兩個(gè)“0”(負(fù)匹配)更重要。本文用q表示個(gè)體i和個(gè)體j正匹配的數(shù)量,用r表示個(gè)體i的特征為“1”、個(gè)體j的特征為“0”的數(shù)量,用s表示個(gè)體i的特征為“0”、個(gè)體j的特征為“1”的數(shù)量。本文使用Jaccard系數(shù)來(lái)計(jì)算個(gè)體i和個(gè)體j之間的不對(duì)稱(chēng)二進(jìn)制相似度sim(i,j)[12]。
(a)權(quán)重計(jì)算:對(duì)于數(shù)據(jù)流di,計(jì)算數(shù)據(jù)流di與集合D中所有數(shù)據(jù)流dj(除數(shù)據(jù)流di以外)之間的相似度sim(i,j),數(shù)據(jù)流di的權(quán)重wi計(jì)算方法如公式(4)所示。
(b)參考點(diǎn)選擇。按照數(shù)據(jù)流的權(quán)重對(duì)其進(jìn)行降序排序,將結(jié)果存入候選隊(duì)列中。從Q中選取兩個(gè)數(shù)據(jù)流S1和S2作為參考點(diǎn)。我們需要盡可能確保這兩個(gè)參考點(diǎn)分別屬于不同的簇。由權(quán)重計(jì)算過(guò)程可知,屬于同一簇的數(shù)據(jù)流具有相似的權(quán)重。因此,本文選擇權(quán)重差異值最大的兩個(gè)數(shù)據(jù)流作為參考點(diǎn)S1和S2。
(c)參考點(diǎn)聚類(lèi)。對(duì)于數(shù)據(jù)流q,如果它與參考點(diǎn)s之間具有最大的相似度,則將q加入簇中,并將q從隊(duì)列Q刪除。當(dāng)候選隊(duì)列中的數(shù)據(jù)流與參考點(diǎn)之間的相似度小于閾值時(shí),參考點(diǎn)的聚類(lèi)過(guò)程停止。接下來(lái),重復(fù)參考點(diǎn)選擇、參考點(diǎn)聚類(lèi)兩個(gè)過(guò)程,直到隊(duì)列Q為空。
(d)噪聲消除。數(shù)據(jù)集中可能包含不屬于惡意流的噪聲,因此本文將簇大小小于3的視為噪聲。
我們使用入侵檢測(cè)數(shù)據(jù)集中的DDoS數(shù)據(jù)集來(lái)評(píng)估本文的策略,DDoS攻擊過(guò)程分為五個(gè)階段:從遠(yuǎn)程站點(diǎn)進(jìn)行IP-sweep、通過(guò)探測(cè)IP以查找sadmind進(jìn)程、使用sadmind的漏洞進(jìn)行破壞、安裝DDoS木馬軟件以及進(jìn)行DDoS攻擊。
本文使用三個(gè)常用的指標(biāo)來(lái)評(píng)價(jià)聚類(lèi)結(jié)果,即純度(purity)、蘭德指數(shù)(Rand Index)以及F值(FMeasure)[13]。我們使用范圍從0到1的閾值對(duì)測(cè)試數(shù)據(jù)集進(jìn)行了一系列的聚類(lèi)實(shí)驗(yàn),結(jié)果如圖1、圖2和圖3所示。隨著閾值的增加,簇的純度、蘭德指數(shù)和F值也隨之增加。尤其是當(dāng)閾值大于0.5時(shí),三種指標(biāo)都能夠得到更好的結(jié)果。然后,我們將本文策略與K-Means算法進(jìn)行比較,其中我們將閾值設(shè)置為0.95,結(jié)果如圖4所示。其中,圖例中K-Means(C=2)是指K-Means算法的初始中心點(diǎn)數(shù)量為2。由圖4可知,本文策略比K-Means具有更好的聚類(lèi)性能。
圖1 聚類(lèi)的純度
圖2 聚類(lèi)的蘭德指數(shù)
圖3 聚類(lèi)的F值
圖4 本文策略與K-Means算法對(duì)比結(jié)果
利用基于參考點(diǎn)展開(kāi)的策略來(lái)改進(jìn)密度空間聚類(lèi)算法,并使用該聚類(lèi)算法進(jìn)行網(wǎng)絡(luò)惡意數(shù)據(jù)流檢測(cè)。實(shí)驗(yàn)結(jié)果表明,與K-Means算法相比,本文策略具有更好的聚類(lèi)性能。在未來(lái)的研究工作中,我們將進(jìn)一步研究如何根據(jù)聚類(lèi)結(jié)果識(shí)別隱藏在正常數(shù)據(jù)流中的惡意攻擊流。