国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于模糊測試和集成學習的XSS攻擊檢測方法

2023-06-23 09:34馬征陳學斌張國鵬
關(guān)鍵詞:測試用例決策樹分類器

馬征,陳學斌,張國鵬

(1. 華北理工大學 理學院,河北 唐山 063210;2.河北省數(shù)據(jù)科學與應(yīng)用重點實驗室,河北 唐山 063000;3. 唐山市數(shù)據(jù)科學重點實驗室,河北 唐山 063000)

引言

由開放式Web應(yīng)用程序安全項目(OWASP)[1]最新發(fā)布的"十大最關(guān)鍵的Web應(yīng)用安全風險"中,Web應(yīng)用漏洞每年給國民經(jīng)濟造成巨大損失,在XSS攻擊中,攻擊者可以竊取受害者的會話cookie,進而收集到受害者的敏感數(shù)據(jù),在瀏覽器中實現(xiàn)鍵盤記錄器,從而損害了相關(guān)網(wǎng)站的聲譽,因此引起了更多企業(yè)和組織對Web應(yīng)用安全漏洞的關(guān)注。

隨著網(wǎng)絡(luò)安全知識的不斷普及,Web應(yīng)用安全成為國內(nèi)外研究者的研究熱點,現(xiàn)有基于過濾器、動態(tài)分析、靜態(tài)分析、機器學習檢測、深度學習檢測等解決方案。黃文鋒[2]提出了一種采用擴展的巴科斯范式構(gòu)造XSS語義向量與網(wǎng)絡(luò)二次爬蟲相結(jié)合的方法來檢測XSS,能夠有效的繞過服務(wù)器端的過濾,但未制定反爬措施,僅限于開發(fā)者自己使用,局限性較大。倪萍等[3]提出了一種基于模糊測試的漏洞檢測系統(tǒng),通過爬蟲技術(shù)提取注入點,根據(jù)攻擊載荷的語法形式構(gòu)造模糊測試用例,并根據(jù)網(wǎng)站響應(yīng)調(diào)整權(quán)重,從而生成更加高效的攻擊載荷,有效的降低誤報率,在有監(jiān)督學習上取得了較好的檢測效果,但并不能單獨作為一種檢測工具來使用。文獻[4]提出了一種基于多層感知器的模型來檢測XSS攻擊,他們從內(nèi)容上提取了基于URL、基于HTML、基于JavaScript的功能,如URL長度和URL中的特殊字符,HTML標簽、JavaScript事件,在檢測攻擊方面達到了99.32%的準確性,但不能實時檢測到XSS攻擊。

目前在XSS攻擊檢測識別上應(yīng)用比較廣泛的典型的機器學習模型有:支持向量機(Support Vector Machines,SVM)、隨機森林(Random Forest)、樸素貝葉斯等方法。趙澄等[5]把具有代表性的五維特征向量化,使用SVM進行訓(xùn)練和測試。顧兆軍等[6]通過對比樸素貝葉斯和支持向量機兩種方法檢測XSS攻擊。結(jié)果表明,SVM取得了最佳性能,但攻擊樣本不夠豐富,都是基于小數(shù)據(jù)集。文獻[7]將攻擊語句改為URL格式,將攻擊語句劃分單詞,計算分類中出現(xiàn)的單詞頻率,通過基于word2vec的模型將單詞轉(zhuǎn)換成向量,對向量使用分類算法,結(jié)果表明SVM是檢測的最佳過濾器,但存在著數(shù)據(jù)集不平衡問題。文獻[8]開發(fā)了隨機森林、KNN和SVM模型來檢測惡意XSS代碼,他們提取了包含惡意JavaScript中的一組特殊字符,把惡意JavaScript中使用的函數(shù)和命令作為行為特征,達到了99.75的準確度,但涉及的特征過少不能充分表示XSS攻擊。文獻[9]提出了一種基于深度的框架來檢測惡意JavaScript,框架中包含邏輯回歸、深度學習方法和稀疏隨機投影,他們通過堆疊去噪自動編碼器從JavaScript代碼中提取特征,這些功能用于訓(xùn)練SVM或邏輯回歸模型,通過邏輯回歸對惡意代碼進行分類,模型達到了94.9%的精度。丁雪川等[10]通過LSTM深度學習算法實現(xiàn)自動提取深層次特征,利用word2vec提取樣本用向量表示,能達到99.5%的準確度,但沒有設(shè)計可視化的XSS檢測平臺導(dǎo)致不能直觀表示。朱思猛等[11]提出了利用循環(huán)神經(jīng)網(wǎng)絡(luò)生成惡意攻擊樣本,設(shè)計評分函數(shù)加固簽名,加固WAF抵御惡意攻擊從而降低安全風險、但沒有根據(jù)WAF的反饋來強化神經(jīng)網(wǎng)絡(luò)的學習。

