史飛洪,李敏芳
(昆明理工大學 信息工程與自動化學院,云南 昆明 650500)
隨著網絡技術的快速發展,網絡安全問題變得日益嚴重。結合深度學習技術對網絡安全態勢進行感知并以此解決網絡安全問題,具有廣闊的應用前景。一般來說,網絡安全態勢感知具有態勢要素提取、態勢理解以及態勢預測三個核心要素[1],具體如圖1 所示。

圖1 態勢感知三級模型
現在,大多網絡安全問題都是由Web 攻擊引起的,如SQL 注入、Web 后門以及代碼執行等。而Web 攻擊數據基于超文本傳輸協議(Hyper Text Transfer Protocol,HTTP)請求,是文本數據的一個類型。在基于深度學習的文本分析研究上,最初,由于循環神經網絡(Rerrent Neural Network,RNN)能夠記憶序列信息的上下文語義信息,所以其應用范圍為文本數據[2]。但是,RNN 存在梯度消失和梯度爆炸的問題[3]。為解決這一問題,此后出現了長短期記憶網絡(Long Short-Term Memory,LSTM)[4]和引入了門控循環單元(Gated Recurrent Unit,GRU)的RNN 神經網絡[5]。兩者都是通過引入門的機制來解決RNN 的梯度消失和梯度爆炸問題,只不過GRU 在保證性能的同時,比LSTM 具有更少的門。但兩者都是RNN 的變種,因此也存在無法并行訓練、訓練效率低等問題。隨著訓練復雜度的增加以及訓練數據規模的日益增大,這一弊端越來越明顯。基于此。KIM[6]將卷積神經網絡(Convolutional Neural Network,CNN)應用到文本分類任務。針對CNN 并不能很好地捕獲特征圖的重要信息問題,引入了SEnet[7]中的SE(Squeeze-and-Excitation)模塊注意力機制,獲取特征的重要程度。
綜上所述,GRU 雖然能夠獲取文本的上下文語義信息,但是存在無法并行訓練、效率低以及不能有效注意到單詞的重要程度的問題。而SEnet 雖然能解決上述問題,但是同樣不能充分提取單詞自身的語義信息。針對上述問題,本文提出了E-SECNN 模型。首先利用Embedding 層獲取單詞自身的語義信息,其次利用CNN 解決無法并行訓練、效率低的問題,最后利用SE 模塊給予CNN 提取到的特征圖不同的權重,來注意到不同單詞的重要程度。為驗證E-SE-CNN 的模型的有效性,本文在基于告警日志構建的Web 攻擊數據集的基礎上,設計了5組實驗來進行對比。
E-SE-CNN 模型包含輸入模塊、Embedding 模塊、SE-CNN 模塊以及輸出模塊,具體如圖2 所示。

圖2 E-SE-CE 模型結構圖
經過處理的告警日志數據集的輸入序列長度為300,所以輸入模塊的輸入詞向量序列長度為300,記為X300=w1,w2,w3,…,w300,用于輸入Embedding 模塊中。
Embedding 模塊輸入為X300,即長度為300 的token序列,輸出為token 序列的分布式表示矩陣X300,224。具體來說,這一模塊主要是用來對輸入的詞向量序列進行分布式表示,使其能夠包含充足的語義信息。輸入模塊的詞向量序列輸入到Embedding 模塊最終獲得的詞向量序列的分布式表示如式(1)所示:

式中:X300為經過詞向量化之后的長度為300 的token 序列,每條數據包含300 個單詞;X300,224為經過Embedding操作之后,這300 個單詞的分布式表示矩陣。
SE-CNN 模塊的輸入為token 序列的分布式表示矩陣X300,224,輸出則為帶有權重的特征圖。具體由圖2 可知,SE-CNN 模塊分別由兩個CNN block和SE block 交叉連接組成,每個CNN block 由若干個卷積層、池化層及批歸一化層組成,每個SE block則由通道注意力機制和殘差機制組成。SE-CNN 模塊主要是對輸入token 序列分布式表示矩陣進行特征圖提取、變換以及為不同通道的特征圖賦予不同權重,以期注意到更加重要的單詞。其中,CNN 部分主要負責特征圖的提取、變換;SE 部分主要負責對CNN提取、變換后的特征圖通道賦予不同的權重。SE 部分的結構如圖3 所示,它主要通過殘差連接的方式對每個通道賦予權重。假設輸入特征圖尺寸為C×H×W(其中C是特征圖的通道數,H為特征圖的高度,W為特征圖的寬度),這一特征圖先經過通道注意力機制獲取每個通道的權重值Cw,再通過殘差連接的方式進行對原來特征圖的通道賦予權重Cw,獲取到賦予通道權重的特征圖。

圖3 SE block 結構圖
SE block 的具體機制如下。
首先,對卷積層CL 層輸出的特征圖通過GAL層進行全局平均池化,以完成對特征圖在空間維度的壓縮,只保留通道維度,特征圖的尺寸由原來的C×H×W變為C×1×1:

