劉祥軍,江凌云,2+
(1.南京郵電大學(xué) 通信與信息工程學(xué)院,江蘇 南京 210003; 2.江蘇省物聯(lián)網(wǎng)技術(shù)與應(yīng)用協(xié)同創(chuàng)新中心 智慧家居安防分中心,江蘇 南京 210003)
隨著物聯(lián)網(wǎng)(internet of things,IOT)的快速發(fā)展,全球部署的物聯(lián)網(wǎng)設(shè)備的數(shù)量急劇增加[1]。然而,大多數(shù)的物聯(lián)網(wǎng)設(shè)備由于受到生產(chǎn)成本的限制,設(shè)備的計(jì)算、存儲能力有限,不能安裝復(fù)雜的安全機(jī)制。另外,很多物聯(lián)網(wǎng)設(shè)備的生產(chǎn)商都是不具備網(wǎng)絡(luò)安全專業(yè)知識的傳統(tǒng)家用電器制造商,這些廠商的開發(fā)團(tuán)隊(duì)往往不遵循安全的軟件開發(fā)慣例[2]等,這都使得物聯(lián)網(wǎng)設(shè)備成為完美的僵尸網(wǎng)絡(luò)節(jié)點(diǎn)[3]。
目前傳統(tǒng)網(wǎng)絡(luò)中的流量異常檢測方案非常豐富,但是由于物聯(lián)網(wǎng)設(shè)備的特點(diǎn)和網(wǎng)絡(luò)協(xié)議等問題,傳統(tǒng)的檢測技術(shù)難以應(yīng)用于物聯(lián)網(wǎng)中[4],因此針對物聯(lián)網(wǎng)設(shè)備特點(diǎn)的流量異常檢測方案還比較少。相對于傳統(tǒng)互聯(lián)網(wǎng),物聯(lián)網(wǎng)中的設(shè)備具備以下特點(diǎn)[5]:
(1)大多數(shù)的物聯(lián)網(wǎng)設(shè)備硬件資源受限[6],如計(jì)算能力低,存儲及電池電量??;
(2)異構(gòu)物聯(lián)網(wǎng)設(shè)備的流量類型差異性很大;
(3)單臺物聯(lián)網(wǎng)設(shè)備產(chǎn)生的流量很少,但海量設(shè)備與服務(wù)器之間的流量巨大;
(4)物聯(lián)網(wǎng)設(shè)備工作模式和用戶的使用習(xí)慣有很大關(guān)聯(lián),在不同的時間段,流量變化很大。
對于流量異常行為的檢測,決定檢測效果和效率的要素主要有算力、算法和數(shù)據(jù),三者相輔相成。由于物聯(lián)網(wǎng)邊緣設(shè)備的算力普遍較低,所以本文的研究重點(diǎn)放在檢測算法和數(shù)據(jù)處理上。
從檢測策略角度,網(wǎng)絡(luò)異常檢測算法可以分為監(jiān)督學(xué)習(xí)算法和半監(jiān)督學(xué)習(xí)算法兩大類[7]。監(jiān)督學(xué)習(xí)在檢測已知類型的攻擊行為方面,其檢測效果非常準(zhǔn)確,但是對于未知類型的攻擊行為,其檢測效果較差。半監(jiān)督學(xué)習(xí)是只學(xué)習(xí)檢測目標(biāo)的正常行為,當(dāng)目標(biāo)行為偏離正常行為并超過某個閾值時,就認(rèn)為發(fā)生了異常。半監(jiān)督學(xué)習(xí)可以檢測到新類型的攻擊,但是學(xué)習(xí)正常行為并不簡單,所以容易產(chǎn)生誤報,具有較高的假正率(false positive rate,F(xiàn)PR)[4]。
檢測算法還可分為基于深度學(xué)習(xí)和基于傳統(tǒng)的機(jī)器學(xué)習(xí)兩大類。深度學(xué)習(xí)也屬于機(jī)器學(xué)習(xí)算法的一種,它源于人工神經(jīng)網(wǎng)絡(luò)?;谏疃葘W(xué)習(xí)的異常行為檢測方法常見的有如下3種[8]:①基于深度玻爾茲曼機(jī)(deep boltzmann machines,DBM),它是將多個受限玻爾茲曼機(jī)串聯(lián)堆疊而形成的深層神經(jīng)網(wǎng)絡(luò)。該類方法通過學(xué)習(xí)高維流量數(shù)據(jù)來提取流量的特征,從而提高檢測效率,但該類方法提取特征的魯棒性較差,當(dāng)輸入數(shù)據(jù)含有噪聲時,其檢測性能變差;②基于卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural networks,CNN),該類方法檢測性能較高,具有較強(qiáng)的魯棒性,但需要先將網(wǎng)絡(luò)流量轉(zhuǎn)換為圖像,加大了數(shù)據(jù)預(yù)處理負(fù)擔(dān);③基于堆棧自編碼器(stacked auto-encoder,SAE),它是多個自編碼器串聯(lián)堆疊形成的深層神經(jīng)網(wǎng)絡(luò)。該類方法通過對高維流量數(shù)據(jù)進(jìn)行學(xué)習(xí),提取出流量特征,但當(dāng)待測數(shù)據(jù)遭到破壞時,該類方法檢測準(zhǔn)確率會降低。深度學(xué)習(xí)方法優(yōu)點(diǎn)是具有學(xué)習(xí)復(fù)雜行為模式的能力,但是,深度學(xué)習(xí)需要訓(xùn)練大量參數(shù),且容易陷入局部最優(yōu)問題,更重要的是深度學(xué)習(xí)對執(zhí)行設(shè)備的計(jì)算,存儲能力要求高,需要高性能的設(shè)備進(jìn)行訓(xùn)練模型,難以在邊緣設(shè)備上部署[9]。
在傳統(tǒng)的機(jī)器學(xué)習(xí)算法中,可用于異常檢測的分類算法有很多,常見的有[10]:①支持向量機(jī)(support vector machine,SVM),該方法可解決小樣本的分類任務(wù)和高維數(shù)據(jù)問題,但大樣本的分類任務(wù)計(jì)算效率并不高,而且對非線性問題很難找到一個合適的核函數(shù);②一類支持向量機(jī)(one-class SVM),支持向量機(jī)在半監(jiān)督學(xué)習(xí)上的推廣;③KNN(K-nearest neighbor),該方法易于實(shí)現(xiàn),無需估計(jì)參數(shù),無需訓(xùn)練,但需要計(jì)算出待測樣本與所有樣本的距離,計(jì)算量很大;④局部異常因子(local outlier factor,LOF),通過計(jì)算每個點(diǎn)和其鄰域內(nèi)點(diǎn)的密度來判斷該點(diǎn)是否為異常點(diǎn),該算法需要計(jì)算每個點(diǎn)與其鄰域點(diǎn)之間的距離,計(jì)算量大;⑤決策樹(decision tree),該方法計(jì)算量較小,能給出每個特征的重要性程度,適合高維數(shù)據(jù),但它沒有考慮屬性間依賴,容易過擬合;⑥孤立森林(isolation forest),是一種集成學(xué)習(xí)算法,通過構(gòu)建多棵孤立樹,計(jì)算樣本在每棵孤立樹上的路徑長度來得到一個異常得分,最后綜合所有孤立樹的異常得分,做出決策。它容易實(shí)現(xiàn)、計(jì)算開銷??;⑦隨機(jī)森林是一種集成學(xué)習(xí)算法,它是包含多棵決策樹的分類器,通過將多棵決策樹的預(yù)測結(jié)果組合成一個模型,進(jìn)行預(yù)測。隨機(jī)森林容易實(shí)現(xiàn)、計(jì)算開銷小、泛化性能強(qiáng),被譽(yù)為“代表集成學(xué)習(xí)技術(shù)水平的方法”。
在上述算法中,深度玻爾茲曼機(jī)、卷積神經(jīng)網(wǎng)絡(luò)、堆棧自編碼器、一類支持向量機(jī)、局部異常因子、孤立森林是半監(jiān)督學(xué)習(xí)算法,支持向量機(jī)、KNN、決策樹、隨機(jī)森林是監(jiān)督學(xué)習(xí)算法。在物聯(lián)網(wǎng)中,被僵尸網(wǎng)絡(luò)控制的設(shè)備發(fā)起的攻擊類型有很多,但是基本都是已知的,所以本文采用隨機(jī)森林算法進(jìn)行設(shè)備流量的異常檢測。
數(shù)據(jù)處理一般指從采集到的原始測量數(shù)據(jù)中先篩選掉干擾信息,再用數(shù)理統(tǒng)計(jì)的方法從中提取出能刻畫檢測目標(biāo)行為的統(tǒng)計(jì)量的過程。處理后的檢測數(shù)據(jù)通常包含多個特征,其中一些特征對檢測效果并不起作用或者存在多個特征作用相同。這些冗余特征不但會增加特征提取階段的工作量,而且檢測數(shù)據(jù)在高維情形下會出現(xiàn)數(shù)據(jù)樣本稀疏、距離計(jì)算困難等問題,被稱為“維數(shù)災(zāi)難”[10]。緩解維數(shù)災(zāi)難的方法有兩種:一是降維(dimension reduction);二是特征選擇(feature selection)。
降維也稱為維數(shù)約簡,指通過某種數(shù)學(xué)變換將原高維空間中的數(shù)據(jù)點(diǎn)映射到低維度的子空間中。在降維產(chǎn)生的子空間中,樣本密度會大幅提高,距離計(jì)算也變得更為容易。常見的降維算法有PCA[11]、LDA(linear discriminant analysis)、局部線性嵌入(locally linear embedding,LLE)。對比LDA、PCA 算法,LLE算法的計(jì)算復(fù)雜度極高,因?yàn)樗枰?jì)算出降維前所有樣本點(diǎn)之間的歐氏距離或測地距離。LLE和PCA對數(shù)據(jù)的降維范圍沒有限制,最少可以降到一維,LDA算法的降維的范圍有限制,假設(shè)樣本數(shù)據(jù)包含k類,LDA算法的降維范圍是[1,k-1],特別地,對于k=2時,LDA算法只能把樣本數(shù)據(jù)降到一維。
特征選擇是指根據(jù)優(yōu)化目標(biāo)從已有的特征集合中選擇若干個特征構(gòu)成最佳特征子集。常見的特征選擇方法有過濾式(Filter)、包裹式(Wrapper)、嵌入式(Embedding)。過濾式方法的特征選擇過程與后續(xù)使用的檢測算法是相互獨(dú)立的。包裹式方法是把檢測算法的檢測效果作為特征子集的評價標(biāo)準(zhǔn)。嵌入式方法是將特征選擇過程與檢測算法訓(xùn)練過程融為一體,在檢測算法訓(xùn)練過程中自動地進(jìn)行了特征選擇。過濾式和包裹式方法針對所有的算法都可以實(shí)現(xiàn),而嵌入式方法只適合某些算法,如支持向量機(jī)、邏輯回歸等。對比包裹式特征選擇,過濾式可以快速縮小特征的范圍,具有計(jì)算簡單,收斂速度快的特點(diǎn),但是并不能保證選擇出無冗余的特征子集。包裹式特征選擇針對某個特定的檢測算法優(yōu)化,實(shí)際中表現(xiàn)出的性能比過濾式好很多,但是計(jì)算復(fù)雜度較高,收斂速度慢。
綜上,本文根據(jù)物聯(lián)網(wǎng)中設(shè)備海量異構(gòu)的特點(diǎn)以及異常檢測的要求,提出一種基于隨機(jī)森林的包裹式特征選擇方法RFCVFS,通過對設(shè)備流量中提取出的特征信息進(jìn)行選擇,為不同類型的物聯(lián)網(wǎng)設(shè)備分別篩選出有效的特征信息,并用于訓(xùn)練檢測模型,實(shí)現(xiàn)對攻擊流量的高效檢測。本文主要內(nèi)容和創(chuàng)新如下:
(1)設(shè)備流量采集與特征信息提取。采用阻尼時間窗口的方法[12],在5個不同時間窗口,從設(shè)備產(chǎn)生的流量中提取出描述設(shè)備行為的特征信息。
(2)特征信息選擇。提出一種特征選擇方法RFCVFS,為不同類型的物聯(lián)網(wǎng)設(shè)備選擇出適合該設(shè)備的特征信息。
(3)實(shí)驗(yàn)與結(jié)果分析。使用UCI公開的僵尸網(wǎng)絡(luò)數(shù)據(jù)集[13]進(jìn)行實(shí)驗(yàn),根據(jù)為不同類型設(shè)備選出的特征信息,用隨機(jī)森林算法為每種類型設(shè)備訓(xùn)練出獨(dú)立的檢測模型。結(jié)果顯示,本文提出的檢測方法能夠有效降低物聯(lián)網(wǎng)邊緣設(shè)備的流量預(yù)處理負(fù)擔(dān),大幅降低模型訓(xùn)練時間,流量檢測時間。
在物聯(lián)網(wǎng)環(huán)境中,設(shè)備產(chǎn)成的數(shù)據(jù)流首先在網(wǎng)關(guān)處匯聚,多個網(wǎng)關(guān)設(shè)備數(shù)據(jù)流再匯聚到路由器,連接到互聯(lián)網(wǎng)上。匯聚后的數(shù)據(jù)流包含多臺設(shè)備流量,增加了對于某臺設(shè)備異常流量檢測的難度[14]。因此,本文把安全檢測系統(tǒng)部署在離設(shè)備較近的邊緣網(wǎng)關(guān)處。
本文流量異常檢測系統(tǒng)的工作流程如圖1所示,可分為如下步驟:①流量采集。邊緣網(wǎng)關(guān)利用不同的物理端口區(qū)分來自不同類型物聯(lián)網(wǎng)設(shè)備產(chǎn)生的流量,然后基于阻尼時間窗口方法進(jìn)行流量采集;②特征信息提取。從設(shè)備產(chǎn)生的流量中提取出描述設(shè)備行為的特征信息;③特征信息選擇。執(zhí)行特征選擇算法RFCVFS,為不同類型的設(shè)備選擇有效的特征信息,訓(xùn)練檢測模型并保存;④設(shè)備流量檢測。根據(jù)流量來源,選擇對應(yīng)的檢測模型,實(shí)現(xiàn)對設(shè)備行為的實(shí)時監(jiān)控。

