劉擁民,黃 浩,石婷婷,歐陽(yáng)金怡,劉翰林,謝鐵強(qiáng)
(1.中南林業(yè)科技大學(xué) 計(jì)算機(jī)與信息工程學(xué)院, 長(zhǎng)沙 410004;2.中南林業(yè)科技大學(xué) 智慧林業(yè)云研究中心, 長(zhǎng)沙 410004)
Web技術(shù)已成為當(dāng)前互聯(lián)網(wǎng)最熱門(mén)的應(yīng)用架構(gòu)之一,但卻經(jīng)常受到惡意攻擊。嚴(yán)重的網(wǎng)絡(luò)攻擊會(huì)帶來(lái)災(zāi)難性的數(shù)據(jù)泄露和丟失,因此為Web應(yīng)用程序建立入侵檢測(cè)機(jī)制十分重要。Web應(yīng)用程序基于HTTP協(xié)議進(jìn)行數(shù)據(jù)傳輸,攻擊者常常構(gòu)造惡意HTTP請(qǐng)求發(fā)起攻擊,使Web應(yīng)用程序承擔(dān)各種安全風(fēng)險(xiǎn)[1],如SQL注入和跨站腳本攻擊(cross-site scripting,CSS),因此針對(duì)HTTP文本進(jìn)行Web攻擊檢測(cè)是非常有效的手段。
防火墻、入侵檢測(cè)系統(tǒng)、Web應(yīng)用防火墻等安全產(chǎn)品中廣泛應(yīng)用的檢測(cè)方法是特征匹配。特征匹配[2-3]方法可精準(zhǔn)地檢測(cè)出已知特征的攻擊,但卻不能檢測(cè)未知特征的攻擊。當(dāng)前日益復(fù)雜的網(wǎng)絡(luò)環(huán)境及人工智能技術(shù)的發(fā)展使得研究重點(diǎn)轉(zhuǎn)向了能檢測(cè)未知攻擊的算法。如支持向量機(jī)[4]、決策樹(shù)[5]、隨機(jī)森林[6]、K-means[7]等機(jī)器學(xué)習(xí)方法。這類方法雖具有泛化能力,能檢測(cè)未知特征攻擊,但需要人工選擇特征,并且人工選取的特征類型對(duì)檢測(cè)的準(zhǔn)確率影響巨大。而使用深度學(xué)習(xí)方法可以避免人工選擇特征,因此有研究者們使用深度學(xué)習(xí)方法[8-9]自動(dòng)提取特征檢測(cè)攻擊。深度學(xué)習(xí)方法首先會(huì)使用詞典將HTTP文本非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)為結(jié)構(gòu)化數(shù)據(jù),但由于HTTP文本具有單詞可自定義特點(diǎn),生成的詞典過(guò)大,導(dǎo)致深度學(xué)習(xí)模型參數(shù)增多。故大多研究者為了減小詞典單詞量,只提取HTTP的部分?jǐn)?shù)據(jù)如URL[10]作為輸入,但這種方式會(huì)導(dǎo)致樣本失真,丟失部分攻擊載荷。此外,HTTP文本具有攻擊載荷位置不定性以及載荷語(yǔ)義復(fù)雜性,從而致使漏報(bào)率高,因此采用聚焦處理技術(shù)來(lái)分析攻擊載荷也就成為了當(dāng)前的研究熱點(diǎn)之一。
為解決深度學(xué)習(xí)模型參數(shù)過(guò)載和漏報(bào)攻擊載荷的問(wèn)題,提出將詞典輕量化,基于輕量級(jí)詞典預(yù)處理HTTP文本,減小深度學(xué)習(xí)模型的參數(shù)量;協(xié)同記憶聚焦處理模型定位攻擊載荷,處理攻擊載荷的復(fù)雜語(yǔ)義,以此提高Web攻擊檢測(cè)的準(zhǔn)確率,減小漏報(bào)率。
研究者們采用Web流量統(tǒng)計(jì)特征和HTTP請(qǐng)求文本作為輸入數(shù)據(jù)檢測(cè)Web攻擊。如Kim等[11]使用Web流量的統(tǒng)計(jì)特征作為輸入數(shù)據(jù)。Xie等[12]使用包層次統(tǒng)計(jì)特征和流層次統(tǒng)計(jì)特征兩者作為輸入數(shù)據(jù)。更多研究者們使用HTTP請(qǐng)求文本,對(duì)其采用了不同的預(yù)處理方式。如Sahingoz等[13]使用HTTP文本的URL作為輸入數(shù)據(jù),直接對(duì)URL進(jìn)行關(guān)鍵詞檢測(cè)而直接生成特征,使用該特征輸入至分類模型。Cheng等[14]提出的Web異常檢測(cè)方法,也使用了URL作為輸入數(shù)據(jù),其方法中使用了一種改進(jìn)的特征提取方法,利用了URL語(yǔ)義結(jié)構(gòu)的優(yōu)勢(shì),用來(lái)識(shí)別URL中每個(gè)部分的功能和漏洞。Tekerek[15]選擇的輸入數(shù)據(jù)是HTTP中的URL和payload,分割URL和payload的變量和值生成詞典,使用詞典將輸入數(shù)據(jù)轉(zhuǎn)化為矩陣,使用該矩陣訓(xùn)練模型。Liu等[16]選擇HTTP的訪問(wèn)路徑和訪問(wèn)參數(shù)作為輸入數(shù)據(jù),并進(jìn)行參數(shù)特征檢測(cè)和數(shù)據(jù)歸一化。
目前檢測(cè)Web攻擊使用的深度學(xué)習(xí)模型有卷積神經(jīng)網(wǎng)絡(luò)(convolutional neural network,CNN)、循環(huán)神經(jīng)網(wǎng)絡(luò)(recurrent neural network,RNN)、混合神經(jīng)網(wǎng)絡(luò)等。Tekerek[15]使用CNN來(lái)檢測(cè)Web攻擊,他將輸入數(shù)據(jù)預(yù)處理成一個(gè)數(shù)值矩陣,用CNN分析計(jì)算此矩陣得到檢測(cè)結(jié)果。JEMAL等[17]探索和評(píng)估用于Web應(yīng)用程序安全的深度學(xué)習(xí)技術(shù),通過(guò)實(shí)驗(yàn)分析了影響CNN檢測(cè)網(wǎng)絡(luò)攻擊的不同因素。Yang等[18]提出了一種基于關(guān)鍵字的卷積門(mén)控遞歸單元神經(jīng)網(wǎng)絡(luò)用于檢測(cè)惡意URL,使用GRU代替原來(lái)的池化層對(duì)時(shí)間維進(jìn)行特征獲取,得到了高精度的多類別結(jié)果。除基于GRU的循環(huán)神經(jīng)網(wǎng)絡(luò)外,還有基于LSTM的循環(huán)神經(jīng)網(wǎng)絡(luò)方法,如Song等[19]提出了一種基于雙向LSTM的模型用于XSS、CSRF等惡意攻擊。Vartouni等[20]在他們的Web應(yīng)用防火墻方法中提出了基于深度神經(jīng)網(wǎng)絡(luò)和并行特征融合的方法,采用堆疊自編碼器和深度信念網(wǎng)絡(luò)的混合模型進(jìn)行特征提取,用支持向量機(jī)、隨機(jī)森林等作為分類器來(lái)檢測(cè)Web攻擊。此外,Tekerek等[21]使用了基于特征的檢測(cè)和基于異常的檢測(cè)的混合模型來(lái)防止網(wǎng)絡(luò)攻擊,方法中基于異常的檢測(cè)模型是使用人工神經(jīng)網(wǎng)絡(luò)來(lái)實(shí)現(xiàn)的。
上述方法多為避免詞典過(guò)大導(dǎo)致模型參數(shù)過(guò)載,僅采用HTTP文本的部分?jǐn)?shù)據(jù)作為輸入,這會(huì)導(dǎo)致樣本失真進(jìn)而帶來(lái)攻擊載荷漏檢。加上Web攻擊載荷位置具有不確定性,部分攻擊載荷被遺漏,漏報(bào)率升高。本文中使用完整HTTP文本作輸入數(shù)據(jù),避免遺漏攻擊載荷,輕量化詞典減小模型參數(shù)量。此外,由于Web攻擊載荷語(yǔ)義復(fù)雜多變,模型僅分析文本整體語(yǔ)義不足以提高檢測(cè)率。受到注意力機(jī)制應(yīng)用在入侵檢測(cè)[22]上的啟發(fā),構(gòu)建基于多頭注意力機(jī)制[23]的記憶聚焦處理模型,定位攻擊載荷并聚焦分析復(fù)雜語(yǔ)義,提高準(zhǔn)確率,減小漏報(bào)率。
Web攻擊檢測(cè)方法框架包含預(yù)處理器和分類器。預(yù)處理器由輕量級(jí)詞典和基于輕量級(jí)詞典的預(yù)處理方式實(shí)現(xiàn),分類器由記憶聚焦處理模型實(shí)現(xiàn)。該方法的總體框架如圖1所示。

