?

基于特征選擇的物聯網設備流量異常檢測算法

2022-08-16 03:11劉祥軍江凌云
計算機工程與設計 2022年8期
關鍵詞:特征選擇決策樹數據包

劉祥軍,江凌云,2+

(1.南京郵電大學 通信與信息工程學院,江蘇 南京 210003; 2.江蘇省物聯網技術與應用協同創新中心 智慧家居安防分中心,江蘇 南京 210003)

0 引 言

隨著物聯網(internet of things,IOT)的快速發展,全球部署的物聯網設備的數量急劇增加[1]。然而,大多數的物聯網設備由于受到生產成本的限制,設備的計算、存儲能力有限,不能安裝復雜的安全機制。另外,很多物聯網設備的生產商都是不具備網絡安全專業知識的傳統家用電器制造商,這些廠商的開發團隊往往不遵循安全的軟件開發慣例[2]等,這都使得物聯網設備成為完美的僵尸網絡節點[3]。

目前傳統網絡中的流量異常檢測方案非常豐富,但是由于物聯網設備的特點和網絡協議等問題,傳統的檢測技術難以應用于物聯網中[4],因此針對物聯網設備特點的流量異常檢測方案還比較少。相對于傳統互聯網,物聯網中的設備具備以下特點[5]:

(1)大多數的物聯網設備硬件資源受限[6],如計算能力低,存儲及電池電量??;

(2)異構物聯網設備的流量類型差異性很大;

(3)單臺物聯網設備產生的流量很少,但海量設備與服務器之間的流量巨大;

(4)物聯網設備工作模式和用戶的使用習慣有很大關聯,在不同的時間段,流量變化很大。

對于流量異常行為的檢測,決定檢測效果和效率的要素主要有算力、算法和數據,三者相輔相成。由于物聯網邊緣設備的算力普遍較低,所以本文的研究重點放在檢測算法和數據處理上。

1 相關工作

1.1 檢測算法

從檢測策略角度,網絡異常檢測算法可以分為監督學習算法和半監督學習算法兩大類[7]。監督學習在檢測已知類型的攻擊行為方面,其檢測效果非常準確,但是對于未知類型的攻擊行為,其檢測效果較差。半監督學習是只學習檢測目標的正常行為,當目標行為偏離正常行為并超過某個閾值時,就認為發生了異常。半監督學習可以檢測到新類型的攻擊,但是學習正常行為并不簡單,所以容易產生誤報,具有較高的假正率(false positive rate,FPR)[4]。

檢測算法還可分為基于深度學習和基于傳統的機器學習兩大類。深度學習也屬于機器學習算法的一種,它源于人工神經網絡?;谏疃葘W習的異常行為檢測方法常見的有如下3種[8]:①基于深度玻爾茲曼機(deep boltzmann machines,DBM),它是將多個受限玻爾茲曼機串聯堆疊而形成的深層神經網絡。該類方法通過學習高維流量數據來提取流量的特征,從而提高檢測效率,但該類方法提取特征的魯棒性較差,當輸入數據含有噪聲時,其檢測性能變差;②基于卷積神經網絡(convolutional neural networks,CNN),該類方法檢測性能較高,具有較強的魯棒性,但需要先將網絡流量轉換為圖像,加大了數據預處理負擔;③基于堆棧自編碼器(stacked auto-encoder,SAE),它是多個自編碼器串聯堆疊形成的深層神經網絡。該類方法通過對高維流量數據進行學習,提取出流量特征,但當待測數據遭到破壞時,該類方法檢測準確率會降低。深度學習方法優點是具有學習復雜行為模式的能力,但是,深度學習需要訓練大量參數,且容易陷入局部最優問題,更重要的是深度學習對執行設備的計算,存儲能力要求高,需要高性能的設備進行訓練模型,難以在邊緣設備上部署[9]。