圖1 檢測系統(tǒng)工作流程
設(shè)備的異常行為檢測是根據(jù)設(shè)備流量的特征信息是否發(fā)生變化,但是從流量中提取這些特征信息存在許多的挑戰(zhàn)[12]:①不同的會話分組是相互交織的;②在任何給定時刻都有多個信道同時進(jìn)行通信;③分組到達(dá)率不穩(wěn)定,有時會很高。因此,為了得到能代表數(shù)據(jù)流最近行為的特征信息,必須丟掉相對較老的數(shù)據(jù)包,簡單的方法是去維持一個滑動窗口,窗口共包含N個數(shù)據(jù)包,每次有新的數(shù)據(jù)包加入時,窗口會丟棄最舊的數(shù)據(jù)包,然后就可以在窗口上計(jì)算特征信息。
滑動窗口方法簡單容易實(shí)現(xiàn),但是會帶來有兩個缺點(diǎn):①沒有考慮在一個窗口內(nèi)N個數(shù)據(jù)之間的時間跨度。例如,假設(shè)一個窗口維護(hù)N=1000個數(shù)據(jù)包,前900個數(shù)據(jù)包在1 s內(nèi)達(dá)到,最后100個數(shù)據(jù)包是在之后1 min內(nèi)到達(dá),這就導(dǎo)致利用該窗口內(nèi)的數(shù)據(jù)計(jì)算出的特征信息并不能描述設(shè)備最近的行為;②該方法的空間復(fù)雜度是O(N), 設(shè)備產(chǎn)生的海量數(shù)據(jù)會導(dǎo)致檢測系統(tǒng)的內(nèi)存消耗太大。
為了解決用滑動窗口采集的流量有時不能描述設(shè)備最近行為問題,本文采用了阻尼時間窗方法。在阻尼窗口模型中,它不規(guī)定窗口內(nèi)的數(shù)據(jù)包個數(shù)N,而是規(guī)定窗口的時間間隔T,所以阻尼時間窗口內(nèi)的數(shù)據(jù)個數(shù)是一個變化值,數(shù)據(jù)包權(quán)重隨時間呈指數(shù)下降,對應(yīng)的衰變函數(shù)為dλ(t)=2-λt式中λ(>0) 是衰變因子,t是在阻尼時間窗口內(nèi)該數(shù)據(jù)包到最后一個接收數(shù)據(jù)包的時間間隔,即最后一個數(shù)據(jù)包對應(yīng)t=0, 第一個數(shù)據(jù)包t=T。
為了解決滑動窗口占用內(nèi)存過大的問題,本文采用了一種基于數(shù)據(jù)增量來計(jì)算特征信息的框架,它可以在動態(tài)數(shù)量的數(shù)據(jù)流上進(jìn)行高速的特征信息的提取。例如,對于一個數(shù)據(jù)流S={x1,x2,…},xi∈,xi代表數(shù)據(jù)包的大小,要計(jì)算S的均值μs, 方差O(1), 標(biāo)準(zhǔn)差σs, 可以通過維護(hù)三元數(shù)組IS=(N,LS,SS) 來計(jì)算得到,其中N代表數(shù)據(jù)流S中元素個數(shù),LS代表S中元素之和,SS代表S中元素的平方和,當(dāng)S中增加一個數(shù)據(jù)xn, 此時即不用把S中每個元素xi都記錄在內(nèi)存中,當(dāng)有新的數(shù)據(jù)到達(dá)時,只需要更新IS即可。該方法具有的空間復(fù)雜度。

