孟獻軻 張 碩 熊 詩 王 波
1(中國電子科技集團公司第二十八研究所 江蘇 南京 210000) 2(解放軍信息工程大學信息系統工程學院 河南 鄭州 450002)
近年來,世界見證了互聯技術在不同領域的重大發展,例如:物聯網、智能電網、車輛互聯網、移動互聯網。據思科發布的《視覺網絡指數》(VNI)報告預測,2022年的全球網絡流量將超過之前的所有年份,IP連接設備的數量將是全球人口的三倍,每年將產生4.8 ZB IP流量。如此規模的流量信息通過各種設備和通信協議在互聯網上交換,會引起嚴重的安全問題。網絡入侵檢測系統(Intrusion Detection System,IDS)是網絡的一線安全系統,用于監視網絡流量中的惡意活動,及時產生預警,從而采取相應安全措施。
按照檢測方法,IDS可以分為基于簽名的IDS(Signature-based IDS,SIDS)和基于異常的IDS(Anomaly-based IDS,AIDS)[1]。SIDS通過將被監控的行為與預先定義的入侵規則庫快速匹配來實現檢測,但在面對陌生攻擊時,檢測性能通常很差;AIDS為“正?!本W絡流量建立模型,檢測到偏差時發出異常報警,性能取決于對網絡流量正常行為建模的程度,該方法在檢測未知異常攻擊中具有巨大應用潛力。在眾多AIDS的研究中,基于機器學習(例如人工神經網絡[2]、樸素貝葉斯[3-4]、k近鄰[5]和支持向量機[6-9])的AIDS研究最為廣泛。例如Aburomman[7]和Natesan[10]通過構造多分類器對DoS、Probe、U2R和R2L等流量進行檢測。Rastegari等[11]使用遺傳算法(GA)改進了基于時間間隔的簡單規則,進而提高異常流量檢測性能。Kuang等[9]將基于內核主成分分析和遺傳算法的支持向量機來檢測網絡入侵。然而,基于機器學習的AIDS方法嚴重依賴于人工設計的流量特征,限制了這種方法的通用性和準確性。
近年來,深度學習在圖像識別、語音識別和自然語言處理等各大領域迅猛發展,不斷刷新各領域的最優紀錄。深度學習技術可以通過訓練數據自動提取和選擇特征,避免人工選擇特征的繁瑣工作,此特性使基于深度學習的方法成為流量建模領域的理想方法,引來了學術界的廣泛關注。
由于基于深度學習的異常流量檢測方法尚處于起步階段,研究主要集中于基于卷積神經網絡(Convolutional Neural Networks,CNN)[12-14]、循環神經網絡(Recurrent Neural Network,RNN)[15-17]、自動編碼器(Auto Encoder,AE)[18-20]、多種神經網絡模型混合[21-22]的檢測方法。基于CNN的AIDS方法通常將流量數據轉換為灰度圖,在灰度圖上采用卷積、池化等操作提取流量空間特征進行異常檢測?;赗NN的AIDS檢測方法將流量序列依次輸入長短期記憶網絡(Long-Short Term Memory,LSTM)、門控循環單元(Gated Recurrent Unit,GRU)等,通過計算各流量元素之間的時序特征識別異常?;贏E的AIDS方法利用將流量數據壓縮再恢復的訓練過程,提取流量最顯著的特征進行異常檢測。以上三種方法單純基于一種神經網絡模型對流量特征的維度提取不足,因此Wang等[21]和Kim等[22]均將CNN和LSTM進行組合,同時提取空間和時序特征,雖然二者屬于同一類模型框架,但Kim等[22]以單個數據包為處理單位,Wang等[21]則以網絡流為處理單位,使得CNN和LSTM的層次模型真正合理地利用了流量結構信息。
然而,LSTM在當前狀態的計算時需要依賴上一個狀態的輸出,不具備高效的并行計算能力;另一方面,整個LSTM模型(包括其他的RNN模型,如GRU)總體上類似于一個馬爾可夫決策過程,難以提取全局信息,并且RNN模型以最后一個時刻的隱狀態或者各時刻隱狀態的拼接作為提取的時序特征,無法著重突出流量中某些數據包之間的關聯關系。
Transformer[23]是機器翻譯領域的前沿模型,包括編碼器和解碼器兩大部分。Transformer編碼器無循環結構,廣泛應用了自注意力機制,可以并行處理序列中的所有元素,將序列某一位置的元素與全局元素結合起來,用于挖掘與當前預測元素關系緊密的全局上下文元素,Transformer編碼器具有更強的特征提取能力。
考慮到Transformer以上優點,本文提出一種基于時空注意力特征的異常流量檢測框架,該框架由卷積網絡層、位置編碼層、時序注意力編碼層、全連接層和Softmax層串聯而成。首先將網絡流的數據包均轉換為數據包灰度圖,利用卷積網絡層提取數據包灰度圖的空間特征;然后,利用Transformer編碼器對數據包空間特征的整體時序進行建模,通過多頭自注意力機制計算各數據包的長距離依賴關系,挖掘網絡流中的數據包之間顯著的關聯特征表示。最后,將該特征表示輸入到全連接神經網絡層和Softmax層,輸出識別概率。
注意力機制的本質是將一個查詢向量和一組鍵值向量對映射到輸出,查詢向量與鍵向量用于計算每個值向量對應的權重,值向量的加權和為注意力輸出。點積注意力[24]利用矩陣乘法運算,既高效又節省空間,計算流程如圖1所示。