圖1 Web攻擊檢測(cè)方法框架
從時(shí)間序列上來(lái)看,Web攻擊檢測(cè)方法可以分成2個(gè)階段:訓(xùn)練階段和檢測(cè)階段。
訓(xùn)練階段可在任意一臺(tái)服務(wù)器上運(yùn)行。首先初始化并持久化保存輕量級(jí)詞典,同時(shí)初始化記憶聚焦處理模型參數(shù)。預(yù)處理器基于輕量級(jí)詞典、預(yù)處理規(guī)則及預(yù)處理算法將HTTP文本轉(zhuǎn)為結(jié)構(gòu)化數(shù)據(jù)傳入分類器。分類器調(diào)用記憶聚焦處理模型將數(shù)據(jù)轉(zhuǎn)為詞嵌入矩陣,分別作記憶分析與聚焦處理,再融合計(jì)算兩模塊的信息得出預(yù)測(cè)向量,并結(jié)合損失函數(shù)反向傳播更新模型參數(shù)。訓(xùn)練結(jié)束后持久化保存模型參數(shù)。
檢測(cè)階段將預(yù)處理器和分類器部署在Web應(yīng)用防火墻上用于在線檢測(cè)。部署后預(yù)處理器載入輕量級(jí)詞典,分類器載入記憶聚焦模型參數(shù),進(jìn)入Web攻擊在線檢測(cè)過(guò)程。Web中傳輸?shù)腍TTP未知樣本可經(jīng)由預(yù)處理器和分類器計(jì)算得預(yù)測(cè)向量,由argmax函數(shù)計(jì)算攻擊類型,輸出樣本的攻擊類型。
輕量級(jí)詞典由數(shù)據(jù)集數(shù)據(jù)和內(nèi)置數(shù)據(jù)生成,主要組成部分為占位符、特殊字符、通用高頻詞典、專家詞典以及數(shù)據(jù)集高頻詞典。其中占位符共有5個(gè),分別為_(kāi)PH_、_NL_、_DS_、_AS_、_MS_,代表占位、換行、純數(shù)字串、純字母串、混合串5種意義,并且在詞典中的索引指定為0、1、2、3、4。特殊字符是Web中經(jīng)常使用的標(biāo)點(diǎn)符號(hào),在詞典中的索引緊跟占位符后。通用高頻單詞由Web中經(jīng)常使用的非語(yǔ)法關(guān)鍵詞構(gòu)成。專家詞典是由各編程語(yǔ)言、標(biāo)記語(yǔ)言、結(jié)構(gòu)化查詢語(yǔ)言中經(jīng)常被用來(lái)攻擊的語(yǔ)法關(guān)鍵詞構(gòu)成。此外,為了輕量化詞典,將數(shù)據(jù)集中的隨機(jī)字符串、cookie值等無(wú)意義低頻單詞去除,生成數(shù)據(jù)集高頻單詞。輕量級(jí)詞典如表1所示。