算法1: 五元數(shù)組更新算法
輸入:ISi,λ,xcur,Tcur,rj
輸出:ISi,λ
(1)計(jì)算衰減系數(shù)γ:γ=dλ(Tcur-Tlast)
(2) 計(jì)算衰變量:ISi,λ←(γw,γLS,γSS,γSR,Tcur)
(3) 更新ISi,λ:
(4)返回(1)

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

表2 4種數(shù)據(jù)流及其提取的特征信息
特征選擇算法包括特征子集評價和子集搜索兩個環(huán)節(jié)。子集評價是根據(jù)選定的評價標(biāo)準(zhǔn),本文的特征選擇算法是一種基于隨機(jī)森林包裹式特征選擇算法,該算法的子集評價標(biāo)準(zhǔn)是F1,子集搜索機(jī)制是后向搜索。
隨機(jī)森林是以決策樹為基學(xué)習(xí)器的集成學(xué)習(xí)分類算法,而且進(jìn)一步在決策樹的訓(xùn)練過程中引入了Bagging隨機(jī)采樣和隨機(jī)屬性選擇。隨機(jī)森林生成步驟如下:
(1)構(gòu)建基決策樹。對于基決策樹的每個結(jié)點(diǎn),先從該結(jié)點(diǎn)包含的d個屬性集合中隨機(jī)選擇一個包含k個屬性的子集,然后再從這個子集中選擇一個最優(yōu)屬性用于劃分。這里的參數(shù)k控制了隨機(jī)性的引入程度,若令k=d, 則基決策樹的構(gòu)建與傳統(tǒng)決策樹相同;若令k=1, 則是隨機(jī)選擇一個屬性用于劃分,一般取k=1或者k=log2d;
(2)Bagging隨機(jī)采樣。從訓(xùn)練集中抽取M個樣本,用這M個樣本構(gòu)建基決策樹,同樣方法抽取N次,則構(gòu)建N棵決策樹,這N棵基決策樹就構(gòu)成隨機(jī)森林,一般取N=256;
(3)用隨機(jī)森林對新樣本進(jìn)行分類,分類結(jié)果由每棵基決策樹的分類結(jié)果進(jìn)行投票得到。
提供特征重要性評估是決策樹這一類算法的特點(diǎn),基于決策樹構(gòu)建的隨機(jī)森林算法可以計(jì)算出基于袋外數(shù)據(jù)分類準(zhǔn)確率的特征重要性評估。該評估方式結(jié)合了決策樹和Bagging隨機(jī)采樣特點(diǎn),是最常用的一種特征重要性評估方式。具體原理如下:
(1)用Bagging從訓(xùn)練集中采樣得到M個樣本集,重復(fù)N次,用這N個樣本集訓(xùn)練N棵基決策樹,構(gòu)成隨機(jī)森林;