針對傳統(tǒng)的XSS檢測器存在測試用例過于冗余、不平衡數(shù)據(jù)集等問題,本文提出一種基于模糊測試和集成學習的XSS攻擊檢測方法,加入里安全向量生成器解決了不平衡數(shù)據(jù)集問題;通過模糊測試技術(shù)檢測XSS測試用例,去除了冗余的無效向量進而提升檢測效率;最后針對單分類器檢測效率低的問題,采用了集成學習方法對XSS攻擊進行檢測。

1方法設(shè)計

1.1 XSS樣本預(yù)生成

通過XSS Filter Evasion Cheat Sheet收集到XSS測試用例作為初始樣本,XSS Filter Evasion Cheat Sheet是由OWASP[12]組織發(fā)布的XSS過濾備忘單,它記錄了包括基于屬性、事件、HTML標簽、CSS、XML等各種類型的XSS測試用例,同時也包括了XSS測試用例加前綴、字母變換大小寫、轉(zhuǎn)編碼等各種方式來實現(xiàn)服務(wù)器端的繞過。

隨著網(wǎng)站過濾的機能逐漸強大,部分XSS測試用例在低版本的瀏覽器能夠成功攻擊,在高版本的瀏覽器中會被過濾掉,本文將通過模糊測試[13]的方法對無效的測試用例進行過濾,基于模糊測試和XSS測試集的XSS攻擊樣本生成的流程如圖1所示。

圖1 XSS攻擊樣本生成流程

模糊測試的步驟如下:

(1)輸入初始XSS測試集(XSS Filter Evasion Cheat Sheet)作為模糊測試的測試用例;

(2)模擬攻擊方式,將測試用例輸入至網(wǎng)站中并執(zhí)行操作;

(3)監(jiān)測攻擊結(jié)果,看是否有彈窗顯示用來判斷是否進行了XSS攻擊,若判斷攻擊成功則保存XSS測試用例,作為XSS攻擊樣本,若攻擊失敗則遺棄;

(4)不斷進行重復(fù)(2)、(3)步驟,直至XSS測試集中的測試用例全都檢測完畢,算法結(jié)束。

目標程序DVWA用來檢測Web應(yīng)用是否安全,初始界面是一個具有留言簿的界面,如圖2(a)所示,通過輸入XSS測試用例,輸入到"message"下,提交后得到新界面,不斷輸入XSS測試用例,判斷瀏覽器是否彈出彈窗,彈窗如圖2(b)所示,若未出現(xiàn)彈窗則證明此XSS測試用例無效,若出現(xiàn)彈窗,則證明此XSS測試用例攻擊用例有效,直至模糊測試結(jié)束,最終得到預(yù)生成的XSS攻擊樣本X。

圖2 模糊測試檢測XSS測試用例

1.2 安全向量生成器

生成的安全向量保持在128個字符之內(nèi),其中的類型包括:

(1)僅包含大寫或小寫的字符串;

例如:kikDfuPLasVpSDqfKLMUTbyDAssjedEhphsOSPUnxO