圖1 放縮點積注意力計算流程

(1)
本文根據網絡流的結構特點,構建了基于時空注意力特征的異常流量檢測框架,其結構如圖2所示。該框架主要由卷積網絡層、位置編碼層、時序注意力編碼層、全連接層和Softmax層串聯而成,[CLS]是網絡流的標簽符,表示網絡流中是否有異常流量攻擊。

圖2 基于時空注意力特征的異常流量檢測框架
卷積網絡層由相同結構的卷積單元組成,訓練參數共享。卷積單元的具體結構如圖3所示。

圖3 卷積單元結構

(2)

(3)
式中:hl-1為第l-1層數據包特征圖的大小;zl表示第l層卷積核的大小;λl是卷積核移動步長;ρl表示前一層特征圖邊緣補零的列數。在子采樣層,采用重疊采樣方法對特征圖進行最大值采樣,既提高特征的準確性,又防止訓練過擬合。
Transformer編碼器沒有循環或者卷積結構,無法使用網絡流中數據包的位置信息,因此需要位置編碼層添加位置信息,即圖2中的Pos操作,其過程如圖4所示。

圖4 位置編碼層添加位置信息的過程
圖4中,Epkt表示卷積網絡層提取的數據包空間特征向量,Epos表示數據包相對位置向量。位置編碼層的Pos操作將二者求和,相對位置向量的計算如式(4)、式(5)所示。
E(p,2i)=sin(p/10 0002i/dmodel)
(4)
E(p,2i+1)=cos(p/10 0002i/dmodel)
(5)
式中:p代表位置;dmodel表示特征向量的維度;i代表dmodel中的某一維度。
時序注意力編碼層由三層的雙向Transformer編碼器構成,具體結構如圖5所示。

圖5 時序注意力編碼層
圖5中,每個Trm均代表一個Transformer編碼器;Ti表示Ei在經過時序注意力編碼層處理之后得到的特征向量。Transformer編碼器結構如圖6所示。

圖6 Transformer編碼器
Transformer編碼器由6個相同的編碼層堆疊而成,每個編碼層又包括多頭自注意力層和位置全連接層兩個子層,殘差連接和層歸一化用于優化網絡訓練深度。每個編碼層和所有子層的輸出維度均相同,記為dmodel。
(1) 多頭注意力機制。網絡流中數據包之間的時序特征關系多樣,因此需要多頭注意力使編碼器同時關注來自不同數據包的不同表示子空間的信息,其具體計算流程如圖7所示。

圖7 多頭注意力機制計算流程
首先將Q、K和V線性變換后進行h次放縮點積注意力計算,h為多頭注意力的頭數。然后將h次的注意力計算結果通過拼接和線性變換得到多頭注意力的結果,如式(6)和式(7)所示。
Multihead(Q,K,V)=Concat(head1,head2,…,
headh)WO
(6)
(7)
(2) 位置全連接前饋網絡。位置全連接前饋網絡(FFN)分兩層,用于處理每個位置的多頭注意力計算結果,其輸入和輸出的維度相同。第一層的激活函數是ReLU,第二層是線性激活函數,如果多頭注意力層輸出表示為M,則FFN可表示為式(8)。
FFN(x)=max(0,MW1+b1)W2+b2
(8)
式中:W1、b1和W2、b2分別是兩個激活函數的參數。Transformer編碼器利用多頭注意力層和位置全連接層不斷交疊得到最終的輸入序列表示。
對于訓練集C,給定一個輸入網絡流x1,x2,…,xN和對應標簽y,[CLS]在最后一個Transformer編碼器的隱藏層輸出記為T[C]∈Rdmodel,經過全連接層和Softmax層后對y進行預測,如式(9)所示。
P(y|x1,x2,…,xN)=softmax(CWf+b)
(9)
式中:Wf是全連接層的權重矩陣;b為偏置;P(y|x1,x2,…,xN)是Softmax層計算的概率結果,記為y′。則模型訓練的目標為最小化交叉熵損耗函數L(C),如式(10)所示。