(5)計(jì)算得到,若給某個特征隨機(jī)加入噪聲之后,袋外的準(zhǔn)確率大幅度下降,則說明這個特征對于樣本的分類結(jié)果影響很大,所以特征Xj的重要性得分Sj越大,說明特征越重要。
在實(shí)際使用過程中發(fā)現(xiàn),上述特征重要性評估算法存在一個問題,即當(dāng)我們采取交叉驗(yàn)證時,在每一折上計(jì)算出的特征的重要性得分和排名會有變化,所以針對這個問題,本文提出了一種算法RFCVFS,根據(jù)隨機(jī)森林算法計(jì)算出的特征重要性得分,采用K折交叉驗(yàn)證的方式保證數(shù)據(jù)集中所有數(shù)據(jù)都可用于訓(xùn)練和驗(yàn)證,并將K次計(jì)算得分相加,達(dá)到降低計(jì)算結(jié)果誤差的目的。大體過程如下:首先把數(shù)據(jù)集分成K份,用其中K-1份作為訓(xùn)練集,剩下1份作為驗(yàn)證集,依次計(jì)算出K個訓(xùn)練集上的特征重要性得分,把所有特征的K次特征重要性得分相加,根據(jù)K次得分之和給所有特征排序,得到最終的特征重要性排序。通常取K=5或10,本文取K=5。 之后采用后向搜索的方式,每次從特征重要性得分集合中刪掉一個特征重要性得分最低的特征,然后重新計(jì)算,逐步迭代。具體實(shí)現(xiàn)過程如算法2和圖2所示。
算法2: 特征選擇算法RFCVFS
輸入: 數(shù)據(jù)集D
輸出: 特征重要性排序集合FSort
(1)將數(shù)據(jù)集D隨機(jī)劃分成不重疊的5份, 選其中4份作為訓(xùn)練集Tri, 剩下一份為測試集Ti,i=1,2,3,4,5
(2)初始化參數(shù)隨機(jī)森林算法參數(shù)
初始化每個特征重要性得分FScorek=0,k=1,2,…,N,N為特征數(shù)量。
初始化每個特征重要性得分總分TotalScorek=0,k=1,2,…,N,N為特征數(shù)量。
(3)循環(huán)開始:i=1∶5
用Tri構(gòu)建隨機(jī)森林分類器, 計(jì)算出所有特征的重要性得分FScorek=0,k=1,2,…,N
令TotalScorek=TotalScorek+FScorek
循環(huán)結(jié)束
(4)根據(jù)每個特征的TotalScorek得分, 將所有特征根據(jù)其TotalScorek由大到小排序
(5)在數(shù)據(jù)集D中刪掉FSort中排在最后一位的特征
(6)若FSort中特征數(shù)量大于1, 則返回(2), 否則繼續(xù)
(7)結(jié)束