在傳統的機器學習算法中,可用于異常檢測的分類算法有很多,常見的有[10]:①支持向量機(support vector machine,SVM),該方法可解決小樣本的分類任務和高維數據問題,但大樣本的分類任務計算效率并不高,而且對非線性問題很難找到一個合適的核函數;②一類支持向量機(one-class SVM),支持向量機在半監督學習上的推廣;③KNN(K-nearest neighbor),該方法易于實現,無需估計參數,無需訓練,但需要計算出待測樣本與所有樣本的距離,計算量很大;④局部異常因子(local outlier factor,LOF),通過計算每個點和其鄰域內點的密度來判斷該點是否為異常點,該算法需要計算每個點與其鄰域點之間的距離,計算量大;⑤決策樹(decision tree),該方法計算量較小,能給出每個特征的重要性程度,適合高維數據,但它沒有考慮屬性間依賴,容易過擬合;⑥孤立森林(isolation forest),是一種集成學習算法,通過構建多棵孤立樹,計算樣本在每棵孤立樹上的路徑長度來得到一個異常得分,最后綜合所有孤立樹的異常得分,做出決策。它容易實現、計算開銷??;⑦隨機森林是一種集成學習算法,它是包含多棵決策樹的分類器,通過將多棵決策樹的預測結果組合成一個模型,進行預測。隨機森林容易實現、計算開銷小、泛化性能強,被譽為“代表集成學習技術水平的方法”。

在上述算法中,深度玻爾茲曼機、卷積神經網絡、堆棧自編碼器、一類支持向量機、局部異常因子、孤立森林是半監督學習算法,支持向量機、KNN、決策樹、隨機森林是監督學習算法。在物聯網中,被僵尸網絡控制的設備發起的攻擊類型有很多,但是基本都是已知的,所以本文采用隨機森林算法進行設備流量的異常檢測。

1.2 數據處理

數據處理一般指從采集到的原始測量數據中先篩選掉干擾信息,再用數理統計的方法從中提取出能刻畫檢測目標行為的統計量的過程。處理后的檢測數據通常包含多個特征,其中一些特征對檢測效果并不起作用或者存在多個特征作用相同。這些冗余特征不但會增加特征提取階段的工作量,而且檢測數據在高維情形下會出現數據樣本稀疏、距離計算困難等問題,被稱為“維數災難”[10]。緩解維數災難的方法有兩種:一是降維(dimension reduction);二是特征選擇(feature selection)。

降維也稱為維數約簡,指通過某種數學變換將原高維空間中的數據點映射到低維度的子空間中。在降維產生的子空間中,樣本密度會大幅提高,距離計算也變得更為容易。常見的降維算法有PCA[11]、LDA(linear discriminant analysis)、局部線性嵌入(locally linear embedding,LLE)。對比LDA、PCA 算法,LLE算法的計算復雜度極高,因為它需要計算出降維前所有樣本點之間的歐氏距離或測地距離。LLE和PCA對數據的降維范圍沒有限制,最少可以降到一維,LDA算法的降維的范圍有限制,假設樣本數據包含k類,LDA算法的降維范圍是[1,k-1],特別地,對于k=2時,LDA算法只能把樣本數據降到一維。

特征選擇是指根據優化目標從已有的特征集合中選擇若干個特征構成最佳特征子集。常見的特征選擇方法有過濾式(Filter)、包裹式(Wrapper)、嵌入式(Embedding)。過濾式方法的特征選擇過程與后續使用的檢測算法是相互獨立的。包裹式方法是把檢測算法的檢測效果作為特征子集的評價標準。嵌入式方法是將特征選擇過程與檢測算法訓練過程融為一體,在檢測算法訓練過程中自動地進行了特征選擇。過濾式和包裹式方法針對所有的算法都可以實現,而嵌入式方法只適合某些算法,如支持向量機、邏輯回歸等。對比包裹式特征選擇,過濾式可以快速縮小特征的范圍,具有計算簡單,收斂速度快的特點,但是并不能保證選擇出無冗余的特征子集。包裹式特征選擇針對某個特定的檢測算法優化,實際中表現出的性能比過濾式好很多,但是計算復雜度較高,收斂速度慢。

綜上,本文根據物聯網中設備海量異構的特點以及異常檢測的要求,提出一種基于隨機森林的包裹式特征選擇方法RFCVFS,通過對設備流量中提取出的特征信息進行選擇,為不同類型的物聯網設備分別篩選出有效的特征信息,并用于訓練檢測模型,實現對攻擊流量的高效檢測。本文主要內容和創新如下:

