當前位置:
首頁 > 新聞 > 基於標記數據學習降低誤報率的演算法優化

基於標記數據學習降低誤報率的演算法優化


無論是基於規則匹配的策略,還是基於複雜的安全分析模型,安全設備產生的告警都存在大量誤報,這是一個相當普遍的問題。其中一個重要的原因是每個客戶的應用場景和數據都多多少少有不同的差異,基於固定判斷規則對有統計漲落的數據進行僵化的判斷,很容易出現誤判。


在沒有持續人工干預和手動優化的情況下,策略和模型的誤報率不會隨著數據的積累而有所改進。也就是說安全分析人員通過對告警打標籤的方式,可以將專業經驗傳授給智能演算法,自動得反饋到策略和模型當中,使之對安全事件做出更精準的判斷。本文介紹利用專家經驗持續優化機器學習的方法,對告警數據進行二次分析和學習,從而顯著地降低安全威脅告警的誤報率。

為了降低誤報率,當前大體上有兩種技術途徑:



根據不同客戶的各種特定情況修正策略和模型,提高策略或者模型的適應能力;


定期(如每月一次)對告警進入二次人工分析,根據分析結果來調整策略和模型的參數配置。


這兩種方法對降低誤報率都有一定的作用。但是第一種沒有自適應能力,是否有效果要看實際情況。第二種效果會好一些,但是非常耗時耗力,而且由於是人工現場干預和調整策略和模型,出錯的概率也非常高。


MIT的研究人員[1] 介紹了一種將安全分析人員標記後的告警日誌作為訓練數據集,令機器學習演算法學習專家經驗,使分析演算法持續得到優化,實現自動識別誤報告警,降低誤報率的方法(以下簡稱「 標籤傳遞經驗方法」)。這種把安全分析人員的專業智能轉化成演算法分析能力的過程,會讓分析演算法隨著數據的積累而更加精確。繼而逐漸擺脫人工干預,提高運維效率。如下圖所示:



下面我們通過基於「頻繁訪問安全威脅告警」模擬的場景數據來介紹一下實現機制。

什麼是頻繁訪問模型?邏輯比較簡單:一段時間內(比如1分鐘),一個攻擊者對系統的訪問次數顯著高於普通訪問者的次數。此告警規則可以用簡單的基於閾值,或者是利用統計分布的離異概率。基於此,我們先模擬一些已經被安全分析人員打過標籤的告警數據。根據實際應用經驗,我們盡量模擬非常接近實際場景的數據。如下圖:



關於模擬數據的介紹:



總共模擬了20天的告警數據,從2017-01-01到2017-01-20。前10天的數據用來訓練模型,後10天的數據用來衡量模型的表現;


每個告警帶有是否誤報的標籤。紅色代表誤報,藍色代表準確告警。


關於模擬數據的假設:



誤報聚集在某個時間段,模擬數據假設的範圍是18:00-19:00。在安全運維實踐中,的確存在某個特定的時間段,由於業務邏輯或者系統原因導致誤報增多的現象。所以上述假設是合理的,告警時間可以作為有效的特徵值。但並不是所有的誤報都聚集在這個時間段,同時並不是這個時間段的所有告警都是誤報;


誤報大多來自於一批不同的IP。所以訪問來源IP也是有用的特徵值;

任何數據都不是完美的,所以在模擬數據中加入了~9%的噪音。也就是說再完美的智能模型,誤報率也不會低於9%。


這些假設在實際的應用場景中也是相對合理的。如果誤報是完全隨機產生的,那麼再智能的模型也不能夠捕捉到誤報的提出信號。所以這些合理的假設幫助我們模擬真實的數據,並且驗證我們的機器學習模型。


簡要模擬數據的代碼實現:



下圖顯示利用PCA降維分析的可視化結果,可以看到明顯的分類情況:



紅色代表誤報,藍色代表正確告警。基於設定特徵值的降維分析可以得到兩個聚集,即誤報和非誤報有明顯的區分的,也就是說誤報的是有一定規律,不是完全隨機的,因此是可以被機器學習捕捉到的。


簡要代碼實現:


基於模擬數據,我們想要達到的目的是通過持續的強化機器學習能夠降低誤報率。所以我們採取的策略是:



訓練一天的數據2017-01-01,測試10天的數據2017-01-11到2017-01-20;


訓練兩天的數據2017-01-01到2017-01-02,測試10天的數據2017-01-11到2017-01-20;


以此類推,來看通過學習越來越多的數據,在測試數據中的誤報率是否能夠得到不斷的改進。


簡要代碼如下:



此安全威脅場景相對簡單,我們不需要太多的特徵值和海量的數據,所以機器學習模型選擇了隨機森林(RandomForest),我們也嘗試了其他複雜模型,得出的效果區別不大。測試結果如下:


達到我們所預期的效果,當訓練數據越來越多的時候,測試數據當中的誤報率從20%多降低到了10%。通過對告警數據和標籤的不斷自學習,可以剔除很多告警誤報。前面提到,數據當中引入了9%的噪音,所以誤報率不會再持續的降低。


在我們的機器學習模型當中,我們利用了4個主要的特徵值:



srcIP,訪問源IP


timeofday,告警產生的時間


visits,訪問次數


destIP,被訪問IP


下圖顯示了特徵值在模型中的重要性:


和我們的預期也是一致的,訪問源IP(srcIP)和告警發生的時間(timeofday)是區分出誤報告警效果最好的特徵值。


另外,由於隨機森林模型以及大部分機器學習模型都不支持分類變數(categoricalvariable)的學習,所以我們把srcIP和 destIP這兩個特徵值做了二值化處理。簡要代碼如下:



總結


本文通過一組模擬實驗數據和隨機森林演算法,從理論上驗證了「標籤傳遞經驗方法」的有效性。即通過安全分析專家對告警日誌進行有效或誤報的標記,把專家的知識技能轉化成機器學習模型的分析能力。和其他方法相比,此方法在完成自動化學習之後就不再需要人工干預,而且會隨著數據的積累對誤報的剔除會更加精確。


具體細節請參考我們的github源代碼:https://github.com/ailpha/ml-reduce-false-alerts


參考文獻:


[1] Kalyan Veeramachaneni,Ignacio Arnaldo , 「AI2 : Training a big data machine to defend」


*本文作者:安恆AiLPHA大數據,轉載請註明來自 FreeBuf.COM

喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

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


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

【FB TV】一周「BUF大事件」:德勤遭網路攻擊;維基解密發布俄羅斯機密文件;Burp Suite被曝存在遠程代碼執行漏洞
安全專家說Android 8.0和iPhone X一樣安全,這是真的嗎?
誰是年度雲安全最佳捍衛者 | WitAwards 2017年度雲安全產品及服務評選「報名進行中」
老牌廠商思科打算用AI創造下一代安全架構 | 國家網路安全宣傳周展商專訪

TAG:FreeBuf |