表1 輕量級(jí)詞典
在將HTTP文本輸入檢測(cè)模型前,要先對(duì)文本進(jìn)行預(yù)處理,將非結(jié)構(gòu)化數(shù)據(jù)轉(zhuǎn)為結(jié)構(gòu)化數(shù)據(jù)。基于輕量級(jí)詞典配合預(yù)處理規(guī)則,可先將HTTP文本轉(zhuǎn)為通用格式文本,再將通用格式文本中各單詞替換為輕量級(jí)詞典中相應(yīng)的單詞索引,可得到整數(shù)編碼向量,用于輸入檢測(cè)模型。將HTTP文本轉(zhuǎn)為通用格式文本的預(yù)處理規(guī)則如下:
規(guī)則1單詞屬于輕量級(jí)詞典,并且單詞在句子中的位置小于通用格式文本指定長(zhǎng)度,保留單詞。
規(guī)則2單詞是換行符,并且單詞在句子中的位置小于通用格式文本指定長(zhǎng)度,替換為_(kāi)NL_。
規(guī)則3單詞完全由數(shù)字0~9組成,并且單詞在句子中的位置小于通用格式文本指定長(zhǎng)度,替換為_(kāi)DS_。
規(guī)則4單詞完全由字母a~z組成,并且單詞在句子中的位置小于通用格式文本指定長(zhǎng)度,替換為_(kāi)AS_。
規(guī)則5單詞由字母a~z、數(shù)字0~9和其他字符混合組成, 并且單詞在句子中的位置小于通用格式文本指定長(zhǎng)度,替換為_(kāi)MS_。
規(guī)則6句子長(zhǎng)度小于通用格式文本指定長(zhǎng)度,添加_PH_。
規(guī)則7句子長(zhǎng)度大于通用格式文本指定長(zhǎng)度,丟棄多余單詞。
預(yù)處理過(guò)程的偽代碼描述如算法1所示。在執(zhí)行預(yù)處理規(guī)則之前要先解碼HTTP文本中的URL編碼,并依照輕量級(jí)詞典中的特殊字符對(duì)HTTP文本進(jìn)行分詞處理得到單詞列表。然后初始化一條空的通用格式文本列表,對(duì)單詞列表中的單詞逐一處理后填入通用格式文本列表中。最后將通用格式文本列表中的單詞替換為索引,返回整數(shù)編碼向量。
算法1基于輕量級(jí)詞典的預(yù)處理算法
Input: (R,n,V,S)
Output: (Q)
R← urldecode(R); //解碼R中的URL編碼
W[] ← split(R,S); //S作分隔符分割出單詞列表
Q[] ← initialize_length(n); //初始化列表Q長(zhǎng)度為n
fori=0 tondo //逐單詞進(jìn)行預(yù)處理
ifi>= length(W) do
Q[i] ← “_PH_”
continue;
end if
word← tolower(W[i]);
ifwordinVdo
Q[i]←V[word];
else ifwordis newline symbol do
Q[i]← “_NL_”;
else ifwordis number do
Q[i]← “_DS_”;
else ifwordis pure letter string do
Q[i]← “_AS_”;
elsewordis mixed string do
Q[i]← “_MS_”;
end if
end for
foritondo //通用格式文本轉(zhuǎn)為整數(shù)編碼向量
Q[i]←V[Q[i]];
end for
returnQ; //返回整數(shù)編碼向量
其中:R為HTTP請(qǐng)求文本字符串;n為通用格式文本的長(zhǎng)度;D為輕量化詞典,鍵為單詞,值為單詞索引;S為分隔符列表,元素為輕量級(jí)詞典中的特殊字符;Q為整數(shù)編碼向量。
預(yù)處理一條樣本的樣例如下:
1) 含URL編碼的SQL注入攻擊樣本
GET http://localhost:8080/tienda1/publico/vaciar.jsp?B2=Vaciar+carrito%27%3B+DROP+TABLE+usuarios%3B+SELECT+*+FROM+datos+WHERE+nombre+LIKE+%27%25 HTTP/1.1
User-Agent:Mozilla/5.0 (compatible; Konqueror/3.5; Linux) KHTML/3.5.8 (like Gecko)
…
Cookie:JSESSIONID=BDF1F164FC252B1351
B09758629AEE54
Connection:close
2) 預(yù)處理后生成的通用格式文本
get http://localhost:_DS_ /tienda1 /publico /vaciar.jsp ? b2=vaciar+carrito′;+drop+table+usuarios ;+select+*+from+datos+where+nombre+like+′% http /_DS_._DS_ _NL_ user-agent:… cookie:jsessionid=_MS_ _NL_ connection:close
3) 預(yù)處理后生成結(jié)構(gòu)化數(shù)據(jù)整數(shù)編碼向量
[89,74,31,15,15,46,31,2,15,88,15,90,15,135,14,39,35,153,7,135,27,125,12,11,27,258,27,261,27,262,11,27,264,27,23,27,238,27,265,27,266,27,91,27,95,27,12,20,74,15,2,14,2,1,77,6,…,115,31,47,0,0,0,…,0,0,0,0,0,0]
如圖1所示,分類器的具體實(shí)現(xiàn)為記憶聚焦處理模型,包含4個(gè)模塊:嵌入矩陣、記憶分析模塊、聚焦處理模塊和融合計(jì)算模塊。嵌入矩陣將整數(shù)編碼向量轉(zhuǎn)為嵌入向量矩陣,嵌入向量矩陣經(jīng)過(guò)記憶分析模塊與聚焦處理模塊分別處理后由融合計(jì)算模塊輸出預(yù)測(cè)向量。
嵌入矩陣E的維度為D×N,其中D是詞嵌入向量的維度,N是詞典的單詞量大小。假設(shè)一個(gè)整數(shù)編碼向量所對(duì)應(yīng)的one-hot詞向量矩陣為Q,Q的維度為N×n,其中n為整數(shù)編碼向量的長(zhǎng)度。可由式(1)計(jì)算出其對(duì)應(yīng)的詞嵌入向量矩陣X,維度為D×n。
X=E·Q
(1)
記憶分析模塊增強(qiáng)模型的信息記憶能力,加強(qiáng)模型對(duì)數(shù)據(jù)宏觀上的分析能力。此模塊由多個(gè)BiLSTM和一個(gè)全連接層串聯(lián)而成。LSTM是遞歸神經(jīng)網(wǎng)絡(luò)的一種,LSTM由細(xì)胞狀態(tài)和遺忘門(mén)、輸入門(mén)和輸出門(mén)組成,計(jì)算公式如式(2)—(7)所示,其中的WC、Wf、Wi、Wo分別為細(xì)胞狀態(tài)、遺忘門(mén)、輸入門(mén)和輸出門(mén)的權(quán)重矩陣;bC、bf、bi、bo為細(xì)胞單元和各門(mén)控單元的偏置項(xiàng);σ為sigmoid函數(shù);tanh為雙曲正切函數(shù)。遺忘門(mén)計(jì)算的公式為:
ft=σ(Wf·[ht-1,xt]+bf)
(2)
式中:ht-1為前一時(shí)刻的隱層狀態(tài);xt為當(dāng)前輸入詞。輸入門(mén)it計(jì)算公式為:
it=σ(Wi·[ht-1,xt]+bi)
(3)
(4)
當(dāng)前時(shí)刻細(xì)胞狀態(tài)Ct計(jì)算公式為:
(5)
輸出門(mén)和當(dāng)前時(shí)刻隱層狀態(tài)計(jì)算公式為:
ot=σ(Wo·[ht-1,xt]+bo)
(6)
ht=ot*tanh(Ct)
(7)
通過(guò)計(jì)算最終能夠得到與句子長(zhǎng)度相同的隱層狀態(tài)序列[h0,h1,…,hn-1]。
因HTTP文本中包含程序代碼,為更精確地分析函數(shù)定義和調(diào)用行為信息,采用BiLSTM進(jìn)行記憶和分析。BiLSTM拼接前向隱含狀態(tài)h=[h0,h1,…,hn-1]和后向隱含狀態(tài)h′=[h0′,h1′,…,hn-1′]整合得H。前方的BiLSTM模塊使用下式進(jìn)行隱含狀態(tài)融合:
H={[h0,h0′],[h1,h1′],…,[hn-1,hn-1′]}
(8)
而最后的BiLSTM模塊的隱含狀態(tài)融合公式為:
H=[hn-1,h0′]
(9)
記憶分析模塊全連接輸出層的計(jì)算公式為:
OM=ReLU(WBi·H+bBi)
(10)
式中:OM為記憶分析模塊的輸出向量;WBi為記憶分析模塊全連接輸出層的權(quán)重;bBi為記憶分析模塊全連接輸出層的偏置項(xiàng);ReLU為線性整流函數(shù)。
聚焦處理模塊增強(qiáng)模型的聚焦處理能力,使模型注意力集中至攻擊載荷,致力于分析復(fù)雜語(yǔ)義。聚焦處理模塊參考Transformer的Encoder結(jié)構(gòu)[16],由多個(gè)多頭注意力層、1個(gè)卷積降維(convolution dimension reduction,CDR)層和1個(gè)全連接層組成。多頭注意力層包含多頭注意力子層和全連接前饋網(wǎng)絡(luò)子層,每個(gè)子層周?chē)际褂靡粋€(gè)殘差連接和Dropout層,再執(zhí)行層歸一化,每個(gè)子層的輸出為L(zhǎng)ayerNorm(x+Dropout(Sublayer(x))。其中Sublayer(x)是子層實(shí)現(xiàn)的函數(shù)本身,每個(gè)子層產(chǎn)生的維度dmodel。其中多頭注意力子層有3個(gè)輸入Q(Query)、K(key)、V(value),這些輸入經(jīng)過(guò)線性層,并拆分成多頭。將式(11)應(yīng)用到每個(gè)頭,其中dk為K向量的維度。最后連接各注意力頭的輸出,并放入線性層。
(11)
此外,詞嵌入向量矩陣X經(jīng)聚焦處理模塊處理前須加上位置編碼PE,添加詞之間的位置信息。位置編碼PE的計(jì)算公式為:
PE(pos,2i)=sin(pos/10 0002i/dmodel)
(12)
PE(pos,2i+1)=cos(pos/10 0002i/dmodel)
(13)
式中:pos是位置,i是維數(shù)。尾端多頭注意力層連接卷積降維層,特別的是此層只有1個(gè)n×1的卷積核。此卷積降維層可將n×dmodel的矩陣轉(zhuǎn)成維度為dmodel的向量。卷積降維層后接全連接層得到長(zhǎng)度與OM長(zhǎng)度一致的向量OF。
融合計(jì)算模塊負(fù)責(zé)結(jié)果的輸出,通過(guò)綜合決策與計(jì)算輸出最終的結(jié)果。使用如下公式將OM、OF融合為向量I:
I=[α·OΜ+β·OF,OΜ,OF]
(14)
式中:α和β分別是OM和OF的融合系數(shù),具體取值由模型在訓(xùn)練過(guò)程中計(jì)算得到。經(jīng)過(guò)2層全連接層,由下式計(jì)算得到預(yù)測(cè)向量ypre。
ypre=softmax (W2·ReLU(W1·I+b1)+b2)
(15)
式中:W1、W2分別為全連接層的權(quán)重矩陣;b1、b2為全連接層的偏置項(xiàng)。最后一層的神經(jīng)元個(gè)數(shù)為數(shù)據(jù)集的類型數(shù)c。
在訓(xùn)練階段,分類器使用多分類交叉熵?fù)p失函數(shù)為目標(biāo)函數(shù)。首先計(jì)算損失向量L:
(16)
式中:yti為符號(hào)函數(shù),如果樣本的真實(shí)類別等于i,取1,否則取0,ypi為樣本屬于類別i的預(yù)測(cè)概率,即ypre向量的各元素值。由下式對(duì)每一批次向量求平均得損失值Lbatch,反向傳播更新模型權(quán)值,其中N為每批數(shù)據(jù)量。
(17)
而在檢測(cè)階段,前向傳播計(jì)算得到預(yù)測(cè)向量ypre,用argmax函數(shù)對(duì)ypre計(jì)算得到最終的結(jié)果。
實(shí)驗(yàn)使用了數(shù)據(jù)集HTTP DATASET CSIC 2010[24]和Simulation Dataset。HTTP DATASET CSIC 2010是由西班牙研究委員會(huì)信息安全研究所編制的公開(kāi)數(shù)據(jù)集,包括正常和異常2種類型。而Simulation Dataset是本文使用Metasploiable2 Linux靶機(jī)和Kali Linux 2021.1攻擊機(jī)模擬真實(shí)環(huán)境而制作的數(shù)據(jù)集,攻擊載荷位置多樣化。此數(shù)據(jù)集有Normal、Injection、XSS、Data Exposure、RCE共5種類型標(biāo)簽。數(shù)據(jù)集隨機(jī)打亂6∶2∶2比例切分生成訓(xùn)練集、驗(yàn)證集、測(cè)試集。Simulation Dataset各數(shù)據(jù)量如表2所示。