(1)設備流量采集與特征信息提取。采用阻尼時間窗口的方法[12],在5個不同時間窗口,從設備產生的流量中提取出描述設備行為的特征信息。

(2)特征信息選擇。提出一種特征選擇方法RFCVFS,為不同類型的物聯網設備選擇出適合該設備的特征信息。

(3)實驗與結果分析。使用UCI公開的僵尸網絡數據集[13]進行實驗,根據為不同類型設備選出的特征信息,用隨機森林算法為每種類型設備訓練出獨立的檢測模型。結果顯示,本文提出的檢測方法能夠有效降低物聯網邊緣設備的流量預處理負擔,大幅降低模型訓練時間,流量檢測時間。

2 設備流量采集與特征信息提取

在物聯網環境中,設備產成的數據流首先在網關處匯聚,多個網關設備數據流再匯聚到路由器,連接到互聯網上。匯聚后的數據流包含多臺設備流量,增加了對于某臺設備異常流量檢測的難度[14]。因此,本文把安全檢測系統部署在離設備較近的邊緣網關處。

本文流量異常檢測系統的工作流程如圖1所示,可分為如下步驟:①流量采集。邊緣網關利用不同的物理端口區分來自不同類型物聯網設備產生的流量,然后基于阻尼時間窗口方法進行流量采集;②特征信息提取。從設備產生的流量中提取出描述設備行為的特征信息;③特征信息選擇。執行特征選擇算法RFCVFS,為不同類型的設備選擇有效的特征信息,訓練檢測模型并保存;④設備流量檢測。根據流量來源,選擇對應的檢測模型,實現對設備行為的實時監控。

圖1 檢測系統工作流程

2.1 設備流量采集

設備的異常行為檢測是根據設備流量的特征信息是否發生變化,但是從流量中提取這些特征信息存在許多的挑戰[12]:①不同的會話分組是相互交織的;②在任何給定時刻都有多個信道同時進行通信;③分組到達率不穩定,有時會很高。因此,為了得到能代表數據流最近行為的特征信息,必須丟掉相對較老的數據包,簡單的方法是去維持一個滑動窗口,窗口共包含N個數據包,每次有新的數據包加入時,窗口會丟棄最舊的數據包,然后就可以在窗口上計算特征信息。

滑動窗口方法簡單容易實現,但是會帶來有兩個缺點:①沒有考慮在一個窗口內N個數據之間的時間跨度。例如,假設一個窗口維護N=1000個數據包,前900個數據包在1 s內達到,最后100個數據包是在之后1 min內到達,這就導致利用該窗口內的數據計算出的特征信息并不能描述設備最近的行為;②該方法的空間復雜度是O(N), 設備產生的海量數據會導致檢測系統的內存消耗太大。

為了解決用滑動窗口采集的流量有時不能描述設備最近行為問題,本文采用了阻尼時間窗方法。在阻尼窗口模型中,它不規定窗口內的數據包個數N,而是規定窗口的時間間隔T,所以阻尼時間窗口內的數據個數是一個變化值,數據包權重隨時間呈指數下降,對應的衰變函數為dλ(t)=2-λt式中λ(>0) 是衰變因子,t是在阻尼時間窗口內該數據包到最后一個接收數據包的時間間隔,即最后一個數據包對應t=0, 第一個數據包t=T。

為了解決滑動窗口占用內存過大的問題,本文采用了一種基于數據增量來計算特征信息的框架,它可以在動態數量的數據流上進行高速的特征信息的提取。例如,對于一個數據流S={x1,x2,…},xi∈,xi代表數據包的大小,要計算S的均值μs, 方差O(1), 標準差σs, 可以通過維護三元數組IS=(N,LS,SS) 來計算得到,其中N代表數據流S中元素個數,LS代表S中元素之和,SS代表S中元素的平方和,當S中增加一個數據xn, 此時即不用把S中每個元素xi都記錄在內存中,當有新的數據到達時,只需要更新IS即可。該方法具有的空間復雜度。

2.2 特征信息提取

算法1: 五元數組更新算法

輸入:ISi,λ,xcur,Tcur,rj

輸出:ISi,λ

(1)計算衰減系數γ:γ=dλ(Tcur-Tlast)

