劉海燕,呂 涵,2
(1.陸軍裝甲兵學院, 北京 100072;2.中國人民解放軍94452部隊, 河南 平頂山 467331)
入侵檢測系統(tǒng)是保護網(wǎng)絡安全的重要手段,它可以在網(wǎng)絡受到攻擊時及時發(fā)現(xiàn)并作出響應。隨著網(wǎng)絡數(shù)據(jù)量不斷增多,基于機器學習算法的入侵檢測技術應運而生。機器學習與入侵檢測技術的結合能夠有效降低檢測的漏報率和誤報率,提高檢測的準確率等。深度學習技術是機器學習領域的一個重要分支,研究表明:它在計算機視覺、自然語言處理和惡意軟件檢測等多個領域取得了優(yōu)于傳統(tǒng)機器學習算法的性能[1]。目前,隨著攻擊手段日益智能化和復雜化,傳統(tǒng)的機器學習方法在入侵檢測中應用的有效性在下降,而基于深度學習的入侵檢測系統(tǒng)達到了很高的檢測精度并且已廣泛應用[2]。
但對抗樣本的出現(xiàn),使得神經網(wǎng)絡模型的安全問題受到威脅。對抗樣本[3]是指在原始樣本中加入細微擾動并使模型錯誤分類的一種合成樣本。對抗樣本會極大地干擾分類器,降低深度學習算法在對抗環(huán)境下的魯棒性[4]。關于對抗樣本的研究最初主要是在圖像分類領域[5],但隨著研究的深入和拓展,其他領域的對抗樣本研究逐漸受到關注,包括網(wǎng)絡安全領域。
Rigaki[6]研究了惡意軟件檢測中的對抗樣本,用FGSM和JSMA方法成功生成了能夠逃避入侵檢測系統(tǒng)的對抗性流量樣本。Wang[7]應用了更多對抗攻擊算法包括FGSM、JSMA、DeepFool和C&W針對NSL-KDD數(shù)據(jù)集生成對抗樣本。這些工作是基于掌握目標模型的內部信息而進行的白盒攻擊。然而在實際場景中,攻擊者很可能無法獲得模型的內部信息,只能通過對目標模型輸入樣本得到輸出。Yang等[8]進行了針對入侵檢測系統(tǒng)的黑盒攻擊的研究,使用生成對抗網(wǎng)絡針對NSL-KDD數(shù)據(jù)集生成了對抗樣本,但并未針對網(wǎng)絡流量的特殊性進行添加擾動的限制,更改了數(shù)據(jù)的功能特征導致攻擊效果失效。此外,這種靜態(tài)的對抗攻擊方法不能很好地學習到數(shù)據(jù)特征。
針對以上問題,本文提出了一種基于生成對抗網(wǎng)絡的對抗攻擊模型,一方面在生成對抗樣本時設計了針對入侵檢測數(shù)據(jù)集的特征約束機制,保留了網(wǎng)絡流量的真實有效性和不可察覺性;另一方面利用動態(tài)查詢黑盒模型的輸出,更好地學習和適應入侵檢測模型,生成了高質量的對抗樣本。該模型在訓練完成后,可以一步生成對抗樣本并實施攻擊,提高了對抗攻擊的效率。
NSL_KDD數(shù)據(jù)集是網(wǎng)絡流量入侵檢測領域的公開基準數(shù)據(jù)集,本文將該數(shù)據(jù)集作為實驗數(shù)據(jù)集。NSL_KDD數(shù)據(jù)集中的每個樣本由41個特征和1個類標識組成[9]。41個特征分為4種類型,包括網(wǎng)絡連接的基本特征、網(wǎng)絡連接的內容特征、基于時間的流量統(tǒng)計特征和基于主機的流量統(tǒng)計特征。類標識即為標簽用來表示該條網(wǎng)絡連接的類型,分為正常和攻擊,攻擊樣本共有四大類共39種攻擊類型,包括Probe、Dos、U2R和R2L攻擊。其中,訓練集包含22種攻擊類型,另外17種在測試集中,用來驗證分類器的泛化性能。
與圖像不同,網(wǎng)絡流量的每個特征具有其特定的含義,且取值各不相同,如若在對抗樣本生成時不對特征值進行約束,生成的對抗樣本則不能保證符合真實流量的特性,以至于在網(wǎng)絡入侵檢測系統(tǒng)的中間環(huán)節(jié)即被丟棄,或在通過檢測繼而攻擊網(wǎng)絡時喪失入侵功能。
為了使得生成的對抗樣本能夠更加真實有效,我們對NSL-KDD數(shù)據(jù)集進行了特征分析并提出了一種特征約束機制。其中,保證功能特征不變,是為了對抗樣本能保留真實流量入侵行為的特性,其他特征約束是為了更加接近真實網(wǎng)絡流量的特點,使其不被察覺而丟棄。
1) 保證功能特征不變:根據(jù)攻擊的原理和目的,不同攻擊類型的網(wǎng)絡流量都有其特定的功能特征,代表了該攻擊的基本功能[10]?;咎卣鲗τ谌魏尉W(wǎng)絡流量的有效性來說都是必需的,如若更改則網(wǎng)絡流量無效。Probe攻擊利用基于主機的流量特征和基于時間的流量特征來表現(xiàn);DOS攻擊體現(xiàn)在基于時間的流量特征部分;而U2R和R2L攻擊一般體現(xiàn)在內容特征部分[11]。在添加對抗擾動時,針對不同攻擊類型要保證其功能特征不被改動。
2) 保證特征類型一致:NSL-KDD數(shù)據(jù)集中,有3種不同的特征類型,包括字符型特征,離散型特征和連續(xù)型特征,攻擊者在生成對抗樣本的過程中,應該保持特征的數(shù)據(jù)類型不變。數(shù)據(jù)集中的字符向量包括protocol_type、service和flag不做改動。特征向量中的離散型數(shù)據(jù)為二值特征,經過生成器處理后,將修改后的二值特征的值轉換為以0.5為閾值的二值。我們將高于閾值的值轉換為1,低于閾值的值轉換為0。
3) 保證特征取值一致:數(shù)據(jù)預處理后,每個特征向量都歸一到(0,1)之間,為使生成的對抗樣本與原始樣本取值范圍相同,設定添加噪聲的取值是(0,1),生成后的特征向量將1以上的元素設為1,0以下的元素設為0。此外,num_outbound_cmds這一特征表示ftp會話中帶外命令的數(shù)量,原數(shù)據(jù)集中該特征值均為0。若修改該特征,則會被察覺到流量含有外部命令,因此在生成對抗樣本時,此項不做修改。
4) 保證特征間關系一致:wrong_fragment代表錯誤分段的數(shù)量,duration代表連接的長度。當數(shù)據(jù)包中存在錯誤分段,則該連接無法正常持續(xù),所以duration的值會為0。說明這2個特征間存在著x*y=0的條件約束。
生成對抗網(wǎng)絡(generative adversarial networks,GAN)是由Goodfellow[12]首次提出的深度學習模型,由生成模型G和判別模型D兩部分組成。生成模型學習真實數(shù)據(jù)分布生成偽數(shù)據(jù),判別模型區(qū)分真實數(shù)據(jù)和生成數(shù)據(jù)。生成對抗網(wǎng)絡的生成模型和判別模型不斷進行對抗訓練和優(yōu)化。在這種模式下,GAN能夠生成看似接近原始數(shù)據(jù)的偽數(shù)據(jù)。設x為真實數(shù)據(jù),G(z)為生成的偽數(shù)據(jù),D(x)表示x被分類為真實樣本的概率,p表示數(shù)據(jù)的概率分布。GAN的優(yōu)化問題可描述為G與D的極大極小博弈問題:
Ez-pz[log(1-D(G(z)))]
(1)
但是,GAN也存在一些問題,主要是訓練不穩(wěn)定,以及容易陷入坍塌模式導致生成樣本缺乏多樣性。針對這些問題,Arjovsky在GAN的基礎上提出了改進算法WassersteinGAN[13],它用Wasserstein距離來衡量2個概率分布之間的差異,可以提供有效的梯度信息,使訓練更加穩(wěn)定,生成樣本與原始樣本深度特征差異更小。下式為WGAN的目標函數(shù):
(2)
本文在WGAN的基礎上對模型進行改進,提出了一種對抗樣本生成模型,稱為AdvWGAN。該模型旨在生成逃避入侵檢測系統(tǒng)且真實有效的對抗性流量樣本,并對入侵檢測模型進行黑盒攻擊。
訓練階段:AdvWGAN動態(tài)地學習黑盒IDS的輸出結果,并根據(jù)損失函數(shù)更新生成器和判別器的參數(shù),最后訓練出能夠基于輸入數(shù)據(jù)生成逃避檢測的對抗樣本的生成模型。
測試階段:向生成模型中輸入測試集中的流量樣本,驗證生成的對抗樣本是否能夠逃避目標模型的檢測。
實際應用:在捕獲到網(wǎng)絡流量后,送入訓練后的生成模型,即可將其構建為帶有對抗性的網(wǎng)絡流量,并用其對入侵檢測系統(tǒng)實施攻擊。
圖1為構建的AdvWGAN對抗樣本生成模型的訓練框架,該框架主要由3個部分組成,包括生成器G、判別器D和目標IDS。
本文設計了3神經網(wǎng)絡模型作為目標IDS,針對NSL-KDD數(shù)據(jù)集進行二分類訓練,來模擬真實場景中的網(wǎng)絡入侵檢測系統(tǒng)。在不了解目標IDS模型的參數(shù)和結構等信息時,假設可以通過查詢來獲得黑盒IDS的分類結果。
在AdvWGAN模型中,生成器不再直接輸入噪聲生成虛假樣本,而是通過原始樣本與噪聲串聯(lián)輸入生成器,并使用特征約束機制控制特征的修改。生成器的目標是生成對抗性樣本,使得分類器將對抗性惡意樣本誤判為正常樣本,生成器的梯度由判別器來反向傳播。判別器不再是區(qū)分正常樣本和對抗樣本,而是通過動態(tài)地學習和模仿目標模型的預測輸出,使得生成的對抗樣本與預測的正常樣本更加相似。
訓練集被分為正常流量和惡意流量,生成器輸入惡意樣本和噪聲來生成對抗性樣本,再將正常樣本和生成的對抗樣本分別送入目標IDS和判別器D。判別器D將目標IDS實時預測的標簽作為目標進行訓練,并將分類結果反饋給生成器G。
AdvWGAN生成模型的訓練算法如下,學習率設置為0.000 1,共訓練20個輪次,每訓練1次生成器,訓練5次判別器。
參數(shù)α=0.0001,epochs=20,critic_iters=5
for epoch in range(epochs):
foriin range(每輪次迭代次數(shù)):
輸入Xattack和N到G,經過C,生成Xadv;
D對Xadv進行判別;
根據(jù)生成器的目標函數(shù)LG更新G的參數(shù);
foriin range (critic_iters):
將D的裁剪閾值設置為[-c,c];
輸入Xattack和N到G,經過C,生成Xadv;
IDS對(Xnormal,Xadv)進行分類,得到預測標簽;
D對IDS預測的標簽對應的數(shù)據(jù)集進行判別;
根據(jù)判別器的目標函數(shù)LD更新D的參數(shù)。
end for
end for
end for
生成器G將惡意流量和噪聲作為輸入,并進行特征約束限制,生成對抗性樣本Xadv。將正常樣本和生成的對抗樣本送入判別器D,根據(jù)判別器D的預測結果計算損失更新生成器G的參數(shù)。
判別器D設置權重裁剪閾值,目標IDS對輸入的正常樣本和對抗樣本進行分類,判別器D輸入目標IDS的數(shù)據(jù)進行判別,根據(jù)判別的結果計更新判別器D的參數(shù)。
G的目標是生成對抗性樣本,使得分類器將對抗性惡意樣本誤判為正常樣本。D的目的是通過動態(tài)地學習和模仿黑盒模型的預測輸出,使之無法區(qū)分正常樣本和生成樣本。以下分別為G和D的目標函數(shù):
LG=-Ex∈XadvD(x)
(3)
LD=Ex∈PattackD(x)-Ex∈PnormalD(x)
(4)
其中,LG為生成器的目標函數(shù),Xadv表示生成的對抗性樣本,最小化LG。LD為判別器的目標函數(shù),Pattack為目標IDS預測的攻擊樣本,Pnormal為目標IDS預測的正常樣本,最小化LD,使得判別器與目標模型結果相似。
本文實驗選用NSL-KDD數(shù)據(jù)集,KDDTrain+作為訓練集分為2部分,一半用來訓練分類模型,一半用來訓練對抗樣本生成模型,KDDTest+作為測試集用于驗證對抗攻擊效果。
數(shù)據(jù)集中有多種攻擊類型,為方便起見,將數(shù)據(jù)集的標簽二元化,本文實驗將所有異常樣本標簽設為1,正常樣本標簽設為0。對非數(shù)值型數(shù)據(jù)特征protocol_type、service和flag進行獨熱編碼,編碼處理后的數(shù)據(jù)集每條記錄變?yōu)?22維的特征向量。針對部分特征取值空間過大的問題,將各個特征取值范圍歸一化到[0,1]之間[14]。
本文使用深度神經網(wǎng)絡,卷積神經網(wǎng)絡和循環(huán)神經網(wǎng)絡[15]這3種經典的神經網(wǎng)絡結構搭建了3個神經網(wǎng)絡模型,分別是DNN模型、CNN模型和RNN模型。根據(jù)經驗分析,我們對各模型的網(wǎng)絡層數(shù)、神經單元數(shù)、激活函數(shù)、優(yōu)化算法、學習率和批尺寸等參數(shù)的選擇做了對比實驗,最終確定了3種檢測性能較好的神經網(wǎng)絡模型,它們在驗證集上分別得到了99.64%、99.49%和99.39%的檢測準確率。
3個模型訓練時批尺寸設置為128,共40個輪次。使用網(wǎng)絡輸出與標簽的交叉熵作為損失函數(shù),Adam作為優(yōu)化器,學習率設置為0.001。激活函數(shù)選擇ReLu函數(shù),輸出層激活函數(shù)使用Sigmoid函數(shù)。DNN模型隱藏層的結點數(shù)分別為:128、256、128、64;
CNN模型包含2個卷積層和2個最大池化層,卷積核分別為16@3*3和32@3*3;RNN模型使用一個LSTM層,以20條網(wǎng)絡流量記錄作為一個序列。
生成器G和判別器D分別采用4層和5層全連接神經網(wǎng)絡,隱藏層的激活函數(shù)選取ReLu,G的隱藏層結點數(shù)分別為128、64、128,D的隱藏層結點數(shù)分別為128、256、128、64。訓練過程中設置批尺寸為256,使用的優(yōu)化器為RMSprop。判別器的權重裁剪閾值設置為0.01。
在實驗指標上,我們選擇了攻擊成功率和約束滿足率。
攻擊成功率(attack success rate,ASR)是指生成的對抗樣本使分類器分類錯誤的比例。攻擊成功率越高,代表對抗樣本生成方法越好。
約束滿足率(constraint satisfaction rate,CSR)是指滿足特征約束機制的對抗樣本所占的比例,CSR越大,說明生成的對抗樣本與真實網(wǎng)絡流量越相似。
本節(jié)針對基于深度學習的入侵檢測系統(tǒng)進行對抗攻擊實驗,分別輸入測試集中各類型攻擊流量來生成對抗樣本并對黑盒IDS進行對抗攻擊。
表1顯示了不同對抗攻擊方法針對不同黑盒IDS的對抗成功率的對比,包括Yang提出的基于GAN的靜態(tài)算法和本文提出的AdvWGAN算法。實驗結果顯示,與靜態(tài)GAN攻擊算法相比,在AdvWGAN算法的作用下,針對各種攻擊類型流量樣本和不同神經網(wǎng)絡模型進行的對抗攻擊都達到了高攻擊成功率,表明AdvWGAN在逃避IDS模型檢測的對抗攻擊中具有良好的有效性和泛化性。
表1 攻擊成功率的對比Table 1 The comparison of attack success rate %
此外,還比較了生成的對抗性流量樣本的約束滿足率,實驗結果如表2所示:靜態(tài)GAN攻擊算法由于沒有對特征修改進行限制,其構建的對抗樣本只有很低的約束滿足率,而在特征約束的作用下,AdvWGAN模型生成的對抗樣本均達到了100%的約束滿足率,說明該模型生成的對抗樣本滿足了真實網(wǎng)絡流量的特性,與原始流量樣本相似度高。
表2 約束滿足率的對比Table 2 The comparison of constraint satisfaction rate %
AdvWGAN是基于生成對抗網(wǎng)絡的對抗攻擊方法,該方法在完成生成模型的訓練后,能夠在黑盒場景中,在保證網(wǎng)絡流量真實有效的前提下實現(xiàn)面向入侵檢測系統(tǒng)的逃避攻擊。實驗證明,通過該生成模型構建的對抗性流量樣本絕大多數(shù)都能逃避入侵檢測系統(tǒng)的檢測,并且滿足真實網(wǎng)絡流量的特性,與原始樣本更加相似。
在生成對抗網(wǎng)絡中,判別器和生成器均為神經網(wǎng)絡結構,容易學習到基于深度學習的入侵檢測系統(tǒng)輸出的數(shù)據(jù),從而對于此類IDS具有很好的攻擊效果,但若面對基于其他機器學習的入侵檢測系統(tǒng)時可能達不到理想的效果。而且,本文實驗使用的是已知的開源數(shù)據(jù)集,在面對現(xiàn)實中未知類型的網(wǎng)絡流量時如何在保證流量真實有效的前提下實現(xiàn)對抗攻擊還有待研究。