表2 Simulation Dataset
嵌入矩陣中詞嵌入向量的維度D設(shè)置為64,通用格式文本長(zhǎng)度n設(shè)置為512。記憶分析模塊有2個(gè)BiLSTM模塊和1個(gè)全連接層,神經(jīng)元個(gè)數(shù)設(shè)置為16,其中全連接層使用ReLU激活函數(shù)。聚焦處理模塊有2個(gè)多頭注意力層模塊,dmodel為64,8個(gè)注意力頭,全連接前饋網(wǎng)絡(luò)子層共兩層,神經(jīng)元個(gè)數(shù)分別為16和64,使用ReLU激活函數(shù)。融合計(jì)算模塊兩層全連接層,第一層16個(gè)神經(jīng)元,ReLU激活函數(shù),第二層c個(gè)神經(jīng)元,使用softmax激活函數(shù),其中c為擬分類的數(shù)量。優(yōu)化方法為Adam,設(shè)置β1=0.9,β2=0.98,ε=1×10-9,并使用了一個(gè)自定義的學(xué)習(xí)速率,自定義學(xué)習(xí)速率lr如式(18)所示,其中warmup_steps=4 000,step_num為梯度下降的步數(shù)。
step_num*warmup_steps-1.5)
(18)
對(duì)比的分類模型為FCNN、CNN、LSTM、GRU、CNN-LSTM、CNN-GRU。對(duì)比的預(yù)處理方式為2種:URL_CHAR,將URL處理成字符級(jí)向量;URL_WORD,將URL處理成單詞級(jí)向量。
采用攻擊檢測(cè)和深度學(xué)習(xí)領(lǐng)域中常用的幾個(gè)評(píng)價(jià)指標(biāo)進(jìn)行量化分析,分別是:準(zhǔn)確率(accuracy)、誤報(bào)率(false alarm rate,FAR)、漏報(bào)率(missing alarm rate,MAR)、ROC曲線、AUC值。公式如下所示:
(19)
(20)
(21)
選擇某種攻擊類型為陽(yáng)性,其余類型為陰性,則TP為分類陽(yáng)性樣本正確的數(shù)量,TN為分類陰性樣本正確的數(shù)量,FP為分類陽(yáng)性樣本錯(cuò)誤的數(shù)量,FN為分類陰性樣本錯(cuò)誤的數(shù)量。其中,在深度學(xué)習(xí)的評(píng)價(jià)指標(biāo)中,誤報(bào)率也為假陽(yáng)性率(false positive rate,FPR),漏報(bào)率為假陰性率(false negative rate,FNR)。
使用3種不同的預(yù)處理方式來(lái)預(yù)處理Simulation Dataset,在記憶聚焦處理模型上進(jìn)行檢測(cè)。統(tǒng)計(jì)各自預(yù)處理方式生成的詞典單詞量、模型嵌入矩陣參數(shù)量以及檢測(cè)指標(biāo),實(shí)驗(yàn)結(jié)果如表3所示。