(2) 計算衰變量:ISi,λ←(γw,γLS,γSS,γSR,Tcur)

(3) 更新ISi,λ:

(4)返回(1)

表1 特征類型和計算方法

如表2所示,本文從4種數據流中提取上述的特征信息,這4種數據流分別是:①相同MAC和IP地址產生的數據流,定義為SrcMAC-IP;②相同源IP地址產生的數據流,定義為SrcIP;③相同源IP地址和目的IP地址之間產生的數據流,定義為Channel;④相同源IP-Socket和目的IP-Socket地址之間產生的數據流,定義為Socket。在一個阻尼時間窗口內共提取23個特征。為了全面描述出流量隨時間變化的特征,共設置了5個時間窗口,分別為:100 ms、500 ms、1.5 s、10 s和1 min,對應的衰變因子λ:5、3、1、0.1、0.0。

表2 4種數據流及其提取的特征信息

3 特征信息選擇算法

特征選擇算法包括特征子集評價和子集搜索兩個環節。子集評價是根據選定的評價標準,本文的特征選擇算法是一種基于隨機森林包裹式特征選擇算法,該算法的子集評價標準是F1,子集搜索機制是后向搜索。

3.1 隨機森林

隨機森林是以決策樹為基學習器的集成學習分類算法,而且進一步在決策樹的訓練過程中引入了Bagging隨機采樣和隨機屬性選擇。隨機森林生成步驟如下:

(1)構建基決策樹。對于基決策樹的每個結點,先從該結點包含的d個屬性集合中隨機選擇一個包含k個屬性的子集,然后再從這個子集中選擇一個最優屬性用于劃分。這里的參數k控制了隨機性的引入程度,若令k=d, 則基決策樹的構建與傳統決策樹相同;若令k=1, 則是隨機選擇一個屬性用于劃分,一般取k=1或者k=log2d;

(2)Bagging隨機采樣。從訓練集中抽取M個樣本,用這M個樣本構建基決策樹,同樣方法抽取N次,則構建N棵決策樹,這N棵基決策樹就構成隨機森林,一般取N=256;

(3)用隨機森林對新樣本進行分類,分類結果由每棵基決策樹的分類結果進行投票得到。

3.2 特征重要性評估

提供特征重要性評估是決策樹這一類算法的特點,基于決策樹構建的隨機森林算法可以計算出基于袋外數據分類準確率的特征重要性評估。該評估方式結合了決策樹和Bagging隨機采樣特點,是最常用的一種特征重要性評估方式。具體原理如下:

(1)用Bagging從訓練集中采樣得到M個樣本集,重復N次,用這N個樣本集訓練N棵基決策樹,構成隨機森林;

(5)計算得到,若給某個特征隨機加入噪聲之后,袋外的準確率大幅度下降,則說明這個特征對于樣本的分類結果影響很大,所以特征Xj的重要性得分Sj越大,說明特征越重要。

3.3 本文特征選擇算法RFCVFS

在實際使用過程中發現,上述特征重要性評估算法存在一個問題,即當我們采取交叉驗證時,在每一折上計算出的特征的重要性得分和排名會有變化,所以針對這個問題,本文提出了一種算法RFCVFS,根據隨機森林算法計算出的特征重要性得分,采用K折交叉驗證的方式保證數據集中所有數據都可用于訓練和驗證,并將K次計算得分相加,達到降低計算結果誤差的目的。大體過程如下:首先把數據集分成K份,用其中K-1份作為訓練集,剩下1份作為驗證集,依次計算出K個訓練集上的特征重要性得分,把所有特征的K次特征重要性得分相加,根據K次得分之和給所有特征排序,得到最終的特征重要性排序。通常取K=5或10,本文取K=5。 之后采用后向搜索的方式,每次從特征重要性得分集合中刪掉一個特征重要性得分最低的特征,然后重新計算,逐步迭代。具體實現過程如算法2和圖2所示。

算法2: 特征選擇算法RFCVFS

輸入: 數據集D

輸出: 特征重要性排序集合FSort

(1)將數據集D隨機劃分成不重疊的5份, 選其中4份作為訓練集Tri, 剩下一份為測試集Ti,i=1,2,3,4,5

(2)初始化參數隨機森林算法參數

