背景
通俗地講,任何一個(gè)的機(jī)器學(xué)習(xí)問題都可以等價(jià)于一個(gè)尋找合適變換函數(shù)的問題。例如語(yǔ)音識(shí)別,就是在求取合適的變換函數(shù),將輸入的一維時(shí)序語(yǔ)音信號(hào)變換到語(yǔ)義空間;而近來引發(fā)全民關(guān)注的圍棋人工智能AlphaGo則是將輸入的二維布局圖像變換到?jīng)Q策空間以決定下一步的最優(yōu)走法;相應(yīng)的,人臉識(shí)別也是在求取合適的變換函數(shù),將輸入的二維人臉圖像變換到特征空間,從而唯一確定對(duì)應(yīng)人的身份。
在web應(yīng)用攻擊檢測(cè)的發(fā)展歷史中,到目前為止,基本是依賴于規(guī)則的黑名單檢測(cè)機(jī)制,無論是web應(yīng)用防火墻或ids等等,主要依賴于檢測(cè)引擎內(nèi)置的正則,進(jìn)行報(bào)文的匹配。雖說能夠抵御絕大部分的攻擊,但我們認(rèn)為其存在以下幾個(gè)問題:
規(guī)則庫(kù)維護(hù)困難,人員交接工作,甚至?xí)r間一長(zhǎng),原作者都很難理解當(dāng)初寫的規(guī)則,一旦有誤報(bào)發(fā)生,上線修改都很困難。
規(guī)則寫的太寬泛易誤殺,寫的太細(xì)易繞過。
例如一條檢測(cè)sql注入的正則語(yǔ)句如下:
Stringinj_str = “’|and|exec|insert|select|delete|update|count|*|%|chr|mid|master|truncate|char|declare|;|or|-|+|,”;
一條正常的評(píng)論,“我在selected買的襯衫臟了”,遭到誤殺。
正則引擎嚴(yán)重影響性能,尤其是正則條數(shù)過多時(shí),比如我們之前就遇到kafka中待檢測(cè)流量嚴(yán)重堆積的現(xiàn)象。
那么該如何解決以上問題呢?尤其在大型互聯(lián)網(wǎng)公司,如何在海量請(qǐng)求中又快又準(zhǔn)地識(shí)別出惡意攻擊請(qǐng)求,成為擺在我們面前的一道難題。
近來機(jī)器學(xué)習(xí)在信息安全方面的應(yīng)用引起了人們的大量關(guān)注,我們認(rèn)為信息安全領(lǐng)域任何需要對(duì)數(shù)據(jù)進(jìn)行處理,做出分析預(yù)測(cè)的地方都可以用到機(jī)器學(xué)習(xí)。本文將介紹攜程信息安全部在web攻擊識(shí)別方面的機(jī)器學(xué)習(xí)實(shí)踐之路。
惡意攻擊檢測(cè)系統(tǒng)nile架構(gòu)介紹
圖1: 攜程nile 攻擊檢測(cè)系統(tǒng)架構(gòu)第一版
首先我們簡(jiǎn)單介紹一下攜程攻擊檢測(cè)系統(tǒng)nile的最初架構(gòu),如上圖1所示,我們?cè)诹髁窟M(jìn)入規(guī)則引擎(這里指正則匹配引擎)之前,先用白名單過濾掉大于97%的正常流量(我們認(rèn)為如http://ctrip.com/flight?Search?key=value,只要value參數(shù)值里面沒有英文標(biāo)點(diǎn)和控制字符的都是“正常流量”,另外還有攜程的出口ip流量等等)。
剩下的3%流量過正則規(guī)則引擎,如果結(jié)果為黑(惡意攻擊),就會(huì)發(fā)到漏洞自動(dòng)化驗(yàn)證系統(tǒng)hulk(hulk介紹可以參考https://zhuanlan.zhihu.com/p/28115732),例如調(diào)用sqlmap去重放流量,復(fù)驗(yàn)攻擊者能否真的攻擊成功。
目前nile系統(tǒng)我們改進(jìn)到了第五版,架構(gòu)如下圖2,其中最重要的改變是在規(guī)則引擎之前加入了spark機(jī)器學(xué)習(xí)引擎,目前使用的是spark mllib庫(kù)來建模和預(yù)測(cè)。如果機(jī)器學(xué)習(xí)引擎為黑,則會(huì)繼續(xù)拋給正則規(guī)則引擎做二次檢查,若復(fù)驗(yàn)依然為黑,則會(huì)拋給hulk漏洞驗(yàn)證系統(tǒng)。
圖2:攜程nile 攻擊檢測(cè)系統(tǒng)架構(gòu)最新版
這么做帶來了以下好處:
機(jī)器學(xué)習(xí)的處理速度比較快,能夠過濾掉大部分流量再扔給正則引擎。解決了過去正則導(dǎo)致kafka堆積嚴(yán)重的問題(即使是原始流量中的3%也存在此問題)。
可以對(duì)比正則引擎和機(jī)器學(xué)習(xí)引擎的結(jié)果,互相查缺補(bǔ)漏。例如我們可以發(fā)現(xiàn)正則的漏報(bào)或誤報(bào),手工修改或補(bǔ)充已有的正則庫(kù)。若是機(jī)器學(xué)習(xí)誤報(bào),白流量識(shí)別為黑,首先想到的是否黑樣本不純,另外就是特征提取有問題。
如果機(jī)器學(xué)習(xí)漏報(bào),那怎么辦呢?按圖2的流程我們根本不知道我們漏報(bào)了哪些。最直接的想法就是并列機(jī)器學(xué)習(xí)引擎和正則引擎,來查缺補(bǔ)漏,但這樣違背了我們追求效率的前提。
最近的一個(gè)版本我們加入了動(dòng)態(tài)ip黑名單,時(shí)間窗口內(nèi)多次命中的的高風(fēng)險(xiǎn)ip重點(diǎn)關(guān)注,直接忽略storm白名單。在實(shí)踐中,我們借鑒了此部分黑ip的流量來補(bǔ)充我們的學(xué)習(xí)樣本(黑ip的流量99%以上都是攻擊流量),我們發(fā)現(xiàn)了referer,ua注入等,其他還發(fā)現(xiàn)了其他邏輯攻擊的痕跡,比如訂單遍歷等等。
有人可能會(huì)問,根據(jù)上面的架構(gòu),如果對(duì)方拿新流出的攻擊poc來攻擊你,只攻擊1次,那不是檢測(cè)不出來了么?首先如果poc中還是有很多的特殊英文標(biāo)點(diǎn)和敏感單詞的話,我們還是能檢測(cè)出來的;另一種情況如果真的漏了,那怎么辦,這時(shí)候只能人肉寫新的正則加入檢測(cè)邏輯中,如圖2中我們加入了“規(guī)則引擎(新上規(guī)則)”直接進(jìn)行檢測(cè),經(jīng)過不斷的打標(biāo)簽吐到es日志,新型攻擊的日志又可以作為學(xué)習(xí)用的黑樣本了,如此循環(huán)。
加入機(jī)器學(xué)習(xí)前后的效果對(duì)比:kafka消費(fèi)流量:1萬/分鐘->400萬+,白名單之后的檢測(cè)量:1萬/分鐘->10萬+。
我們?cè)O(shè)置了一分鐘一個(gè)批次消費(fèi),每分鐘有10萬+數(shù)據(jù)從storm過來,只花了10秒鐘左右處理完,所以如果我們縮短消費(fèi)批次窗口,理論上還可以提高5-6倍的吞吐,如下圖3。
圖3:新架構(gòu)下storm處理速度
我們先看一個(gè)機(jī)器學(xué)習(xí)的識(shí)別結(jié)果,如下圖4:
圖4:機(jī)器學(xué)習(xí)es記錄日志
rule_result標(biāo)簽是正則的識(shí)別結(jié)果,由于當(dāng)時(shí)我們沒有添加struts2攻擊的正則,但是由ES日志結(jié)果可知,機(jī)器學(xué)習(xí)引擎依然檢測(cè)出了攻擊。
介紹了完了架構(gòu),回歸機(jī)器學(xué)習(xí)本身,下面將介紹如何建立一個(gè)web攻擊檢測(cè)的機(jī)器學(xué)習(xí)模型。而一般來講,應(yīng)用機(jī)器學(xué)習(xí)解決實(shí)際問題分為以下4個(gè)步驟:
定義目標(biāo)問題
收集數(shù)據(jù)和特征工程
訓(xùn)練模型和評(píng)估模型效果
線上應(yīng)用和持續(xù)優(yōu)化
定義目標(biāo)問題
核心的目標(biāo)問題:
二分類問題,預(yù)測(cè)流量是攻擊或者正常
漏報(bào)率必須<10%以上(在這里,我們認(rèn)為漏報(bào)比誤報(bào)問題更嚴(yán)重,誤報(bào)我們還可以通過第二層的正則引擎去糾正)
模型預(yù)測(cè)速度必須快,例如knn最近鄰這種帶排序的算法被我們剔除在外
機(jī)器學(xué)習(xí)應(yīng)用于信息安全領(lǐng)域,第一道難關(guān)就是標(biāo)簽數(shù)據(jù)的缺乏,得益于我們的ES日志中已有正則打上標(biāo)簽的真實(shí)生產(chǎn)流量,所以這里我們決定使用基于監(jiān)督學(xué)習(xí)的二分類來建模。監(jiān)督學(xué)習(xí)的目的是通過學(xué)習(xí)許多有標(biāo)簽的樣本,然后對(duì)新的數(shù)據(jù)做出預(yù)測(cè)。當(dāng)然也有人提出過無監(jiān)督的思路,建立正常流量模型,不符合模型的都識(shí)別為惡意,比如使用聚類分析,本文不做進(jìn)一步討論。
沒有一個(gè)機(jī)器學(xué)習(xí)模型可以解決所有的問題, 我們可以借鑒前人的經(jīng)驗(yàn),比如貝葉斯適用垃圾郵件識(shí)別,HMM適用語(yǔ)音識(shí)別。具體的算法對(duì)比可參考https://s3-us-west-2.amazonaws.com/mlsurveys/54.pdf
明確了我們需要達(dá)到的目標(biāo),下面開始考慮“收集數(shù)據(jù)和特征工程 ”,也是我們認(rèn)為模型成敗最關(guān)鍵的一步。
收集數(shù)據(jù)和特征工程
我們寫段腳本,分別按天分時(shí)間段取ES黑白數(shù)據(jù),并將其分開存儲(chǔ),再加上自研waf的告警日志,以及網(wǎng)上收集的poc,至此我們的訓(xùn)練原始材料準(zhǔn)備好了 。另外特別需要注意的是:get請(qǐng)求和post請(qǐng)求我們分開提取特征,分開建模,至于為什么請(qǐng)讀者自行思考。
一開始本地實(shí)驗(yàn)時(shí),我是選用的python的sklearn庫(kù),訓(xùn)練樣本黑白數(shù)據(jù)分別為10w+條數(shù)據(jù),達(dá)到1比1的平衡占比。項(xiàng)目上線的時(shí)候,我們采用的是spark mllib來做的。本文為了介紹方便,還是以python+sklean來進(jìn)行介紹。
再來聊聊“特征工程”。我們認(rèn)為“特征工程”是機(jī)器模型中最重要的一部分,其更像是一門藝術(shù),往往依賴于專家的“直覺”和專業(yè)領(lǐng)域經(jīng)驗(yàn),更甚者有人調(diào)侃機(jī)器學(xué)習(xí)其實(shí)就是特征工程。你能相信一個(gè)從來不看NBA的人建模出來的NBA總決賽預(yù)測(cè)結(jié)果模型么?
限于篇幅,這里主要介紹我們認(rèn)為項(xiàng)目中比較重要的“特征工程”的步驟:
特征提煉:
核心需求:從訓(xùn)練數(shù)據(jù)中提取哪些有效信息,需要這些信息如何組織?
我們觀察一下ES日志中攻擊語(yǔ)句和正常語(yǔ)句的區(qū)別,如下:
攻擊語(yǔ)句:flights.ctrip.com/Process/checkinseat/index?tpl_content=&name=test404.php&dir=index/../../../..¤t_dir=tpl
正常語(yǔ)句:flights.ctrip.com/Process/checkinseat/index?tpl_content=hello,world!
明顯我們看到攻擊語(yǔ)句里面最明顯的特征是,含有eval, ../等字符、標(biāo)點(diǎn),而正常語(yǔ)句我們看到含有英文逗號(hào),感嘆號(hào)等等,所以我們可以將例如eval的個(gè)數(shù)列出來作為一個(gè)特征維度。在實(shí)際處理中我們忽略了uri,只取value參數(shù)中的值來提特征。比如上面的2條語(yǔ)句flights.ctrip.com/Process/checkinseat/index?tpl_content部分都被我們忽略了。
defget_evil_eval(url):
returnlen(re.findall("(eval)",url,re.IGNORECASE))
如果不存在value,例如是敏感目錄猜測(cè)攻擊,那怎么辦,我們的做法是分開對(duì)待,剔除掉例如flights.ctrip.com等無效數(shù)據(jù),取整個(gè)uri來提特征。
假設(shè)我們規(guī)定取5種特征,分別是script,eval,單引號(hào),雙引號(hào),左括號(hào)的個(gè)數(shù),那么上面攻擊語(yǔ)句就轉(zhuǎn)換為[0,1,0,0,2]
最后我們得到一個(gè)攻擊語(yǔ)句的特征是5維的,打上標(biāo)簽label=1 ,正常流量label=0做區(qū)分。這樣,一個(gè)請(qǐng)求就轉(zhuǎn)換成一個(gè)1*n的矩陣,m個(gè)訓(xùn)練樣本就是m*n的輸入建模。
但是上線了第一版后,雖然消息隊(duì)列消費(fèi)速度大幅提升,識(shí)別率也基本都還可以,但我們還是放棄了這種正則匹配語(yǔ)句的特征提取方法,這里說下原因:
這樣用正則來提取特征,總會(huì)有遺漏的關(guān)鍵詞,又會(huì)陷入查缺補(bǔ)漏的怪圈
優(yōu)化特征較麻煩,例如加上某個(gè)特征維度后,會(huì)增加誤報(bào),去掉后又會(huì)增加漏報(bào)
預(yù)測(cè)的時(shí)候,還是要將請(qǐng)求語(yǔ)句過一遍正則,轉(zhuǎn)化為數(shù)字向量特征,降低了引擎效率
我們得到了使用機(jī)器學(xué)習(xí)來做情感二分類的啟發(fā),查證了資料1https://github.com/jeonglee/ML后,決定替換掉正則提取特征的方式,采用tfidf來提取特征。
我們認(rèn)為本質(zhì)上情感二分類和黑白流量分類是比較相似的問題,前者是給出一句話例如“Tom,you are not a good boy!”來判斷是否正面評(píng)價(jià),而我們的語(yǔ)句中沒那么多正面或負(fù)面的情感詞,更多的是英文標(biāo)點(diǎn)和和一些疑似高危詞語(yǔ)如select,那我們概念替換一下,高危英文標(biāo)點(diǎn)是否就像是負(fù)面情感詞,其他詞就像是中性詞,從而我們的問題就變成了二分類“中性語(yǔ)句和惡意語(yǔ)句”。
這里簡(jiǎn)單介紹下tfidf,更詳盡的可以參考https://en.wikipedia.org/wiki/Tfidf。
例如我們有1000條get請(qǐng)求語(yǔ)句,第一條語(yǔ)句共計(jì)10個(gè)單詞,其中單引號(hào)有3個(gè),from也有3個(gè)。1000條語(yǔ)句中有10條語(yǔ)句包含單引號(hào),100條包含from,tfidf計(jì)算如下(在進(jìn)行tfidf計(jì)算之前,我們需要對(duì)句子中的標(biāo)點(diǎn)和特殊字符做處理,比如轉(zhuǎn)為string類型,具體參考資料1):
計(jì)算結(jié)果:?jiǎn)我?hào)的tfidf=0.587 > from的tfidf=0.3318
TFIDF的主要思想是:如果某個(gè)詞或短語(yǔ)在一篇文章中出現(xiàn)的頻率,并且在其他文章中很少出現(xiàn),則認(rèn)為此詞或者短語(yǔ)具有很好的類別區(qū)分能力,適合用來分類。這里和我們的大腦判斷基本一致,單引號(hào)的tfidf值對(duì)比之下更大,比from更能代表一句話是否是攻擊語(yǔ)句。
代碼demo如下:
之所以取ngram_range={1,3},是因?yàn)槲覀兿氡4媲昂髥卧~間的順序關(guān)系作為特征的一部分,例如前面的“Tom,you are not a good boy!”中的一個(gè)維度特征是[not, a , good],然后計(jì)算得到這個(gè)“集合詞”的tfidf 。當(dāng)然你可以基于char來取特征,具體的參數(shù)取值寬度都需要實(shí)驗(yàn)來證明哪一種效果最好。至于去停用詞,標(biāo)點(diǎn)怎么轉(zhuǎn)換等等,大家可以參考https://github.com/jeonglee/ML/blob/master/spark/NaiveBayes/src/main/java/WordParser.java,這里就不贅述。
樣本數(shù)據(jù)清洗:
雖然我們已經(jīng)明確了如何提取特征,建模貌似也ok了,這時(shí)我們問自己一個(gè)問題:訓(xùn)練數(shù)據(jù)覆蓋率怎么樣,原始訓(xùn)練數(shù)據(jù)的標(biāo)簽是否準(zhǔn)確?如果我們本身的訓(xùn)練樣本就不純凈,結(jié)果一定也不盡如人意。下面說一下我們?cè)跇颖厩逑粗凶鲞^的工作:
優(yōu)化已有的檢測(cè)正則:當(dāng)打開white.txt和black.txt,我們?nèi)庋塾^察了一下,發(fā)現(xiàn)不少的錯(cuò)誤歸類,所以說明我們的正則引擎本身就存在優(yōu)化的需要。
加入動(dòng)態(tài)ip黑名單,收集其攻擊日志,加入黑樣本。經(jīng)過我們觀察,發(fā)現(xiàn)這種持續(xù)拿掃描器掃描的ip,其黑流量占比99%以上
關(guān)于白樣本,我們可以直接按時(shí)間段取原始流量作為白樣本數(shù)據(jù),因?yàn)楫吘拱讟颖菊肩R像流量的99.99%以上
樣本去重,相同請(qǐng)求內(nèi)容語(yǔ)句進(jìn)行去重
一些加密請(qǐng)求,根據(jù)參數(shù)名稱,從樣本中剔除
自建黑詞庫(kù),放到白樣本去中去匹配是否命中詞庫(kù)內(nèi)容,查找標(biāo)簽明顯錯(cuò)誤的樣本。舉個(gè)例子,建立一個(gè)黑詞庫(kù)[base64_decode, onglcontext, img script, struts2....],然后放到白樣本里去查找匹配中的句子,剔除之。其實(shí)這種方法可應(yīng)用的地方很多,例如旅游業(yè)的機(jī)器人客服,就可以用酒店的關(guān)鍵詞去火車票的樣本中去清洗數(shù)據(jù),我們也是受此啟發(fā)。
特征清洗大概占我們工作量的60%以上,也是不可避免的持續(xù)優(yōu)化的過程,屬于體力活,無法避免。
特征歸一化:由于這里我們采取了tfidf,所以這里就沒有使用歸一化處理了,因?yàn)樵~頻tf就帶了防止偏向長(zhǎng)句子的歸一化效果。這里再提一下,如果用第一版正則取特征的方式就必須使用特征歸一化,具體原因和歸一化介紹請(qǐng)參考http://blog.csdn.net/leiting_imecas/article/details/54986045 。
訓(xùn)練模型和評(píng)估模型效果
初步評(píng)判sklearn訓(xùn)練模型很簡(jiǎn)單,這里我們交叉訓(xùn)練下,拿50%的數(shù)據(jù)訓(xùn)練,50%的數(shù)據(jù)做測(cè)試,看下效果是否符合預(yù)期。
如果此時(shí)交叉訓(xùn)練的結(jié)果不盡如人意,一般原因有3個(gè),且一般是下列第一、二種原因?qū)е缕x預(yù)期結(jié)果較遠(yuǎn),我們認(rèn)為算法只是錦上添花,特征工程和樣本的質(zhì)量才是準(zhǔn)確率高低的關(guān)鍵。
特征提取有問題,這個(gè)沒辦法,完全基于個(gè)人特定范圍的知識(shí)領(lǐng)域經(jīng)驗(yàn)
訓(xùn)練樣本有問題,錯(cuò)誤標(biāo)簽較多,或者樣本不平衡
算法和選取的訓(xùn)練參數(shù)需要優(yōu)化
前面2個(gè)都介紹過了,下面我們講一下參數(shù)如何優(yōu)化,這里我們介紹使用sklearn里面的GridSearchCV,其基本原理是系統(tǒng)地遍歷多種參數(shù)組合,通過交叉驗(yàn)證確定最佳效果參數(shù),參考官方使用示例http://scikit-learn.org/dev/modules/generated/sklearn.grid_search.GridSearchCV.html。
交叉訓(xùn)練達(dá)到心理預(yù)期之后,我們就將訓(xùn)練得到的本地模型存儲(chǔ)到硬盤上,方便下次直接load使用。
訓(xùn)練和在線預(yù)測(cè)的demo代碼如下,首先我們將黑白樣本存儲(chǔ)在trainData.csv,分別存在uri和label標(biāo)簽下,
圖5:訓(xùn)練樣本數(shù)據(jù)csv存儲(chǔ)格式
此時(shí),如果用已知標(biāo)簽的驗(yàn)證數(shù)據(jù)來評(píng)估我們的機(jī)器學(xué)習(xí)模型,我們推薦使用混淆矩陣作為評(píng)判標(biāo)準(zhǔn),
#expected是標(biāo)簽值,predicted是模型預(yù)測(cè)的結(jié)果
print("Confusionmatrix:\n%s"%metrics.confusion_matrix(expected,predicted))
輸出:
Confusion matrix:
[[ 1 0]
[ 4226 65867]]
大概解釋下混淆矩陣的結(jié)果:
真實(shí)情況 | 預(yù)測(cè)結(jié)果 | |
正例 | 反例 | |
正例 | TP,實(shí)際為正預(yù)測(cè)為正 | FN,實(shí)際為正預(yù)測(cè)為負(fù) |
反例 | FP,實(shí)際為負(fù)預(yù)測(cè)為正 | TN,實(shí)際為負(fù)預(yù)測(cè)為負(fù) |
由于此次我們的驗(yàn)證數(shù)據(jù)集只有1條正常流量,所以我們看到FN為0 。我們更關(guān)心惡意流量被識(shí)別為正常流量的情況(漏報(bào)),我們看到這里漏報(bào)達(dá)到4226條,如果要計(jì)算漏報(bào)率,可以使用以下指標(biāo)
print("Classificationreportforclassifier%s:\n%s\n"%(model,metrics.classification_report(expected,predicted)))
輸出:
召回率:Recall=TP/ (TP+FN)
準(zhǔn)確率:Accuracy=(TP+TN)/ (TP+FP+TN+FN)
精準(zhǔn)率:Precision=TP/ (TP+FP) ,
f1-score是召回率和準(zhǔn)確率的調(diào)和平均數(shù),并假設(shè)兩者一樣重要,計(jì)算公式:
f1-score=(2*Recall*Accuracy) / (Recall+Accuracy)
很明顯,我們這里的召回率0.94,代表我們的漏報(bào)率為6%,勉強(qiáng)屬于可接納的范圍內(nèi),還需持續(xù)優(yōu)化。
線上應(yīng)用和持續(xù)優(yōu)化
線上應(yīng)用,也就是將建好的模型嵌入到我們已有的nile框架中去,且需要設(shè)置好一鍵開關(guān)機(jī)器學(xué)習(xí)引擎,還有正則的一鍵開關(guān),對(duì)于某些經(jīng)常漏報(bào)的就直接先進(jìn)正則引擎了,當(dāng)然正則個(gè)數(shù)需要約束,不然又走回了正則檢測(cè)的死胡同了。后面我們就需要持續(xù)的觀察輸出,不斷的自動(dòng)化補(bǔ)充規(guī)則,自動(dòng)訓(xùn)練新的模型。
參考前面提到的nile框架,目前遇到的最大的問題:我們?nèi)绾蚊鎸?duì)遺漏了的攻擊流量,是否可接受這部分風(fēng)險(xiǎn)。目前還沒有想到一個(gè)好的方案。
歸根結(jié)底,我們還是認(rèn)為特征提取是對(duì)模型準(zhǔn)確率影響最大的因素,特征工程是一個(gè)臟活累活,花在上面的時(shí)間遠(yuǎn)遠(yuǎn)大于其他步驟,對(duì)工程師的要求更高,往往要求大量的專業(yè)知識(shí)經(jīng)驗(yàn)和敏銳的直覺,外加一些“靈感”??梢赃@樣說,好特征即使配上較差的算法或參數(shù),依然可以獲得較好的結(jié)果。因?yàn)楹玫奶卣骶鸵馕吨x現(xiàn)實(shí)問題的本質(zhì)更加接近。另外就缺一個(gè)勤勤懇懇洗數(shù)據(jù)的工程師了。
未來展望
目前我們?cè)跈C(jī)器學(xué)習(xí)方面的信息安全應(yīng)用還存在以下可以更進(jìn)一步的地方:
對(duì)非標(biāo)準(zhǔn)的json,xml數(shù)據(jù)包的判斷,因?yàn)檫@些數(shù)據(jù)中內(nèi)容長(zhǎng),標(biāo)點(diǎn)多,且有的是非標(biāo)準(zhǔn)結(jié)構(gòu),例如json結(jié)構(gòu)體無法順利拆開,造成預(yù)測(cè)結(jié)果有誤差。
加入多分類,可以識(shí)別出不同web攻擊的類型,從而更好的和hulk結(jié)合。
在其他方面的應(yīng)用,例如隨機(jī)域名檢測(cè),ugc惡意評(píng)論,色情圖片識(shí)別等等,目前這方面我們也已經(jīng)陸續(xù)展開了實(shí)踐。
將spark mllib庫(kù)替換為spark ml庫(kù)。
最后一句話總結(jié),路才剛剛開始。
-
Web
+關(guān)注
關(guān)注
2文章
1284瀏覽量
70887 -
安防
+關(guān)注
關(guān)注
10文章
2276瀏覽量
63770 -
機(jī)器學(xué)習(xí)
+關(guān)注
關(guān)注
66文章
8493瀏覽量
134161
原文標(biāo)題:機(jī)器學(xué)習(xí)在web攻擊檢測(cè)中的應(yīng)用實(shí)踐
文章出處:【微信號(hào):AI_Thinker,微信公眾號(hào):人工智能頭條】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
用防火墻封阻應(yīng)用攻擊的八項(xiàng)指標(biāo)
專家呼吁:網(wǎng)絡(luò)安全建設(shè)亟需開放與合作
針對(duì)非接觸式安全微控制器的攻擊方式及防范措施
AI:對(duì)物聯(lián)網(wǎng)安全的影響
決策樹在機(jī)器學(xué)習(xí)的理論學(xué)習(xí)與實(shí)踐
攜程的 Dubbo 之路
關(guān)于攜程Docker的實(shí)踐分析

機(jī)器學(xué)習(xí)簡(jiǎn)單運(yùn)用方面的基礎(chǔ)知識(shí)

Web應(yīng)用安全評(píng)估

評(píng)論