圖2 RFCVFS算法流程
仿真環(huán)境包括的硬件Intel Core i7-4790 CPU@3.60 GHz,內(nèi)存8 GB,軟件有Windows 10×64操作系統(tǒng),Python 3.8.4,Anaconda3,Jupyter Notebook。
本文采用UCI公開僵尸網(wǎng)絡(luò)數(shù)據(jù)集,該數(shù)據(jù)集包含9臺物聯(lián)網(wǎng)設(shè)備產(chǎn)生的真實(shí)流量,這9臺設(shè)備包含兩個不同型號的門鈴(Ⅰ,Ⅲ),一個恒溫器(Ⅱ),一個嬰兒監(jiān)視器(Ⅳ),4臺不同型號的監(jiān)控?cái)z像頭(Ⅴ,Ⅶ,Ⅷ,Ⅸ),一個網(wǎng)絡(luò)攝像頭(Ⅵ)。在包含這9臺設(shè)備組成的物聯(lián)網(wǎng)中,用物聯(lián)網(wǎng)中常見的僵尸網(wǎng)絡(luò)病毒Mirai和BASHLITE去感染物聯(lián)網(wǎng)設(shè)備,并發(fā)動如下8種類型攻擊:
(1)基于Mirai病毒的攻擊:掃描攻擊Scan、Ack泛洪攻擊、Syn泛洪攻擊、UDP泛洪攻擊、高速率UDP泛洪攻擊UDPplain。
(2)基于BASHLITE病毒的攻擊:掃描攻擊Scan、垃圾郵件攻擊Junk、TCP泛洪攻擊、UDP泛洪攻擊、指定IP和端口的垃圾郵件攻擊COMBO。
如表3所示,該數(shù)據(jù)集包含9個子數(shù)據(jù)集,每個子數(shù)據(jù)集對應(yīng)一種物聯(lián)網(wǎng)設(shè)備,利用這9種設(shè)備發(fā)起了8種物聯(lián)網(wǎng)環(huán)境中常見的拒絕服務(wù)攻擊。這9個子數(shù)據(jù)集共包含7 062 607條數(shù)據(jù),其中正常樣本555 932條,惡意樣本6 506 675條。