表3 3種預(yù)處理方式在Simulation Dataset上的 實(shí)驗(yàn)結(jié)果
從結(jié)果可知,數(shù)據(jù)集經(jīng)本文提出的新方法預(yù)處理,詞典單詞量以及模型嵌入矩陣參數(shù)量介于URL_CHAR和URL_WORD之間。本文預(yù)處理方法相對(duì)URL_WORD有效地減小了詞典的單詞量和模型參數(shù)量。詞典單詞量和模型參數(shù)量雖然沒(méi)有低于URL_CHAR,但是準(zhǔn)確率卻高于URL_CHAR,且同時(shí)高于URL_WORD。這是新方法采用完整HTTP作為輸入數(shù)據(jù),不會(huì)遺漏攻擊載荷,并且輕量級(jí)詞典處理后也不會(huì)丟失攻擊載荷的關(guān)鍵信息,所以能提高檢測(cè)準(zhǔn)確率。
本文針對(duì)HTTP DATASET CSIC 2010,分別使用URL_CHAR和URL_WORD這2種預(yù)處理方式進(jìn)行預(yù)處理,再分別搭配7種不同的分類模型進(jìn)行檢測(cè),得到14種檢測(cè)方法的準(zhǔn)確率、誤報(bào)率和漏報(bào)率,以探究本文模型的有效性。實(shí)驗(yàn)結(jié)果如表4所示。
可知使用URL_WORD比URL_CHAR的檢測(cè)準(zhǔn)確率高,其中URL_WORD搭配本文記憶聚焦處理模型的檢測(cè)準(zhǔn)確率最高。雖誤報(bào)率略高于GRU和LSTM模型,但漏報(bào)率遠(yuǎn)低于其他模型。這是因?yàn)榫劢固幚砟P椭械亩囝^注意力機(jī)制自動(dòng)定位并分析攻擊載荷,有效地降低了復(fù)雜語(yǔ)義攻擊載荷的漏報(bào)。且雙向長(zhǎng)短時(shí)記憶模塊能夠提升整體記憶能力,故擁有較高的整體準(zhǔn)確率。

