基於機器學習的web異常檢測

基於機器學習的web異常檢測

Web防火牆是信息安全的第一道防線。隨着網絡技術的快速更新,新的黑客技術也層出不窮,爲傳統規則防火牆帶來了挑戰。傳統web入侵檢測技術經過維護規則集對入侵訪問進行攔截。一方面,硬規則在靈活的黑客面前,很容易被繞過,且基於以往知識的規則集難以應對0day攻擊;另外一方面,攻防對抗水漲船高,防守方規則的構造和維護門檻高、成本大。web

基於機器學習技術的新一代web入侵檢測技術有望彌補傳統規則集方法的不足,爲web對抗的防守端帶來新的發展和突破。機器學習方法可以基於大量數據進行自動化學習和訓練,已經在圖像、語音、天然語言處理等方面普遍應用。然而,機器學習應用於web入侵檢測也存在挑戰,其中最大的困難就是標籤數據的缺少。儘管有大量的正常訪問流量數據,但web入侵樣本稀少,且變化多樣,對模型的學習和訓練形成困難。所以,目前大多數web入侵檢測都是基於無監督的方法,針對大量正常日誌創建模型(Profile),而與正常流量不符的則被識別爲異常。這個思路與攔截規則的構造偏偏相反。攔截規則意在識別入侵行爲,於是須要在對抗中「隨機應變」;而基於profile的方法旨在建模正常流量,在對抗中「以不變應萬變」,且更難被繞過。算法

基於異常檢測的web入侵識別,訓練階段一般須要針對每一個url,基於大量正常樣本,抽象出可以描述樣本集的統計學或機器學習模型(Profile)。檢測階段,經過判斷web訪問是否與Profile相符,來識別異常。安全

對於Profile的創建,主要有如下幾種思路:

1. 基於統計學習模型網絡

基於統計學習的web異常檢測,一般須要對正常流量進行數值化的特徵提取和分析。特徵例如,URL參數個數、參數值長度的均值和方差、參數字符分佈、URL的訪問頻率等等。接着,經過對大量樣本進行特徵分佈統計,創建數學模型,進而經過統計學方法進行異常檢測。框架

2. 基於文本分析的機器學習模型機器學習

Web異常檢測歸根結底仍是基於日誌文本的分析,於是能夠借鑑NLP中的一些方法思路,進行文本分析建模。這其中,比較成功的是基於隱馬爾科夫模型(HMM)的參數值異常檢測。學習

3. 基於單分類模型測試

因爲web入侵黑樣本稀少,傳統監督學習方法難以訓練。基於白樣本的異常檢測,能夠經過非監督或單分類模型進行樣本學習,構造可以充分表達白樣本的最小模型做爲Profile,實現異常檢測。編碼

4. 基於聚類模型url

一般正常流量是大量重複性存在的,而入侵行爲則極爲稀少。所以,經過web訪問的聚類分析,能夠識別大量正常行爲以外,小搓的異常行爲,進行入侵發現。

基於統計學習模型

基於統計學習模型的方法,首先要對數據創建特徵集,而後對每一個特徵進行統計建模。對於測試樣本,首先計算每一個特徵的異常程度,再經過模型對異常值進行融合打分,做爲最終異常檢測判斷依據。

這裏以斯坦福大學CS259D: Data Mining for CyberSecurity課程[1]爲例,介紹一些行之有效的特徵和異常檢測方法。

特徵1:參數值value長度
模型:長度值分佈,均值μ,方差σ2,利用切比雪夫不等式計算異常值p

特徵2:字符分佈
模型:對字符分佈創建模型,經過卡方檢驗計算異常值p

特徵3:參數缺失
模型:創建參數表,經過查表檢測參數錯誤或缺失

特徵4:參數順序
模型:參數順序有向圖,判斷是否有違規順序關係

特徵5:訪問頻率(單ip的訪問頻率,總訪問頻率)
模型:時段內訪問頻率分佈,均值μ,方差σ2,利用切比雪夫不等式計算異常值p

特徵6:訪問時間間隔
模型:間隔時間分佈,經過卡方檢驗計算異常值p

最終,經過異常打分模型將多個特徵異常值融合,獲得最終異常打分:

基於文本分析的機器學習模型

URL參數輸入的背後,是後臺代碼的解析,一般來講,每一個參數的取值都有一個範圍,其容許的輸入也具備必定模式。好比下面這個例子:

例子中,綠色的表明正常流量,紅色的表明異常流量。因爲異常流量和正常流量在參數、取值長度、字符分佈上都很類似,基於上述特徵統計的方式難以識別。進一步看,正常流量儘管每一個都不相同,但有共同的模式,而異常流量並不符合。在這個例子中,符合取值的樣本模式爲:數字 字母 數字,咱們能夠用一個狀態機來表達合法的取值範圍:

對文本序列模式的建模,相比較數值特徵而言,更加準確可靠。其中,比較成功的應用是基於隱馬爾科夫模型(HMM)的序列建模,這裏僅作簡單的介紹,具體請參考推薦文章[2]。

