王遠帆,施 勇,薛 質(zhì)
(上海交通大學 電子信息與電氣工程學院,上海 200240)
一般而言,端口掃描是進攻一臺機器的第一步。因此,IDS能夠從端口掃描階段就發(fā)現(xiàn)威脅很重要。目前,對端口掃描的檢測主要分為兩大類[1]。一是基于規(guī)則的檢測技術,主要方式是定義一系列規(guī)則,如果某個行為滿足了這一系列規(guī)則所定義的條件,則判定為是端口掃描攻擊。這種檢測方法的局限性在于隨著攻擊的模式增加,所需要的規(guī)則數(shù)量也在不斷增加,從而影響到檢測性能,而且容易被攻擊者繞開。另一種是應用機器學習的方法檢測攻擊行為,通過對大量數(shù)據(jù)的分析提取特征、標注等手段建立攻擊行為模型,從而達到檢測端口掃描惡意流量的目的。
目前,機器學習在惡意流量檢測上的應用主要分為3個大類,即監(jiān)督學習、無監(jiān)督學習和半監(jiān)督學習。無監(jiān)督學習即聚類,數(shù)據(jù)不需要標簽,缺點是檢測率較低,典型的聚類算法有K-means等。監(jiān)督學習需要標記樣本從而進行訓練,檢測率較高。典型的監(jiān)督學習算法有樸素貝葉斯、決策樹以及SVM等。而半監(jiān)督學習則是部分有標記樣本加部分無標記樣本,通過有標記樣本的特征學習無標記樣本。
對于一個樣本數(shù)較大且均有標記的數(shù)據(jù)集,使用監(jiān)督學習顯然是一個能夠獲得較高檢測率的好方法。而對于端口掃描這類特征較為明確的攻擊類型,使用決策樹算法擁有準確性高、速度較快的優(yōu)勢。因此,基于這些優(yōu)勢提出了基于決策樹的端口掃描惡意流量研究。
如果一個事件有k種結果,其對應的發(fā)生概率為Pk,則對樣本集合D,信息熵為:
有一隨機變量(X,Y),其聯(lián)合分布概率為P(X=xi,Y=yi)=Pij,則條件熵表示在已知X的分布的情況下隨機變量Y的不確定性,有:
當一個離散屬性a有V種可能取值(a1,a2,…,aV),且取值為aV的樣本集合記為DV,則對該樣本集合D,其條件熵為:
則用屬性D對樣本集合D進行劃分所獲得的信息增益為:
在ID3算法中,將選取使信息增益最多的劃分方式。這種劃分方式存在明顯的缺點,對于取值較多的特征有明顯偏向,且容易過擬合。因此,為了解決這些問題,需要引入新的算法。
令:
定義信息增益率:
如在ID3算法中所述,它對取值較多的特征有明顯的偏向。因此,引入?yún)?shù)IV(a),a的類別越多,IV(a)就越大,以此避免這種偏向。
在C4.5算法中,對候選劃分屬性的選擇不僅選信息增益率最大的,還要求其信息增益高于平均。這樣實際選擇的分類特征效果較好。但是,C4.5算法也存在明顯缺點[2]。它在處理數(shù)據(jù)時,需對數(shù)據(jù)進行多次順序掃描和排序,效率較低。此外,將數(shù)據(jù)放在內(nèi)存中計算,只適合小規(guī)模數(shù)據(jù)集。
CART生成即遞歸構建二叉樹的過程。對CART的運用主要有分類樹和回歸樹兩種。分類樹即通過對象的特征預測對象所屬的類別,而回歸樹則是通過對象的特征預測某一具體屬性。
分類樹使用GINI值衡量節(jié)點純度:
對于越不純的節(jié)點,其GINI值越大。因此,在分類時,CART樹會選擇GINI值最小的作為分類依據(jù),即:
回歸樹使用樣本方差衡量節(jié)點純度:
方差越大,表示節(jié)點數(shù)據(jù)越分散,預測的效果越差。因此,CART樹會選擇方差最小的特征作為分裂依據(jù)。
對于離散型屬性,理論上有多少個離散值就應該分裂成多少個節(jié)點。但是,CART是一棵二叉樹,每一次分裂只會產(chǎn)生兩個節(jié)點,方法是將其中一個離散值獨立作為一個節(jié)點,其他離散值生成另外一個節(jié)點即可。
決策樹不可能無限制生長,因此需要一個終止分裂的條件。最極端的情況是當節(jié)點分裂到只剩下一個數(shù)據(jù)點時自動結束分裂,但這種情況會導致決策樹過于復雜,同時容易出現(xiàn)過擬合問題。一般情況下,為了降低決策樹復雜度和提高預測精度,會適當提前終止節(jié)點的分裂。
一般而言,滿足以下幾種情況將停止分裂。
(1)最小節(jié)點數(shù)。當節(jié)點的數(shù)據(jù)量小于一個指定的數(shù)量時不繼續(xù)分裂。兩個原因:一是數(shù)據(jù)量較少時,再做分裂容易強化噪聲數(shù)據(jù)的作用;二是降低樹生長的復雜性。提前結束分裂,一定程度上有利于降低過擬合的影響。
(2)熵或GINI值小于閾值。熵和GINI值的大小表示數(shù)據(jù)的復雜程度,當熵或者GINI值過小時,表示數(shù)據(jù)的純度較大。如果熵或者GINI小于一定程度數(shù),節(jié)點停止分裂。
(3)決策樹的深度達到指定的條件。節(jié)點的深度可以理解為節(jié)點與決策樹與節(jié)點的距離,決策樹的深度是所有葉子節(jié)點的最大深度,當深度到達指定的上限大小時停止分裂。
(4)所有特征已經(jīng)使用完畢,不能繼續(xù)進行分裂。
CICIDS2017[3]是加拿大網(wǎng)絡安全實驗室(Canadian Institute for Cybersecurity)提出的一個基于B-Profile[4]的數(shù)據(jù)集,總結和提取了正常的網(wǎng)絡活動流量,同時生成了自然的惡意流量。該數(shù)據(jù)集囊括了暴力破解、DoS、Heartbleed、僵尸網(wǎng)絡、DDoS等攻擊形式,也包括端口掃描惡意流量。
根據(jù)Gharib在2016年提出的評估框架[5],數(shù)據(jù)集的建立遵循了以下10個原則[6],如表1所示。
表1 CICIDS2017數(shù)據(jù)集建立原則
可以認為,在該數(shù)據(jù)集上訓練和測試擁有較強的可信度。
2.2.1 數(shù)據(jù)預處理
因為CICIDS2017的數(shù)據(jù)是從wireshark直接獲取的pcap文件,所以需要先對該數(shù)據(jù)進行轉(zhuǎn)化。轉(zhuǎn)化后獲得的待處理特征如表2所示。
表2 未處理時的特征列表
2.2.2 特征提取
首先對待處理流量進行整合。對來源和目的IP相同的流量,若之后的數(shù)個流量包與第一個在特定的時間間隔之內(nèi),則視為一個連續(xù)的行為。將這幾個流量包合并,并記錄其端口、協(xié)議、流量包大小、長度以及整合了幾個流量等信息。
檢查整合后的流量包中的協(xié)議是否含有icmp,若有則標記為“1”,沒有則標記為“0”。
檢查整合后的流量包之前單位條數(shù)內(nèi)是否有源IP和目的IP相同的流量,若有,檢查二者是否含有相同協(xié)議,并統(tǒng)計兩個整合后的流量包中相同協(xié)議和不同協(xié)議的數(shù)量。
檢查整合后的流量包之前單位秒內(nèi)是否有源IP和目的IP相同的流量,若有,檢查二者是否含有相同協(xié)議,并統(tǒng)計兩個整合后的流量包中相同協(xié)議和不同協(xié)議的數(shù)量。
經(jīng)過提取后的特征如表3所示。
表3 提取后的特征列表
利用Scikit learn包的決策樹算法,其中CART算法的分類樹對提取特征后的數(shù)據(jù)進行訓練和測試。在測試集上驗證所得結果,如表4所示。
表4 決策樹算法準確率
與傳統(tǒng)的基于序列的端口掃描檢測技術的準確率[7]對比,如表5所示。
表5 各種算法準確率對比
可以看到,應用機器學習的決策樹算法對檢測端口掃描攻擊的準確率有著較大提升。未來,選擇更合適的特征來進一步提升檢測準確率仍是研究的目標。
本文針對端口掃描惡意流量的問題,提出了一種基于決策樹的端口掃描惡意流量檢測方法,并在CICIDS2017數(shù)據(jù)集上進行測試和驗證,證明了其擁有較高的準確率。隨著信息技術的發(fā)展,網(wǎng)絡安全問題日益受到更加嚴峻的挑戰(zhàn),端口掃描作為一般網(wǎng)絡入侵行為的第一步,對其的檢測對防范入侵有著重要意義。本文提出的檢測方法顯著提高了對端口掃描惡意流量的檢測率,對實際的端口掃描攻擊檢測有較大的幫助。