歡迎來到 黑吧安全網 聚焦網絡安全前沿資訊,精華內容,交流技術心得!

Web攻擊檢測機器學習深度實踐

來源:本站整理 作者:佚名 時間:2019-06-25 TAG: 我要投稿

一、概述
1.1 傳統WAF的痛點
傳統的WAF,依賴規則和黑白名單的方式來進行Web攻擊檢測。該方式過分依賴安全人員的知識廣度,針對未知攻擊類型無可奈何;另一方面即使是已知的攻擊類型,由于正則表達式天生的局限性,以及shell、php等語言極其靈活的語法,理論上就是可以繞過,因此誤攔和漏攔是天生存在的;而提高正則準確性的代價就是添加更多精細化正則,由此陷入一個永無止境打補丁的漩渦,拖累了整體性能。
針對上述問題,目前主流安全廠商的研究方向大體分為兩個陣營:語義解析和AI識別。
1.2 語義解析
從http載荷中提取的疑似可執行代碼段,用沙箱去解析下看是否可以執行。
對于常見的shell命令cat來說,如果用shell的語法去理解,cat c’a't c”’a”’t ””c’a’t””都是一回事。語義理解理論上可以解決部分正則漏報誤報問題,不過也存在一些難點。比如http協議中哪部分是疑似可執行的代碼段,http協議中如何截斷和拼接才能保證正常解析,這些是比較麻煩的;另外sql語法、sehll語法、js語法還需要分別實現。
就Libinjection語義解析庫的來看,就有很多情況的繞過和漏攔,并且它本身也使用到了規則,在傳統WAF規則的基礎上做了一層抽象,換了一種規則的判別方式。其實市面上已經出現了一些基于語義的WAF口號也很響亮,究竟前景如何目前還不是很明朗。
1.3 AI識別
有些AI的擁躉者,樂觀地認為機器學習、深度學習是解決傳統WAF痛點的終極解決方案,額…或許吧,或許只是現在還沒發明出一個比較完美的AI解決方案。即便如此,單純就機器學習為WAF賦能方面來看,還是有一片廣闊天地。
在安全識別領域,人類利用AI技術,以數據為媒介,將構造出的具有區分能力的特征進行數學表達,然后通過訓練模型的方式使之具備區分好壞的能力。
因此,模型的好壞最終取決于數據的質量和特征的好壞,它們決定了模型所能夠達到的上界,而算法則是為了讓模型去嘗試不斷觸碰這個上界。
特征提取就是一個“挖掘大自然美好規律的過程”,某一類特征能夠區分相對應具備該類特征的攻擊類型,核心是這一類特征如何選取既能讓模型有較好的區分能力,同時又具備良好的泛化能里和通用性,甚至是對未知攻擊類型的區分能力。
相對于圖像識別、語音識別等領域,AI在Web安全領域的應用起步略晚,應用也不夠深徹。究其原因,機器學習對Web安全的識別準確度和可維護性尚不能完美替代傳統的WAF規則;基于正則匹配的安全防護,所見即所得,維護即生效。因此,利用AI進行Web攻擊識別若要提高其適用性需從以下幾個方向入手:
- 提高準確度
- 優化邏輯,提高性能
- 模型的高效自我更新迭代
- 對未知攻擊類型的識別
二、Web攻擊特征分析
先來看下攻擊樣例:
1.XSS跨站腳本
script>alert(0)script>
img src=0 onerror=alert(0)>
2.SQl注入
+and+(select+0+from+(select+count(*),concat(floor(rand(0)*0),
union all select null,null,null,null,null,null,null,null#
3.命令執行
${@print(eval($_post[c]))}
exec xp_cmdshell('cat ../../../etc/passwd')#
可以看出Web攻擊請求的特征大體上分為兩個方向:
威脅關鍵詞特征:如
select,script,etc/passwd
不規范結構特征:如
${@print(eval($_post[c]))}
2.1 基于狀態轉換的結構特征提取
我們普遍的做法是將具有相似屬性的字符泛化為一個狀態,用一個固定的字符來代替。如:字母泛化為’N’、中文字符泛化為’Z’、數字泛化為’0’、分隔符泛化為’F’等。其核心思想是,用不同的狀態去表達不同的字符屬性,盡可能讓在Web攻擊中具有含義的字符與其他字符區分開來,然后將一個payload轉換成一連串的狀態鏈去訓練出一個概率轉換矩陣。
常用的模型是隱馬爾可夫鏈模型。如果用黑樣本訓練HHM模型,可以實現以黑找黑的目的,這樣的好處是誤判較低;用白樣本訓練HHM模型,則能發現未知的攻擊類型,但同時會有較高的誤判。在利用收集好的訓練樣本測試的時候發現,針對部分XSS攻擊、插入分隔符的攻擊變種這類在請求參數結構上存在明顯特征的Web攻擊參數,該方式具備良好的識別能力;而對無結構特征的SQL注入或者敏感目錄執行無法識別,這也完全符合預期。
然而,該方式存在一個知名的缺陷:從請求參數結構異常的角度去觀察,結構體異常不一定都是Web攻擊;結構體正常不保證不是Web攻擊。
(1)結構異常xss攻擊 ——> 識別
var _=i[c].id;u.test(_)&&(s=(s+=(_=_.substring(0))+"#@#").replace(/\\|/g," "))}""!==s?(s=s.substring(0,s.length-0),_sendexpodatas
(2)結構異常變形xss攻擊 ——> 識別
/m/101/bookdetail/comment/129866160.page?title=xxx
(3)結構異常sql注入 ——> 識別
/wap/home.htm?utm_source=union%' and 3356=dbms_pipe.receive_message(chr(107)||chr(78)||chr(72)||chr(79),5) and '%'='&utm_medium=14&utm_campaign=32258543&utm_content=504973

[1] [2] [3]  下一頁

【聲明】:黑吧安全網(http://www.zjtpzs.live)登載此文出于傳遞更多信息之目的,并不代表本站贊同其觀點和對其真實性負責,僅適于網絡安全技術愛好者學習研究使用,學習中請遵循國家相關法律法規。如有問題請聯系我們,聯系郵箱[email protected],我們會在最短的時間內進行處理。
  • 最新更新
    • 相關閱讀
      • 本類熱門
        • 最近下載
        神秘东方电子游艺 快手段子手赚钱吗 免费挖矿赚钱平台制作 抑郁症对赚钱不感兴趣是正常吗 如何精准定位到赚钱的项目 开零食多赚钱吗 有啥好赚钱方法没有 快转转发赚钱吗 怎么给公众号投稿赚钱吗 储备金模式怎么赚钱 地摊卖什么比较赚钱 华为和vivo哪个赚钱 怎样看计划群里的计划赚钱又稳又快 梦幻打图赚钱选什么职业好 159封妖赚钱吗 sm最赚钱的 网上哪里可以赚钱兼职工作