表3 數(shù)據(jù)集描述
基于分類的檢測模型,可以根據(jù)混淆矩陣中數(shù)據(jù)分布的情況對模型進(jìn)行評估,該矩陣表示見表4。本文主要用到的評估標(biāo)準(zhǔn)有準(zhǔn)確率、真正率、F1和AUC,具體的定義如下:






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

表4 混淆矩陣
隨機(jī)森林算法包含256棵基決策樹,基決策樹節(jié)點(diǎn)的劃分度量標(biāo)準(zhǔn)為基尼不純度(Gini impurity),尋找最佳分割時需要考慮的特征數(shù)量為總特征數(shù)量的平方根值,分割內(nèi)部節(jié)點(diǎn)所需要的最少樣本數(shù)量為2,構(gòu)建決策樹的深度沒有限制,采取五折交叉驗(yàn)證,模型隨機(jī)種子設(shè)置為0。
(1)特征數(shù)量對檢測效果的影響
通過對特征提取階段收集到的特征進(jìn)行選擇,根據(jù)RFCVFS算法計(jì)算出的特征重要性得分,每次刪去一個最不重要的特征,然后重新計(jì)算剩余特征重要性得分,重復(fù)這個過程。圖3顯示刪去0到89個特征的過程,隨著冗余特征數(shù)量的減少,這9臺設(shè)備檢測結(jié)果的F1幾乎保持不變,且有上升的趨勢;圖4顯示刪去90到111個特征的過程,從圖中可以看出,檢測數(shù)據(jù)在刪去90到108個特征的過程中,F(xiàn)1得分幾乎不變,大約在刪去108到110個特征后,多數(shù)設(shè)備的F1開始出現(xiàn)明顯下降趨勢,說明刪去的特征不是冗余的,應(yīng)該保留。綜上,本文的RFCVFS算法能夠篩選出數(shù)據(jù)中包含的冗余特征,可以用于給設(shè)備篩選出最佳特征子集。

