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