當前位置:
首頁 > 新聞 > 基於機器學習的web異常檢測

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

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


基於機器學習技術的新一代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. 基於聚類模型


通常正常流量是大量重複性存在的,而入侵行為則極為稀少。因此,通過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種不同的字元,那麼會得到256*256種2-GRAM的組合(如aa, ab, ac … )。我們可以用一個256*256長的向量,每一位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----國際最負盛名的數據挖掘會議!


點擊閱讀原文查看報名地址


推薦閱讀


1. CS259D: Data Mining for CyberSecurity, 課程網址:

http://web.stanford.edu/class/cs259d/


2. 楚安,數據科學在Web威脅感知中的應用,

http://www.jianshu.com/p/942d1beb7fdd


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


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


您的贊是小編持續努力的最大動力,動動手指贊一下吧!


本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 FreeBuf 的精彩文章:

Forrester公布2016年數據泄露之最:MySpace稱第一,阿里巴巴排第二
是誰導致華盛頓特區70%的CCTV系統癱瘓?
那些年我們「投(shua)」過的票(續)

TAG:FreeBuf |

您可能感興趣

基於大數據和機器學習的Web異常參數檢測系統Demo實現
基於機器學習的KPI自動化異常檢測系統
基於深度學習框架caffe的人臉檢測
Hinton 機器學習視頻中文版:感知器的局限性
Python超過R,成為數據科學和機器學習的最常用語言
Elastic機器學習Steve Dodson:機器學習的潛能
AR、物聯網、Siri和機器學習:iPhone X將展示用戶體驗的變化嗎?
迭代速度慢?成熟的機器學習流如何設計:微博大規模機器學習框架Weiflow揭秘
文本直送科技新聞:Google 機器學習應用分享:基於機器學習並持續進化的翻譯
使用 Python 開始你的機器學習之旅
Synopsys嵌入式視覺處理器IP讓機器學習應用的神經網路性能翻兩番
Google雲計算機器學習服務的術語
Hinton「神經網路與機器學習」課程經驗與簡評
Google 用機器學習,新工具 AutoDraw 讓塗鴉變身藝術家畫作
Python 語言下的機器學習庫
蘋果發iPhone機器學習編程框架 運行模型更容易
GoodData嚮應用和工作流嵌入分析與機器學習能力
培訓 | Python機器學習與數據挖掘案例實戰
Python機器學習和深度學習:你需要知道的內容