圖3 刪去0-89個特征

圖4 刪去90-111個特征
(2)特征數(shù)量對檢測效率的影響
如表5所示,在保證F1≥99.99%時,9臺設(shè)備選取最少的特征數(shù)量以及對應(yīng)的特征序號,并將其命名為最佳特征集。對于這9臺設(shè)備來說,只要分別選取3,5,5,5,6,5,5,2,8個特征進(jìn)行檢測,就能達(dá)到很好的效果。如圖5、圖6所示,對比了保留所有特征和采用RFCVFS篩選出的特征,這9臺設(shè)備檢測模型的訓(xùn)練時間最大降低82.67%,平均降低74.64%;流量檢測所需的時間最大降低28.49%,平均降低17.63%。
(3)RFCVFS和PCA算法對比
如圖7到圖10所示,從準(zhǔn)確率Accuracy、真正率TPR、F1和AUC這4種評價標(biāo)準(zhǔn)分別對比了RFCVFS和

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

圖5 特征選擇前后的訓(xùn)練時間對比

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

圖7 準(zhǔn)確率的對比

圖8 真正率的對比

圖9 F1的對比

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

圖11 模型訓(xùn)練時間的對比

圖12 模型的檢測時間的對比
特征選擇和PCA都能降低數(shù)據(jù)維度,但是特征選擇具有更加明確的實(shí)際意義:①特征選擇可以根據(jù)檢測目標(biāo),給出每個特征對于檢測結(jié)果的影響程度,有助于在檢測某種類型攻擊時進(jìn)行特征的設(shè)計(jì);②特征選擇可以降低設(shè)備在流量特征提取階段的負(fù)擔(dān)。在特征提取階段只需要提取有效特征即可組成待檢測數(shù)據(jù)。
針對物聯(lián)網(wǎng)環(huán)境中的僵尸網(wǎng)絡(luò)攻擊問題,本文從檢測算法和數(shù)據(jù)兩方面出考慮,提出一種基于特征選擇的設(shè)備流量異常檢測方法。首先,該方法可以給異構(gòu)的物聯(lián)網(wǎng)設(shè)備動態(tài)搜索出適合該設(shè)備型號的最佳特征子集,相比沒有進(jìn)行流量的特征選擇,采用該方法可以有效降低模型的訓(xùn)練時間和檢測時間。其次,在流量特征提取階段,只需要根據(jù)設(shè)備型號提取出該設(shè)備的最佳特征,這對于性能受限的物聯(lián)網(wǎng)邊緣設(shè)備而言,可以有效降低特征提取階段的工作負(fù)擔(dān)。最后,對比經(jīng)典降維方法PCA,采用特征選擇方法得到的流量特征具有更高的準(zhǔn)確性,模型訓(xùn)練時間和檢測時間也更短。
下一步工作考慮將流量特征選擇和半監(jiān)督學(xué)習(xí)算法結(jié)合起來,降低人工標(biāo)記數(shù)據(jù)的難度,提高檢測模型應(yīng)對未知類型攻擊的能力。