張士坤
(廣東工業(yè)大學(xué)計(jì)算機(jī)學(xué)院,廣州510006)
根據(jù)中國(guó)反釣魚聯(lián)盟組織的報(bào)告[1]指出,2019 年7月國(guó)內(nèi)檢測(cè)出448046 個(gè)惡意網(wǎng)站,對(duì)社會(huì)和經(jīng)濟(jì)造成重大損失。隨著移動(dòng)互聯(lián)網(wǎng)的興起和繁榮,惡意網(wǎng)頁(yè)攻擊日益多樣化和復(fù)雜化,使得惡意網(wǎng)頁(yè)的檢測(cè)更為困難。如何高效識(shí)別惡意網(wǎng)頁(yè)已經(jīng)成為亟待解決的問題之一。
為了應(yīng)對(duì)這些挑戰(zhàn),機(jī)器學(xué)習(xí)方法在惡意網(wǎng)頁(yè)檢測(cè)中得到了廣泛應(yīng)用,包括樸素貝葉斯、決策樹、隨機(jī)森林、支持向量機(jī)等算法。在這些方法中,特征提取和分類器的構(gòu)建是很關(guān)鍵的因素。人工特征提取需要耗費(fèi)大量時(shí)間和精力。近年來,深度學(xué)習(xí)方法在圖像識(shí)別、語音識(shí)別等領(lǐng)域得到廣泛應(yīng)用。深度學(xué)習(xí)方法使用神經(jīng)網(wǎng)絡(luò)模型,自動(dòng)學(xué)習(xí)樣本特征,在處理大量數(shù)據(jù)集情況下表現(xiàn)良好。惡意網(wǎng)頁(yè)檢測(cè)領(lǐng)域也能使用深度學(xué)習(xí)方法,目前該應(yīng)用已經(jīng)取得不錯(cuò)的效果。
針對(duì)惡意網(wǎng)頁(yè)的識(shí)別,國(guó)內(nèi)外學(xué)者提出很多檢測(cè)方法,主要分為以下5 類:
基于黑名單的檢測(cè)方法。黑名單是一份惡意網(wǎng)頁(yè)列表,包含惡意網(wǎng)頁(yè)的URL、IP 地址等信息。通常是由具有公信力的網(wǎng)站發(fā)布,例如谷歌公司開發(fā)和維護(hù)的Google Safe Browsing API[2]。文獻(xiàn)[3]通過網(wǎng)站域名匹配以及Google 搜索結(jié)果,來確定待測(cè)網(wǎng)頁(yè)是否為惡意的。黑名單技術(shù)雖然實(shí)現(xiàn)簡(jiǎn)單、使用方便,但由于檢測(cè)效果依賴于黑名單的規(guī)模,存在漏報(bào)率高的缺點(diǎn)。
基于啟發(fā)式規(guī)則的檢測(cè)方法。該方法是根據(jù)惡意網(wǎng)頁(yè)的相似性規(guī)則來判斷網(wǎng)頁(yè)是否為惡意的,雖然在檢測(cè)速度上具有較大優(yōu)勢(shì),但僅使用基于規(guī)則匹配的檢測(cè)方法,無法應(yīng)對(duì)新類型的釣魚網(wǎng)頁(yè)[4]。
基于交互式主機(jī)行為的檢測(cè)方法。訪問惡意網(wǎng)頁(yè)時(shí),可能會(huì)出現(xiàn)惡意軟件安裝或惡意腳本執(zhí)行等情況,這時(shí)可以使用蜜罐技術(shù)檢測(cè)網(wǎng)頁(yè)。蜜罐技術(shù)本質(zhì)上是一種對(duì)攻擊方進(jìn)行欺騙的技術(shù),通過布置一些作為誘餌的主機(jī)、網(wǎng)絡(luò)服務(wù)或者信息,誘使攻擊方對(duì)它們實(shí)施攻擊,從而可以對(duì)攻擊行為進(jìn)行捕獲和分析[5]。
基于機(jī)器學(xué)習(xí)的檢測(cè)方法。機(jī)器學(xué)習(xí)方法通過選擇惡意網(wǎng)頁(yè)的特征,來生成訓(xùn)練數(shù)據(jù),構(gòu)造分類器進(jìn)行檢測(cè)。文獻(xiàn)[6]提出基于SVM 的輕量級(jí)惡意網(wǎng)頁(yè)檢測(cè)方法,作者僅提取了6 個(gè)URL 特征,包括URL 長(zhǎng)度、數(shù)字的數(shù)目、是否包含IP 地址。由于提取的網(wǎng)頁(yè)特征少,模型檢測(cè)速度快。該方法的缺點(diǎn)之一是實(shí)驗(yàn)數(shù)據(jù)量小,泛化能力較弱。文獻(xiàn)[7]提出一種從URL 字符串中提取詞匯特征的方法,并使用自適應(yīng)正則化來檢測(cè)惡意網(wǎng)頁(yè)。該方法能較少訓(xùn)練數(shù)據(jù)的噪音,并提高檢測(cè)準(zhǔn)確率。文獻(xiàn)[8]首先從URL 地址入手,提取URL特征并采用改進(jìn)貝葉斯算法進(jìn)行檢測(cè),對(duì)貝葉斯方法無法確定的可疑網(wǎng)頁(yè),再提取該網(wǎng)頁(yè)的頁(yè)面特征,使用不平衡SVM 進(jìn)行檢測(cè)。該方法所需的檢測(cè)時(shí)間少且能達(dá)到較高的識(shí)別準(zhǔn)確率。文獻(xiàn)[9]首先過濾掉高度相似的惡意網(wǎng)頁(yè)和沒有登錄表單的網(wǎng)頁(yè),然后從URL 詞匯表、HTML DOM、WHOIS 信息和搜索引擎信息中提取15 個(gè)高度差異化的特征,使用機(jī)器學(xué)習(xí)方法檢測(cè)。文獻(xiàn)[10]提出一種可擴(kuò)展的惡意網(wǎng)頁(yè)檢測(cè)方法,作者從URL 和HTML 中提取了212 個(gè)特征,同時(shí)使用Gradient Boosting 來檢測(cè)惡意網(wǎng)頁(yè)。
基于深度學(xué)習(xí)的檢測(cè)方法。深度學(xué)習(xí)方法使用神經(jīng)網(wǎng)絡(luò)模型,自動(dòng)學(xué)習(xí)樣本特征,在處理大量數(shù)據(jù)集情況下表現(xiàn)良好。文獻(xiàn)[11]使用了循環(huán)神經(jīng)網(wǎng)絡(luò)中的LSTM 對(duì)URL 進(jìn)行檢測(cè),使用兩百萬條URL 的數(shù)據(jù)集訓(xùn)練模型,準(zhǔn)確率能達(dá)到98.7%。相比隨機(jī)森林模型,LSTM 準(zhǔn)確率高出5%。
本文對(duì)網(wǎng)頁(yè)不同層次特征,采用不同的算法模型,綜合兩個(gè)模型的輸出得到最終的檢測(cè)結(jié)果。本文設(shè)計(jì)的檢測(cè)模型有兩個(gè)層級(jí):CNN-GRU 檢測(cè)模型和隨機(jī)森林檢測(cè)模型。對(duì)URL 原始字符串,利用CNN 處理局部關(guān)聯(lián)性數(shù)據(jù)和特征提取的優(yōu)勢(shì),以及GRU 神經(jīng)網(wǎng)絡(luò)捕獲數(shù)據(jù)時(shí)序性和長(zhǎng)程依賴性的優(yōu)勢(shì),構(gòu)建CNN 和GRU 混合模型,該模型能自動(dòng)提取URL 字符串的特征。隨機(jī)森林檢測(cè)模型提取了16 個(gè)網(wǎng)頁(yè)特征,包括URL 字符串特征,DNS 信息、網(wǎng)頁(yè)HTML 等特征。該模型采用隨機(jī)森林算法進(jìn)行網(wǎng)頁(yè)檢測(cè)。
由于訓(xùn)練數(shù)據(jù)為URL 字符串,而神經(jīng)網(wǎng)絡(luò)模型的輸入必須為數(shù)值,所以需要把字符型數(shù)據(jù)轉(zhuǎn)換成數(shù)值數(shù)據(jù)。如果數(shù)據(jù)集中URL 長(zhǎng)度差異過大,將不利于神經(jīng)網(wǎng)絡(luò)快速收斂,因此需要統(tǒng)一所有樣本的URL 長(zhǎng)度。假設(shè)選定的URL 長(zhǎng)度為L(zhǎng),所有樣本需要進(jìn)行字符串截取和字符填充。長(zhǎng)度大于或等于L 的字符串,只截取該URL 的前L 位,長(zhǎng)度小于L 的字符串,從末尾開始填充到L 位,填充字符選擇特殊字符,L 的實(shí)驗(yàn)值為200。
實(shí)驗(yàn)采用one hot 編碼,把字符串?dāng)?shù)據(jù)轉(zhuǎn)換成矩陣。通過遍歷數(shù)據(jù)集生成字符映射表,表中每個(gè)字符都是唯一的,字符表的長(zhǎng)度為96。單個(gè)字符用向量c→表示,→|c|=96。c→中只有一位是1,其余位都是0。一條URL 可以映射成尺寸為200×96 的矩陣U。用向量[0,1]標(biāo)記正常網(wǎng)頁(yè),向量[1,0]標(biāo)記惡意網(wǎng)頁(yè)。
經(jīng)one hot 編碼后的矩陣包含大量0,會(huì)導(dǎo)致稀疏編碼和發(fā)散性,該問題可以通過詞嵌入降維解決。詞嵌入降維的作用是通過線性變換,把稀疏矩陣轉(zhuǎn)換成密集矩陣。G 為U 經(jīng)過Embedding 層降維生成的密集矩陣,其尺寸為200×64。
如圖2 所示,卷積層對(duì)G 進(jìn)行卷積運(yùn)算,抽取局部關(guān)聯(lián)特征。具體地說,卷積層設(shè)置多個(gè)卷積核Q,每個(gè)卷積核Q 對(duì)具有窗口大小k 的字符嵌入向量進(jìn)行卷積以產(chǎn)生新特征[12]。例如一個(gè)新特征ci通過下式生成:
其中σ( )x是表示卷積層的非線性激活函數(shù)的ReLU 激活函數(shù),Wf是卷積核的權(quán)重矩陣,bf是偏差。卷積層對(duì)應(yīng)一個(gè)池化層,使用最大池化方法,將同一個(gè)卷積核生成的特征集中最大的數(shù)值保留[13]。將最大池化層連接到GRU 神經(jīng)網(wǎng)絡(luò),GRU 作為L(zhǎng)STM 的變種,在保持了LSTM 效果的同時(shí)又精簡(jiǎn)了結(jié)構(gòu),避免了梯度消失和梯度爆炸的問題[14],最后使用Softmax 作為模型的預(yù)測(cè)函數(shù)。
圖1 多層次檢測(cè)模型架構(gòu)圖
圖2 CNN-GRU檢測(cè)模型結(jié)構(gòu)圖
為了抑制過度擬合,本模型應(yīng)用了dropout 策略。在深度神經(jīng)網(wǎng)絡(luò)中,dropout 是一種防止過擬合的有效策略,它能夠在訓(xùn)練過程中以一定的概率丟棄網(wǎng)絡(luò)中的每個(gè)神經(jīng)網(wǎng)絡(luò)單元,實(shí)驗(yàn)設(shè)置丟包率為0.25。
訓(xùn)練模型的關(guān)鍵是確定目標(biāo)損失函數(shù)。本模型使用交叉熵?fù)p失函數(shù),其形式為:
損失函數(shù)的優(yōu)化方法是在模型迭代過程中不斷調(diào)整神經(jīng)網(wǎng)絡(luò)中的權(quán)值。實(shí)驗(yàn)采用優(yōu)化策略是Adam 算法,該算法能提供解決稀疏梯度和噪聲問題的優(yōu)化方案。
隨機(jī)森林算法是集成的機(jī)器學(xué)習(xí)方法,可用于控制過度擬合。此外,憑借其森林結(jié)構(gòu),各個(gè)決策樹的不穩(wěn)定性可能會(huì)消失。因此對(duì)網(wǎng)頁(yè)特征,本實(shí)驗(yàn)采用隨機(jī)森林算法來檢測(cè)。該分類器首先提取網(wǎng)頁(yè)特征,生成訓(xùn)練集。然后隨機(jī)選擇若干訓(xùn)練子集,對(duì)訓(xùn)練子集構(gòu)造決策樹。最后獲取決策樹的輸出,并求取輸出的平均值,得到網(wǎng)頁(yè)的檢測(cè)結(jié)果。
如表1 所示,文章提取了網(wǎng)頁(yè)的16 個(gè)特征,包括URL 字符串特征、DNS 信息、網(wǎng)頁(yè)HTML 特征。
表1
如圖1 所示,閾值α決定網(wǎng)頁(yè)是否進(jìn)行第二級(jí)檢測(cè)。如公式所示,若CNN-GRU 輸出的正常網(wǎng)頁(yè)概率p1 與惡意網(wǎng)頁(yè)概率p2 中最大值和最小值比值小于α,則需要提取網(wǎng)頁(yè)URL 特征、網(wǎng)頁(yè)HTML 特征、DNS 信息進(jìn)行第二級(jí)檢測(cè);否則則由CNN-GRU 輸出結(jié)果直接進(jìn)行判定。α初始化為1,然后輸出多級(jí)檢測(cè)模型的識(shí)別準(zhǔn)確率,α進(jìn)行加1 操作,直到輸出最優(yōu)識(shí)別準(zhǔn)確率并收斂。
本文采用準(zhǔn)確率(A)、查準(zhǔn)率(P)、查全率(R)和F1值評(píng)價(jià)模型的性能。其中準(zhǔn)確率是最重要的評(píng)價(jià)指標(biāo)。查準(zhǔn)率表示預(yù)測(cè)為正的樣例中實(shí)際為正的比例,查全率表示正樣本中被預(yù)測(cè)正確的比例,F(xiàn)1 值是查全率和查準(zhǔn)率的調(diào)和平均值。
上述公式中,TP 表示被預(yù)測(cè)為正樣本,實(shí)際上也
是正樣本的總數(shù),F(xiàn)P 表示被預(yù)測(cè)為正樣本,實(shí)際上是負(fù)樣本的總數(shù),TN 表示被預(yù)測(cè)為負(fù)樣本,實(shí)際上也是負(fù)樣本的總數(shù),F(xiàn)N 表示被預(yù)測(cè)為負(fù)樣本,實(shí)際上是正樣本的總數(shù)。
本實(shí)驗(yàn)采用的編程語言為Python 3.6,CPU 為Intel Core i7 7700k@4.2Hz,RAM 為16G。數(shù)據(jù)集包含36400 個(gè)正常網(wǎng)頁(yè)和37175 個(gè)惡意網(wǎng)頁(yè)。設(shè)置batch為64,epoch 為20。實(shí)驗(yàn)過程中采用5 折交叉驗(yàn)證,保證檢測(cè)模型的穩(wěn)定性。
如表2 所示,與CNN、LSTM、CNN-LSTM 檢測(cè)模型相比,CNN-GRU 模型在準(zhǔn)確率、查全率、查準(zhǔn)率、F1 值上效果比前者要好。從圖3 看出,CNN-GRU 神經(jīng)網(wǎng)絡(luò)訓(xùn)練過程中,最早收斂,具有更好的穩(wěn)定性。通過圖4對(duì)比得出,本文設(shè)計(jì)的多層次檢測(cè)模型在準(zhǔn)確率等指標(biāo)上表現(xiàn)更佳。如圖5 所示,當(dāng)α取值為215 時(shí),多層次檢測(cè)模型識(shí)別準(zhǔn)確率收斂,且明顯優(yōu)于CNN-GRU模型和RF 模型。
表2
圖3 神經(jīng)網(wǎng)絡(luò)訓(xùn)練圖
圖4 CNN-GRU、RF、多層次檢測(cè)模型對(duì)比圖
圖5 閾值α變化圖
本文研究了卷積神經(jīng)網(wǎng)絡(luò)、循環(huán)神經(jīng)網(wǎng)絡(luò)、隨機(jī)森林算法在惡意網(wǎng)頁(yè)檢測(cè)上的應(yīng)用和效果,設(shè)計(jì)了結(jié)合神經(jīng)網(wǎng)絡(luò)和隨機(jī)森林算法的多層次檢測(cè)模型,并和單層次檢測(cè)模型進(jìn)行對(duì)比。實(shí)驗(yàn)證明,在準(zhǔn)確率、F1 值等指標(biāo)上,多層次檢測(cè)模型有更好的效果。惡意網(wǎng)頁(yè)種類較多,未來可以研究惡意網(wǎng)頁(yè)的多分類問題,有助于進(jìn)行針對(duì)性防御。