◆邢光升 羅翰文
基于深度學習的Web注入行為實時檢測技術研究
◆邢光升 羅翰文
(中國人民解放軍國防科技大學 湖南 410000)
隨著基于Web環境的互聯網應用越來越廣泛,Web攻擊的手段也越來越多樣,其中注入攻擊是Web安全領域中最常見的一種攻擊方式,本文提出一種基于深度學習的Web注入行為實時檢測模型,基于原始數據利用CNN網絡改造成的Web攻擊檢測網絡(WACNN)進行模型訓練并對模型進行在線實時加載檢測,取得良好效果。
Web注入;實時檢測;深度學習;WACNN
隨著基于Web環境的互聯網應用越來越廣泛,Web攻擊的手段也越來越多樣,注入攻擊是常見的一種攻擊方式,通過攻擊可以檢測相關環境參數和防護狀況,為下一步的攻擊和控制打下基礎。常見注入式攻擊有SQL注入攻擊和跨站腳本攻擊-XSS。SQL注入是指把攻擊代碼注入數據庫操作語句中,以探測或控制后端數據庫甚至操作系統。XSS 攻擊利用網站漏洞,把惡意代碼和腳本注入網頁中,瀏覽器會執行惡意代碼腳本使用戶蒙受損失[1]。針對這兩類攻擊行為檢測,國內外均有大量研究,但普遍需要花費大量時間分析提取攻擊行為和數據載荷特征。很多研究采用機器學習或者深度學習方法,主要分為兩類,一類是基于數據流相關特征進行提取分析,但需有一段時間積累才能進行分析,在復雜網絡環境下數據來源較多,對模型的計算能力要求較高。另一類是基于數據提取相關特征詞并轉換詞向量的方式進行分析檢測,可達到很高的準確率,但在分詞和詞向量轉換時會產生數據膨脹,不適用于流量較大且對檢測實時性要求較高的網絡環境。
本文提出一種基于深度學習的Web注入行為實時檢測模型。主要包括實時在線檢測模塊和模型訓練模塊。其中實時在線檢測模塊可以接入任何實時網絡環境中,基于數據包進行檢測分析[2];模型訓練模塊主要是利用CNN網絡改造成的Web攻擊檢測網絡(WACNN)進行模型訓練。其運行架構如圖1。

圖1 Web注入行為實時檢測模型
本文訓練數據主要來自Github基于關鍵詞搜索得到開源項目的數據樣本以及對常用注入攻擊工具實時抓包分析提取得到的數據樣本[3]。我們對兩類數據樣本以及對照樣本進行特征研究,并將樣本轉換生成20×20灰度圖,可以看到樣本之間在細微特征上存在一定差異,且兩類攻擊樣本均有高頻特征詞,高頻特征詞統計如表1:

表1 樣本高頻詞統計表
訓練樣本需要對長度統一化,同時在所有長度進行統一化時每條樣本中應包含一個以上高頻詞。由于XSS異常操作種類很多,XSS樣本需以“alert”為基準對前序數據做長度統一化。然后將SQL注入樣本、XSS樣本分別與對照樣本按比例進行混合標簽,將樣本按照比例分成訓練集和測試集,并轉換成tensorflow能夠高效讀取的tfrecord格式。
WACNN是一種一維CNN模型,由兩個卷積層,兩個池化層,一個全連接層,一個softmax層組成[4]。輸入是一維數組,基于數據編碼作為訓練向量,即每個字節數據轉換為ASCII編碼值,并做歸一化操作使值在0-1之間。分別對SQL注入樣本和XSS樣本進行訓練,得到兩個檢測模型。本文中模型實現使用tensorflow-1.4,python3.5實現。在訓練中,模型采用Relu激活函數,利用Adam算法對參數進行反向傳播優化,為提高準確度,采用Dropout策略,參數為0.5,使每輪訓練中一半神經網絡單元失效,防止產生過擬合[5]。
實時檢測模塊可串接在網絡節點之前,對網絡數據進行實時檢測,其數據采集模塊可采用winpcap、libpcap等數據采集庫。本文采取數據拷貝的方法對實時數據流進行檢測,數據流首先經過高頻字匹配過濾與分流模塊,將可疑的數據包分別拷貝至相應的緩沖區,然后發送至SQL注入檢測模塊和XSS檢測模塊中,輸出最終檢測結果及相關數據包信息。檢測模塊定時加載最新參數用于數據檢測,同時可將可疑數據包輸出到人工判別標注模塊,通過人工判斷打標簽來豐富樣本庫。
本文基于測試集進行測試,并且通過常用注入工具采集數據進行實時在線模擬。實驗結果可看出,模型檢測準確率較高,在模擬千兆網流量環境下,整個檢測模塊運行正常,如表2。

表2 實驗結果
[1]陳煒.基于手工SQL注入的Web滲透測試技術研究[D].中北大學.2015.
[2]蔡洪民,王慶香.基于深度學習的入侵檢測技術研究[J].網絡安全技術與應用.2017(11):62-64.
[3]武飛,曾凡平,張輝,董齊興.數據流應用層載荷特征正則表達式的自動提取[J].小型微型計算機系統.2014(8):6.
[4]陳耀丹,王連明.基于卷積神經網絡的人臉識別方法[J].東北師大學報(自然科學版).2016(2):70-76.
[5]傅建明,黎琳,王應軍.基于 CNN 的Webshell 文件檢測[J].鄭州大學學報(理學版).2018.