其次,通過全連接層FL1,經過ReLU 激活進行非線性變換后,將通道維度壓縮,以減少參數量和計算量,具體為:

輸出模塊的輸入為SE-CNN 模塊的輸出(SE block2 的輸出SLout),輸出為每個標簽的概率。由圖2 可知,輸出模塊由Flatten 層、Sigmoid 層以及分類結果三部分組成。其中,Flatten 層主要做展平操作,對SE-CNN 模塊輸出的特征圖展平成一維;Sigmoid 層對展平后的特征向量進行歸一化(由于任務是多標簽分類,因此選取的是Sigmoid 函數);分類結果則輸出滿足閾值的標簽,完成對Web 攻擊數據的多標簽分類。
由于本文是某運營商的一個大數據分析與挖掘項目的一個模塊,因此本研究的數據集為該運營商網絡安全設備產生的Web 攻擊日志數據。數據集包含了從2021 年5 月—2021 年11 月共6 個月的告警日志數據,共計約2 400 萬條數據,脫敏后的數據集共有12 個屬性。數據集的具體詳情如表1 所示。
實際上,Web 攻擊日志數據是網絡安全設備通過對每條請求數據進行專家系統的規則匹配而生成的。結合表1 可以得知,除了dip,dport,sip,sport,request_head,time 這6 個屬性,其余的屬性都是基于網絡安全設備的專家系統生成的。因此,本文以專家系統生成的可信度較高且經過網絡安全管理人員檢查過的Web 攻擊日志數據為指導,學習原始數據中的規律,并訓練出網絡安全態勢預測模型。

表1 數據集詳情
通常情況下,大規模的數據集存在很多失真的數據。除此之外,原始數據集本身的數據形式并不符合模型的輸入格式。因此,必須對獲取到的數據進行初步的篩選,也就是預處理。在本文中,數據預處理主要包含數據清洗、特征選擇及特征重構三部分。數據清洗主要負責清洗掉置信度較低且未經過網絡安全管理人員檢查的Web 攻擊日志數據,清洗之后,數據集由原來的2 400 萬條縮小到約900萬條;特征選擇主要選擇合適的屬性作為本文模型的輸入和標簽,這里選擇了request_head 這一屬性作為模型的輸入,attack_mode_name_cn(攻擊列表)屬性作為數據集的標簽;特征重構主要負責重構模型的輸入和標簽數據,這里對文本類型的request_head(請求頭)數據,根據專家意見制定了若干個正則規則用來切分數據,從而構建字典完成request_head 的詞向量化(長度為300 的token 序列),同樣對文本類型的attack_mode_name_cn(攻擊列表)數據進行了標簽化(由于其總共有56 類,因此標簽為長度為56 的向量)。經過上述三步預處理操作后的數據如表2 所示。

表2 預處理后的數據
本文的實驗環境為:Ubuntu 操作系統,CPU為9 核Intel(R) Xeon(R) Silver 4210R CPU@2.40 GHz,內存為256 GB,顯卡為RTX 3090,顯存為24 GB,編程語言為Python 3.7,深度學習框架為Tensorflow 和Keras。
本文采取F1score 作為評估指標。若該指標較高,表示模型在高占比的標簽上具有良好的表現。除此之外,也保留了Recall和Precision作為評估指標。同樣,為了客觀地評價模型的性能,本文分別計算了BCE Loss(Binary Cross Entropy Loss)和Hamming Loss。這5 個評估指標的計算式分別如下。


式中:n表示類別個數,在本研究中是56;m表示樣本數,yj為樣本j的標簽,y^j為樣本j的預測結果;yij表示樣本j在第i類上的標簽,y^ij表示樣本j在第i類上的預測結果。
為了評估Embedding 層對token 序列進行分布式表示是否對語義信息的表示有益,本文設計了兩個網絡模型做了一組對比實驗。這兩個模型分別為MLP 和E-MLP。MLP 是一個簡單的多層感知機,輸入的是token 序列。E-MLP 是經過Embedding 層之后MLP 網絡輸入的分布式表示的token 序列特征圖。圖4 給出了在Web 攻擊數據集上,訓練過程中驗證集上hamming loss 變化曲線。由圖4 可知,E-MLP 能夠更快地收斂,且損失值遠遠低于MLP的損失值。圖4 中的曲線比較平滑、看不出波動的原因是,E-MLP 和MLP 的損失值差距過大,而波動相對于這個差距是很小的一個數字,所以會看起來很平滑,實際上是存在波動的。

圖4 MLP 和E-MLP 驗證集漢明損失變化圖
表3 的結果展示了引入了Embedding 層后的E-MLP 網絡在測試集上的5 種評估指標均遠遠高于未引入Embedding 層的MLP 網絡,并且在推理速度上相等。實驗表明,Embedding 層對token 語義信息的提取具有非常積極的意義。

