李衛華
(龍巖學院 信息工程學院,福建龍巖364012)
惡意網絡流是由不同類型的惡意軟件產生的,攻擊者利用系統或軟件安全漏洞[1]來部署惡意軟件。近年來,網絡異常流量的檢測和攻擊類型的識別一直是研究的熱點[2-4]?,F有的惡意流量檢測主要集中在惡意軟件的檢測中,包括基于簽名和基于異常的檢測方法[5]。但由于這些檢測方法都需要對數據包進行操作,從而產生巨大的計算開銷,因此并不適用于動態的網絡環境。研究者開始使用有監督的機器學習來檢測惡意數據流(如C4.5決策樹[6]、神經網絡[7]、貝葉斯[2]),也有研究者將無監督學習算法用于惡意流量檢測和分析[8],并用來識別惡意軟件[9]。但隨著攻擊技術的發展,惡意數據流逐漸具有與正常數據流相似的統計特征。因此這些技術面臨著產生高假陽性率的風險,即大量的正常網絡數據流會被錯誤地歸類為惡意數據流。聚類算法是常用的檢測識別方法,然而,由于無法控制聚類過程中數據點的相似程度,現有的聚類算法不適用于惡意網絡流的檢測。鑒于此,本文設計一個有效的聚類算法,將惡意流的攻擊過程分為多個階段,利用基于參考點的策略來改進密度空間聚類算法。最后利用實驗評估本文策略的有效性。
本文將IP數據流[10]作為網絡數據流的基本單元,并通過一個5元組來定義一個IP數據流。其中是源IP地址是源端口號是目的IP地址是目的端口號是協議類型。IP流由n維特征向量表示,其中n是特征的個數,xi是指從單個 IP流中提取的統計特征。研究人員發現了超過200個可用于數據流分類和聚類的復雜特征,但如果在進行數據流分類/聚類時使用了過多特征,就會產生很高的計算開銷。因此本文僅使用幾個簡單的特征[11]來對網絡惡意數據IP流(下文簡稱為“惡意流”)進行檢測,具有足夠的識別能力。我們使用網絡數據流的網絡層和傳輸層參數作為特征,如表1所示。

表1 網絡數據流的特征
我們首先對數據集進行預處理。對于連續型的特征屬性值,通過將其取值范圍劃分為多個區間,從而將一個連續屬性值離散化。本文使用基于熵的離散化方法,假設閾值T將樣本S分為子集S1和S2,并假設共有K個類是樣本S中類的比例。子集S的類熵定義如下:

假設S1S,且 S2=S-S1,則樣本S中關于特征F在閾值T下的類信息熵定義如下:

若滿足公式(3)所示的條件,則認為對樣本S以T作為閾值進行劃分是可接受的。


其中,InG(F,T;S)是信息增益,N是樣本個數,參數是常數。對于每個特征,我們根據可接受劃分(即滿足式(3)的劃分)將特征屬性值的取值范圍劃分為一系列區間,然后用不同的標稱(nominal)表示各個區間,該過程就是連續值的離散化。
惡意流的聚類過程包括惡意流識別、特征提取、特征預處理、無監督學習和聚類,惡意流的最小粒度為IP數據包。首先,根據數據流的5元組標識將流量聚合成相應的數據流。然后,從聚合后的數據流中提取特征,利用離散化方法對特征進行預處理,將特征值轉化為標稱。接下來,使用非對稱二進制對標稱進行編碼。最后,使用聚類算法來處理這些編碼后的標稱。某些惡意流具有與正常流相似甚至一樣的特征,因此要從數據流中分離惡意流就顯得尤為困難。像DDoS等這一類的惡意流具有不同的攻擊階段,因此有必要將惡意流分成不同的階段,這能使分類的過程變得更加容易。
對于編碼后的非對稱二進制特征,其兩種狀態并不是同等重要的。給定兩個非對稱的二進制特征,那么兩“1”(即正匹配)被認為比兩個“0”(負匹配)更重要。本文用q表示個體i和個體j正匹配的數量,用r表示個體i的特征為“1”、個體j的特征為“0”的數量,用s表示個體i的特征為“0”、個體j的特征為“1”的數量。本文使用Jaccard系數來計算個體i和個體j之間的不對稱二進制相似度sim(i,j)[12]。
(a)權重計算:對于數據流di,計算數據流di與集合D中所有數據流dj(除數據流di以外)之間的相似度sim(i,j),數據流di的權重wi計算方法如公式(4)所示。

(b)參考點選擇。按照數據流的權重對其進行降序排序,將結果存入候選隊列中。從Q中選取兩個數據流S1和S2作為參考點。我們需要盡可能確保這兩個參考點分別屬于不同的簇。由權重計算過程可知,屬于同一簇的數據流具有相似的權重。因此,本文選擇權重差異值最大的兩個數據流作為參考點S1和S2。
(c)參考點聚類。對于數據流q,如果它與參考點s之間具有最大的相似度,則將q加入簇中,并將q從隊列Q刪除。當候選隊列中的數據流與參考點之間的相似度小于閾值時,參考點的聚類過程停止。接下來,重復參考點選擇、參考點聚類兩個過程,直到隊列Q為空。
(d)噪聲消除。數據集中可能包含不屬于惡意流的噪聲,因此本文將簇大小小于3的視為噪聲。

我們使用入侵檢測數據集中的DDoS數據集來評估本文的策略,DDoS攻擊過程分為五個階段:從遠程站點進行IP-sweep、通過探測IP以查找sadmind進程、使用sadmind的漏洞進行破壞、安裝DDoS木馬軟件以及進行DDoS攻擊。
本文使用三個常用的指標來評價聚類結果,即純度(purity)、蘭德指數(Rand Index)以及F值(FMeasure)[13]。我們使用范圍從0到1的閾值對測試數據集進行了一系列的聚類實驗,結果如圖1、圖2和圖3所示。隨著閾值的增加,簇的純度、蘭德指數和F值也隨之增加。尤其是當閾值大于0.5時,三種指標都能夠得到更好的結果。然后,我們將本文策略與K-Means算法進行比較,其中我們將閾值設置為0.95,結果如圖4所示。其中,圖例中K-Means(C=2)是指K-Means算法的初始中心點數量為2。由圖4可知,本文策略比K-Means具有更好的聚類性能。

圖1 聚類的純度

圖2 聚類的蘭德指數

圖3 聚類的F值

圖4 本文策略與K-Means算法對比結果
利用基于參考點展開的策略來改進密度空間聚類算法,并使用該聚類算法進行網絡惡意數據流檢測。實驗結果表明,與K-Means算法相比,本文策略具有更好的聚類性能。在未來的研究工作中,我們將進一步研究如何根據聚類結果識別隱藏在正常數據流中的惡意攻擊流。