• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    基于深度卷積神經(jīng)網(wǎng)絡(luò)的SQL注入攻擊檢測(cè)

    2019-06-11 03:31:06葉永輝謝加良李青巖
    關(guān)鍵詞:分詞卷積向量

    葉永輝,謝加良,李青巖

    (集美大學(xué)理學(xué)院,福建 廈門(mén) 361021)

    0 引言

    隨著計(jì)算機(jī)技術(shù)和互聯(lián)網(wǎng)的迅速發(fā)展,Web應(yīng)用迅速崛起,網(wǎng)絡(luò)安全問(wèn)題備受關(guān)注[1]。SQL注入漏洞攻擊[2]是目前網(wǎng)上最流行最熱門(mén)的黑客腳本攻擊方法之一[3]。SQL注入具有攻擊危害大、類(lèi)型多、變異快、攻擊隱蔽等特點(diǎn)。因此,SQL注入漏洞的檢測(cè)和防御一直是Web安全領(lǐng)域關(guān)注的重點(diǎn)。

    SQL注入[4]是指攻擊者通過(guò)惡意查詢(xún)語(yǔ)句來(lái)獲取服務(wù)器數(shù)據(jù)庫(kù)信息的攻擊行為,可通過(guò)預(yù)編譯、轉(zhuǎn)義、過(guò)濾關(guān)鍵字、部署WAF等方式防御攻擊。SQL注入方式有多種,基于攻擊方式的不同可分為聯(lián)合查詢(xún)注入、報(bào)錯(cuò)注入、重言式攻擊等[4]?;诖?,入侵檢測(cè)技術(shù)保障網(wǎng)絡(luò)安全的重要性也與日俱增。入侵檢測(cè)技術(shù)主要分為基于分類(lèi)、基于聚類(lèi)、基于統(tǒng)計(jì)和基于信息理論4大類(lèi)算法[5-6]。李紅靈等[7]在解決檢測(cè)方法的適用性和提高注入檢測(cè)準(zhǔn)確率方面提出了SVM算法訓(xùn)練注入檢測(cè)模型;楊連群等[8]提出結(jié)合隱馬爾科夫模型來(lái)降低SQL注入檢測(cè)誤報(bào)率;張志超等[9]提出了BP神經(jīng)網(wǎng)絡(luò)訓(xùn)練檢測(cè)模型,其特點(diǎn)是快速高效。卷積神經(jīng)網(wǎng)絡(luò)[10]是一種前饋神經(jīng)網(wǎng)絡(luò),相較于其他機(jī)器學(xué)習(xí)算法[11-12],它通過(guò)卷積層和池化層的優(yōu)化降低了網(wǎng)絡(luò)參數(shù)個(gè)數(shù),使卷積神經(jīng)網(wǎng)絡(luò)的計(jì)算量大大降低。卷積神經(jīng)網(wǎng)絡(luò)成功應(yīng)用于圖像處理[13]、視覺(jué)領(lǐng)域[14]以及圍棋人工智能程序[15]等。為了進(jìn)一步提高對(duì)變異攻擊的識(shí)別率,降低人為因素對(duì)檢測(cè)模型的影響,本文提出使用卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)算法[10]訓(xùn)練注入檢測(cè)模型。

    1 基于卷積神經(jīng)網(wǎng)絡(luò)的SQL注入攻擊檢測(cè)方法

    SQL注入檢測(cè)模型的主要原理是通過(guò)攔截客戶(hù)端與Web服務(wù)器的通信數(shù)據(jù),利用SQL注入模型對(duì)數(shù)據(jù)內(nèi)容進(jìn)行檢測(cè)分析。若存在攻擊行為,則不對(duì)數(shù)據(jù)包進(jìn)行轉(zhuǎn)發(fā)處理,否則向服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù)包。

    本文提出的基于卷積神經(jīng)網(wǎng)絡(luò)算法的SQL注入檢測(cè)系統(tǒng)由以下三個(gè)部分組成:

    1)文本分詞處理 針對(duì)文本中的鏈接、數(shù)字進(jìn)行規(guī)范化處理,從而降低分詞數(shù)量,減小無(wú)關(guān)變量對(duì)系統(tǒng)模型的影響。

    2)提取文本向量 使用Word2Vec工具中的CBOW算法,對(duì)已經(jīng)過(guò)分詞處理的訓(xùn)練樣本進(jìn)行詞匯模型訓(xùn)練,進(jìn)而將文本數(shù)據(jù)轉(zhuǎn)化為文本向量。

    3)訓(xùn)練檢測(cè)模型 設(shè)計(jì)卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu),選取卷積層、池化層以及激活函數(shù)等參數(shù),進(jìn)行模型訓(xùn)練。

    1.1 文本分詞處理

    1) URL解碼。瀏覽器向服務(wù)器發(fā)送數(shù)據(jù)時(shí),客戶(hù)端將用戶(hù)輸入的參數(shù)進(jìn)行打包編碼后發(fā)送到服務(wù)端,采集的訓(xùn)練樣本往往都進(jìn)行過(guò)編碼處理,在訓(xùn)練前則需進(jìn)行解碼。針對(duì)存在多重URL編碼的樣本需采用遞歸URL解碼[16]進(jìn)行解析,以保證數(shù)據(jù)編碼的一致性。

    2) 對(duì)已解碼的數(shù)據(jù)進(jìn)行規(guī)范化處理。進(jìn)行的操作主要有:將URL中數(shù)字替換為“0”;替換超鏈接為“http://u”的形式;對(duì)于數(shù)字、超鏈接等無(wú)關(guān)因素進(jìn)行統(tǒng)一規(guī)范處理,以降低分詞后的分詞數(shù)量。

    3)進(jìn)行分詞處理。分詞處理模塊以特殊符號(hào)(‘@#/空格等)為分隔符對(duì)樣本進(jìn)行分割處理,將文本字符串轉(zhuǎn)化為文本序列的形式,既保留原本文本信息,也方便進(jìn)行文本特征提取。

    1.2 提取文本向量

    圖1 CBOW的神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)Fig.1 CBOW neural network structure

    Word2Vec[17]是Google在2013年開(kāi)源的一款將自然語(yǔ)言轉(zhuǎn)化為計(jì)算機(jī)可以理解特征向量的工具。Word2Vec主要有CBOW和Skip-Gram兩種。本文采取CBOW模型進(jìn)行訓(xùn)練,該模型由輸入層、映射層和輸出層組成,其神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)示意圖如圖1所示。

    輸入層為單詞X周?chē)鷑-1個(gè)單詞的詞向量。例如,n=5,則詞X(記為w(t))前兩個(gè)和后兩個(gè)的單詞為w(t-2),w(t-1),w(t+1),w(t+2)。相應(yīng)地,4個(gè)單詞的詞向量記為v(w(t-2)),v(w(t-1)),v(w(t+1)),v(w(t+2))。

    從輸入層到映射層(Pro(t))是將n-1個(gè)詞向量相加:

    Pro(t)=v(w(t-2))+v(w(t-1))+v(w(t+1))+v(w(t+2))。

    (1)

    映射層到輸出層需構(gòu)造Huffman樹(shù)(依照各詞匯出現(xiàn)頻率構(gòu)造Huffman樹(shù)),Huffman樹(shù)構(gòu)造過(guò)程如下:

    1)將w(t-2),w(t-1),w(t),w(t+1),w(t+2)看作n棵樹(shù),每棵樹(shù)僅有一個(gè)節(jié)點(diǎn)。

    2)選取權(quán)值最小的兩棵樹(shù)進(jìn)行合并,得到一棵新樹(shù),這兩棵樹(shù)作為新樹(shù)的左右節(jié)點(diǎn),新樹(shù)的根節(jié)點(diǎn)權(quán)值等于左右子樹(shù)的權(quán)重之和。

    3)重復(fù)步驟2)直到n棵樹(shù)都已合并為止。

    然后從根節(jié)點(diǎn)開(kāi)始,映射層的值需要沿著Huffman樹(shù)不斷地進(jìn)行l(wèi)ogistic分類(lèi),并且不斷地更正各詞向量。

    詞向量模型訓(xùn)練完成后,以字典的形式保存,從而完成單詞到向量的映射。

    1.3 訓(xùn)練檢測(cè)模型

    本文采取卷積神經(jīng)網(wǎng)絡(luò)對(duì)文本進(jìn)行分類(lèi),在數(shù)據(jù)集較大的情況下,也可以自動(dòng)提取特征。

    其輸入層由文本向量組成,文本向量的長(zhǎng)度即為輸入?yún)?shù)的個(gè)數(shù)。通過(guò)若干個(gè)一維卷積層進(jìn)行特征提??;最大池化層將提取的特征再次壓縮,并提取主要特征且簡(jiǎn)化網(wǎng)絡(luò)計(jì)算復(fù)雜度;dropout連接所有特征并將計(jì)算結(jié)果通過(guò)softmax分類(lèi)器進(jìn)行輸出。

    一維卷積網(wǎng)絡(luò)降低維度的原理如下:

    1)假設(shè)輸入數(shù)據(jù)維度(in)為8,過(guò)濾器維度(filter)為5,則卷積操作后數(shù)據(jù)維度(out)為8-5+1=4,即:out=in-filter+1。

    2)如果過(guò)濾器數(shù)量仍為1,而輸入數(shù)據(jù)的channel數(shù)量變?yōu)?6,則表示輸入的數(shù)據(jù)有8個(gè)單詞而每個(gè)單詞的詞向量維度為16。此時(shí),過(guò)濾器的維度則變?yōu)?×16,輸出維度仍為4。

    3)如果過(guò)濾器數(shù)量為n,那么輸出的數(shù)據(jù)維度就變?yōu)?n,即:out=n×(in-filter+1)。

    卷積神經(jīng)網(wǎng)絡(luò)屬于有監(jiān)督學(xué)習(xí),訓(xùn)練前需對(duì)樣本進(jìn)行標(biāo)簽化處理。在這個(gè)模型中,將正常樣本標(biāo)記為0,SQL注入樣本標(biāo)記為1。訓(xùn)練過(guò)程中,優(yōu)化器根據(jù)預(yù)測(cè)結(jié)果與實(shí)際結(jié)果的偏差(由損失函數(shù)計(jì)算所得)不斷進(jìn)行反向傳遞優(yōu)化參數(shù),最后得到檢測(cè)模型。

    2 SQL注入檢測(cè)實(shí)驗(yàn)

    本文數(shù)據(jù)來(lái)自互聯(lián)網(wǎng)的SQL注入實(shí)例。訓(xùn)練時(shí)使用了三種數(shù)據(jù)集:第一部分為訓(xùn)練集,主要用于訓(xùn)練檢測(cè)模型;第二部分為驗(yàn)證集,驗(yàn)證當(dāng)前訓(xùn)練模型的準(zhǔn)確率;第三部分為測(cè)試集,測(cè)試已訓(xùn)練完成的模型對(duì)樣本的識(shí)別率。訓(xùn)練集中正常樣本24 500條,SQL注入攻擊樣本25 527條,XSS攻擊樣本25 112條;驗(yàn)證集中正常樣本10 000條,SQL注入攻擊樣本10 000條,XSS攻擊樣本10 000條;測(cè)試集共4組,每組正常樣本2000條,SQL注入攻擊樣本2000條,XSS攻擊樣本2000條。

    正常樣本數(shù)據(jù)格式如下:

    code%3Dzs_000001%2Czs_399001%2Czs_399006%26cb%3Dfortune_hq_cn%26_%3D1498591852632;

    SQL注入樣本數(shù)據(jù)格式如下:

    -9500%22%20WHERE%206669%3D6669%20OR%20NOT%20%284237%3D6337%29;

    XSS注入樣本數(shù)據(jù)格式如下:

    site_id%3Dmedicare%22%3E%3Cscript%3Ealert%281337%29%3C/script%3E%2Casdf。

    2.1 文本分詞處理

    URL解碼后,對(duì)一些無(wú)關(guān)變量進(jìn)行替換,以一些特殊符號(hào)(如'@*#$()/空格等)為分割符,對(duì)語(yǔ)句進(jìn)行分詞處理。對(duì)數(shù)據(jù)進(jìn)行規(guī)范化處理、分詞處理,是非常關(guān)鍵的一個(gè)步驟,不僅能最大化地保留文本信息,還減少了一些噪聲的影響。提取結(jié)果如下:

    未分詞處理樣本 1)))%252bAND%252b8941%25253d8941%252bAND;

    分詞處理后樣本 [‘0’,‘)’,‘)’,‘)’,‘a(chǎn)nd’,‘0=’,‘0’,‘a(chǎn)nd’]。

    2.2 提取文本向量

    通過(guò)Python的gensim模塊來(lái)使用Word2Vec工具,將分詞處理后的語(yǔ)句作為輸入數(shù)據(jù)。經(jīng)過(guò)Word2Vec訓(xùn)練后,可得到一個(gè)以字典形式保存的詞向量模型。通過(guò)此模型對(duì)每個(gè)單詞進(jìn)行向量化,再由詞向量組成語(yǔ)句向量作為檢測(cè)模型的輸入。提取詞向量結(jié)果如下:

    樣本單詞 And;

    樣本詞向量 [-4.609 003 54 2.700 308 80 -0.033 447 10 0.946 626 66 0.517 221 75

    1.236 753 94 -2.057 605 03 -2.369 857 31 4.133 568 29 2.375 314 47

    -5.805 147 65 -1.499 013 90 -3.302 577 02 -2.151 923 66 0.870 841 15

    -1.487 621 19]。

    由于訓(xùn)練前的樣本經(jīng)過(guò)分類(lèi)、標(biāo)簽處理,因此需對(duì)樣本的訓(xùn)練順序進(jìn)行隨機(jī)處理。通過(guò)隨機(jī)處理可以有效避免實(shí)驗(yàn)結(jié)果的偶然性。本次實(shí)驗(yàn)對(duì)訓(xùn)練時(shí)用到的訓(xùn)練集和驗(yàn)證集的樣本數(shù)據(jù)進(jìn)行隨機(jī)處理,使用Python的隨機(jī)函數(shù)產(chǎn)生隨機(jī)序列,并由該隨機(jī)序列的順序決定樣本讀取順序。

    2.3 訓(xùn)練檢測(cè)模型

    本文采用的卷積神經(jīng)網(wǎng)絡(luò)結(jié)構(gòu)參考文獻(xiàn)[18],具體由三個(gè)卷積層、三個(gè)池化層組成,最后連接全連接層。由于CNN只能接受固定長(zhǎng)度的向量輸入,在訓(xùn)練前需要將樣本填充數(shù)據(jù),使其輸入長(zhǎng)度固定。

    訓(xùn)練集的準(zhǔn)確率(acc)、損失值(loss)與驗(yàn)證集的準(zhǔn)確率(val_acc)、損失值(val_loss)如圖2所示。

    2.3.1 CNN中的參數(shù)選取

    該卷積神經(jīng)網(wǎng)絡(luò)中使用了兩種激活函數(shù),卷積層與全連接層使用了ReLu函數(shù)作為激活函數(shù),而輸出層使用的是Softmax函數(shù)作為激活函數(shù)。

    1) ReLU函數(shù)是個(gè)分段線性函數(shù),輸入為負(fù)值時(shí)輸出為0,而正值輸出不變,這種操作被稱(chēng)為單側(cè)抑制。

    (2)

    輸入的參數(shù)經(jīng)過(guò)Softmax函數(shù),映射成為(0,1)的值,而這些值的累和為1(滿(mǎn)足概率的性質(zhì))。因此,在最后選取輸出結(jié)點(diǎn)的時(shí)候,選取概率最大(也就是值對(duì)應(yīng)最大)的結(jié)點(diǎn)作為預(yù)測(cè)目標(biāo)。

    2.3.2 代理模塊

    客戶(hù)端在與Web服務(wù)器進(jìn)行數(shù)據(jù)包交互前需進(jìn)行TCP三次握手,經(jīng)過(guò)TCP連接后傳輸HTTP報(bào)文。代理服務(wù)可作為中間者,由代理服務(wù)器完成與服務(wù)器的TCP連接、傳輸HTTP報(bào)文,而客戶(hù)端實(shí)質(zhì)上是與代理服務(wù)器進(jìn)行報(bào)文交互,由代理服務(wù)器決定是否轉(zhuǎn)發(fā)數(shù)據(jù)。

    惡意用戶(hù)可通過(guò)修改HTTP數(shù)據(jù)里的參數(shù),構(gòu)造攻擊載荷,對(duì)數(shù)據(jù)庫(kù)進(jìn)行攻擊。代理模塊攔截客戶(hù)端與服務(wù)端的數(shù)據(jù)包,通過(guò)注入檢測(cè)模型檢測(cè)當(dāng)前數(shù)據(jù)包是否存在攻擊,若不存在攻擊則由代理服務(wù)器向Web服務(wù)器轉(zhuǎn)發(fā)數(shù)據(jù),否則丟棄數(shù)據(jù)包。

    3 實(shí)驗(yàn)結(jié)果分析

    利用4組測(cè)試數(shù)據(jù)集對(duì)前述SQL注入檢測(cè)模型進(jìn)行驗(yàn)證。每組測(cè)試集對(duì)三種樣本的識(shí)別率和誤報(bào)率如表1、表2所示。

    表1 樣本檢測(cè)結(jié)果

    表2 實(shí)驗(yàn)結(jié)果數(shù)據(jù)統(tǒng)計(jì)

    測(cè)試結(jié)果表明經(jīng)過(guò)卷積神經(jīng)網(wǎng)絡(luò)(CNN)訓(xùn)練的模型具有極強(qiáng)的預(yù)測(cè)能力,對(duì)樣本識(shí)別的準(zhǔn)確率基本都在97%左右并且誤報(bào)率極低。此方法不僅僅能夠識(shí)別單一SQL注入或者XSS攻擊,只要擁有足夠并且典型的訓(xùn)練樣本,不需設(shè)計(jì)更多的算法,就可訓(xùn)練出能識(shí)別多種網(wǎng)絡(luò)攻擊的檢測(cè)模型,且模型的準(zhǔn)確性和檢測(cè)攻擊的多樣性完全取決于樣本數(shù)據(jù)本身。當(dāng)然,卷積神經(jīng)網(wǎng)絡(luò)對(duì)設(shè)備的性能也有所要求,隨著數(shù)據(jù)量的增加,設(shè)備的計(jì)算量也會(huì)隨之增加,服務(wù)器的響應(yīng)速度也會(huì)有所影響。

    4 CNN與BP神經(jīng)網(wǎng)絡(luò)算法對(duì)比

    本文對(duì)基于CNN算法與BP神經(jīng)網(wǎng)絡(luò)算法的SQL注入檢測(cè)模型進(jìn)行測(cè)試,兩種算法選擇同樣的訓(xùn)練集。

    變異SQL注入攻擊樣本由特殊字符進(jìn)行混淆,且未曾在訓(xùn)練樣本中使用。變異SQL注入攻擊數(shù)據(jù)樣本格式為:/?id=-1/*!UnIon/*/*%0n%0y*/ /*/*%0n%0y*/seLeCT*/1,‘test’,3。

    實(shí)驗(yàn)結(jié)果為:1)BP神經(jīng)模型對(duì)4組包含SQL注入的攻擊樣本進(jìn)行測(cè)試,平均識(shí)別率97%,誤報(bào)率3%;2)CNN模型對(duì)1500條變異SQL注入攻擊樣本測(cè)試,顯示正常樣本1條,SQL注入1499條,準(zhǔn)確率99%,誤報(bào)率1%;3)BP神經(jīng)網(wǎng)絡(luò)模型對(duì)1500條變異SQL注入攻擊樣本測(cè)試,顯示正常樣本369條,SQL注入1131條,準(zhǔn)確率75%,誤報(bào)率25%。

    通過(guò)實(shí)驗(yàn)分析,BP神經(jīng)網(wǎng)絡(luò)模型與CNN模型對(duì)普通SQL注入攻擊的識(shí)別能力相仿,其準(zhǔn)確率均為97%左右,但是,對(duì)SQL注入變異攻擊的識(shí)別能力,CNN模型遠(yuǎn)遠(yuǎn)優(yōu)于BP神經(jīng)網(wǎng)絡(luò),CNN準(zhǔn)確率為99%,而B(niǎo)P神經(jīng)網(wǎng)絡(luò)僅為75%。面對(duì)SQL變異快的特點(diǎn),基于CNN訓(xùn)練的SQL注入檢測(cè)模型具有更強(qiáng)的適應(yīng)性。

    5 結(jié)束語(yǔ)

    本文構(gòu)建基于卷積神經(jīng)網(wǎng)絡(luò)算法的SQL注入檢測(cè)模型,通過(guò)算法本身特性提取攻擊樣本的特征向量,從而降低漏洞檢測(cè)的誤報(bào)率;對(duì)多種類(lèi)型攻擊樣本進(jìn)行訓(xùn)練,實(shí)現(xiàn)多種攻擊(SQL注入與XSS)的檢測(cè);利用卷積神經(jīng)系統(tǒng)的非線性映射能力建立了多種攻擊行為的映射關(guān)系。通過(guò)實(shí)驗(yàn)驗(yàn)證了此算法的通用性,其不僅可以應(yīng)用在SQL注入檢測(cè),而且可以推廣到多種入侵行為的檢測(cè)。相比于BP神經(jīng)網(wǎng)絡(luò)模型,基于CNN的SQL注入檢測(cè)模型識(shí)別能力更優(yōu),具有更強(qiáng)的適應(yīng)性。當(dāng)然,在數(shù)據(jù)量極為龐大的時(shí)候,檢測(cè)模型的檢測(cè)速度會(huì)有所下降甚至影響正常訪問(wèn),完善模型的檢測(cè)速率將是后續(xù)研究的重點(diǎn)。

    猜你喜歡
    分詞卷積向量
    向量的分解
    基于3D-Winograd的快速卷積算法設(shè)計(jì)及FPGA實(shí)現(xiàn)
    聚焦“向量與三角”創(chuàng)新題
    結(jié)巴分詞在詞云中的應(yīng)用
    從濾波器理解卷積
    電子制作(2019年11期)2019-07-04 00:34:38
    基于傅里葉域卷積表示的目標(biāo)跟蹤算法
    值得重視的分詞的特殊用法
    向量垂直在解析幾何中的應(yīng)用
    向量五種“變身” 玩轉(zhuǎn)圓錐曲線
    一種基于卷積神經(jīng)網(wǎng)絡(luò)的性別識(shí)別方法
    长治市| 曲麻莱县| 凤山县| 镇原县| 甘谷县| 新津县| 改则县| 阜南县| 奉化市| 丹凤县| 望城县| 鹤壁市| 伊川县| 云林县| 新郑市| 开鲁县| 深水埗区| 浙江省| 绥阳县| 双牌县| 梁平县| 临猗县| 曲周县| 东丰县| 湛江市| 会昌县| 河南省| 九龙县| 广元市| 博乐市| 长子县| 乐昌市| 九台市| 阳原县| 黔西县| 清流县| 三原县| 外汇| 儋州市| 新乐市| 晋州市|