深度學習與網絡安全結合是未來網絡安全的一個大趨勢,我們今天以基于深度學習的主流算法對SQL注入行為進行檢測,來拋出三種特征向量對深度學習模型檢測效果的影響。
0x01 深度學習簡介
深度學習(Deep Learning)是機器學習的分支,它試圖使用包含復雜結構或由多重非線性變換構成的多個處理層對數據進行高層抽象的算法。深度學習是機器學習中一種基于對數據進行表征學習的方法。深度學習的好處是用非監督式或半監督式的特征學習和分層特征提取高效算法來替代手工獲取特征。在我們的實驗中,使用的是Python深度學習庫: TensorFlow。使用的模型是:
多層感知器
多層感知器(Multilayer Perceptron,縮寫MLP)是一種前向結構的人工神經網絡,映射一組輸入向量到一組輸出向量。MLP可以被看作是一個有向圖,由多個的節點層所組成,每一層都全連接到下一層。除了輸入節點,每個節點都是一個帶有非線性激活函數的神經元(或稱處理單元)。詳細介紹
卷積神經網絡
卷積神經網絡(Convolutional Neural Network, CNN)是一種前饋神經網絡,它的人工神經元可以響應一部分覆蓋范圍內的周圍單元,對于大型圖像處理有出色表現。卷積神經網絡由一個或多個卷積層和頂端的全連通層(對應經典的神經網絡)組成,同時也包括關聯權重和池化層(pooling layer)。這一結構使得卷積神經網絡能夠利用輸入數據的二維結構。與其他深度學習結構相比,卷積神經網絡在圖像和語音識別方面能夠給出更優的結果。這一模型也可以使用反向傳播算法進行訓練。相比較其他深度、前饋神經網絡,卷積神經網絡需要估計的參數更少,使之成為一種頗具吸引力的深度學習結構。詳細介紹
循環神經網絡
遞歸神經網絡(RNN)是兩種人工神經網絡的總稱。一種是時間遞歸神經網絡(recurrent neural network),另一種是結構遞歸神經網絡(recursive neural network)。時間遞歸神經網絡的神經元間連接構成有向圖,而結構遞歸神經網絡利用相似的神經網絡結構遞歸構造更為復雜的深度網絡。RNN一般指代時間遞歸神經網絡。單純遞歸神經網絡因為無法處理隨著遞歸,權重指數級爆炸或消失的問題(Vanishing gradient problem),難以捕捉長期時間關聯;而結合不同的LSTM可以很好解決這個問題。詳細介紹
實驗中使用的網絡結構
多層感知器
神經網絡結構為:
輸入層
隱藏層 L1
隱藏層 L2
隱藏層 L3
輸出層
每個隱藏層使用128個神經元,激活函數為relu。

上圖為 TensorBoard 輸出的結構圖。
實驗中使用的網絡結構
卷積神經網絡
神經網絡結構為:
輸入層
卷積層
池化層
卷積層
池化層
全連接層
輸出層
循環神經網絡
神經網絡結構為:
輸入層
向前層
向后層
輸出層

PS:訓練集和測試集來自于360企業安全-天眼大數據平臺,模型純度良好。
0x02 特征向量介紹
我們的特征向量轉化,使用了三種方法,也是目前應對字符串比較好的方法選擇。
基于word2vec的特征向量
基于詞袋的特征向量
基于fofe的特征向量
基于word2vec的特征向量
word2vec可以根據模型把詞匯轉化成一個多維的特征向量,在構建語句的特征時,我們采用暴力的向量相加的方式。
word2vec在自然語言的實驗中,可以很好的表示詞語見的關系。具體可以參考維基百科語料中的詞語相似度探索
基于詞袋的特征向量
詞袋向量,我們在天眼實驗室的攻擊平臺上,挑選了在SQL注入中最常出現的250個詞匯,構建詞袋模型。
詞袋模型的參考 BoW(詞袋)模型詳細介紹
基于FOFE的特征向量
FOFE是一種簡單精妙的rule-base編碼方式。通俗的說就是,在one-hot的基礎上利用了數值的大小表明了詞的位置信息的一種編碼形式。我們基于上面詞袋模型的基礎,加入了FOFE算法。
FOFE算法的具體論文,來自江輝老師。
The Fixed-Size Ordinally-Forgetting Encoding Method for Neural Network Language Models
0x03 實驗結果分析
我們的訓練數據為50000條,測試數據為500000條。

三種向量結果都表現了非常好的準確度。

從上圖可以看出,基于FOFE的特征向量和詞袋特征向量的表現并沒有出現特別明顯的差距,位置元素的融入并沒有給FOFE特征向量帶來明顯的檢測水平的提升。word2vec的向量在真實集表現的不是很好,其中的原因是我們建立句子,使用的是向量相加的粗暴方法,并不能體現word2vec對句子的屬性體現。

從上圖可以看出,基于word2vec的特征向量的判斷速度明顯慢于其他兩種方法。基于詞袋的速度比基于fofe的速度快一點,本質原因是fofe算法的引入,帶來了一定的計算量,符合速度降低的預期。
0x04 總結
筆者認為,本次我們利用三種建立向量的方式和三種神經網絡結構進行交叉實驗,探討三種方式的向量形式和神經網絡結構之間的關系,算是拋磚引玉。本次實驗最為驚訝的是 CNN 和 word2vec的組合在真實集表現的最好。基于FOFE的特征向量具有順序的概念,但是未能在詞袋模型的基礎上帶來更好的檢測結果。
深度神經網絡在安全檢測方面,可以帶領我們進入檢測“未知的未知”的能力層次,這點也是我們必須要對此付出努力的方向。路要一步一步走,我們會在這個方向上繼續前行。
|