(2)包含所有字母和數(shù)字的字符串;

例如:BqAoxOrvaovydRv8QuQmQvoAk6hUbTaUFx18al7jYZ

(3)包含所有字母、數(shù)字和特殊字符的字符串。

例如:>!d[;p02LzJ,`5"hVCqAPXonVtrQ]L9`JBD=8L

生成的安全向量取決于XSS攻擊向量的個數(shù),用來保持XSS和數(shù)據(jù)集的安全樣本之間的平衡,平衡的數(shù)據(jù)集用于訓(xùn)練和測試模型。安全向量生成器如圖3所示:

圖3 安全向量生成器

1.3 基于集成學習方法的攻擊檢測模型

在集成學習[14-15]中,基礎(chǔ)模型有3種組合方式。Bagging: 在bagging (bootstrap聚合) 中,弱學習算法適用于小樣本數(shù)據(jù)集,并對所有學習者進行平均預(yù)測,裝袋將減少差異。Boosting: 它是一種迭代方法,在boosting樣本權(quán)重的基礎(chǔ)上根據(jù)前面的分類進行調(diào)整。Stacking:一個模型的輸出作為另一個模型的輸入,基于所使用的模型,堆疊將減少方差或偏差。

1.3.1基于隨機森林的檢測模型

隨機森林是多重決策樹集合的算法,采用決策樹作為基學習器,每個決策樹都是數(shù)據(jù)集的一個子集,通過對M個XSS攻擊樣本集和安全向量樣本集中抽取m個特征和樣本進行訓(xùn)練,共進行k輪抽取,形成K個學習器,每顆決策樹的特征是由對當前決策樹分類節(jié)點進行部分抽樣而不是建立每顆決策樹進行抽樣,通過決策樹算法對XSS攻擊樣本和安全向量樣本進行訓(xùn)練。Sklearn的隨機森林分類器依據(jù)"少數(shù)服從多數(shù)"的原則進行投票,采用大部分決策樹得到的結(jié)果作為分類輸出結(jié)果,隨機森林模型的優(yōu)點是不需要設(shè)置過多超參數(shù),即可判斷每個特征與預(yù)測標簽的相關(guān)性,隨機森林模型流程如圖4所示。

圖4 隨機森林模型

1.3.2基于極端隨機樹的檢測模型

極端隨機樹(Extremely randomized trees)是由于隨機森林中出現(xiàn)隨機有放回的取樣導(dǎo)致樣本不能被充分利用,從而引起各個基分類決策樹之間的相似程度高。它與隨機森林分類器相比,只是特征是隨機選擇的,極端隨機樹采取對全部數(shù)據(jù)集進行訓(xùn)練,在某種程度上比隨機森林得到的結(jié)果更加好,因為該模型在每次分裂或分枝時都會隨機選擇一個特征子集進行分枝特征選擇,而且該模型不需要選擇最佳閾值,而是采取隨機閾值進行分枝,這種增加的隨機性有助于創(chuàng)建更多彼此獨立的決策樹。

1.3.3基于Adaboost的攻擊檢測模型

Adaboost集成學習算法是一種迭代算法,它是提升方法中最為廣泛的一種形式,其核心思想是通過加權(quán)投票的方式把組合弱分類器起來,產(chǎn)生最終的預(yù)測進而構(gòu)成一個強分類器。它通過對個體分類器有序地訓(xùn)練來進行提升,而且各個分類器地結(jié)果是互相關(guān)聯(lián)的,后一個分類器的分類過程會受到前一個分類器的影響,所以每一個分類器的權(quán)重不一樣,每一次推舉迭代(boosting iteration)中,數(shù)據(jù)修改(data modifications)會把權(quán)重,分配給每一個訓(xùn)練樣本。在迭代開始的時候,所有的樣本權(quán)重都被設(shè)置Wi=1/N,這樣第一步迭代就是在原始數(shù)據(jù)上簡單訓(xùn)練一個弱分類器,在后續(xù)的迭代步驟中,樣本權(quán)重會被單獨修改,通過增加當前基分類器錯分樣本、比較難預(yù)測樣本的權(quán)重,使得下一個分類器去關(guān)注錯分樣本和權(quán)重較高的難分樣本上,從而提高集成分類器的精度,并支持向量機作為基分類器,通過Adaboost集成學習的方法檢測XSS攻擊向量,AdaBoost模型流程如圖5所示。

1.3.4基于SVM的Bagging檢測模型

本文使用SVM算法可以作為基學習器,支持向量機能夠高效的實現(xiàn)訓(xùn)練樣本和預(yù)測樣本的結(jié)合,簡化了分類問題,具有較高的魯棒性。Bagging方法是采樣生成n個訓(xùn)練集,每個訓(xùn)練集生成各個基學習器,n個訓(xùn)練集共得到n個模型,對分類算法預(yù)測,依據(jù)投票原則把n個弱學習器投票數(shù)最多的類或者類之一判定為最終類別,基于SVM的Bagging模型流程如圖6所示。

圖6 Bagging模型

1.3.5基于梯度提升樹的檢測模型

梯度提升決策樹算法(Gradient Boosting Decision Tree,GBDT)是集成學習Boosting中的一種。該算法通過向前分布式迭代,把迭代中損失函數(shù)達到最小作為目標,每次迭代通過沿著負梯度方向調(diào)整回歸樹,逐漸減小殘差值,不斷對基學習器進行學習和調(diào)整對應(yīng)權(quán)重,最終獲取一個使得損失函數(shù)值達到最小的基學習器。

1.3.6基于直方圖的梯度提升分類的檢測模型

通過使用直方圖,可以進一步調(diào)整樹構(gòu)造算法。把決策樹作為HGBC的基分類器,HGBC可以處理缺失值,因此對缺失值(NaN)具有原生支持。在訓(xùn)練過程中,樹種植者根據(jù)潛在增益在每個分割點學習具有缺失值的樣本是應(yīng)該去左子樹節(jié)點還是右子樹節(jié)點。在模型預(yù)測時,把缺失值的樣本重新分配給左子樹節(jié)點或右子樹節(jié)點,更好的處理了缺失值的問題。如果在訓(xùn)練期間未出現(xiàn)相關(guān)特征的缺失值,則把相關(guān)缺失值的樣本映射到具有更多樣本的子節(jié)點。本文通過直方圖梯度提升分類模型來進行建模,并通過網(wǎng)格搜索算法進行模型的調(diào)優(yōu),促使模型達到最優(yōu)的效果,有效避免了過擬合。

2實驗與結(jié)果分析

XSS有效載荷比正常有效載荷長度更長,由于其中包含了惡意代碼,因此敏感詞、敏感字符和有效載荷的長度是識別XSS的重要要素,XSS有效載荷可能會利用重定向鏈接,將惡意代碼隱藏在重定向界面里,通過識別重定向鏈接來跳轉(zhuǎn)并執(zhí)行惡意代碼,一些協(xié)議可能會出現(xiàn)在一個負載中。包含7個維度:URL的長度,HTTP的個數(shù),特殊關(guān)鍵詞,閉合敏感符號,空格字符,大寫字母,數(shù)字字符,攻擊樣本作為黑樣本達打標為1,安全樣本作為白樣本,打標記為0。

表1 特征名稱及說明

描述了獲取XSS特征以及標簽后,根據(jù)3.2特征選擇采用不同的機器學習算法進行模型訓(xùn)練、測試。包含的集成學習模型有決策樹、隨機森林、支持向量機以及由基本分類器集成的極端隨機樹、AdaBoost、梯度Boosting、Bagging、直方圖的梯度提升等。獲取訓(xùn)練好的模型以后,混淆矩陣值用于比較和評估模型。通過使用混淆矩陣可以計算以下值:

精確率:

(1)

準確率為分類的準確度,即:

(2)

召回率為預(yù)測正的正樣本占總正樣本的比例,即:

(3)

誤報率為預(yù)測為正的負樣本占總負樣本的比例,即:

(4)

F1值是召回率與精確率的一個均和調(diào)值,是對召回率與精確率的一個綜合評價,即:

(5)

其中,FN是被判定為負樣本的正樣本的數(shù)量;FP是被判定為正樣本的負樣本的數(shù)量;TP是判定為正樣本的正樣本的數(shù)量;TN是判定為負樣本的負樣本的數(shù)量。

圖7(a)和圖7(b)代表了SVM分類器對XSS攻擊樣本和安全樣本的特征分布情況,為了平衡數(shù)據(jù)集,安全樣本的數(shù)量保持和攻擊樣本的數(shù)量一樣。數(shù)據(jù)集包含了60 674個樣本,其中是安全向量樣本數(shù)量為30 337個,XSS攻擊樣本的數(shù)量為30 337個??倶颖疽?:2比例劃分為訓(xùn)練樣本集(24 270)和測試樣本集(6 067)。

以下實驗評估了集成學習技術(shù)中隨機森林分類、極端隨機樹(ExtraTrees)、AdaBoost、以SVM為基學習器的Bagging、梯度提升(GBDT)、和基于直方圖的梯度提升模型的XSS檢測率。表2是所有模型中混淆矩陣的值,表3比較了所有模型的性能指標,表4比較了所有模型的交叉驗證得分以及模型的交叉驗證的平均得分。從結(jié)果可以得出結(jié)論,所有集成方法都表現(xiàn)良好,并且在所有模型中均達到98%以上的精度,表現(xiàn)最優(yōu)的為基于直方圖的梯度提升分類模型和極端隨機樹模型。

表2 模型中混淆矩陣

表3 性能指標的比較

表4 交叉驗證分數(shù)的比較

3結(jié)論

為了避免不平衡數(shù)據(jù)集問題,設(shè)計安全向量生成器用來保持XSS和數(shù)據(jù)集的安全樣本之間的平衡;通過模糊測試技術(shù)檢測XSS測試用例,去除了冗余的無效向量進而提升檢測效率;最后使用集成學習方法包括隨機森林分類、極端隨機樹(ExtraTrees)、AdaBoost、以SVM為基學習器的Bagging、梯度提升(GBDT)和基于直方圖的梯度提升模型檢測XSS攻擊向量和XSS安全向量,利用混淆矩陣評估這些模型的性能。結(jié)果顯示所有的集成學習模型在檢測XSS攻擊和安全向量上都表現(xiàn)出較好性能。在基于直方圖的梯度提升分類模型和極端隨機樹2個模型中,更是達到了最高的0.998 4的精度。但是研究仍存在不足之處,仍需要進一步的研究完善,未來將進一步豐富XSS攻擊樣本集,從而達到覆蓋性更強的效果,并嘗試擴展到檢測其他Web應(yīng)用程序攻擊(例如SQL攻擊、DDos攻擊)。

猜你喜歡
測試用例決策樹分類器
基于SmartUnit的安全通信系統(tǒng)單元測試用例自動生成
一種針對不均衡數(shù)據(jù)集的SVM決策樹算法
決策樹和隨機森林方法在管理決策中的應(yīng)用
基于混合遺傳算法的回歸測試用例集最小化研究
BP-GA光照分類器在車道線識別中的應(yīng)用
加權(quán)空-譜與最近鄰分類器相結(jié)合的高光譜圖像分類
結(jié)合模糊(C+P)均值聚類和SP-V-支持向量機的TSK分類器
基于決策樹的出租車乘客出行目的識別
基于依賴結(jié)構(gòu)的測試用例優(yōu)先級技術(shù)
基于肺癌CT的決策樹模型在肺癌診斷中的應(yīng)用