作者:[email protected]天眼實驗室
0x00文章介紹
深度學習與網路安全結合是未來網路安全的一個大趨勢,我們今天以基於深度學習的主流算灋對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的特徵向量具有順序的概念,但是未能在詞袋模型的基礎上帶來更好的檢測結果。
深度神經網路在安全檢測方面,可以帶領我們進入檢測“未知的未知”的能力層次,這點也是我們必須要對此付出努力的方向。路要一步一步走,我們會在這個方向上繼續前行。
0x05參攷引用
https://zh.wikipedia.org/wiki/%E6%B7%B1%E5%BA%A6%E5%AD%A6%E4%B9%A0
https://yq.aliyun.com/articles/118686?spm=5176.100239.0.0.g2XnLx
http://www.52nlp.cn/tag/word2vec
http://blog.csdn.net/u010213393/article/details/40987945