楊美月 鐘楠宇 吳嘉熙 唐屹
摘要:隨著Web應用程序的廣泛應用,攻擊者對Web應用程序的攻擊也層出不窮。若能夠識別應用程序的攻擊者,就可以有效地幫助系統管理員設計出有針對性的防御方法。以識別跨站腳本攻擊(XSS)的攻擊者為例,提出一種基于機器學習的XSSer-FP方法識別Web應用程序的攻擊者。該方法通過分析帶攻擊代碼的URL特征來識別XSS攻擊者。實驗結果證明了該方法應用于Web攻擊者識別的可行性。
關鍵詞: XSS攻擊; 機器學習; URL; 攻擊者識別; 攻擊溯源
中圖分類號:TP393.08? ? ? ? 文獻標識碼:A
文章編號:1009-3044(2019)20-0237-04
開放科學(資源服務)標識碼(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 引言
隨著互聯網的不斷發展,網絡安全事件也頻頻發生,部分攻擊者利用Web應用程序的漏洞為自己帶來經濟利益,但同時會對應用程序使用者的經濟和隱私造成威脅,還會損害應用程序所有者的聲譽。針對Web應用程序的攻擊有多種類型,以跨站腳本攻擊(XSS)為例,攻擊者在用戶瀏覽器中執行惡意腳本,從而劫持用戶會話或將用戶重定向到惡意網站。許多學者已經提出多種攻擊源追蹤的方法來定位攻擊主機,以此來減少Web攻擊帶來的危害,但攻擊者可以換另外的主機繼續發起攻擊。如果我們可以定位攻擊者,就可以對其采取法律手段,從根本上解決安全隱患。
由于攻擊者有意識地采取不同辦法來隱藏自己的蹤跡,如虛假IP或跳板方式,因此對于網絡攻擊源的追蹤,現在還沒有一種通用的方法來定位攻擊者,都是在特定情境下,基于特定先決條件提出相對效果較好的方法,如虛假IP溯源、僵尸網絡溯源、匿名網絡溯源、跳板溯源和局域網溯源等,但實用性并不理想,且只能追蹤到攻擊者所使用的攻擊主機,并不能找到攻擊者。因此我們需要一種方法來實現直接定位攻擊者,從而從根本上保護網絡環境。
本文以XSS攻擊為例,主要根據URL中的攻擊代碼來分析攻擊背后的人。我們提出了XSSer-FP方法,用于識別XSS攻擊者,并使用機器學習技術實現URL文本識別過程,從而輸出攻擊者分類模型。本文使用真實反映在URL中的XSS攻擊代碼進行了XSS攻擊者識別,驗證了該方法的可行性。
全文組織如下:第2節對現有的攻擊源追蹤技術進行了綜述;第3節對識別攻擊者的行為進行了可行性分析并介紹了實驗需要用到的工具;第4節描述了具體的實驗設計與實現;第5節總結了全文并展望未來的研究方向。
2 相關的工作
2.1 攻擊溯源
在之前的研究中,學者們提出了大量追蹤攻擊源的方法,但關于攻擊者的識別研究極少。指紋識別是一種常見的技術,它將具有大量數據的對象映射到一個較短的特征字符串上,以便進行識別,例如Wenwei Li等人[1]構造了一個基于BP神經網絡的分類器,通過發送探測包最終利用分類器實現了對遠程主機操作系統類型的指紋識別。
由于攻擊者會有意避免IP地址暴露,為定位攻擊者,目前的研究提出的攻擊溯源方法只適用于某些特定情境。在文獻[2]中,對早期的IP溯源方法進行了歸類總結,針對不同條件有許多不同方法,如概率包標記算法[3]、確定包標記算法[4]、ICMP 標記算法[5]等;文獻[6]對匿名網絡中的攻擊溯源進行了綜述,并總結了兩類攻擊溯源方法:匿名網絡調制追蹤和匿名網絡滲透追蹤;此外,還有針對利用跳板主機進行攻擊的溯源問題,[7]一文介紹了目前國內外主要的入侵檢測方法,并對跳板攻擊的入侵檢測技術進行了綜述。
2.2 文本作者識別
攻擊溯源技術只是追蹤攻擊者實現攻擊時使用的主機,而識別攻擊者的過程與文本作者識別的過程有很大的相似之處,可以將攻擊的URL作為攻擊者的文本。文獻[8]認為作者風格是可以從文本特征中抽象出來的,并總結了多種方法對作者歸屬、作者身份驗證、作者特征分析等進行調查。
文獻[9]使用機器學習方法對給定的文本進行分析,實驗結果表明通過分析文本來識別作者是可行的,主要是對給定的訓練文檔進行處理,生成一個表示作者特征的數字向量,并利用機器學習方法生成一個分類器進行作者識別,向量作為分類模型的輸入。
3 識別Web攻擊者
3.1 可行性分析
與許多其他類型的攻擊一樣,成功的攻擊針對的是應用程序輸入,特別是用戶輸入、鍵值對輸入。在Web應用程序中,這些輸入主要來自HTML表單,并通過GET或POST請求傳遞給服務器,對于GET方法,鍵值輸入使用統一的資源定位符(URLs)傳遞,而對于POST方法,成對的鍵值輸入則體現在請求主體中,而且,攻擊代碼就存儲在鍵值輸入的值當中。對于某個攻擊者,針對一些特定應用程序的攻擊會使用他最熟悉的攻擊技術,因此攻擊代碼的特性很可能反映了攻擊者使用的技術。所以通過分析URL中的攻擊代碼來識別Web攻擊者是可行的。
以跨站腳本攻擊(XSS)攻擊[10]為例。XSS是應用層的一種代碼注入攻擊。根據注入腳本的來源,XSS攻擊可以分為三類:反射型、存儲型和基于DOM的XSS攻擊。如圖1所示,反射型XSS攻擊的過程可以列舉如下。
1)構造惡意鏈接
攻擊者構造一個帶有JavaScripts的惡意鏈接,并引誘用戶點擊該鏈接,當用戶訪問該URL時,會觸發XSS攻擊。
2)HTTP請求
用戶單擊帶有JavaScripts的惡意鏈接,然后向服務器端發送HTTP請求,并等待服務器響應。
3)HTTP回復
服務器接收并處理請求,然后響應用戶請求,并將帶有XSS代碼的數據發送到用戶的瀏覽器,瀏覽器解析數據。
4)敏感數據獲取
瀏覽器解析帶有XSS代碼的數據后,會造成XSS漏洞,此時攻擊者可以獲取用戶敏感信息,如cookie值等。
3.2 實驗工具
一般來說,利用機器學習解決問題的基本思路如圖2。
與一般機器學習過程類似,本文首先對實驗所需的XSS攻擊數據集進行預處理,接著對處理過的數據進行特征提取,并利用doc2vec模型得到特征向量,作為分類模型的輸入。利用K-fold交叉驗證方法對數據集進行訓練集和測試集的劃分,并利用訓練集數據對分類模型進行訓練,利用測試集數據對模型的分類能力進行測試。本實驗使用多層感知器(MLP)進行分類模型訓練。
對于上述實驗相關工具介紹如下:Google公司在2013年開放了Word2vec[11]這一款用于訓練詞向量的軟件工具。Word2vec可以根據給定的語料庫,通過訓練后的模型有效地將一個詞語表達成向量形式,主要依賴skip-grams或連續詞袋(CBOW)來實現。為了對句子、段落和文檔等也實現向量化,Mikolov等人在2014年提出了doc2vec[12],用于實現對句子、段落等的向量化。
在訓練分類模型之前,我們需要將數據分為訓練集和測試集。為了充分利用數據集,使用k-fold交叉驗證方法[13]。該方法的主要思想是將原始數據分為k組,隨后將每一組作為測試集,其他k-1組作為訓練集進行實驗,這樣相當于對k個數據集分別進行訓練,大大提高了數據利用率。
感知器是一種二元分類器的監督學習算法,它可以判斷一個由數字向量表示的輸入是否屬于某個特定的類,但只能對線性可分離的數據集進行分類。與感知器同理,多層感知器(MLP)[14-15]至少由三層節點組成:輸入層、隱藏層和輸出層,且上層的輸出是下層的輸入,本文使用MLP實現對攻擊者的分類。
4 Web攻擊者識別設計與實現
4.1 數據集
本文實驗所用數據集是從http://xssed.com下載的全部total XSS,其中包含45884條XSS攻擊信息,每條信息包含攻擊者、URL、Pagerank等信息。
我們提出了XSSer-FP方法,用于識別XSS攻擊者。其基本思想如圖3所示。
XSSer-FP方法使用k-fold交叉驗證來劃分訓練集和測試集;然后處理所有實驗所需數據的URL;并利用doc2vec對分詞后的數據進行向量化,提取向量特征;隨后,XSSer-FP方法使用MLP來訓練分類模型;最后,利用該模型對XSS攻擊者進行了預測。
根據攻擊者提交的攻擊數量,選取10個不同的數據集進行實驗,分別命名為D_0,D_1,D_2,…,D_9。對每個數據集分別使用3-fold劃分訓練集和測試集,并分別用于分類模型訓練。表1給出了對每個數據集的具體描述:
其中,t為D_0中的一個元組,t.Author表示攻擊記錄提交者(攻擊者),對于每一個攻擊者A,令[DA={tt∈D_0∧t.Author==A}]為攻擊者A提交的URLs,其中[ATR={t.Authort∈D_0}]為所有攻擊者的集合。
為了降低數據集分布不均對實驗結果的影響,使識別XSS攻擊者的實驗有意義,我們嘗試使用以上不同的數據集分別進行驗證。實驗應達到以下預期:數據分布越均勻,識別精度越高。這樣,就有理由相信我們的方法能夠在適當的數據集中準確地識別XSS攻擊者。
4.2 實驗設計
完整的URL由 scheme, host, port, path, query和 fragment幾部分組成,由其組成的URL格式如下:scheme://host:port/path?query#fragment,其中query部分包含可能被XSS攻擊者破壞的鍵值輸入。因此對于每個URL,我們將解析query部分,并對URL進行分詞,例如:
我們將URL的有效載荷部分用作字母、數字和特殊字符的正則匹配,以便將URL劃分為不同的特征詞,效果如下:
隨后利用訓練后的doc2vec模型得到URL的特征向量,一般地將doc2vec模型中的特征向量設為100維,效果如下:
將攻擊者作為URL的標簽。采用有三層隱藏層的神經網絡(MLP)進行模型訓練。MLP采用數據處理后的100維特征向量作為輸入,第一個隱藏層設置1000個輸入節點,第二個隱藏層設置2000個輸入節點,第三個隱藏層設置2000個輸入節點,輸出層設置1000個輸入節點,最終輸出2625個攻擊者分類。
實驗使用Rectified Linear Unit(ReLU)作為隱藏層的激活函數,這是因為ReLU能有效地解決梯度消失問題,而且文獻[16]中指出ReLU的收斂速度比sigmoid和tanh快的多。對于輸出層,我們使用SoftMax作為激活函數,根據相關實驗發現,SoftMax與交叉熵損失函數相結合,可以很好地完成MLP分類任務。
使用交叉熵作為損失函數來評估模型,是因為交叉熵函數可以自動調整權重更新的速度,它可以表示為:
其中y表示預期輸出,a表示神經元的實際輸出。
實驗最先使用SGD作為優化工具,發現它不能很好地收斂,存在局部最優解問題。由于神經網絡是非凸的,且RMSProp在非凸條件下表現很好,且RMSProp能夠避免學習率過低的問題,可以自適應地調整學習率,因此我們使用RMSProp作為優化器,學習率設置為0.001,其余使用優化器默認參數。
4.3 實驗結果
我們對不同數據集的實驗結果進行評估,并直觀地反映在圖表中,具體分析如下:
圖4是使用不同的數據集進行實驗的損失變化圖,其中橫坐標表示不同數據集,縱坐標表示損失大小。從圖中可以看出數據集D_6的損失是最小的,這表明由該數據集訓練的模型具有最佳的分類結果。結合數據集的分布情況,我們可以發現數據集分布越均勻,分類結果越準確。
圖5是將10個不同數據集分別訓練后得到的精度變化圖,其中橫坐標表示不同數據集,縱坐標表示精度大小。從圖中可以看出,使用數據集D_6進行訓練得到的識別準確率最高,且發現在D_6之前,使用提交攻擊量多的攻擊者的攻擊信息,識別準確率更高。結合數據集的分分布情況,當攻擊者提交的攻擊數超過100時,數據分布較為均勻,此時,識別XSS攻擊者的準確率較高。
通過對實驗結果的分析,可以發現在數據分布均勻的數據集中,使用XSSer-FP方法,可以通過攻擊的URL信息準確識別出XSS攻擊者。
5 結論
本文主要根據URL中的攻擊代碼來分析Web攻擊背后的人。通過分析從URL的鍵值輸入中提取的攻擊代碼特征,提出了用于識別XSS攻擊者的XSSer-FP方法,并使用機器學習技術實現URL文本識別過程,輸出攻擊者分類模型,從而達到識別攻擊者的目的。
本文的主要貢獻有如下三點:第一,我們對Web應用程序中鍵值輸入的價值屬性進行了研究,并表明從鍵值輸入中可以成功解析出攻擊代碼的特征; 第二,證明了使用從Web應用程序的鍵值輸入中提取的攻擊代碼特征,可用于識別相應的攻擊者; 第三,提供了一個基于XSS攻擊數據集實現XSS攻擊者識別的分類模型。
由于本文的主要目的是證明通過分析Web攻擊的URL信息,可以實現對攻擊者的識別,因此對分類模型沒有過多研究。在未來的工作中,可以使用多種分類模型進行測試,尋找關于攻擊者識別問題的最優分類模型;可以試著尋找更加均勻的攻擊數據集進行實驗,以此降低由于數據分布不均對分類結果的影響。
參考文獻:
[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.
【通聯編輯:代影】