初始化每個特征重要性得分FScorek=0,k=1,2,…,N,N為特征數量。

初始化每個特征重要性得分總分TotalScorek=0,k=1,2,…,N,N為特征數量。

(3)循環開始:i=1∶5

用Tri構建隨機森林分類器, 計算出所有特征的重要性得分FScorek=0,k=1,2,…,N

令TotalScorek=TotalScorek+FScorek

循環結束

(4)根據每個特征的TotalScorek得分, 將所有特征根據其TotalScorek由大到小排序

(5)在數據集D中刪掉FSort中排在最后一位的特征

(6)若FSort中特征數量大于1, 則返回(2), 否則繼續

(7)結束

圖2 RFCVFS算法流程

4 實驗與結果分析

4.1 實驗環境

仿真環境包括的硬件Intel Core i7-4790 CPU@3.60 GHz,內存8 GB,軟件有Windows 10×64操作系統,Python 3.8.4,Anaconda3,Jupyter Notebook。

4.2 數據集

本文采用UCI公開僵尸網絡數據集,該數據集包含9臺物聯網設備產生的真實流量,這9臺設備包含兩個不同型號的門鈴(Ⅰ,Ⅲ),一個恒溫器(Ⅱ),一個嬰兒監視器(Ⅳ),4臺不同型號的監控攝像頭(Ⅴ,Ⅶ,Ⅷ,Ⅸ),一個網絡攝像頭(Ⅵ)。在包含這9臺設備組成的物聯網中,用物聯網中常見的僵尸網絡病毒Mirai和BASHLITE去感染物聯網設備,并發動如下8種類型攻擊:

(1)基于Mirai病毒的攻擊:掃描攻擊Scan、Ack泛洪攻擊、Syn泛洪攻擊、UDP泛洪攻擊、高速率UDP泛洪攻擊UDPplain。

(2)基于BASHLITE病毒的攻擊:掃描攻擊Scan、垃圾郵件攻擊Junk、TCP泛洪攻擊、UDP泛洪攻擊、指定IP和端口的垃圾郵件攻擊COMBO。

如表3所示,該數據集包含9個子數據集,每個子數據集對應一種物聯網設備,利用這9種設備發起了8種物聯網環境中常見的拒絕服務攻擊。這9個子數據集共包含7 062 607條數據,其中正常樣本555 932條,惡意樣本6 506 675條。

表3 數據集描述

4.3 評估標準

基于分類的檢測模型,可以根據混淆矩陣中數據分布的情況對模型進行評估,該矩陣表示見表4。本文主要用到的評估標準有準確率、真正率、F1和AUC,具體的定義如下:

AUC:以FPR和TPR為橫縱坐標畫出的ROC曲線與橫坐標的面積,取值范圍0到1。

表4 混淆矩陣

4.4 參數設置

隨機森林算法包含256棵基決策樹,基決策樹節點的劃分度量標準為基尼不純度(Gini impurity),尋找最佳分割時需要考慮的特征數量為總特征數量的平方根值,分割內部節點所需要的最少樣本數量為2,構建決策樹的深度沒有限制,采取五折交叉驗證,模型隨機種子設置為0。

4.5 結果及分析

(1)特征數量對檢測效果的影響

通過對特征提取階段收集到的特征進行選擇,根據RFCVFS算法計算出的特征重要性得分,每次刪去一個最不重要的特征,然后重新計算剩余特征重要性得分,重復這個過程。圖3顯示刪去0到89個特征的過程,隨著冗余特征數量的減少,這9臺設備檢測結果的F1幾乎保持不變,且有上升的趨勢;圖4顯示刪去90到111個特征的過程,從圖中可以看出,檢測數據在刪去90到108個特征的過程中,F1得分幾乎不變,大約在刪去108到110個特征后,多數設備的F1開始出現明顯下降趨勢,說明刪去的特征不是冗余的,應該保留。綜上,本文的RFCVFS算法能夠篩選出數據中包含的冗余特征,可以用于給設備篩選出最佳特征子集。

圖3 刪去0-89個特征

圖4 刪去90-111個特征

(2)特征數量對檢測效率的影響