表3 Embedding 層對Web 攻擊分類結果的影響
為了評估CNN 相對于GRU 在訓練速度上是否有提升以及表現性能的變化,本文設計了兩個網絡模型做了一組對比實驗。這兩個網絡模型分別為E-GRU和E-CNN。E-GRU是通過Embedding層之后,GRU 網絡輸入的分布式表示的token 序列特征圖,E-CNN 是經過Embedding 層之后,CNN 網絡輸入的分布式表示的token 序列特征圖。圖5 給出了在Web 攻擊數據集上訓練過程中驗證集上hamming loss變化曲線。由圖5可知,E-CNN能夠更快地收斂,且損失值低于E-GRU 的損失值。

圖5 E-GRU 和E-CNN 驗證集漢明損失變化圖
表4 的結果展示了E-GRU 和E-CNN 兩個網絡在測試集上的表現。在5 種評估指標上,E-CNN在其中4 種上略微高于E-GRU,說明CNN 神經網絡對語義特征具有較強的提取表征能力。值得注意的是,E-CNN 在測試集上的速度相較于E-GRU 提升約21%。實驗表明,相較于GRU,CNN 對于訓練推理速度有顯著提升,且性能有略微提升。

表4 CNN 相對于GRU 對Web 攻擊分類結果的影響
為了評估通道注意力機制對Web 攻擊分類結果的影響,本文設計了兩個網絡模型做了一組對比實驗。這兩個網絡模型分別為E-CNN和E-SE-CNN。E-CNN 不具有通道注意力機制,E-SE-CNN 帶有通道注意力機制。圖6 給出了在Web 攻擊數據集上的訓練過程中驗證集上hamming loss 變化曲線。由圖6 可知,E-SE-CNN 能夠更快地收斂,且損失值低于E-CNN。

圖6 通道注意力機制-驗證集上漢明損失變化圖
表5 的結果展示了在引入了通道注意力機制后的E-SE-CNN 網絡在測試集上的5 種評估指標均高于未引入通道注意力機制的E-CNN 網絡。由于引入了通道注意力機制,增加了計算量,因此在推理訓練速度上有一定程度的增加。實驗結果表明,通道注意力機制對重要語義信息的提取具有一定的積極的意義。

表5 通道注意力機制對Web 攻擊分類結果的影響
為了進一步對比所有模型在Web 攻擊數據集上的表現,且為了消除MLP 損失值過大對量綱的影響,詳細觀察Hamming Loss 變化,去除MLP 的損失變化后,整體損失變化曲線如圖7 所示。

圖7 所有模型在驗證集漢明損失變化圖
由圖7 可知,在所有模型中,E-SE-CNN 具有最快的收斂速度和最低的損失值。其次是E-CNN。這表明在收斂速度上,CNN 具有較大的優勢,并且性能表現也較好。
表6 的結果展示了所有模型在Web 攻擊數據集上5 種評價指標的表現。其中,引入了Embedding 層、CNN 及通道注意力機制的E-SECNN 具有最佳的表現,相較于E-GRU,性能有較高的提升,同時訓練推理速度并沒有增加。實驗結果表明,Embedding 層對于語義信息的表征具有極大的積極意義,CNN 對于訓練推理速度的提升具有較大的影響,通道注意力機制對于重要語義信息的提取具有一定的積極意義。

表6 所有模型在Web 攻擊數據集上的表現
針對GRU 神經網絡不能很好地注意到關鍵詞且訓練速度較慢的問題,本文提出了一種融合詞嵌入和通道注意力機制的網絡安全態勢預測模型E-SE-CNN。該模型首先利用Embedding 層進行詞嵌入獲取token 序列的分布式語義表示矩陣,利用該矩陣構建token 序列的二維特征圖,其次基于此引入2D 卷積對特征圖進行語義提取和尺寸變換,最后引入通道注意力機制(SE)實現對重要語義信息的關注。E-SE-CNN 的優勢在于,在保證了訓練推理速度的同時,充分提取了token 序列的語義信息,較好地關注了重要的語義信息,進而提升了模型的性能。實驗結果表明,該模型在5 種評價指標上都具有較好的表現,其中F1score 達到了0.998 621,充分表明了該模型的有效性和可行性。
本文在設計卷積神經網絡時,僅僅考慮了單支卷積神經網絡,并沒有充分利用CNN 結構靈活的特性,設計多支交叉融合的CNN,進一步提升模型的性能,加快模型的訓練推理速度。由于時間原因,模型的驗證工作僅在自建的Web 攻擊數據集上進行。在未來的研究工作中,將結合現有的優秀的CNN 網絡結構,設計參數量更少、訓練推理速度更快、性能更好的多支交叉融合的CNN 模型,進一步提升模型的表現。同時,為了進一步驗證模型的表現,將會對模型在公共數據集上進行驗證。