(10)
UNSW-NB15數據集由澳大利亞網絡安全中心(ACCS)2015年利用IXIA PerfectStorm工具創建,包含真實正?;顒雍秃铣傻漠敶粜袨?原始流量數據為約100 GB的.pcap格式文件,共有記錄2 540 044條,包含九種類型的攻擊,即Fuzzers、Worms、Backdoors、Analysis、DoS、Generic、Exploits、Reconnaissance和Shellcode。由于網絡攻擊更新變化較快,該數據集較DARPA、KDDCUP 1999和NSL-KDD等傳統數據集更具研究價值,數據集的具體分布如表1所示。

表1 UNSW-NB15數據集類別分布
利用以上數據設置兩類實驗,(1) 將所有異常流量看作一類,對正常和異常流量進行二分類,記為A實驗;(2) 將所有異常流量分為九類,對正常異常流量進行十分類,記為B實驗。
首先進行數據切分,使用pkt2flow和Wireshark工具將原始pcap流量數據集以會話為單位切分為多個流,以下統稱為網絡流。每個網絡流中的數據包按照通信時間的先后排序,其組成結構如圖8所示。

圖8 網絡流組成結構
假設一個網絡流中有r個數據包,每個數據包取前p字節,獨熱編碼為q維,則該網絡流向量化為r個p×q的二維圖像。
然后進行流量清理,舍棄網絡流中只有頭信息而無載荷的數據包,將每個數據包的IP地址以及MAC地址進行匿名化處理,消除無用信息對特征學習的干擾。
最后進行歸一化處理,每個字節都由8 bit組成,轉化為十進制數的取值范圍為[0,255],除以255將每個十進制數歸一化到[0,1]的范圍內,從而提高模型收斂速度。
本文采用準確率(Accuracy,Acc)、精度(Precision,P)和誤報率(False Alarm Rate,FAR)三個常用評測指標驗證本文方法的可行性和有效性,準確率用于評價整體性能,精度用于評價對異常行為檢測性能,誤報率用于評價對正常行為的誤判情況。首先定義以下變量:
真負類(Ture Negative)表示將正常網絡流正確地識別成正常網絡流的數量,記為Tn。假負類(False Negative)表示將異常網絡流誤識別成正常網絡流的數量,記為Fn。真正類(Ture Positive)表示將異常網絡流正確地識別成異常網絡流的數量,記為Tp。假正類(False Positive)表示將正常網絡流誤識別成異常網絡流的數量,記為Fp。
(1) 準確率(Acc)計算表達式為:
(11)
(2) 精度(P)計算表達式為:
(12)
(3) 誤報率(FAR)計算表達式為:
(13)
本文選取文獻[12]和文獻[21]的方法作為對比方法,文獻[12]僅采用卷積神經網絡以數據包為單位提取空間特征進行檢測,測試結果記為CNN。文獻[21]采用CNN提取每個數據包的空間特征,LSTM模型提取數據包之間的時序特征進行檢測,測試結果記為CNN-LSTM。本文的卷積網絡層使用四個卷積層、四個池化層和一個全連接層,訓練參數參考文獻[21]的最優值,具體如表2所示。

表2 卷積網絡層各層訓練參數列表
時序注意力編碼層由三層的雙向Transformer編碼器構成,按照文獻[23]中的訓練經驗選擇超參數,多頭注意力的頭數為8,dmodel=512,dk=dv=dmodel/h=64,全連接層的隱藏節點數量為768。優化算法選取Adam[25],令β1=0.9,β2=0.98,ε=10-9,epochs設置為200,每批數據batch_size大小為128,學習速率為1E-3。本文方法檢測結果記為CNN-TRAN。
實驗軟硬件配置如下:軟件框架為Keras和TensorFlow,操作系統Centos7.5 64位操作系統。硬件方面,CPU為16核Intel Xeon E5-2680 2.7 GHz,內存為128 GB,顯卡為32 GB顯存的Nvidia Tesla V100。
3.4.1 網絡流數據包長度的影響分析
網絡流中數據包的大小各不相同,卷積網絡層以數據包為單位提取空間特征,需要將每個數據包截至固定長度,因此需要研究數據包長度對模型性能的影響,通過實驗確定合適的數據包長度值。經統計,預處理后的網絡流中,數據包的平均長度為698字節,網絡流中所有數據包的中位數為22,令數據包長度在[100,1 200]內取值,數據包數量為22,以100為步長訓練模型進行實驗B,十類流量的綜合Acc、P和FAR結果如圖9所示。