如表5所示,在保證F1≥99.99%時,9臺設備選取最少的特征數量以及對應的特征序號,并將其命名為最佳特征集。對于這9臺設備來說,只要分別選取3,5,5,5,6,5,5,2,8個特征進行檢測,就能達到很好的效果。如圖5、圖6所示,對比了保留所有特征和采用RFCVFS篩選出的特征,這9臺設備檢測模型的訓練時間最大降低82.67%,平均降低74.64%;流量檢測所需的時間最大降低28.49%,平均降低17.63%。

(3)RFCVFS和PCA算法對比

如圖7到圖10所示,從準確率Accuracy、真正率TPR、F1和AUC這4種評價標準分別對比了RFCVFS和

表5 選出的特征集(F1≥99.99%)

圖5 特征選擇前后的訓練時間對比

圖6 特征選擇前后的檢測時間對比

PCA兩種降維方法。根據每臺設備最佳特征集中的特征數量,利用PCA把9臺設備的檢測數據對應地降到相同維度,檢測結果顯示,采用RFCVFS算法處理過的數據,其檢測結果的Accuracy、TPR、F1、AUC分別最大高出13.82%、0.48%、7.63%、29.51%,平均高出5.38%、0.13%、2.88%、18.57%。這說明相比PCA算法產生的特征,RFCVFS算法篩選出的特征能更好的區分出惡意流量和正常流量,且無論是從準確率、誤判率角度都是優于PCA算法生成的特征,此外,特征選擇篩選出的特征保留了原有特征的物理意義,PCA算法產生的特征是原有特征的線性組合變換,失去了原有特征的物理意義。

圖7 準確率的對比

圖8 真正率的對比

圖9 F1的對比

圖10 AUC的對比

另外,在實驗過程中還發現,如圖11、圖12所示,相比RFCVFS選擇出的數據,用 PCA生成的數據,其訓練時間和檢測時間分別平均高出67.13%,38.74%。雖然兩者生成的數據是相同的維度,但是PCA降維的原理是按照原始數據各方向上的方差,從大到小依次選取,從而在計算決策樹分叉點最佳閾值時就需要耗費較多的時間,且生成的決策樹會更深,這就導致模型的訓練時間,檢測時間的增加。

圖11 模型訓練時間的對比

圖12 模型的檢測時間的對比

特征選擇和PCA都能降低數據維度,但是特征選擇具有更加明確的實際意義:①特征選擇可以根據檢測目標,給出每個特征對于檢測結果的影響程度,有助于在檢測某種類型攻擊時進行特征的設計;②特征選擇可以降低設備在流量特征提取階段的負擔。在特征提取階段只需要提取有效特征即可組成待檢測數據。

5 結束語

針對物聯網環境中的僵尸網絡攻擊問題,本文從檢測算法和數據兩方面出考慮,提出一種基于特征選擇的設備流量異常檢測方法。首先,該方法可以給異構的物聯網設備動態搜索出適合該設備型號的最佳特征子集,相比沒有進行流量的特征選擇,采用該方法可以有效降低模型的訓練時間和檢測時間。其次,在流量特征提取階段,只需要根據設備型號提取出該設備的最佳特征,這對于性能受限的物聯網邊緣設備而言,可以有效降低特征提取階段的工作負擔。最后,對比經典降維方法PCA,采用特征選擇方法得到的流量特征具有更高的準確性,模型訓練時間和檢測時間也更短。

下一步工作考慮將流量特征選擇和半監督學習算法結合起來,降低人工標記數據的難度,提高檢測模型應對未知類型攻擊的能力。

猜你喜歡
特征選擇決策樹數據包
二維隱蔽時間信道構建的研究*
正交基低冗余無監督特征選擇法
基于決策樹和神經網絡的高血壓病危險因素研究
網絡入侵檢測場景下的特征選擇方法對比研究
民用飛機飛行模擬機數據包試飛任務優化結合方法研究
C#串口高效可靠的接收方案設計
決策樹和隨機森林方法在管理決策中的應用
基于特征聚類集成技術的在線特征選擇
Kmeans 應用與特征選擇
決策樹多元分類模型預測森林植被覆蓋
91香蕉高清国产线观看免费-97夜夜澡人人爽人人喊a-99久久久无码国产精品9-国产亚洲日韩欧美综合