李鉑初,閻紅燦,2
(1. 華北理工大學(xué) 理學(xué)院,河北 唐山 063210;2. 河北省數(shù)據(jù)科學(xué)與應(yīng)用重點(diǎn)實(shí)驗(yàn)室,河北 唐山 063210)
隨著互聯(lián)網(wǎng)上的信息數(shù)據(jù)日益增加,病毒、滲透、網(wǎng)絡(luò)入侵等網(wǎng)絡(luò)安全問題也愈發(fā)頻繁。入侵檢測作為保證網(wǎng)絡(luò)安全的重要手段,可以檢測出用戶的異常行為,攔截惡意用戶的攻擊或入侵行為并檢測網(wǎng)絡(luò)中的惡意流量,是網(wǎng)絡(luò)信息安全的重要技術(shù)之一。而在目前網(wǎng)絡(luò)攻擊類型日趨多樣、攻擊方式逐漸多元化的趨勢下,使用人工智能技術(shù)進(jìn)行異常行為檢測逐漸成為主流。
針對異常行為檢測模型許多專家和學(xué)者進(jìn)行了諸多研究,而在算法改進(jìn)方面,機(jī)器學(xué)習(xí)算法被廣泛應(yīng)用:周杰英等[1]使用梯度提升決策樹進(jìn)行特征選擇,使用隨機(jī)森林模型進(jìn)行特征變換。文獻(xiàn)[2]通過高斯混合模型將數(shù)據(jù)聚類,為每個簇訓(xùn)練不同的隨機(jī)森林分類器。文獻(xiàn)[3]使用CART(Classification And Regression Trees)決策樹進(jìn)行特征選擇,并使用帶有網(wǎng)格追蹤法確定的超參數(shù)CART決策樹進(jìn)行訓(xùn)練。文獻(xiàn)[4]使用極限隨機(jī)樹進(jìn)行遞歸特征消除,并使用LightGBM(Light Gradient Boosting Machine)模型進(jìn)行分類訓(xùn)練。
深度學(xué)習(xí)方法在入侵檢測中也被廣泛研究文獻(xiàn)[5-6]結(jié)合卷積神經(jīng)網(wǎng)絡(luò)與長短期記憶網(wǎng)絡(luò)構(gòu)建入侵檢測模型。文獻(xiàn)[7]將注意力機(jī)制與LSTM網(wǎng)絡(luò)結(jié)合。文獻(xiàn)[8]融合卷積神經(jīng)網(wǎng)絡(luò)、Bi-GRU和注意力層,并進(jìn)行數(shù)據(jù)擴(kuò)增測試。文獻(xiàn)[9-10]將生成對抗網(wǎng)絡(luò)GAN(Generative Adversarial Network)[11]思想應(yīng)用于異常行為檢測模型,有效提高了檢測精度。
除算法外,對于高維度數(shù)據(jù)的特征選擇也是學(xué)者的研究方向之一。如文獻(xiàn)[12]使用Kmeans聚類算法生成具有典型數(shù)據(jù)特征的數(shù)據(jù)集。文獻(xiàn)[13]通過ReliefF、XGBoost和Pearson相關(guān)系數(shù)計(jì)算特征權(quán)重,以此刪除權(quán)重較低的特征。文獻(xiàn)[14]運(yùn)用基于特征值分布的評分系統(tǒng)DSM(distribution-based scoring mechanism)進(jìn)行特征提取。
不平衡數(shù)據(jù)集的訓(xùn)練問題也有學(xué)者進(jìn)行了探究,Zhang等人[15]使用SMOTE算法(Synthetic Minority Over-sampling TEchnique)對少數(shù)類過采樣,并使用高斯混合模型聚類對多數(shù)類數(shù)據(jù)進(jìn)行欠采樣得到平衡的數(shù)據(jù)集。文獻(xiàn)[16]將多分類檢測問題轉(zhuǎn)化為多個二分類問題,在每個二分類問題中選擇RBBoost[17],RUSBoost[18],SMOTEBoost[19]等不同的采樣方法。
針對UNSW-NB15數(shù)據(jù)集的特點(diǎn),對UNSW-NB15數(shù)據(jù)集進(jìn)行去除冗余數(shù)據(jù)、選擇維度、采樣等處理,提出了一種聯(lián)合深度學(xué)習(xí)與機(jī)器學(xué)習(xí)的算法,首先通過并行卷積神經(jīng)網(wǎng)絡(luò)串聯(lián)LSTM網(wǎng)絡(luò)訓(xùn)練出一個模型;之后將其結(jié)果與特征選擇后的特征拼接;對數(shù)據(jù)進(jìn)行采樣后放入XGBoost模型進(jìn)行訓(xùn)練;本模型運(yùn)用了boosting集成學(xué)習(xí)的思想,充分結(jié)合了深度學(xué)習(xí)與XGBoost算法的優(yōu)勢,在不同規(guī)模、類別數(shù)量的數(shù)據(jù)集上都有良好表現(xiàn)。
卷積神經(jīng)網(wǎng)絡(luò)包括卷積層、池化層、全連接層三個主要部分。卷積層通過卷積核實(shí)現(xiàn)從輸入數(shù)據(jù)中提取特征,卷積核的參數(shù)通過反向傳播進(jìn)行更新,在訓(xùn)練期間卷積核的權(quán)值保持不變。池化層用于降低特征圖的維度,減少計(jì)算量并增強(qiáng)對輸入圖像變化的魯棒性,減少過擬合。全連接層在神經(jīng)網(wǎng)絡(luò)分類模型中用于將輸入向量轉(zhuǎn)化為最終輸出完成分類。
(1)
XGBoost[20]模型是通過Boosting方式構(gòu)建的一種提升樹模型,是由多個弱分類器形成的一個強(qiáng)分類器,其利用上一顆樹預(yù)測的殘差值生成一顆新樹以此提升模型的總體性能。XGBoost算法是梯度提升決策樹(Gradient Boosting Decison Tree)即GBDT算法的改進(jìn)算法,與GBDT相比,XGBoost對損失函數(shù)進(jìn)行二階泰勒展開,并在使用CART作為基分類器時(shí)加入正則化項(xiàng)防止過擬合,同時(shí)XGBoost算法支持使用多種類型的基分類器。
XGBoost的目標(biāo)函數(shù)如公式(2)所示:
(2)
(3)
在對數(shù)據(jù)建立模型進(jìn)行分析前,首先需要對數(shù)據(jù)進(jìn)行特征工程使其標(biāo)準(zhǔn)化、易于建模。特征工程包括數(shù)據(jù)降維、數(shù)據(jù)采樣等方法。數(shù)據(jù)降維可以去除冗余變量,提高模型訓(xùn)練速度,主要分為特征選擇和特征提取兩類。特征選擇是提取原數(shù)據(jù)集的子特征,主要方法有遞歸特征消除、通過樹結(jié)構(gòu)選擇重要特征等。特征提取則是將原始數(shù)據(jù)集變換為一個維度更低的新特征子集,主要有PCA(Principal Component Analysis)、LDA(Linear Discriminant Analysis)等方法。采樣方法分為過采樣、欠采樣以及組合采樣三大類。過采樣是對少數(shù)類樣本進(jìn)行重復(fù)抽取或生成類似樣本,方法有簡單隨機(jī)過采樣、Synthetic Minority Oversampling Technique(SMOTE)、Adaptive Synthetic (ADASYN)[21]等等。欠采樣是將多數(shù)類樣本剔除,主要方法分為從多數(shù)類方法中選擇數(shù)據(jù)的簡單隨機(jī)欠采樣、NearMiss[22]、ClusterCentroids以及清洗數(shù)據(jù)的TomekLinks、EditedNearestNeighbours等等。組合采樣是將SMOTE與清洗數(shù)據(jù)的方法結(jié)合,去除SMOTE算法生成的與多數(shù)類樣本重疊的數(shù)據(jù);例如SMOTEENN與SMOTETomek[23]算法。
UNSW-NB15數(shù)據(jù)集[24]是一個入侵檢測領(lǐng)域的數(shù)據(jù)集,該數(shù)據(jù)集分為訓(xùn)練集與測試集,其中訓(xùn)練集包含175 341條數(shù)據(jù),測試集包含82 332條數(shù)據(jù)。UNSW-NB15數(shù)據(jù)集中共有45個特征,包含'Generic'、'Exploits'、'Fuzzers'、'DoS'、'Reconnaissance'、'Analysis'、'Backdoor'、'Shellcode'、'Worms'9個攻擊類別以及正常樣本'Normal'類,可以進(jìn)行"正常"與"攻擊"的二分類任務(wù)和十分類任務(wù)。
原UNSW-NB15訓(xùn)練集與測試集處理流程如圖1所示。由于原數(shù)據(jù)集中存在數(shù)據(jù)分布不均衡[25]的情況,首先將其訓(xùn)練集與測試集合并,預(yù)處理后按照類別數(shù)量的比例重新劃分,使得訓(xùn)練集與測試集中各類樣本比例相同。
圖1 數(shù)據(jù)處理流程
(1)獨(dú)熱編碼
在UNSW-NB15數(shù)據(jù)集中存在proto,service,state3個字符型屬性,需要先將其轉(zhuǎn)為數(shù)字型數(shù)據(jù)才能參與計(jì)算,因此將這3列轉(zhuǎn)換為One-Hot(獨(dú)熱)編碼形式,轉(zhuǎn)變后的數(shù)據(jù)共有196維(刪除id、二分類標(biāo)簽與多分類標(biāo)簽三維)。
(2)數(shù)據(jù)標(biāo)準(zhǔn)化
由于UNSW-NB15數(shù)據(jù)集中各個特征的數(shù)值方差較大,為避免模型受到不同規(guī)模特征的影響、提高模型收斂速度,將所有數(shù)據(jù)進(jìn)行標(biāo)準(zhǔn)化使其映射到[0,1]之間。本文選用最大-最小標(biāo)準(zhǔn)化法,計(jì)算公式如下:
(4)
其中X是樣本的值,Xmax和Xmin是該特征在所有樣本上的最大值和最小值,X'則是歸一化后樣本的值。
(3)去除冗余數(shù)據(jù)
在UNSW-NB15數(shù)據(jù)集中存在部分重復(fù)數(shù)據(jù),且存在特征相同、類別標(biāo)簽不同的數(shù)據(jù);為提升模型訓(xùn)練效果、去除共計(jì)40 400個特征相同而所屬類別不同的噪聲數(shù)據(jù)。表1中展示了去除噪聲數(shù)據(jù)后的數(shù)據(jù)集。
表1 去除冗余數(shù)據(jù)后的數(shù)據(jù)分布
(4) 數(shù)據(jù)降維
數(shù)據(jù)集在進(jìn)行獨(dú)熱編碼后維數(shù)較高,因此采用數(shù)據(jù)降維。選擇隨機(jī)森林、遞歸特征消除等特征選擇方法進(jìn)行數(shù)據(jù)降維。為保證數(shù)據(jù)降維不提前學(xué)習(xí)到測試集數(shù)據(jù)特征,本文進(jìn)行數(shù)據(jù)降維時(shí)只使用訓(xùn)練集數(shù)據(jù)。
(5) 采樣方法
在UNSW-NB15數(shù)據(jù)集中,同時(shí)存在超過萬條的類別以及不足一千條的類別,本文對上(過)采樣[26]、下(欠)采樣[27]與混合采樣幾種方法進(jìn)行對比。
本文構(gòu)建的入侵檢測模型分為2個部分,如圖2所示,分別是基于深度學(xué)習(xí)的并行卷積神經(jīng)網(wǎng)絡(luò)連接LSTM模型與XGBoost模型。模型訓(xùn)練流程分為3個步驟:首先通過訓(xùn)練集訓(xùn)練神經(jīng)網(wǎng)絡(luò)模型,將訓(xùn)練完成的模型在測試集上進(jìn)行預(yù)測,得到模型對各個分類的概率(類別數(shù)*數(shù)據(jù)個數(shù))。之后構(gòu)建XGBoost模型輸入數(shù)據(jù):采用K折交叉驗(yàn)證,將訓(xùn)練集分為K份,由每K-1份訓(xùn)練生成一個神經(jīng)網(wǎng)絡(luò)模型,得到最后一份數(shù)據(jù)對各個分類的預(yù)測概率;將K個模型預(yù)測得到的結(jié)果拼接成訓(xùn)練集結(jié)果;之后將原數(shù)據(jù)與訓(xùn)練集和測試集的預(yù)測概率拼接成XGBoost模型的訓(xùn)練集與測試集。最后將拼接成的訓(xùn)練集放入XGBoost模型中進(jìn)行訓(xùn)練,通過測試集得到預(yù)測結(jié)果。
圖2 CNN-LSTM+XGBoost模型
2.2.1 并行CNN+LSTM模型
檢測模型的第一部分使用并行卷積神經(jīng)網(wǎng)絡(luò)連接長短期記憶網(wǎng)絡(luò)LSTM,模型結(jié)構(gòu)與參數(shù)如圖3所示。具體過程為:首先對數(shù)據(jù)進(jìn)行轉(zhuǎn)化,變?yōu)榭晒┚矸e神經(jīng)網(wǎng)絡(luò)輸入的三維數(shù)據(jù)流;輸入層獲取數(shù)據(jù)流后,通過并行卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行特征提取,提取到數(shù)據(jù)不同深度的深層特征;再將不同深度的深層特征拼接傳入2層Bi-LSTM網(wǎng)絡(luò)獲取輸入的全局特征,最后由全連接層進(jìn)行分類預(yù)測。
圖3 CNN+LSTM神經(jīng)網(wǎng)絡(luò)模型結(jié)構(gòu)
Stacking集成方法第一層的作用是生成元特征作為第二層的輸入,使用第一層可以減少過擬合、提高分類精確度。第一層可以采用一個或多個相同或不同的基分類器,該研究第一層采用的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)具有較好的分類能力,對不同維度的特征進(jìn)行訓(xùn)練都有較好效果。
2.2.2 XGBoost模型
檢測模型的第二部分是XGBoost算法,經(jīng)過CNN+LSTM神經(jīng)網(wǎng)絡(luò)模型獲得預(yù)測概率后,將訓(xùn)練集與測試集分別與得到的預(yù)測概率特征進(jìn)行拼接,將得到的訓(xùn)練集放入XGBoost模型進(jìn)行訓(xùn)練。數(shù)據(jù)集特征較多的情況下可以進(jìn)行特征選擇來減少特征維度。流程圖如圖4所示。
圖4 XGBoost模型訓(xùn)練流程
XGBoost算法的參數(shù)如表2所示。
表2 XGBoost算法參數(shù)值
本文實(shí)驗(yàn)設(shè)備為Intel Core i7-10875H CPU,16GB內(nèi)存以及NVIDIA的 GeForce RTX2060顯卡。實(shí)驗(yàn)環(huán)境采用python3.8編程語言,采用Tensorflow2.4.1、scikit-learn 0.24.1構(gòu)建模型。
實(shí)驗(yàn)采用準(zhǔn)確率(accuracy)指標(biāo)評估模型整體效果,其公式如下:
(5)
由于數(shù)據(jù)中各類樣本數(shù)量不均衡,因此全局準(zhǔn)確率主要受數(shù)量多的數(shù)據(jù)影響,準(zhǔn)確率的高低無法有效反應(yīng)模型對于少數(shù)類樣本的分類效果,召回率(recall)、精準(zhǔn)率(precision)、F1-score(f1-score)指標(biāo)可以有效評價(jià)模型對于不同類別數(shù)據(jù)的分類效果。對于每一類樣本的recall、precision、f1-score值,其公式如下:
(6)
(7)
(8)
在多分類任務(wù)中,TP(true positives)是將本類樣本成功預(yù)測為本類的數(shù)量,TN(true negatives)是將其它類樣本預(yù)測為其他類的數(shù)量,FN(false negatives)是將本類樣本預(yù)測為其它類的數(shù)量,FP(false positives)是將其他類樣本預(yù)測為本類的數(shù)量。
(1) 準(zhǔn)確率對比:
將本文提出的CNN+LSTM-In-XGBoost模型與Adaboost算法、KNN(K-Nearest Neighbor)算法、GBDT(Gradient Boosting Decision Tree)算法、隨機(jī)森林算法等常用機(jī)器學(xué)習(xí)、神經(jīng)網(wǎng)絡(luò)基準(zhǔn)模型進(jìn)行對比分析,如圖5所示,該模型總準(zhǔn)確率為91.31,高于其他常用算法。
圖5 本文算法與其他算法結(jié)果對比
(2)算法對比
將本文算法與XGBoost算法進(jìn)行對比,比較其在每一類上的f1值,同時(shí)將其他算法中對每一類預(yù)測的最高值加入比較。圖6所示為不同算法對于每一類預(yù)測的f1值,該模型對8個少數(shù)類的預(yù)測準(zhǔn)確率最高。證明了本文算法有效改善了原有模型對于少數(shù)類別的預(yù)測成功率較低問題。
圖6 不同算法對在不同類別上的f1-score值
(3)算法加入預(yù)測概率特征與原本對比
圖7所示為不同算法對加入十維訓(xùn)練準(zhǔn)確率特征并進(jìn)行特征選擇后訓(xùn)練的模型與原本模型的結(jié)果對比。加入預(yù)測特征后的模型準(zhǔn)確率平均提升1%,少數(shù)類樣本預(yù)測準(zhǔn)確率提升較大,證明了準(zhǔn)確率特征對少數(shù)類樣本的預(yù)測起到了作用。
圖7 不同算法加入訓(xùn)練準(zhǔn)確率特征后的對比
圖8對比了幾種過采樣、欠采樣以及組合采樣方法預(yù)測準(zhǔn)確率與十類平均f1值。
圖8 不同采樣方法對比
由圖8可知,對于本數(shù)據(jù)集,過采樣效果普遍高于欠采樣,猜測為清洗后的數(shù)據(jù)集中冗余數(shù)據(jù)較少。與此同時(shí),不采樣與簡單隨機(jī)采樣也有較好的效果。表3所示為不同采樣方法下的平均準(zhǔn)確率與召回率值以及五類少數(shù)類樣本(DoS、Analysis、Backdoor、Shellcode、Worms)的平均預(yù)測準(zhǔn)確率。
表3 不同采樣方法的平均precision與recall值
對比幾種采樣方法在各類樣本上的幾項(xiàng)指標(biāo)可得:選用的12種方法采樣中有6種precision值超過0.75,平均recall值在0.7以上,其中過采樣方法的平均precision普遍高于其它方法,同時(shí)過采樣方法的平均precision和recall值較為平均,整體預(yù)測效果較好。 InstanceHardnessThreshold采樣方法對于所有類樣本的平均recall值達(dá)到0.88,該采樣方法會訓(xùn)練一個分類器,將分類器中預(yù)測概率較低的樣本移除,因此,對少數(shù)類預(yù)測準(zhǔn)確率達(dá)到76.36%,可以成功預(yù)測出少數(shù)類樣本,但該方法也會導(dǎo)致整體準(zhǔn)確率降低。
總體而言,過采樣能保證整體預(yù)測效果提升,欠采樣能有效提高少數(shù)類預(yù)測效果,因此本文選擇先將Analysis、Backdoor、Shellcode、Worms幾個少數(shù)類進(jìn)行SMOTE過采樣,再對Normal、Generic等多數(shù)類進(jìn)行簡單隨機(jī)欠采樣。
經(jīng)過數(shù)據(jù)預(yù)處理后的原始數(shù)據(jù)共有196維,神經(jīng)網(wǎng)絡(luò)模型預(yù)測得到的特征為10維;為提升模型的訓(xùn)練與預(yù)測速度,本文采用隨機(jī)森林算法對原始數(shù)據(jù)進(jìn)行特征選擇,與神經(jīng)網(wǎng)絡(luò)模型預(yù)測得到的10維特征拼接后分別構(gòu)建模型;由于XGBoost本身為具有判斷特征重要性能力的樹結(jié)構(gòu),同時(shí)采用XGBoost算法進(jìn)行特征排名,選出特征訓(xùn)練模型。
圖9所示為由隨機(jī)森林與XGBoost進(jìn)行特征重要性排名,選擇前20、35、50、65維特征同神經(jīng)網(wǎng)絡(luò)十維預(yù)測結(jié)果分別拼接后作為訓(xùn)練集的模型預(yù)測結(jié)果。對比可知,使用隨機(jī)森林選擇的特征訓(xùn)練出的模型準(zhǔn)確率均在91%以上,平均高于XGBoost選擇得到的特征0.5%,與使用全部特征相比平均準(zhǔn)確率只下降了0.2%,效果最好的50維特征僅下降0.04%。
圖9 不同維度數(shù)預(yù)測結(jié)果對比比
(1)提出了一種結(jié)合卷積神經(jīng)網(wǎng)絡(luò)、LSTM網(wǎng)絡(luò)與XGBoost算法的網(wǎng)絡(luò)異常行為檢測模型,該模型在UNSW-NB15數(shù)據(jù)集上多分類準(zhǔn)確率達(dá)到91.31%,在十個個類別上平均f1值為0.80,綜合效果高于非集成模型與未使用采樣方法的模型。同時(shí)證明了數(shù)據(jù)降維方法在高維度數(shù)據(jù)中的效果,采用數(shù)據(jù)降維后,模型在十個類別上平均f1值提升了0.025。
(2)針對多分類網(wǎng)絡(luò)異常行為檢測任務(wù),在觀察實(shí)驗(yàn)結(jié)果后,認(rèn)為下一步改進(jìn)計(jì)劃主要有兩點(diǎn):一是發(fā)現(xiàn)DoS類預(yù)測準(zhǔn)確率較低,DoS類樣本中近半數(shù)被預(yù)測為Exploits類,可以就對于DoS類的預(yù)測單獨(dú)構(gòu)建模型;二是發(fā)現(xiàn)部分?jǐn)?shù)據(jù)在多輪實(shí)驗(yàn)中均預(yù)測到其它類,猜測其標(biāo)簽可能標(biāo)注錯誤,證明數(shù)據(jù)仍有進(jìn)一步改進(jìn)的空間。同時(shí)如何建立一個實(shí)時(shí)檢測系統(tǒng),如何對大量數(shù)據(jù)進(jìn)行快速檢測,將預(yù)測模型落實(shí)到應(yīng)用層面也是未來的工作重點(diǎn)。