圖9 數據包長度對檢測性能的影響評測
可以看出,三個指標在數據包長度為200、500和800時取得了相近的較好結果,數據包長度的增加不會明顯提高檢測結果,800字節后甚至出現檢測性能明顯降低的現象。由此可以推斷流量重要的異常特征信息包含于數據包前200字節的頭信息和少量數據中,通過查看數據集開源的特征類型分布可知,流量的內容特征(swin、dwin、stcpb、dtcpb等)、基本特征(state、dur、sbytes、dbytes等)和時間特征(sjit、djit、sintpkg、dintpkt等)基本都包含于前200字節中。800字節后的數據內容會引入噪聲數據,降低檢測效果。綜合考慮訓練效率和效果,統一將網絡流中的數據包截至200字節。
3.4.2 網絡流數據包個數的影響分析
每個網絡流中數據包數量不相同,而時序注意力編碼層對網絡流的時序特征學習時,要求輸入的網絡流數據包個數必須是固定的。經統計,單個網絡流中的數據包個數最多為183 259,平均值為95,最少為1,中位數為22。令數據包個數在[3,30]內取值,以3為步長訓練模型進行實驗B,數據包長度取200,十類流量的綜合Acc、P和FAR結果如圖10所示。

圖10 數據包個數對檢測性能的影響評測
可以看出,在[3,15]內,各項指標隨著數據包數量增多而變優,當數量取15時各項指標最優。數據包繼續增加時,各指標小幅震蕩。由此可以推斷,網絡流前15個連續的數據包足以體現時間特征和連接特征。
3.4.3 綜合實驗分析
令網絡流中數據包長度截至200字節,數據包選取15個,本文和兩種對比方法進行A實驗和B實驗,測試結果如表3和表4所示。

表3 三種方法實驗A的評測結果(%)

表4 三種方法實驗B的評測結果(%)
在表3和表4評測結果中本文方法均取得了最優結果,說明了本文方法的合理性和有效性。CNN-TRAN和CNN-LSTM較CNN的三項指標均有很大程度的提升,表明時序特征對流量的特征提取至關重要,結構化抽取網絡流的空間和時序的綜合特征更能代表網絡流量特征。實驗A中,CNN-TRAN較CNN-LSTM的Acc提高3.05%,P提高1.78%,FAR降低44.55%。實驗B中,CNN-TRAN較CNN-LSTM的Acc提高7.64%,P提高9.64%,FAR降低55.04%。這是由于在時序注意力編碼層中,注意力機制可以對輸入的網絡流中所有的數據包在不考慮距離的前提下進行全局建模,比LSTM的順序建模更加有效,可以有效地挖掘網絡流數據包之間顯著的時序特征。尤其在實驗B中檢測Analysis、Backdoors、DoS和Worms這四類數量相對稀少的異常流量時性能提升比較明顯。另外,實驗A中CNN-LSTM較實驗B中CNN-LSTM的三項指標變化率大于實驗A中CNN-TRAN較實驗B中CNN-TRAN的三項指標變化率,說明本文方法的魯棒性較強。
為了進一步直觀地對比三種方法,以實驗B中對Fuzzers檢測為例,對照各方法的檢測結果,找到了兩個Fuzzers的會話流樣本,如圖11和圖12所示。

圖11 被三種方法正確檢測的會話流樣本

圖12 僅被CNN-TRAN正確檢測的會話流樣本
每個會話流包括15個Fuzzers數據包圖片,IP地址為184.82.139.38和192.168.0.251。第二個會話流的每個數據包圖最后黑色圖像是填充的0,比第一個會話流的有效數據少,第一個會話流被三種方法正確檢測,第二個會話流僅被CNN-TRAN正確檢測。CNN-TRAN在空間特征較少的情況下,利用多頭注意力機制著重挖掘了數據包之間的時序特征,在一定程度上說明了多頭注意力機制的全局建模能力優于LSTM。
本文提出一種基于時空自注意力特征的異常流量檢測方法,通過引入Transformer編碼器,解決了當前包含RNN結構的異常流量檢測框架無法并行利用全局流量數據包挖掘時序特征的問題。該框架利用卷積網絡層提取網絡流中單個數據包的空間特征,時序注意力編碼層利用自注意力機制提取數據包之間的顯著時序關聯特征,有效地提高了異常流量檢測性能。雖然本文方法較對比方法有提升,但是個別異常流量類別的檢測性能依然受到樣本數量少的影響,下一步準備在該檢測框架中引入條件生成對抗網絡,生成小類別異常流量的對抗樣本,豐富訓練樣本,進一步提高檢測性能。