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