語義引擎在安全界的地位非常高,並且也是近幾年剛剛興起的新型攻擊檢測技術。著名安全公司長亭科技的核心技術,就包含了XSS語義引擎、SQL語義引擎、PHP語義引擎、JAVA語義引擎。然而截止2018年12月,互聯網上僅僅存在開源的XSS語義引擎和SQL語義引擎,這2款開源語義引擎起始於2013年,並在2016年停止維護。

如何自定義攻擊檢測語義引擎?

拷問著每一個安全研究者!

經過對2款開源語義引擎的研究和調研,發現2款引擎的設計思路完全不一樣,這就對開發一款新型的語義引擎帶來了一定的困擾?我們到底用哪個作為新引擎的模板呢?經過半個月時間對攻擊特徵的研究,在一定程度上領悟了XSS語義引擎和SQL語義引擎為何採用完全不同的思路。突然靈感閃現,為什麼不融合這2款語義引擎的設計思路,來設計新型的語義引擎呢?

立馬行動,花了2天時間重新閱讀了PHP的CRS規則集,提煉出8種token,其中5種token採用2分查找指紋庫,3種token採用威脅確認,寫了一個簡單的demo驗證了猜想,發現可行,淚奔有木有啊。

demo非常簡單,但是設計思路及其巧妙,採用flex切詞,打上token標記,根據token類型進行預處理,再進行2分查找指紋庫或威脅確認,效果如下:

makefile文件:

run: phplib
./phplib < tx

phplib: lex.yy.c libinjection_php_data.h libinjection_php.c
gcc -o $@ $^

lex.yy.c: php.l
flex $^

舊世界的防禦規則已經統治安全圈10多年了,新世界的機器學習和語義引擎還在不停較量,問蒼茫安全大地,誰主沉浮?值得每一位安全從業者反思!


推薦閱讀:
相關文章