https://xz.aliyun.com/t/2190
Ya-Lin Zhang, Longfei Li, Jun Zhou, Xiaolong Li, Yujiang Liu, Yuanchao Zhang, Zhi-Hua Zhou
National Key Lab for Novel Software Technology, Nanjing University, China
Ant Financial Services Group, China
來源: CCS’17 https://dl.acm.org/citation.cfm?id=3138825
摘要
本文描述了一種基於PU-Learning(正例和無biao'zhu學習)的潛在惡意URL檢測系統。以往的基於機器學習的解決方案是將它定義為有監督學習問題。然而在很多時候,我們所獲得的數據總是包含少量已知的攻擊URL以及大量的未標記樣本,這使得有監督學習不可行。在這項工作中,我們將其定義為PU-Learning問題,並結合兩種不同的策略(two-stage strategy and cost-sensitive strategy)。實驗結果表明,我們所開發的系統能夠有效地發現潛在的惡意URL攻擊。該系統既可以作為現有系統的輔助部署,也可以用來幫助網絡安全工程師有效地發現潛在的攻擊模式,使他們能夠快速更新現有的系統。
1 引言
隨着互聯網的迅速發展,出現了越來越多的惡意URL攻擊,嚴重威脅着網絡安全。傳統的URL攻擊檢測系統主要通過使用黑名單或規則列表。而這些名單將變得越來越長,但是以這些方式防范所有的攻擊是不現實的。更嚴重的是,這些方法難以檢測潛在的威脅,這使得網絡安全工程師很難有效地發現新出現的惡意URL攻擊。
為了提高算法的泛化能力,很多研究人員采用基於機器學習的方法來完成這項任務。這些方法主要分為兩類:大多數轉化為有監督學習問題[6],則需要對數據進行標注,而其他的一些研究人員則試圖以無監督的方式解決問題,例如通過異常檢測技術[5],就不需要對數據進行標注。當可以得到標注數據時,有監督學習方法通常實現更強的泛化能力。然而在很多時候,我們很難獲得精准的標注數據。在更多時候,我們可能只得到一小部分惡意URL和大量未標記的URL樣本,缺乏足夠可靠的負例樣本,這也就意味着我們並不能直接使用上述的機器學習算法。另一方面,如果我們簡單地以無監督的方式解決它,那么已知惡意URL的標注信息就難以充分利用,可能無法達到令人滿意的性能。
在本文中,我們將上述問題抽象為PU-Learning(正例和未標記學習)問題[3],它可以更充分地利用所檢測到的惡意URL以及未標記的URL,並實現了更強的性能。基於此,我們開發了一個基於PU-Learning的潛在惡意URL攻擊檢測系統。有許多策略可以用來處理PU學習問題,如two-stage strategy[4]、cost-sensitive strategy[2]等。在這項工作中,我們將two-stage strategy、cost-sensitive strategy結合起來構建我們的系統。最后,我們對所開發的系統進行了驗證評估,結果表明該方法能有效地發現潛在的惡意URL攻擊,大大降低了網絡安全工程師的工作量,使其在實際的URL攻擊檢測中非常有用。
本文的其余部分組織如下。在第2節中,我們描述了所開發的系統。在第3節,我們基於螞蟻金服的實際業務場景評估了我們所開發的系統。最后,在第4節中,我們總結了這項工作。
2 系統架構
在這一章中,我們介紹了所開發的系統架構。如圖1所示,我們的系統主要包括3個模塊:
- (i)特征提取,將原始URL轉換成特征向量;
- (ii)模型訓練,利用所提取的URL訓練集的特征向量訓練PU-Learning模型;
- (iii)預測,預測輸入的URL以及輸出可能的惡意URL集。
2.1 特征提取
首先將原始URL轉換為特征向量表示,以便於應用到后續的機器學習算法中。下面,我們將簡要地解釋我們所開發的系統,並介紹我們在系統中使用的特征提取過程的細節。
一般來說,URL可以分成幾個部分,包括協議部分、認證部分、路徑部分、query部分和fragment部分,如圖2所示。攻擊者可能修改任意一個部分以發起攻擊。在我們的場景中,由於前幾個部分受到限制,攻擊主要來自fragment部分,所以我們主要關注的是基於惡意修改fragment部分的攻擊的執行情況。具體而言,fragment通常是形如“key1 = value1&…&keyn = valuen”的形式,攻擊者可以通過任意修改value部分以發起攻擊。因此,我們的系統主要處理這個部分,而特征提取過程直接從fragment的Key-Value對中提取特征。
更具體地說,給定一組URL,我們首先將它們分別划分為上述部分,並從每個URL的fragment中提取Key-Value對。其次,由於我們的目標是發現惡意網址的特質,因此我們過濾了Key-Value對,只保留惡意網址出現的前N個Key,並將剩余的Key-Value對合並為一個Key-Value對,從而每個URL將最多提取(N + 1)個Key-Value對。最后,我們試探性地提取8種不同的統計信息從每個過濾值,包括value中出現所有的字符、字母、數字、標點符號的次數和value中出現的不同的字符、字母、數字、標點符號的數目。因此每個URL將被描述為一個(N + 1)∗8維特征向量。
2.2 模型訓練
值得注意的是,傳統的有監督學習算法並不能直接應用於我們的場景。在這項工作中,我們將其轉化為PU-Learning問題。
PU-Learning[3]是半監督學習的一種特殊情況[1,7],它用於解決只提供正例和未標注樣本而不提供負例的問題。研究人員已經提出了許多策略來解決這個問題。為了繞過缺乏負標注的問題,two-stage策略首先試圖挖掘出一些可靠的負例,然后將問題轉化為一個傳統的監督和半監督學習問題。另一方面,用於二分類的cost-sensitive策略由於具有不對稱的誤分類成本,因此非常適合用於解決PU-Learning問題[2]。在我們開發的系統中,這兩種策略都被采用並進一步結合形成最終的預測模型。
two-stage strategy:在第一階段從未標記實例中選擇可靠的負例,算法1顯示了相關的細節。在第二階段,利用正例和第一階段選擇的負例,訓練傳統的監督模型,並進一步用於預測新樣本。
在這項工作中,考慮到效率,我們采用Logistic回歸來訓練分類模型。
cost-sensitive strategy:我們假設在未標注樣本只有少量正例。將所有未標注樣本設定為負例,最小化以下目標函數:
其中C+和C-分別是正例和負例誤分類的懲罰因子;l(yi,f(xi))表示損失函數,例如log損失函數或hinge損失函數;λ是歸一化系數,R(w)是歸一化范數,例如L1-范數、L2-范數。本文中,我們將損失函數設置為log損失函數,將L2-范數作為歸一化范數。因此具體的函數如下:
其中LL(z)=log(1+exp(-z))就是log損失函數,在實際中,C+和C-是基於驗證集選取的,並且C+總是大於C-,這表明正例誤分類的懲罰因子要大於負例誤分類的懲罰因子。這也就使得模型將更關注於對惡意URL的正確分類。
2.3 預測
在預測階段,一個新輸入的URL首先將在特征提取模塊被轉換為(n + 1)∗8維特征向量,然后所提取的特征向量將送入一個雙策略模型,每個模型都將輸出一個分數表示惡意URL的概率。得分越高,這個URL就越有可能是惡意的。我們把兩個分數平均作為URL的最終得分,選擇具有較高分數的URL構造為候選惡意URL集。
在工程實踐中,我們會基於候選惡意URL集過濾K個URL,這些過濾的URL將由網絡安全工程師進行人工驗證。
3 實驗驗證
3.1 數據集與准備工作
該數據集來自於發送至螞蟻金服的URL請求的采樣。數據主要分為兩部分:一大組未標記的URL和少數已經通過現有的系統標注的惡意網址,並出現了不同的攻擊類型,包括XXE、XSS和SQL注入等。我們並沒有把這些不同類型的惡意網址進行進一步細分。由於總數據集太大,我們從每天的請求中抽取1億個URL,其中由現有系統檢測到的惡意URL的數量從幾萬到數十萬不等。該模型使用連續7天收集的數據進行訓練,並用於預測每天新出現的未標記URL的分數。
當提取Key-Value對時,N被設置為99,因此每個URL將由一個800維的特征向量來描述,使用min-max歸一化方法來處理不同量綱下的特征。在模型訓練部分,我們采用基於logistic回歸的方法來訓練PU-Learning模型,C+、C−和λ等參數由驗證集進行選取。
3.2 實驗結果
由於我們並沒有未標注URL的具體情況,我們借助網絡安全工程師來幫助檢查結果並驗證我們系統的有效性。
由於檢查結果非常耗時,因此我們將候選惡意URL集的大小K設置為至多150,並由網絡安全工程師將手動檢查所選URL是否是惡意URL。表1展示了實驗結果的細節。從表中可以看出,過濾后的候選集的精度可以達到90%,表明該系統能有效地發現潛在的惡意URL,而現有的系統無法捕獲這些惡意URL。應該特別提到的是,我們基於候選惡意URL集發現了新的攻擊模式,而螞蟻金服的網絡安全工程師已經通過這個發現改進了現有系統。同時,開發的系統還可以與現有系統協同使用,提高整體的網絡安全水平。
4 總結
在這項工作中,我們開發了一個基於PU-Learning的潛在惡意URL檢測系統。與基於監督學習的方法相比,我們的方法只需要少量惡意URL以及未標注URL,而這正好適合我們遇到的實際情況。
該系統主要包括三個部分:首先,特征提取將原始URL轉化為特征向量;然后,利用two-stage strategy、cost-sensitive strategy來訓練分類模型;最后,新輸入的URL將被首先轉化為特征向量,再進行機器學習,輸出的分數表明了該URL為惡意網址的概率。
實證結果表明,我們開發的系統能夠有效地發現潛在的惡意URL。該系統既可以作為現有系統的輔助部署,也可以用來幫助網絡安全工程師有效地發現潛在的攻擊模式。
參考文獻
[1] Olivier Chapelle, Bernhard Scholkopf, and Alexander Zien. 2009. Semi-Supervised Learning. IEEE Transactions on Neural Networks 20, 3 (2009), 542–542.
[2] Marthinus C du Plessis, Gang Niu, and Masashi Sugiyama. 2014. Analysis of Learning from Positive and Unlabeled Data. In Advances in Neural Information Processing Systems 27. 703–711.
[3] Charles Elkan and Keith Noto. 2008. Learning Classifiers from Only Positive and Unlabeled Data. In Proceedings of the 14th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. 213–220.
[4] Bing Liu, Yang Dai, Xiaoli Li, Wee Sun Lee, and Philip S Yu. 2003. Building Text Classifiers Using Positive and Unlabeled Examples. In Proceeding of the 3rd IEEE International Conference on Data Mining. 179–186.
[5] Fei Tony Liu, Kai Ming Ting, and Zhi-Hua Zhou. 2008. Isolation Forest. In Proceeding ot the 8th IEEE International Conference on Data Mining. 413–422.
[6] Justin Ma, Lawrence K Saul, Stefan Savage, and Geoffrey M Voelker. 2009. Beyond Blacklists: Learning to Detect Malicious Web Sites from Suspicious URLs. In Proceedings of the 15th ACM SIGKDD International Conference on Knowledge Discovery and Data Mining. 1245–1254.
[7] Zhi-Hua Zhou and Ming Li. 2010. Semi-Supervised Learning by Disagreement. Knowledge and Information Systems 24, 3 (2010), 415–439.