A Deep Learning Approach to Fast, Format-Agnostic Detection of Malicious Web Content 閱讀筆記
來自專欄 西土城的搬磚日常
論文地址:https://arxiv.org/abs/1804.05020
來源:[cs.CR] 13 Apr 2018
1 介紹
惡意網頁內容檢測,旨在發現網頁中隱藏的攻擊代碼、釣魚信息等。論文提出的方法不單追求危險檢測的效果,還要求該方法能夠在諸如終端設備等商業級硬體上快速運行,不至於影響用戶體驗。論文採用了詞袋結合樹形分層檢測結構的方法,以多種詞袋式方法作為基線,架構以0.1%的誤報率實現97.5%的檢測率,並在商用硬體上以每秒超過100個的速率對小批量網頁進行分類。
2 系統結構
網路主要由特徵表示層、Inspector、Master三個部分組成,下面分別介紹。
2.1 特徵表示
傳統的用詞袋方法進行惡意網頁內容檢測都是基於整個網頁的詞袋錶示,這往往會有大量雜訊干擾,不利於檢測出藏匿在良性網頁內容下的一絲惡意網頁內容,故論文對傳統詞袋錶示做出了改進:採取基於不同空間尺度的詞袋樹表示方法。
2.1.1 Tokenize塊
Tokenize方法基於一個正則表達式:([?x00-x7F]+|w+),把網頁內容(html文件等)劃分成沿著非字母數字內容邊界的token,再將token流平均劃分成16個塊(每個塊的長度就是裡面包含的token的個數)。
2.1.2 特徵哈西
對上述每個塊的內容進行特徵哈西(作為一種快速高效的特徵壓縮方法),每個塊得到一個1024維的詞袋式向量,故得到一個 的特徵矩陣。
2.1.3 構建分層樹
對上述 的矩陣進行 , 的均值pooling,直到輸出矩陣大小為 ,得到分層樹。分層樹的葉子節點對應特徵哈西得到的16個塊的詞袋特徵,通過逐層向上整合局部信息,在根節點上得到全局信息。故通過分層樹得到一個 的網頁內容詞袋式特徵表示。( )
2.2 Inspector
Inspector是兩層全鏈接網路,用來提取網頁抽象特徵表示,結構如下圖所示。Inspector用於對不同空間尺度的詞袋特徵進行相同的特徵學習,即將 的分層樹特徵按行一一輸入到Inspector中,Inspector的輸出在列上進行最大值pooling,得到 的向量。從直覺上來看,通過上述方式,使得模型可以學到最有利於判別惡意網頁內容的模板特徵,無論這個特徵出現在網頁內容的什麼位置,以及這個網頁內容有多長。Inspector中使用Layer Norm來對抗梯度消失,利用Dropout層來減少過擬合。
2.3 Master
Master也是一個兩層全鏈接層結構,每層前有一層Layer Norm和Dropout,作為分類器。Master以Inspector輸出的 網頁抽象特徵作為輸入,最後是一組26個sigmoid單元,對應一個 的分類結果,其中分類結果第一個值對應網頁是否含有惡意內容,後邊25個分別作為額外的信息標籤,例如是否是一個釣魚網站,或者是一個挖掘工具。
3 數據集
論文中使用的訓練數據來源於VirusTotal,數據分布如下圖。
VirusTotal定期收集新網頁,並使用來自安全供應商的60個威脅監測器來對網頁進行標註。這樣的數據存在一個問題,即:如何說明系統不是只學到了安全供應商的知識,而不能學習到安全供應商暫時所不具備的新知識?
論文中採取的方式是:使用前8個月的數據作為訓練集,而後2個月作為測試集,由於後續數據往往使用了新的規則和知識進行標註,且訓練的模型未曾見過測試集的數據,如果系統在測試集表現良好,則說明系統可以學到新知識。
4 實驗
5 總結
論文中使用的分層樹是一大亮點,對系統的性能起到了至關重要的影響。同時,論文不僅論證了所提出的方法對baseline的優勢,同時還論證了分層樹提升性能和Inspector提高效率,對照充分嚴謹。
推薦閱讀:
※機器學習預測地震,信得過嗎?
※Embedding向量召回在蘑菇街的實踐
※python3機器學習經典實例-學習筆記9-分類演算法
※集智漫畫:如何教女朋友人工智慧(一)
※cs231n assignment1
TAG:機器學習 |