表4 14種檢測(cè)方法在CSIC 2010上的實(shí)驗(yàn)結(jié)果
使用表4中的12種常見(jiàn)經(jīng)典模型檢測(cè)方法與本文的Web攻擊檢測(cè)方法在Simulation Dataset上進(jìn)行檢測(cè)。實(shí)驗(yàn)結(jié)果如表5所示。
顯然在攻擊載荷的位置更多樣化的數(shù)據(jù)集上,本文Web攻擊檢測(cè)新方法的檢測(cè)準(zhǔn)確率最高,誤報(bào)率和漏報(bào)率更低。對(duì)于攻擊載荷不在URL上的攻擊樣本,采用URL作為輸入數(shù)據(jù)的檢測(cè)方法漏檢率為100%。而本文方法輸入完整HTTP文本,能夠增強(qiáng)此類樣本的檢測(cè)率,但引入的大量單詞可能導(dǎo)致模型參數(shù)過(guò)載,但經(jīng)過(guò)詞典輕量化后可有效減輕此問(wèn)題。此外,在誤報(bào)率和漏報(bào)率上,本文提出的新方法也處于領(lǐng)先地位。說(shuō)明本文的記憶聚焦處理模型是降低漏報(bào)率的有效因素。

表5 本文方法與12種檢測(cè)方法在Simulation Dataset上的實(shí)驗(yàn)結(jié)果
圖2—5為實(shí)驗(yàn)結(jié)果的ROC曲線,分別為4種攻擊類型的曲線。為了更好區(qū)分,選取繪圖區(qū)間FPR∈[-0.01,0.5],TPR∈[0.5,1.01],放大整體曲線圖的左上區(qū)域。

