樸楊鶴然 任俊玲
摘 要:針對目前主流惡意網(wǎng)頁檢測技術耗費資源多、檢測周期長和分類效果低等問題,提出一種基于Stacking的惡意網(wǎng)頁集成檢測方法,將異質(zhì)分類器集成的方法應用在惡意網(wǎng)頁檢測識別領域。通過對網(wǎng)頁特征提取分析相關因素和分類集成學習來得到檢測模型,其中初級分類器分別使用K近鄰(KNN)算法、邏輯回歸算法和決策樹算法建立,而次級的元分類器由支持向量機(SVM)算法建立。與傳統(tǒng)惡意網(wǎng)頁檢測手段相比,此方法在資源消耗少、速度快的情況下使識別準確率提高了0.7%,獲得了98.12%的高準確率。實驗結(jié)果表明,所提方法構(gòu)造的檢測模型可高效準確地對惡意網(wǎng)頁進行識別。
關鍵詞:惡意網(wǎng)頁;機器學習;分類器集成;Stacking
中圖分類號:TP309.2
文獻標志碼:A
文章編號:1001-9081(2019)04-1081-08
Abstract: Aiming at the problems of excessive cost of resource, long detection period and low classification effect of mainstream malicious webpage detection technology, a Stacking-based malicious webpage integrated detection method was proposed, with heterogeneous classifiers integration method applying to malicious webpage detection and recognition. By extracting and analyzing the relevant factors of webpage features, and performing classification and ensemble learning, the detection model was obtained. In the detection model, the primary classifiers were constructed based on K-Nearest Neighbors (KNN) algorithm, logistic regression algorithm and decision tree algorithm respectively, and Support Vector Machine (SVM) classifier was used for the construction of secondary classifier. Compared with the traditional malicious webpage detection methods, the proposed method improves the recognition accuracy by 0.7% and obtains a high accuracy of 98.12% in the condition of low resource consumption and high velocity. The experimental results show that the detection model constructed by the proposed method can recognize malicious webpages efficiently and accurately.
Key words: malicious webpage; machine learning; classifier ensemble; Stacking
0?引言
目前,各種釣魚網(wǎng)頁、掛馬網(wǎng)頁及其變種層出不窮,惡意網(wǎng)頁所采用的攻擊和欺騙手段也日趨復雜。用戶在瀏覽各類網(wǎng)頁時稍不留神就會處于危害之中,主機可能會無聲無息地被惡意網(wǎng)頁感染,不僅導致用戶本身信息數(shù)據(jù)和財產(chǎn)的損失,受害者還很可能會成為攻擊者的跳板,作為“肉雞”用于攻擊其他的用戶。由于惡意網(wǎng)頁有如此廣泛的傳播面同時能夠帶來相當可觀的黑色收入,因而非常受“黑產(chǎn)組織”的歡迎。而如今每天甚至每小時的網(wǎng)頁數(shù)量呈爆炸式增長,也為惡意網(wǎng)頁的隱蔽提供了極佳的條件。鑒于惡意網(wǎng)頁形式多樣、影響廣泛、隱蔽性強的特點,如何高效快速地識別惡意網(wǎng)頁已成為如今互聯(lián)網(wǎng)安全的一個重要研究課題。
惡意網(wǎng)頁檢測技術主要有針對行為的動態(tài)檢測和針對特征的靜態(tài)檢測兩大類別。動態(tài)網(wǎng)頁分析檢測是在蜜罐、虛擬機的環(huán)境下,通過將獲取到的超級文本標記語言(HyperText Markup Language,HTML)或JavaScript等網(wǎng)頁源代碼在虛擬的環(huán)境中運行并使用瀏覽器對網(wǎng)頁進行訪問,實時監(jiān)測系統(tǒng)情況和網(wǎng)頁的動態(tài)行為,如系統(tǒng)中的注冊表、進程、文件等的狀態(tài)改變等,依此來判斷正在運行的網(wǎng)頁是否屬于惡意網(wǎng)頁類別[1]。該方法對未知數(shù)據(jù)的檢測正確率相對較高,但虛擬機引擎技術與蜜罐檢測技術的系統(tǒng)資源消耗十分巨大,其對時間和資源的消耗也很高,因此只有在一些大型檢測中心才會使用此類檢測識別方式。而多數(shù)惡意網(wǎng)頁檢測技術的研究集中在靜態(tài)特征檢測方面,本文也主要針對靜態(tài)檢測技術進行研究和探索。
靜態(tài)檢測為直接通過網(wǎng)頁的源代碼進行惡意網(wǎng)頁識別的技術,包括模式匹配、靜態(tài)代碼分析、啟發(fā)式規(guī)則和機器學習[2]等方法。具體為:1)模式匹配是惡意代碼檢測識別的基本辦法,主要通過檢測是否含有由已知的惡意網(wǎng)頁源代碼片段生成的特征碼來實現(xiàn)對網(wǎng)頁的識別。該方法需要一定長度的特征碼才可以保證識別的正確性,否則極易將正常網(wǎng)頁代碼錯誤識別成惡意的。
采取包含通配符的特征碼是對該技術的一種改進方式,可以識別相當一部分的惡意網(wǎng)頁代碼。文獻[3]中的網(wǎng)絡檢測系統(tǒng)Snort就是使用基于模式匹配的靜態(tài)檢測系統(tǒng)。
2)靜態(tài)代碼分析則通過將待檢測網(wǎng)頁源代碼與代表網(wǎng)頁語義特征的源碼結(jié)構(gòu)模板進行比對,經(jīng)由衡量其與模板的相對距離等來判定網(wǎng)頁是否為惡意的。黃建軍等[4]設計了基于植入特征的惡意網(wǎng)頁源代碼檢測手段,即采用識別網(wǎng)頁架構(gòu)源碼特征的方法。
上述兩種方法中特征碼或結(jié)構(gòu)模板都需要提前定義好,因此不能對未知類別的攻擊進行有效檢測識別。
3)啟發(fā)式規(guī)則就是基于某種技術或可以自主發(fā)現(xiàn)的某種特性來對數(shù)據(jù)進行識別的方法。該方法往往會為不同規(guī)則分配特定特征,通過設置每個規(guī)則的權重并對其進行綜合識別,判定其與預先設定的閾值的關系來判定是否為惡意網(wǎng)頁。張昊等[5]提出了基于判斷矩陣法的檢測技術,即通過對不同網(wǎng)頁統(tǒng)計特征賦權重來綜合判斷網(wǎng)頁中是否含有造成用戶損失的惡意代碼。啟發(fā)式規(guī)則的優(yōu)點在于可以對未知的惡意網(wǎng)頁進行判定,但可能導致較高的誤判率。
4)機器學習方法通過對訓練樣本進行訓練得到分類模型,并通過分類模型對未知網(wǎng)頁進行分類。利用機器學習方法能夠從大量惡意網(wǎng)頁與正常網(wǎng)頁的數(shù)據(jù)集中訓練學習出有效的分類特征信息,并通過分類模型對其進行分類。
如Ma等[6]提出了一種基于統(tǒng)一資源定位符(Uniform Resource Locator,URL)特征和host信息的分類方法,并論證了多種機器學習算法對此類特征的表現(xiàn)與對比差異,但選取的特征數(shù)量不多。
Yoo等[7]提出了一種基于異常與誤用判斷模塊的檢測系統(tǒng),其中含有兩個不同分類器模型:一個使用監(jiān)督算法;另一個使用半監(jiān)督算法,共同用于惡意網(wǎng)頁檢測。
李洋[8]則提出了一種基于混合型機器學習算法的惡意網(wǎng)頁源代碼識別系統(tǒng),采用了三種不同的分類算法,根據(jù)三種不同分類模型的測試結(jié)果進行最終分類器選取。王正琦等[9]設計出了基于兩層分類器的惡意網(wǎng)頁檢測技術,分別使用樸素貝葉斯和支持向量機(Support Vector Machine, SVM)層次化地實現(xiàn)了檢測。
由上可見,基于機器學習的惡意網(wǎng)頁檢測多為從網(wǎng)頁特征的設置和分類方法的選取等方面進行探討,且逐步由基于單一機器學習算法向多種機器學習算法的組合轉(zhuǎn)變,相對于其他方法有較大的靈活性和較好的識別效果,以上文獻中提出的方法也在一定程度上促進了惡意網(wǎng)頁檢測技術的進步,但在特征的多樣性以及檢測速度和準確率上仍有一些不足。
本文在對上述各種研究成果進行分析與梳理的基礎上,選擇機器學習作為惡意網(wǎng)頁識別的方法,同時為了多維度提取惡意網(wǎng)頁特征,首先對惡意網(wǎng)頁進行分類后,針對不同類別進行特征提取,并將異質(zhì)分類器集成的方法應用到惡意網(wǎng)頁檢測領域,提出了一種基于Stacking的惡意網(wǎng)頁集成識別方法,通過多個初級分類器和元分類器多層次結(jié)合的方法實現(xiàn)惡意網(wǎng)頁的判別,在檢測效率和準確性方面都有所提升。
1?相關知識
1.1?惡意網(wǎng)頁分類
目前對惡意網(wǎng)頁沒有非常廣泛通用的分類方法,本文通過對惡意網(wǎng)頁的針對目標、行為表現(xiàn)與特征進行分析,將惡意網(wǎng)頁分為兩類:一類為篡改被黑類網(wǎng)頁,即通過嵌入惡意代碼使惡意程序、木馬病毒等能夠通過其進行攻擊與感染的網(wǎng)頁;另一類為虛假釣魚類網(wǎng)頁,而通過虛假內(nèi)容對用戶進行釣魚攻擊從而非法獲取用戶數(shù)據(jù)的網(wǎng)頁。篡改被黑類網(wǎng)頁原本是提供正常服務的合法網(wǎng)頁,因其后臺被黑客攻破或者存在一些可利用漏洞,導致正常網(wǎng)頁上代碼被修改,從而隱蔽地攻擊正在訪問的用戶;虛假釣魚類網(wǎng)頁則本身就是對正常網(wǎng)頁的模仿,通過URL和頁面內(nèi)容混淆視聽,使訪問用戶誤以為是正常網(wǎng)頁,從而對用戶進行信息、資金盜取或者釣魚攻擊。因此,這兩類惡意網(wǎng)頁在進行檢測時提取特征的角度各不相同。
1.2?基本分類模型
1.2.1?支持向量機算法
SVM算法是一種有監(jiān)督學習的算法,即將向量映射到更高維度的空間里,從而建立一個最優(yōu)分類面即最大間隔超平面。SVM致力于得到一個可以滿足分類需求的最優(yōu)分類面,同時使數(shù)據(jù)集中的各類點與分類面的距離盡可能遠,也就是使它兩側(cè)的區(qū)域(margin)最大。
本文使用的SVM算法采用的核函數(shù)是徑向基核函數(shù)(Radial Basis Function,RBF):
因其還可以使用如下形式描述,因此稱高斯核(Gaussian Kernel):
RBF核能夠把一個樣本映射到更高維度的空里間,與多項式核對比,RBF中需要確定參數(shù)的較少,而參數(shù)的數(shù)量會直接影響到使用函數(shù)的復雜度。SVM作為分類算法,最后可以得到空間距離最優(yōu)解,即最公平的類別區(qū)分。相對于其他算法僅可以獲得局部的最優(yōu)解,SVM性能相對較好。
1.2.2?K近鄰算法
K近鄰(K-Nearest Neighbors, KNN)算法為通過測定不相同特征間距離對不同樣本進行分類。若是某樣本位于特征空間里面的K個極為相似,
就是最鄰近樣本里的大部分均歸屬某同種類別,則此樣本也屬這一類別,K一般取小于或等于20的整數(shù)。在此種算法中,所選鄰近樣本均是已有分類結(jié)果的樣本。本文的K近鄰算法使用曼哈頓距離:
此方法僅依靠最靠近的一個或多個樣本的分類結(jié)果來對待檢測樣本的種類進行分類。
1.2.3?決策樹算法
決策樹(Decision Tree, DT)為樹形的結(jié)構(gòu),通過尋找最佳劃分特征進而實現(xiàn)樣本分類,本文采用C4.5算法。決策樹的內(nèi)部節(jié)點表示為某個特征的閾值,而葉節(jié)點則表示一個類和其分布,決策樹的分類規(guī)則不僅易于理解而且準確率較優(yōu)。C4.5的節(jié)點選擇標準為最大信息增益率,計算公式為:
C4.5使用貪心算法作為歸納算法,通過自頂向下遞歸的方法對樹進行構(gòu)造,若所有訓練樣本都處于同一類別中,那么此節(jié)點就成為葉子節(jié)點,不然的話選擇一個最優(yōu)分類特征當作內(nèi)部節(jié)點且創(chuàng)建分支,分支過程通過計算信息增益來進行衡量,并運用剪枝技術消除噪聲和孤立點。對于所給樣本,從根節(jié)點處向下進行判斷就可以得到分類識別結(jié)果。
1.2.4?邏輯回歸算法
邏輯回歸(Logistic Regression,LR)通過擬合曲線或者學習超平面實現(xiàn)分類,回歸就是根據(jù)已知的自變量從而得到因變量,即通過獲取的特征數(shù)據(jù)得到預測分類。邏輯回歸算法通過逐漸縮減分類范圍,將預估值縮小在區(qū)間[0,1]內(nèi)。常用Sigmoid函數(shù)δ(Z)=(1+e-Z)-1來展示。屬性x所屬類型為y1的可能性為:
邏輯回歸模型的優(yōu)點是可發(fā)現(xiàn)特征之間聯(lián)系和將模型進行正則化。邏輯回歸和SVM二者的差異是使用不同損失函數(shù)(loss function),且邏輯回歸的分類速率比SVM對比有所升高。
1.2.5?簡單投票法
簡單投票法(Voting)就是將各個初級分類器的結(jié)果進行投票,占最多票數(shù)的結(jié)果作為最終結(jié)果,即遵循絕大多數(shù)原則。簡單投票法包括同等投票法和加權投票法,同等投票法如果出現(xiàn)票數(shù)相等的情況,可能就會進行隨機選擇來決定最終判別結(jié)果。為了避免這種情況和使最終結(jié)果更精確,就要為每個分類器進行加權,即加權投票法。而權值的計算是此種方法性能好壞關鍵。
1.3?其他相關知識
1.3.1?Stacking集成學習方法
集成學習法主要有兩類,即同質(zhì)集成與異質(zhì)集成[10]。當初級分類器由同一個機器學習算法產(chǎn)生時,如誤差反向傳播(Back Propagation, BP)神經(jīng)網(wǎng)絡,此時集成中只包含同種類型的初級分類器,如“神經(jīng)網(wǎng)絡集成”中全是神經(jīng)網(wǎng)絡,此類的集成就稱為“同質(zhì)”。集成亦可以由多種不同類型的初級分類器組成,例如同時含有樸素貝葉斯和SVM,這類集成即稱為“異質(zhì)”。異質(zhì)集成里面的初級分類器均通過各不相同的算法產(chǎn)生。
同質(zhì)集成中頗具代表性的方法有套袋法(Bagging) 和提升法(Boosting),它們都是對使用相同機器學習算法的分類器進行集成。其中Bagging通過對原始訓練集樣本進行有放回、相同概率的抽樣方法來得到若干小訓練集,然后使用這些有差異的小訓練集對多個初級分類器進行訓練;Boosting在構(gòu)建初級分類器時,會提升以前分錯類的訓練樣本的抽樣權重值使得每輪訓練均基于不同分布的數(shù)據(jù),并在最后集成時對每個初級分類器進行加權平均。
本文采用的是異質(zhì)集成的代表Stacking學習法,是通過將多種機器學習算法組合來提升分類器的泛化性能,其基本過程如圖1所示。其中,首先對訓練集分別訓練從而得到初級學習器,然后以初級學習器的分類結(jié)果作為元分類器的輸入,進行元學習訓練出元分類器。Stacking通過使用不同的機器學習算法來保證初級分類器擁有多樣性,并通過元分類器以最優(yōu)方法對初級分類結(jié)果進行整合,相比同質(zhì)集成的方法,分類的精度和準確率都會提高,同時導致過擬合的風險度則會降低。
1.3.2?K折交叉驗證
K折交叉驗證(K-fold cross-validation)是用來測試算法準確性的常用測試方法。首先將數(shù)據(jù)集分成k份,輪流將其中k-1份作為訓練數(shù)據(jù),1份作為測試數(shù)據(jù)進行實驗。每次實驗都會得出相應的正確率(或差錯率)。k次的結(jié)果的正確率(或差錯率)的平均值作為對算法精度的估計,一般還需要進行多次k折交叉驗證再求其均值,作為對算法準確性的估計。
1.3.3?惡意代碼混淆
為了躲避一些檢測工具的檢測識別,攻擊者常對進行惡意攻擊的網(wǎng)頁代碼進行代碼混淆(Obfuscated code),即對代碼進行編碼或者在代碼中加入特殊符號或無用字符,從而使代碼變得難以檢測,據(jù)統(tǒng)計相當多的惡意代碼都運用了JavaScript混淆。JavaScript混淆包括使用統(tǒng)一碼(Unicode)、美國信息交換標準代碼(American Standard Code for Information Interchange, ASCII)編碼或使用異或運算(XOR)等替代已有的代碼字符串。
如果使用ASCII或Unicode編碼對惡意代碼進行混淆,瀏覽器在訪問頁面時會通過escape()和unescape()等函數(shù)將混淆字符重新轉(zhuǎn)換為惡意網(wǎng)頁代碼,因此這些函數(shù)與方法在混淆代碼中出現(xiàn)的次數(shù)會比在普通網(wǎng)頁源代碼中出現(xiàn)次數(shù)要較多。而使用邏輯異或?qū)阂獯a進行混淆的時候則需給邏輯運算設定一個鍵值,再將惡意代碼與鍵值進行異或運算,并最終被特殊符號所替代。
2?特征工程
一個分類器性能的好壞關鍵問題在于有效的特征選擇。首先對網(wǎng)頁源代碼進行處理,將其解析成文檔對象模型(Document Object Model, DOM)樹結(jié)構(gòu)可根據(jù)HTML標簽對其內(nèi)容進行分析。DOM樹即依據(jù)代碼結(jié)構(gòu)所生成的節(jié)點集,由此可以在結(jié)構(gòu)樹中尋找所需的節(jié)點或者參數(shù)。分析DOM樹的結(jié)構(gòu)時要加載文檔并對其層次結(jié)構(gòu)進行構(gòu)建。DOM樹對HTML代碼進行各種操作的定義,由此可將HTML代碼以含有元素、屬性的DOM樹結(jié)構(gòu)形式進行展現(xiàn)。
本文從惡意網(wǎng)頁目標、行為表現(xiàn)等角度將其分為篡改被黑類網(wǎng)頁和虛假釣魚類網(wǎng)頁兩類,通過分析,發(fā)現(xiàn)這兩類惡意網(wǎng)頁數(shù)據(jù)都有自己不同特征,因此首先從這兩類特征出發(fā),并結(jié)合根據(jù)詞組或代碼在類別文檔中出現(xiàn)的頻率即基于數(shù)學統(tǒng)計的計算詞頻(Term Frequency,TF)和基于領域知識的人工選擇等方法分別進行特征統(tǒng)計,最終篩選出33維特征用于對分類器的訓練。
2.1?篡改被黑類網(wǎng)頁特征