基於PU-Learning的惡意URL檢測

基於PU-Learning的惡意URL檢測

原文作者:Ya-Lin Zhang, Longfei Li, Jun Zhou, Xiaolong Li, Yujiang Liu, Yuanchao Zhang, Zhi-Hua Zhou
原文會議:The ACM Conference on Computer and Communications Security (CCS)
原文鏈接: CCS’17 https://dl.acm.org/citation.cfm?id=3138825

一、論文主要內容

本文描述了一種基於PU-Learning(正例和無標註學習)的潛在惡意URL檢測系統。以往的基於機器學習的解決方案是將它定義爲有監督學習問題。然而在很多時候,我們所獲得的數據總是包含少量已知的攻擊URL以及大量的未標記樣本,這使得有監督學習不可行。在這項工作中,我們將其定義爲PU-Learning問題,並結合兩種不同的策略(two-stage strategy and cost-sensitive strategy)。

實驗結果表明,我們所開發的系統能夠有效地發現潛在的惡意URL攻擊。該系統既可以作爲現有系統的輔助部署,也可以用來幫助網絡安全工程師有效地發現潛在的攻擊模式,使他們能夠快速更新現有的系統。

二、作者工作

2.1 相關工作

傳統的URL攻擊檢測系統主要通過使用黑名單或規則列表。而這些名單將變得越來越長,但是以這些方式防範所有的攻擊是不現實的。更嚴重的是,這些方法難以檢測潛在的威脅,這使得網絡安全工程師很難有效地發現新出現的惡意URL攻擊。

爲了提高算法的泛化能力,很多研究人員採用基於機器學習的方法來完成這項任務。這些方法主要分爲兩類:大多數轉化爲有監督學習問題,則需要對數據進行標註,而其他的一些研究人員則試圖以無監督的方式解決問題,例如通過異常檢測技術,就不需要對數據進行標註。

在更多時候,我們可能只得到一小部分惡意URL和大量未標記的URL樣本,缺乏足夠可靠的負例樣本,這也就意味着我們並不能直接使用上述的機器學習算法。另一方面,如果我們簡單地以無監督的方式解決它,那麼已知惡意URL的標註信息就難以充分利用,可能無法達到令人滿意的性能。

2.2 模型設計

設計思想

在本文中,我們將上述問題抽象爲PU-Learning(正例和未標記學習)問題,它可以更充分地利用所檢測到的惡意URL以及未標記的URL,並實現了更強的性能。

基於此,我們開發了一個基於PU-Learning的潛在惡意URL攻擊檢測系統。有許多策略可以用來處理PU學習問題,如two-stage strategy、cost-sensitive strategy等。在這項工作中,我們將two-stage strategy、cost-sensitive strategy結合起來構建我們的系統。最後,我們對所開發的系統進行了驗證評估,結果表明該方法能有效地發現潛在的惡意URL攻擊,大大降低了網絡安全工程師的工作量,使其在實際的URL攻擊檢測中非常有用。

具體實現

系統主要包括3個模塊:

  • 特徵提取,將原始URL轉換成特徵向量;
  • 模型訓練,利用所提取的URL訓練集的特徵向量,採用基於logistic迴歸的方法來訓練PU-Learning模型;
  • 預測,預測輸入的URL以及輸出可能的惡意URL集。

特徵提取

首先將原始URL轉換爲特徵向量表示,以便於應用到後續的機器學習算法中。下面,簡要地解釋我們所開發的系統,並介紹我們在系統中使用的特徵提取過程的細節。

img

img

一般來說,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維特徵向量。

模型訓練

PU-Learning是半監督學習的一種特殊情況,它用於解決只提供正例和未標註樣本而不提供負例的問題。研究人員已經提出了許多策略來解決這個問題。

爲了繞過缺乏負標註的問題,two-stage策略首先試圖挖掘出一些可靠的負例,然後將問題轉化爲一個傳統的監督和半監督學習問題。另一方面,用於二分類的cost-sensitive策略由於具有不對稱的誤分類成本,因此非常適合用於解決PU-Learning問題。在我們開發的系統中,這兩種策略都被採用並進一步結合形成最終的預測模型。

  • two-stage strategy:在第一階段從未標記實例中選擇可靠的負例,算法1顯示了相關的細節。在第二階段,利用正例和第一階段選擇的負例,訓練傳統的監督模型,並進一步用於預測新樣本。

    考慮到效率,我們採用Logistic迴歸來訓練分類模型。

img

  • cost-sensitive strategy:我們假設在未標註樣本只有少量正例。將所有未標註樣本設定爲負例,最小化以下目標函數:

    img

    其中C+和C-分別是正例和負例誤分類的懲罰因子;l(yi,f(xi))表示損失函數,例如log損失函數或hinge損失函數;λ是歸一化係數,R(w)是歸一化範數,例如L1-範數、L2-範數。

    本文中,我們將損失函數設置爲log損失函數,將L2-範數作爲歸一化範數。因此具體的函數如下:

    img

    其中LL(z)=log(1+exp(-z))就是log損失函數,在實際中,C+和C-是基於驗證集選取的,並且C+總是大於C-,這表明正例誤分類的懲罰因子要大於負例誤分類的懲罰因子。這也就使得模型將更關注於對惡意URL的正確分類。

預測

在預測階段,一個新輸入的URL首先將在特徵提取模塊被轉換爲(n + 1)∗8維特徵向量,然後所提取的特徵向量將送入一個雙策略模型,每個模型都將輸出一個分數表示惡意URL的概率。得分越高,這個URL就越有可能是惡意的。我們把兩個分數平均作爲URL的最終得分,選擇具有較高分數的URL構造爲候選惡意URL集。

在工程實踐中,我們會基於候選惡意URL集過濾K個URL,這些過濾的URL將由網絡安全工程師進行人工驗證。

三、實驗

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集發現了新的攻擊模式,而螞蟻金服的網絡安全工程師已經通過這個發現改進了現有系統。同時,開發的系統還可以與現有系統協同使用,提高整體的網絡安全水平。

img

四、總結

在這項工作中,我們開發了一個基於PU-Learning的潛在惡意URL檢測系統。與基於監督學習的方法相比,我們的方法只需要少量惡意URL以及未標註URL,而這正好適合我們遇到的實際情況。

該系統的優點利用了兩種策略來輔助訓練分類模型,並且實驗數據量大,保證了模型的有效訓練,而模型採用的邏輯迴歸算法是一種較爲簡單的機器學習模型,也許可以用其它機器學習算法實驗對比,不過可能面對大量數據需要更多訓練時間。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章