圖2 Injection攻擊類型ROC曲線

圖4 DE攻擊類型ROC曲線

圖5 RCE攻擊類型ROC曲線
可以看出,本文中提出的新方法ROC曲線表現(xiàn)最好,且AUC值相對(duì)最高,反映了新方法相比其他常見(jiàn)經(jīng)典方法具備更好的綜合性能。
為了直觀查看記憶聚焦處理模型處理一條樣本時(shí)的聚焦過(guò)程,使用如下所示的SQL注入樣本輸入至模型。
SQL注入樣本:
GET/dvwa/vulnerabilities/sqli?query=query%22+UNION+ALL+select+NULL+--+ HTTP/1.1
User-Agent:Mozilla/5.0 (X11; Linux x86_64; rv:78.0) Gecko/20100101 Firefox/78.0
…
Upgrade-Insecure-Requests:1
Content-Length:0
Host:192.168.52.129
可知模型的各注意力頭所聚焦的位置不盡相同,但總體上更多的注意力聚焦在了“"”“all”“null”“union”“-”等單詞上。這些單詞正是此條SQL注入樣本的攻擊載荷的組成部分,這說(shuō)明記憶聚焦處理模型的多頭注意力機(jī)制能夠自動(dòng)聚焦分析樣本中的異常部分,能夠更精準(zhǔn)地分析復(fù)雜語(yǔ)義攻擊載荷,這對(duì)減小漏報(bào)率起到了關(guān)鍵的作用。
使用本文Web攻擊檢測(cè)方法與其他12種Web攻擊檢測(cè)方法在2個(gè)不同的數(shù)據(jù)集上進(jìn)行攻擊檢測(cè)實(shí)驗(yàn),計(jì)算檢測(cè)單條樣本的時(shí)間開(kāi)銷。時(shí)間開(kāi)銷如表6所示。