基於HMM的狀態序列建模,首先將原始數據轉化爲狀態表示,好比數字用N表示狀態,字母用a表示狀態,其餘字符保持不變。這一步也能夠看作是原始數據的歸一化(Normalization),其結果使得原始數據的狀態空間被有效壓縮,正常樣本間的差距也進一步減少。

緊接着,對於每一個狀態,統計以後一個狀態的機率分佈。例如,下圖就是一個可能獲得的結果。「^」表明開始符號,因爲白樣本中都是數字開頭,起始符號(狀態^)轉移到數字(狀態N)的機率是1;接下來,數字(狀態N)的下一個狀態,有0.8的機率仍是數字(狀態N),有0.1的機率轉移到下劃線,有0.1的機率轉移到結束符(狀態$),以此類推。

利用這個狀態轉移模型,咱們就能夠判斷一個輸入序列是否符合白樣本的模式:

正常樣本的狀態序列出現機率要高於異常樣本,經過合適的閾值能夠進行異常識別。

基於單分類模型

在二分類問題中,因爲咱們只有大量白樣本,能夠考慮經過單分類模型,學習單類樣本的最小邊界,邊界以外的則識別爲異常。

這類方法中,比較成功的應用是單類支持向量機(one-class SVM)。這裏簡單介紹該類方法的一個成功案例McPAD的思路,具體方法關注文章[3]。

McPAD系統首先經過N-Gram將文本數據向量化,對於下面的例子,

首先經過長度爲N的滑動窗口將文本分割爲N-Gram序列,例子中,N取2,窗口滑動步長爲1,能夠獲得以下N-Gram序列。

下一步要把N-Gram序列轉化成向量。假設共有256種不一樣的字符,那麼會獲得256256種2-GRAM的組合(如aa, ab, ac … )。咱們能夠用一個256256長的向量,每一位one-hot的表示(有則置1,沒有則置0)文本中是否出現了該2-GRAM。由此獲得一個256*256長的0/1向量。進一步,對於每一個出現的2-Gram,咱們用這個2-Gram在文本中出現的頻率來替代單調的「1」,以表示更多的信息:

至此,每一個文本均可以經過一個256*256長的向量表示。

如今咱們獲得了訓練樣本的256*256向量集,如今須要經過單分類SVM去找到最小邊界。然而問題在於,樣本的維度過高,會對訓練形成困難。咱們還須要再解決一個問題:如何縮減特徵維度。特徵維度約減有不少成熟的方法,McPAD系統中對特徵進行了聚類達到降維目的。

上左矩陣中黑色表示0,紅色表示非零。矩陣的每一行,表明一個輸入文本(sample)中具備哪些2-Gram。若是換一個角度來看這個矩陣,則每一列表明一個2-Gram有哪些sample中存在,由此,每一個2-Gram也能經過sample的向量表達。從這個角度咱們能夠得到2-Gram的相關性。對於2-Gram的向量進行聚類,指定的類別數K即爲約減後的特徵維數。約減後的特徵向量,再投入單類SVM進行進一步模型訓練。

再進一步,McPAD採用線性特徵約減加單分類SVM的方法解決白模型訓練的過程,其實也能夠被深度學習中的深度自編碼模型替代,進行非線性特徵約減。同時,自編碼模型的訓練過程自己就是學習訓練樣本的壓縮表達,經過給定輸入的重建偏差,就能夠判斷輸入樣本是否與模型相符。

咱們仍是沿用McPAD經過2-Gram實現文本向量化的方法,直接將向量輸入到深度自編碼模型,進行訓練。測試階段,經過計算重建偏差做爲異常檢測的標準。

基於這樣的框架,異常檢測的基本流程以下,一個更加完善的框架能夠參見文獻[4]。

本文管中窺豹式的介紹了機器學習用於web異常檢測的幾個思路。web流量異常檢測只是web入侵檢測中的一環,用於從海量日誌中撈出少許的「可疑」行爲,可是這個「少許」仍是存在大量誤報,只能用於檢測,還遠遠不能直接用於WAF直接攔截。一個完備的web入侵檢測系統,還須要在此基礎上進行入侵行爲識別,以及告警降誤報等環節。

2017阿里聚安全算法挑戰賽將收集從網上真實訪問流量中提取的URL,通過脫敏和混淆處理,讓選手利用機器學習算法提升檢測精度,真實體驗這一過程。並有機會得到30萬元獎金,奔赴加拿大參加KDD----國際最負盛名的數據挖掘會議!

報名地址:https://tianchi.shuju.aliyun....

推薦閱讀

  1. CS259D: Data Mining for CyberSecurity, 課程網址:http://web.stanford.edu/class...

  2. 楚安,數據科學在Web威脅感知中的應用,http://www.jianshu.com/p/942d...

  3. McPAD : A Multiple Classifier System for Accurate Payload-based Anomaly Detection, Roberto Perdisci

  4. AI2 : Training a big data machine to defend, Kalyan Veeramachaneni

做者:七雨@阿里聚安全 ,更多阿里安全類技術文章,請訪問阿里聚安全博客

相關文章
相關標籤/搜索