利用AI檢測IoT惡意流量

#前言

目前大量物聯網設備及雲服務端直接暴露於互聯網,這些設備和雲服務端存在的漏洞(如:心臟滴血、破殼等漏洞)一旦被利用,可導致設備被控、用戶隱私泄露、雲服務端數據被竊取等安全風險,甚至會對基礎通信網絡造成嚴重影響。爲了促進物聯網領域的安全研究,研究人員製作了UNSW-NB15數據集,這是一個基於物聯網的網絡流量數據集,對正常活動和惡意攻擊行爲進行了不同的分類。本文將基於該數據集,應用AI領域的典型技術,包括決策樹、隨機森林、邏輯迴歸、多層感知器等進行檢測,希望師傅們可以從中瞭解AI技術應用於安全領域的典型流程,包括數據預處理、數據轉換、交叉驗證等,同時提升對物聯網安全的新的認識。

 

#數據集

本次用到的數據集是UNSW-NB15,這是一個基於物聯網的網絡流量數據集,由新南威爾士大學堪培拉網絡靶場實驗室的 IXIA PerfectStorm工具創建,用於生成真實現代正常活動和合成當代攻擊行爲的混合數據集。 它們使用tcpdump 工具捕獲 100 GB 的原始流量(例如 Pcap 文件)。

 image.png

該數據集有九種類型的攻擊,即 Fuzzers、Analysis、Backdoors、DoS、Exploits、Generic、Reconnaissance、Shellcode 和 Worms,當然爲了方便大家使用,已經做了整理,把特徵、標籤都統計到了csv文件裏。

如果希望詳細瞭解該數據集的信息的話,可以參考[2][3][4]論文

該數據集中的一部分被做爲訓練集和測試集,即 UNSW_NB15_training-set.csv 和 UNSW_NB15_testing-set.csv。訓練集中的記錄數爲 175,341 條記錄,測試集中的記錄數爲 82,332 條記錄,分別來自不同攻擊類型、惡意和正常數據。

 

#數據預處理

導入所需庫文件

 image.png

數據集中的數據包括9種攻擊類型,分別是Fuzzers, Analysis, Backdoors, DoS, Exploits, Generic, Reconnaissance, Shellcode和Worms。在csv文件最後的一列是標籤,0代表鄭,1代表攻擊

加載訓練數據UNSW_NB15_training.csv,檢查前5行

 image.png

可以看到前5行的記錄都是正常的

 image.png

加載數據後我們首先檢測是否存在缺失值

 image.png

面對存在缺失值的情況,最簡單的方法就是直接啓用包含缺失值的整行和整列

 image.png

然後看看數據是否平衡,一方面是看9種攻擊類型是否平滑(y1指代這方面的標籤),一方面是看正常和惡意的數據量是否平衡(y2指代這方面的標籤)

 image.png

結果如下

 image.png

可以看到數據集並不平滑,不過並不嚴重,我們繼續往下分析

 

本來是需要手動拆分訓練集和測試集的,不過UNSW_NB15已經拆分好了,比率爲7:3

訓練集和測試集分別在UNSW_NB15_training-set.csv 和 UNSW_NB15_testing-set.csv

如果需要手動拆分的話,使用下面的代碼就可以了

 image.png

我們加載測試集供後續使用

 image.png

 

#數據轉換

接下來需要轉換數據

首先需要確定哪些列是分類數據(categorical),哪些列是數值數據(numerical)(分類數據也叫qualitative data或是Yes/No data,是定性的,而數值數據是定量的)

 image.png

分別將其打印

 image.png

 

對於分類數據應用OneHotEncoder,將其編碼爲獨熱數值數組

對於數值數據應用StandardScaler,通過去除均值和縮放到單位方差來標準化

構造ColumnTransformer對象,在X_train上進行fit即可

 image.png

每個transformer分別轉換x,將結果拼接起來

 image.png

對測試集也進行同樣的處理

 image.png

轉換後的數據不再是dataframe結構,而是類似於數組的結構

 image.png

我們同樣還需要轉換y1,y1中一共有9類

 image.png

我們直接用LabelEncoder就可以了,其用於規範化標籤,使處理對象僅包含0和類別數-1 之間的值

 image.png

截止目前,數據部分已經處理完成了,接下來就是訓練模型了

 

#交叉驗證

我們訓練模型後,會使用5折交叉驗證(cross validation,CV)進行驗證,評估模型的指標包括準確率、準確率、召回率、F1 分數、ROC 的 AUC 值;然後使用測試集評估模型看看效果如何

我們以邏輯迴歸分類器爲例

 image.png

查看交叉驗證結果

 image.png

因爲是5折交叉驗證,所以每個指標都有5組數據,基本上我們會使用平均值來衡量校驗驗證的評估結果

比如打印出平均的準確率

 image.png

#模型測試

在測試集上進行測試

 image.png

結果如下

image.png 

precision是精確率,也稱作查全率,等於tp/(tp+fp);這是針對我們預測結果而言的,它表示的是預測爲正的樣本中有多少是真正的正樣本

recall是查準率,也稱召回率,等於tp/(tp+fn);這是針對我們原來的樣本而言的,它表示的是樣本中的正例有多少被預測正確了

從計算公式可以看出,其實就是分母不同,一個分母是預測爲正的樣本數,另一個是原來樣本中所有的正樣本數

如果看單個指標都過於片面,可以通過f1分數來評估模型性能,f1是recall和precision的加權平均,在上面可以看到在0.64左右

 

#其他機器學習方法

在sklearn已經實現了很多機器學習模型,我們只需要一條代碼就可以換模型,除了邏輯迴歸之外,還可以試試決策樹和隨機森林

 image.png

打印出模型的超參數

 image.png

然後重複之前的步驟,來看看結果如何

 image.png

可以看到,隨機森林的效果是相對而言比較好的

 

#多層感知器

以上三個分類器都屬於傳統的機器學習方法,那麼接着我們試試MLP,這是一種前向結構的神經網絡。

 image.png

結果如下

 image.png

把這四種分類器放在一起看看哪種效果更好

 image.png

可以看到隨機森林的效果還是最好的。這也給我們一個提示,雖然現在深度學習、神經網絡

是AI的最火熱的技術,但是這並不意味着在所有任務上都是萬能的,它們更大的優勢是在處理海量數據、複雜任務上,對於一些基礎的任務,可能傳統的機器學習方法會有更好的效果。

 相關實驗:機器學習之RF

#參考

1.https://www.unsw.adfa.edu.au/unsw-canberra-cyber/cybersecurity/ADFA-NB15-Datasets/

2.UNSW-NB15: a comprehensive data set for network intrusion detection systems (UNSW-NB15 network data set).

3.The evaluation of Network Anomaly Detection Systems: Statistical analysis of the UNSW-NB15 dataset and the comparison with the KDD99 dataset

4.Novel geometric area analysis technique for anomaly detection using trapezoidal area estimation on large-scale networks

5.http://www.caict.ac.cn/kxyj/qwfb/bps/201809/P020180919390470911802.pdf

6.《機器學習》

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章