楊美月 鐘楠宇 吳嘉熙 唐屹
摘要:隨著Web應(yīng)用程序的廣泛應(yīng)用,攻擊者對Web應(yīng)用程序的攻擊也層出不窮。若能夠識(shí)別應(yīng)用程序的攻擊者,就可以有效地幫助系統(tǒng)管理員設(shè)計(jì)出有針對性的防御方法。以識(shí)別跨站腳本攻擊(XSS)的攻擊者為例,提出一種基于機(jī)器學(xué)習(xí)的XSSer-FP方法識(shí)別Web應(yīng)用程序的攻擊者。該方法通過分析帶攻擊代碼的URL特征來識(shí)別XSS攻擊者。實(shí)驗(yàn)結(jié)果證明了該方法應(yīng)用于Web攻擊者識(shí)別的可行性。
關(guān)鍵詞: XSS攻擊; 機(jī)器學(xué)習(xí); URL; 攻擊者識(shí)別; 攻擊溯源
中圖分類號(hào):TP393.08? ? ? ? 文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2019)20-0237-04
開放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
Abstract: With the wide application of Web applications, the attacks on these Web applications emerge in an endless stream. If the attacker of the application can be identified, it can effectively help the system administrators design targeted defense method. Taking identifying the attacker of Cross-Site Scripting(XSS)as an example, an XSSer-FP method based on machine learning is proposed to identify the attackers of Web application. This method identifies XSS attackers by analyzing URL characteristics with attack codes. Experimental results proved the feasibility of this method in Web attacker identification.
Key words: XSS attack; machine learning; URL; attacker identification; attack tracing
1 引言
隨著互聯(lián)網(wǎng)的不斷發(fā)展,網(wǎng)絡(luò)安全事件也頻頻發(fā)生,部分攻擊者利用Web應(yīng)用程序的漏洞為自己帶來經(jīng)濟(jì)利益,但同時(shí)會(huì)對應(yīng)用程序使用者的經(jīng)濟(jì)和隱私造成威脅,還會(huì)損害應(yīng)用程序所有者的聲譽(yù)。針對Web應(yīng)用程序的攻擊有多種類型,以跨站腳本攻擊(XSS)為例,攻擊者在用戶瀏覽器中執(zhí)行惡意腳本,從而劫持用戶會(huì)話或?qū)⒂脩糁囟ㄏ虻綈阂饩W(wǎng)站。許多學(xué)者已經(jīng)提出多種攻擊源追蹤的方法來定位攻擊主機(jī),以此來減少Web攻擊帶來的危害,但攻擊者可以換另外的主機(jī)繼續(xù)發(fā)起攻擊。如果我們可以定位攻擊者,就可以對其采取法律手段,從根本上解決安全隱患。
由于攻擊者有意識(shí)地采取不同辦法來隱藏自己的蹤跡,如虛假IP或跳板方式,因此對于網(wǎng)絡(luò)攻擊源的追蹤,現(xiàn)在還沒有一種通用的方法來定位攻擊者,都是在特定情境下,基于特定先決條件提出相對效果較好的方法,如虛假IP溯源、僵尸網(wǎng)絡(luò)溯源、匿名網(wǎng)絡(luò)溯源、跳板溯源和局域網(wǎng)溯源等,但實(shí)用性并不理想,且只能追蹤到攻擊者所使用的攻擊主機(jī),并不能找到攻擊者。因此我們需要一種方法來實(shí)現(xiàn)直接定位攻擊者,從而從根本上保護(hù)網(wǎng)絡(luò)環(huán)境。
本文以XSS攻擊為例,主要根據(jù)URL中的攻擊代碼來分析攻擊背后的人。我們提出了XSSer-FP方法,用于識(shí)別XSS攻擊者,并使用機(jī)器學(xué)習(xí)技術(shù)實(shí)現(xiàn)URL文本識(shí)別過程,從而輸出攻擊者分類模型。本文使用真實(shí)反映在URL中的XSS攻擊代碼進(jìn)行了XSS攻擊者識(shí)別,驗(yàn)證了該方法的可行性。
全文組織如下:第2節(jié)對現(xiàn)有的攻擊源追蹤技術(shù)進(jìn)行了綜述;第3節(jié)對識(shí)別攻擊者的行為進(jìn)行了可行性分析并介紹了實(shí)驗(yàn)需要用到的工具;第4節(jié)描述了具體的實(shí)驗(yàn)設(shè)計(jì)與實(shí)現(xiàn);第5節(jié)總結(jié)了全文并展望未來的研究方向。
2 相關(guān)的工作
2.1 攻擊溯源
在之前的研究中,學(xué)者們提出了大量追蹤攻擊源的方法,但關(guān)于攻擊者的識(shí)別研究極少。指紋識(shí)別是一種常見的技術(shù),它將具有大量數(shù)據(jù)的對象映射到一個(gè)較短的特征字符串上,以便進(jìn)行識(shí)別,例如Wenwei Li等人[1]構(gòu)造了一個(gè)基于BP神經(jīng)網(wǎng)絡(luò)的分類器,通過發(fā)送探測包最終利用分類器實(shí)現(xiàn)了對遠(yuǎn)程主機(jī)操作系統(tǒng)類型的指紋識(shí)別。
由于攻擊者會(huì)有意避免IP地址暴露,為定位攻擊者,目前的研究提出的攻擊溯源方法只適用于某些特定情境。在文獻(xiàn)[2]中,對早期的IP溯源方法進(jìn)行了歸類總結(jié),針對不同條件有許多不同方法,如概率包標(biāo)記算法[3]、確定包標(biāo)記算法[4]、ICMP 標(biāo)記算法[5]等;文獻(xiàn)[6]對匿名網(wǎng)絡(luò)中的攻擊溯源進(jìn)行了綜述,并總結(jié)了兩類攻擊溯源方法:匿名網(wǎng)絡(luò)調(diào)制追蹤和匿名網(wǎng)絡(luò)滲透追蹤;此外,還有針對利用跳板主機(jī)進(jìn)行攻擊的溯源問題,[7]一文介紹了目前國內(nèi)外主要的入侵檢測方法,并對跳板攻擊的入侵檢測技術(shù)進(jìn)行了綜述。
2.2 文本作者識(shí)別
攻擊溯源技術(shù)只是追蹤攻擊者實(shí)現(xiàn)攻擊時(shí)使用的主機(jī),而識(shí)別攻擊者的過程與文本作者識(shí)別的過程有很大的相似之處,可以將攻擊的URL作為攻擊者的文本。文獻(xiàn)[8]認(rèn)為作者風(fēng)格是可以從文本特征中抽象出來的,并總結(jié)了多種方法對作者歸屬、作者身份驗(yàn)證、作者特征分析等進(jìn)行調(diào)查。
文獻(xiàn)[9]使用機(jī)器學(xué)習(xí)方法對給定的文本進(jìn)行分析,實(shí)驗(yàn)結(jié)果表明通過分析文本來識(shí)別作者是可行的,主要是對給定的訓(xùn)練文檔進(jìn)行處理,生成一個(gè)表示作者特征的數(shù)字向量,并利用機(jī)器學(xué)習(xí)方法生成一個(gè)分類器進(jìn)行作者識(shí)別,向量作為分類模型的輸入。
3 識(shí)別Web攻擊者
3.1 可行性分析
與許多其他類型的攻擊一樣,成功的攻擊針對的是應(yīng)用程序輸入,特別是用戶輸入、鍵值對輸入。在Web應(yīng)用程序中,這些輸入主要來自HTML表單,并通過GET或POST請求傳遞給服務(wù)器,對于GET方法,鍵值輸入使用統(tǒng)一的資源定位符(URLs)傳遞,而對于POST方法,成對的鍵值輸入則體現(xiàn)在請求主體中,而且,攻擊代碼就存儲(chǔ)在鍵值輸入的值當(dāng)中。對于某個(gè)攻擊者,針對一些特定應(yīng)用程序的攻擊會(huì)使用他最熟悉的攻擊技術(shù),因此攻擊代碼的特性很可能反映了攻擊者使用的技術(shù)。所以通過分析URL中的攻擊代碼來識(shí)別Web攻擊者是可行的。
以跨站腳本攻擊(XSS)攻擊[10]為例。XSS是應(yīng)用層的一種代碼注入攻擊。根據(jù)注入腳本的來源,XSS攻擊可以分為三類:反射型、存儲(chǔ)型和基于DOM的XSS攻擊。如圖1所示,反射型XSS攻擊的過程可以列舉如下。
1)構(gòu)造惡意鏈接
攻擊者構(gòu)造一個(gè)帶有JavaScripts的惡意鏈接,并引誘用戶點(diǎn)擊該鏈接,當(dāng)用戶訪問該URL時(shí),會(huì)觸發(fā)XSS攻擊。
2)HTTP請求
用戶單擊帶有JavaScripts的惡意鏈接,然后向服務(wù)器端發(fā)送HTTP請求,并等待服務(wù)器響應(yīng)。
3)HTTP回復(fù)
服務(wù)器接收并處理請求,然后響應(yīng)用戶請求,并將帶有XSS代碼的數(shù)據(jù)發(fā)送到用戶的瀏覽器,瀏覽器解析數(shù)據(jù)。
4)敏感數(shù)據(jù)獲取
瀏覽器解析帶有XSS代碼的數(shù)據(jù)后,會(huì)造成XSS漏洞,此時(shí)攻擊者可以獲取用戶敏感信息,如cookie值等。
3.2 實(shí)驗(yàn)工具
一般來說,利用機(jī)器學(xué)習(xí)解決問題的基本思路如圖2。
與一般機(jī)器學(xué)習(xí)過程類似,本文首先對實(shí)驗(yàn)所需的XSS攻擊數(shù)據(jù)集進(jìn)行預(yù)處理,接著對處理過的數(shù)據(jù)進(jìn)行特征提取,并利用doc2vec模型得到特征向量,作為分類模型的輸入。利用K-fold交叉驗(yàn)證方法對數(shù)據(jù)集進(jìn)行訓(xùn)練集和測試集的劃分,并利用訓(xùn)練集數(shù)據(jù)對分類模型進(jìn)行訓(xùn)練,利用測試集數(shù)據(jù)對模型的分類能力進(jìn)行測試。本實(shí)驗(yàn)使用多層感知器(MLP)進(jìn)行分類模型訓(xùn)練。
對于上述實(shí)驗(yàn)相關(guān)工具介紹如下:Google公司在2013年開放了Word2vec[11]這一款用于訓(xùn)練詞向量的軟件工具。Word2vec可以根據(jù)給定的語料庫,通過訓(xùn)練后的模型有效地將一個(gè)詞語表達(dá)成向量形式,主要依賴skip-grams或連續(xù)詞袋(CBOW)來實(shí)現(xiàn)。為了對句子、段落和文檔等也實(shí)現(xiàn)向量化,Mikolov等人在2014年提出了doc2vec[12],用于實(shí)現(xiàn)對句子、段落等的向量化。
在訓(xùn)練分類模型之前,我們需要將數(shù)據(jù)分為訓(xùn)練集和測試集。為了充分利用數(shù)據(jù)集,使用k-fold交叉驗(yàn)證方法[13]。該方法的主要思想是將原始數(shù)據(jù)分為k組,隨后將每一組作為測試集,其他k-1組作為訓(xùn)練集進(jìn)行實(shí)驗(yàn),這樣相當(dāng)于對k個(gè)數(shù)據(jù)集分別進(jìn)行訓(xùn)練,大大提高了數(shù)據(jù)利用率。
感知器是一種二元分類器的監(jiān)督學(xué)習(xí)算法,它可以判斷一個(gè)由數(shù)字向量表示的輸入是否屬于某個(gè)特定的類,但只能對線性可分離的數(shù)據(jù)集進(jìn)行分類。與感知器同理,多層感知器(MLP)[14-15]至少由三層節(jié)點(diǎn)組成:輸入層、隱藏層和輸出層,且上層的輸出是下層的輸入,本文使用MLP實(shí)現(xiàn)對攻擊者的分類。
4 Web攻擊者識(shí)別設(shè)計(jì)與實(shí)現(xiàn)
4.1 數(shù)據(jù)集
本文實(shí)驗(yàn)所用數(shù)據(jù)集是從http://xssed.com下載的全部total XSS,其中包含45884條XSS攻擊信息,每條信息包含攻擊者、URL、Pagerank等信息。
我們提出了XSSer-FP方法,用于識(shí)別XSS攻擊者。其基本思想如圖3所示。
XSSer-FP方法使用k-fold交叉驗(yàn)證來劃分訓(xùn)練集和測試集;然后處理所有實(shí)驗(yàn)所需數(shù)據(jù)的URL;并利用doc2vec對分詞后的數(shù)據(jù)進(jìn)行向量化,提取向量特征;隨后,XSSer-FP方法使用MLP來訓(xùn)練分類模型;最后,利用該模型對XSS攻擊者進(jìn)行了預(yù)測。
根據(jù)攻擊者提交的攻擊數(shù)量,選取10個(gè)不同的數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),分別命名為D_0,D_1,D_2,…,D_9。對每個(gè)數(shù)據(jù)集分別使用3-fold劃分訓(xùn)練集和測試集,并分別用于分類模型訓(xùn)練。表1給出了對每個(gè)數(shù)據(jù)集的具體描述:
其中,t為D_0中的一個(gè)元組,t.Author表示攻擊記錄提交者(攻擊者),對于每一個(gè)攻擊者A,令[DA={tt∈D_0∧t.Author==A}]為攻擊者A提交的URLs,其中[ATR={t.Authort∈D_0}]為所有攻擊者的集合。
為了降低數(shù)據(jù)集分布不均對實(shí)驗(yàn)結(jié)果的影響,使識(shí)別XSS攻擊者的實(shí)驗(yàn)有意義,我們嘗試使用以上不同的數(shù)據(jù)集分別進(jìn)行驗(yàn)證。實(shí)驗(yàn)應(yīng)達(dá)到以下預(yù)期:數(shù)據(jù)分布越均勻,識(shí)別精度越高。這樣,就有理由相信我們的方法能夠在適當(dāng)?shù)臄?shù)據(jù)集中準(zhǔn)確地識(shí)別XSS攻擊者。
4.2 實(shí)驗(yàn)設(shè)計(jì)
完整的URL由 scheme, host, port, path, query和 fragment幾部分組成,由其組成的URL格式如下:scheme://host:port/path?query#fragment,其中query部分包含可能被XSS攻擊者破壞的鍵值輸入。因此對于每個(gè)URL,我們將解析query部分,并對URL進(jìn)行分詞,例如:
我們將URL的有效載荷部分用作字母、數(shù)字和特殊字符的正則匹配,以便將URL劃分為不同的特征詞,效果如下:
隨后利用訓(xùn)練后的doc2vec模型得到URL的特征向量,一般地將doc2vec模型中的特征向量設(shè)為100維,效果如下:
將攻擊者作為URL的標(biāo)簽。采用有三層隱藏層的神經(jīng)網(wǎng)絡(luò)(MLP)進(jìn)行模型訓(xùn)練。MLP采用數(shù)據(jù)處理后的100維特征向量作為輸入,第一個(gè)隱藏層設(shè)置1000個(gè)輸入節(jié)點(diǎn),第二個(gè)隱藏層設(shè)置2000個(gè)輸入節(jié)點(diǎn),第三個(gè)隱藏層設(shè)置2000個(gè)輸入節(jié)點(diǎn),輸出層設(shè)置1000個(gè)輸入節(jié)點(diǎn),最終輸出2625個(gè)攻擊者分類。
實(shí)驗(yàn)使用Rectified Linear Unit(ReLU)作為隱藏層的激活函數(shù),這是因?yàn)镽eLU能有效地解決梯度消失問題,而且文獻(xiàn)[16]中指出ReLU的收斂速度比sigmoid和tanh快的多。對于輸出層,我們使用SoftMax作為激活函數(shù),根據(jù)相關(guān)實(shí)驗(yàn)發(fā)現(xiàn),SoftMax與交叉熵?fù)p失函數(shù)相結(jié)合,可以很好地完成MLP分類任務(wù)。
使用交叉熵作為損失函數(shù)來評(píng)估模型,是因?yàn)榻徊骒睾瘮?shù)可以自動(dòng)調(diào)整權(quán)重更新的速度,它可以表示為:
其中y表示預(yù)期輸出,a表示神經(jīng)元的實(shí)際輸出。
實(shí)驗(yàn)最先使用SGD作為優(yōu)化工具,發(fā)現(xiàn)它不能很好地收斂,存在局部最優(yōu)解問題。由于神經(jīng)網(wǎng)絡(luò)是非凸的,且RMSProp在非凸條件下表現(xiàn)很好,且RMSProp能夠避免學(xué)習(xí)率過低的問題,可以自適應(yīng)地調(diào)整學(xué)習(xí)率,因此我們使用RMSProp作為優(yōu)化器,學(xué)習(xí)率設(shè)置為0.001,其余使用優(yōu)化器默認(rèn)參數(shù)。
4.3 實(shí)驗(yàn)結(jié)果
我們對不同數(shù)據(jù)集的實(shí)驗(yàn)結(jié)果進(jìn)行評(píng)估,并直觀地反映在圖表中,具體分析如下:
圖4是使用不同的數(shù)據(jù)集進(jìn)行實(shí)驗(yàn)的損失變化圖,其中橫坐標(biāo)表示不同數(shù)據(jù)集,縱坐標(biāo)表示損失大小。從圖中可以看出數(shù)據(jù)集D_6的損失是最小的,這表明由該數(shù)據(jù)集訓(xùn)練的模型具有最佳的分類結(jié)果。結(jié)合數(shù)據(jù)集的分布情況,我們可以發(fā)現(xiàn)數(shù)據(jù)集分布越均勻,分類結(jié)果越準(zhǔn)確。
圖5是將10個(gè)不同數(shù)據(jù)集分別訓(xùn)練后得到的精度變化圖,其中橫坐標(biāo)表示不同數(shù)據(jù)集,縱坐標(biāo)表示精度大小。從圖中可以看出,使用數(shù)據(jù)集D_6進(jìn)行訓(xùn)練得到的識(shí)別準(zhǔn)確率最高,且發(fā)現(xiàn)在D_6之前,使用提交攻擊量多的攻擊者的攻擊信息,識(shí)別準(zhǔn)確率更高。結(jié)合數(shù)據(jù)集的分分布情況,當(dāng)攻擊者提交的攻擊數(shù)超過100時(shí),數(shù)據(jù)分布較為均勻,此時(shí),識(shí)別XSS攻擊者的準(zhǔn)確率較高。
通過對實(shí)驗(yàn)結(jié)果的分析,可以發(fā)現(xiàn)在數(shù)據(jù)分布均勻的數(shù)據(jù)集中,使用XSSer-FP方法,可以通過攻擊的URL信息準(zhǔn)確識(shí)別出XSS攻擊者。
5 結(jié)論
本文主要根據(jù)URL中的攻擊代碼來分析Web攻擊背后的人。通過分析從URL的鍵值輸入中提取的攻擊代碼特征,提出了用于識(shí)別XSS攻擊者的XSSer-FP方法,并使用機(jī)器學(xué)習(xí)技術(shù)實(shí)現(xiàn)URL文本識(shí)別過程,輸出攻擊者分類模型,從而達(dá)到識(shí)別攻擊者的目的。
本文的主要貢獻(xiàn)有如下三點(diǎn):第一,我們對Web應(yīng)用程序中鍵值輸入的價(jià)值屬性進(jìn)行了研究,并表明從鍵值輸入中可以成功解析出攻擊代碼的特征; 第二,證明了使用從Web應(yīng)用程序的鍵值輸入中提取的攻擊代碼特征,可用于識(shí)別相應(yīng)的攻擊者; 第三,提供了一個(gè)基于XSS攻擊數(shù)據(jù)集實(shí)現(xiàn)XSS攻擊者識(shí)別的分類模型。
由于本文的主要目的是證明通過分析Web攻擊的URL信息,可以實(shí)現(xiàn)對攻擊者的識(shí)別,因此對分類模型沒有過多研究。在未來的工作中,可以使用多種分類模型進(jìn)行測試,尋找關(guān)于攻擊者識(shí)別問題的最優(yōu)分類模型;可以試著尋找更加均勻的攻擊數(shù)據(jù)集進(jìn)行實(shí)驗(yàn),以此降低由于數(shù)據(jù)分布不均對分類結(jié)果的影響。
參考文獻(xiàn):
[1] Wenwei Li, Dafang Zhang, and Jinmin Yang. Remote OS fingerprinting using BP neural network[J]. In International Conference on Advances in Neural Networks, 2005.
[2] Gao Z. Tracing Cyber Attacks from the Practical Perspective[J]. IEEE Communications Magazine, 2005, 43(5):123-131.
[3] Savage S. Practical Network Support for IP Traceback[J]. Proc. ACM SIGCOMM 2000, Aug. 2000.
[4] Belenky A. IP traceback with deterministic packet marking[J]. IEEE Comm Letters, 2003, 7(4):162-164.
[5] Dan A M, Usc/Isi D M, Felix S, et al. On Design and Evaluation of "Intention-Driven" ICMP Traceback[C]// IEEE International Conference on Computer Communications & Networks. 2001.
[6] Zhouguo C, Shi P, Shixiong Z. Traceback Technology for Anonymous Network[J]. Journal of Computer Research and Development, 2012.
[7] Wang L, Yang J. A research survey in stepping-stone intrusion detection[J]. EURASIP Journal on Wireless Communications and Networking, 2018, 2018(1).
[8] Neal T, Sundararajan K, Fatima A, et al. Surveying Stylometry Techniques and Applications[J]. ACM Computing Surveys, 2017, 50(6):1-36.
[9] Argamon S, Koppel M, Pennebaker J W, et al. Automatically profiling the author of an anonymous text[J]. Communications of the ACM, 2009, 52(2):119.
[10] Upasana Sarmah, D. K. Bhattacharyya, and J. K. Kalita. A survey of detection methods for xss attacks[J]. Journal of Network and Computer Applications, 2018.
[11] Mikolov T, Chen K, Corrado G, et al. Efficient estimation of word representations in vector space[J]. arXiv preprint arXiv: 2013:1301,3781.
[12] Le Q V, Mikolov T. Distributed Representations of Sentences and Documents[J]. 2014.
[13] Tadayoshi Fushiki. Estimation of prediction error by using k -fold crossvalidation. Statistics & Computing, 2011,21(2):137-146.
[14] Gardner M W. Artificial neural networks (the multiplayer perceptron)-a review of applications in the atmospheric sciences[J]. Atmospheric Environment, 1998, 32.
[15] Allan P. Approximation theory of the MLP model in neural networks[J]. Acta Numerica, 1999, 8:53.
[16] Krizhevsky A, Sutskever I, Hinton G. ImageNet Classification with Deep Convolutional Neural Networks[C]// NIPS. Curran Associates Inc. 2012.
【通聯(lián)編輯:代影】