表6 檢測(cè)單條樣本的時(shí)間開(kāi)銷 ms

續(xù)表(表6)
由時(shí)間開(kāi)銷、檢測(cè)準(zhǔn)確率、漏報(bào)率等指標(biāo)分析,可知:準(zhǔn)確率較高的檢測(cè)方法檢測(cè)單條樣本的時(shí)間開(kāi)銷也較大。故如何在保證高準(zhǔn)確率和低漏報(bào)率的情況下降低時(shí)間開(kāi)銷即為下一步研究?jī)?nèi)容。
選取完整HTTP文本作為輸入數(shù)據(jù),避免了遺漏攻擊載荷;將詞典進(jìn)行輕量化并結(jié)合輕量級(jí)詞典和預(yù)處理規(guī)則將HTTP文本處理成通用格式文本后,再轉(zhuǎn)為整數(shù)編碼向量,有效減輕了模型參數(shù)過(guò)載;同時(shí)為聚焦分析攻擊載荷的復(fù)雜語(yǔ)義信息,進(jìn)而構(gòu)建基于雙向長(zhǎng)短時(shí)記憶和多頭注意力機(jī)制相結(jié)合的記憶聚焦處理模型。利用模型記憶分析長(zhǎng)序列文本和聚焦處理分析攻擊載荷,降低了漏報(bào)率。實(shí)驗(yàn)結(jié)果表明,新提出的Web攻擊檢測(cè)方法能有效提升檢測(cè)準(zhǔn)確率和減小漏報(bào)率,且能大量縮小詞典單詞量,并減輕模型參數(shù)過(guò)載。未來(lái)將嘗試采用輕量化模型以降低時(shí)間開(kāi)銷,確保漏報(bào)率盡可能低,進(jìn)一步降低誤報(bào)率。