吳海濱 張冬梅



摘? 要: 惡意URL現(xiàn)如今對網(wǎng)絡(luò)安全影響巨大,能否高效的檢測惡意URL成為一個亟待解決的問題。針對傳統(tǒng)基于文本特征的檢測方法沒有考慮到URL中詞的位置和上下文信息的缺點(diǎn),提出了一種基于上下文信息的惡意URL檢測方法,首先利用預(yù)處理方法解決了URL中存在大量的隨機(jī)字符組成單詞的問題,使用特殊符號作為分隔符對URL分詞,對得到的分詞結(jié)果使用Word2vec生成詞向量空間,然后訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)提取文本特征并分類。實驗結(jié)果表明,該方法在大量真實數(shù)據(jù)上能夠達(dá)到97.30%的準(zhǔn)確率、90.15%的召回率和92.33%的F1值。
關(guān)鍵詞: 惡意URL;網(wǎng)絡(luò)安全;上下文信息;詞向量;卷積神經(jīng)網(wǎng)絡(luò)
中圖分類號: TP393? ?文獻(xiàn)標(biāo)識碼: A? ? DOI:10.3969/j.issn.1003-6970.2019.01.013
【Abstract】: Malicious URLs have a great impact on network security nowadays. Whether malicious URLs can be detected efficiently has become an urgent problem to be solved. Aiming at the disadvantage of traditional text feature-based detection methods that do not take into account the location and context information in URLs, the author propose a malicious URL detection method based on context information. Firstly, a large number words that consist of random characters in URLs are solved by preprocessing method. Special symbols are used as separators to segment URLs. Word2vec is used to generate word vector space, and then Convolutional neural network is trained to extract text features and classify them. The experimental results show that the method can achieve the accuracy of 97.30%, the recall rate of 90.15% and the F1 Score of 92.33% using a big real data set.
【Key words】: Malicious URL; Network security; Context information; Word vectors; CNN
0? 引言
近年來,網(wǎng)絡(luò)已經(jīng)發(fā)展成為人們?nèi)粘I畈豢苫蛉钡囊豁棧S著互聯(lián)網(wǎng)給人們帶來越來越便利的服務(wù),各種網(wǎng)站大量涌現(xiàn)出來。根據(jù)中國互聯(lián)網(wǎng)絡(luò)信息中心(CNNIC)發(fā)布的第41次《中國互聯(lián)網(wǎng)絡(luò)發(fā)展?fàn)顩r統(tǒng)計報告》[1]顯示,截至2017年12月,中國網(wǎng)民規(guī)模已達(dá)7.72億,并且這一數(shù)字還在不斷增加。
然而互聯(lián)網(wǎng)是一把雙刃劍,方便和安全永遠(yuǎn)不能完美兼得,如此巨大數(shù)量的用戶和網(wǎng)站由于安全問題而暴露出危險。互聯(lián)網(wǎng)中存在各種各樣的惡意網(wǎng)站、惡意軟件、病毒木馬,對用戶個人隱私和財產(chǎn)安全造成巨大威脅,并且這些攻擊進(jìn)化的越來越復(fù)雜、自動化且難以檢測。用戶稍不注意就有可能導(dǎo)致信息泄露和財產(chǎn)損失。這些攻擊絕大多數(shù)是通過惡意URL來實現(xiàn)的。URL是統(tǒng)一資源定位符,對可以從互聯(lián)網(wǎng)上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯(lián)網(wǎng)上標(biāo)準(zhǔn)資源的地址。因此通過檢測惡意URL來判斷是否受到網(wǎng)絡(luò)威脅是至關(guān)重要的。每天互聯(lián)網(wǎng)上產(chǎn)生大量的新網(wǎng)頁,對如何高效且準(zhǔn)確的檢測惡意URL提出了新的挑戰(zhàn)。
為此,本文提出了一種基于上下文信息的惡意URL檢測方法,把URL分類當(dāng)做是文本分類的相關(guān)問題,該方法利用大量預(yù)處理的URL按照特殊符號為分隔符進(jìn)行分詞,并且使用詞向量生成工具(Word2vec)生成詞向量,然后訓(xùn)練卷積神經(jīng)網(wǎng)絡(luò)(CNN)學(xué)習(xí)特征,最后接入一個Softmax層進(jìn)行分類。
本文余下部分的結(jié)構(gòu)為:第一節(jié)介紹了當(dāng)前檢測惡意URL的相關(guān)研究進(jìn)展,同時也介紹了在深度學(xué)習(xí)在文本分類中的應(yīng)用;第二節(jié)我們詳細(xì)介紹了本文提出的基于上下文信息的惡意URL檢測技術(shù);第三節(jié)描述了我們的實驗結(jié)果及分析。最后一節(jié)是本文的一個總結(jié)。
1? 相關(guān)工作
目前惡意URL檢測技術(shù)大致可以分為2類,分別是基于黑名單的方法和基于URL和網(wǎng)頁源碼特征的機(jī)器學(xué)習(xí)方法。
1.1? 基于黑名單的方法
黑名單是一份由安全監(jiān)測機(jī)構(gòu)維護(hù)的包含惡意網(wǎng)頁URL的數(shù)據(jù)表。這種技術(shù)的優(yōu)點(diǎn)是十分方便,快捷,而且資源消耗很少,適用于惡意網(wǎng)頁檢測系統(tǒng)的第一個環(huán)節(jié)。但是黑名單檢測技術(shù)有一個致命的缺點(diǎn),即該方法只能檢測出以前被判定為惡意網(wǎng)頁的URL,對于剛產(chǎn)生的惡意網(wǎng)頁或者還沒有被核實的惡意網(wǎng)頁都無法檢測。而且現(xiàn)在惡意網(wǎng)頁生命周期短,形式多變,每天都會產(chǎn)生數(shù)量巨大的惡意網(wǎng)頁,由于黑名單檢測技術(shù)的時效性低這一缺陷而導(dǎo)致用戶受到新產(chǎn)生的惡意網(wǎng)頁攻擊。Prakash等人[2]對黑名單技術(shù)進(jìn)行了改進(jìn),構(gòu)建了一個名為PhishNet的系統(tǒng)。該系統(tǒng)通過分析黑名單中的URL的結(jié)構(gòu)和相似性,以此出發(fā)來尋找新的惡意URL。但是這種方法依賴于原始黑名單的規(guī)模,而且當(dāng)黑名單規(guī)模變大的時候,這種方式的還需要人工總結(jié)新的規(guī)則。
1.2? 基于URL和網(wǎng)頁源碼特征的機(jī)器學(xué)習(xí)方法
基于URL和網(wǎng)頁源碼特征的檢測方法大致分為三個步驟:1. 收集大量的已標(biāo)注樣本,并且提取相應(yīng)的特征。2. 把這些特征輸入到機(jī)器學(xué)習(xí)算法中訓(xùn)練模型,常用的算法有SVM、決策樹、樸素貝葉斯算法等有監(jiān)督算法和KMeans等無監(jiān)督算法。3.利用步驟2中訓(xùn)練好的模型對新樣本進(jìn)行預(yù)測。
MA等人[3]提出了利用URL的詞匯和主機(jī)信息特征使用在線學(xué)習(xí)的方法訓(xùn)練出一個分類器,并且可以更快的適應(yīng)惡意URL不斷變化的新特征,但是用到的詞袋模型(Bag of words)忽略了詞語之間的順序關(guān)系,并且沒有捕獲到前后詞語的關(guān)聯(lián)性。Sang等人[4]從URL的重定向行為提取出重定向鏈接長度等新特征,并使用邏輯回歸分類器構(gòu)建了Warningbird的實時URL檢測系統(tǒng)。除了從URL本身提取特征之外,還有大量學(xué)者[5-7]研究了包括主機(jī)信息、網(wǎng)頁內(nèi)容、JavaScript代碼等方面的特征用于分類。例如王正琦等人[8]提出的TSWMD檢測系統(tǒng),利用了兩層分類器來實現(xiàn)惡意網(wǎng)頁的檢測,第一層用于快速過濾良性網(wǎng)頁,追求檢測速度,第二層使用更加復(fù)雜的特征來檢測,追求檢測的準(zhǔn)確率,缺點(diǎn)是每一層都需要網(wǎng)頁源碼的特征,檢測的時間和資源開銷都比較大。
在惡意URL檢測領(lǐng)域之外,許多學(xué)者已經(jīng)在基于深度學(xué)習(xí)的文本分類[9][10][11]中做了大量的相關(guān)研究工作。例如,Kim等人[12]提出了適用于文本分類的TextCNN結(jié)構(gòu)。C. N等人[13]展示了使用無監(jiān)督網(wǎng)絡(luò)(Word2vec)配合CNN在短文本情感分析方面有很好的效果。
2? 基于上下文信息的惡意URL檢測技術(shù)實現(xiàn)
本文把惡意URL檢測看作是一個文本分類的相關(guān)問題,但是URL和自然語言所構(gòu)成的文本不同之處主要有兩點(diǎn):1.文本分類中出現(xiàn)的詞匯都是由自然語言形成的,單詞出現(xiàn)的數(shù)量是有限的,然而URL中會有很多在樣本集中由隨機(jī)字符拼湊出只出現(xiàn)一次的單詞(以下稱為‘未知單詞),如果沒有對這些未知單詞進(jìn)行處理,會導(dǎo)致詞典的空間很大,而且也會對模型的特征學(xué)習(xí)和分類結(jié)果造成一定的干擾。2.惡意URL會常用一些混淆的方式[14]來躲避安全檢測工具,但是文本的作者并不會刻意隱瞞自己想要表達(dá)的情感,所以要對常見的URL混淆方式采取一定的反制措施從而提高CNN模型的特征學(xué)習(xí)和檢測能力。
如圖1所示,本文提出的基于上下文信息的惡意URL檢測流程主要包含以下兩個步驟:1.訓(xùn)練:對預(yù)處理的URL進(jìn)行分詞并存入文件;然后使用Word2vec對分詞后的URL訓(xùn)練生成詞向量;把已帶有標(biāo)注(惡意/正常)的URL使用詞向量替換并輸入到CNN模型中訓(xùn)練。2.預(yù)測:對待測的URL進(jìn)行預(yù)處理、分詞、替換為詞向量,然后經(jīng)過訓(xùn)練好的卷積神經(jīng)網(wǎng)絡(luò)進(jìn)行分類,得到樣本的所屬類別,下面對訓(xùn)練流程進(jìn)行詳細(xì)介紹。
2.1? URL預(yù)處理方案
去掉協(xié)議和www.部分的URL的按照結(jié)構(gòu)可以分為域名、路徑、文件名、參數(shù)四個部分,其中對于路徑和文件名中的‘未知單詞分別可以替換為UNKPATH+Length、UNKFILE+Length,其中Length指的是該‘未知單詞的長度,給這些‘未知單詞加上長度是因為混淆的惡意URL會在其中添加垃圾字符來躲避檢測,經(jīng)過這種混淆方法的URL在某些部分的長度會大于正常URL,所以各部分的長度也可以為模型提供信息。在處理參數(shù)部分時又區(qū)分了參數(shù)名和參數(shù)值,分別替換為UNKKEY+Length和UNKVALUE+Length。對于域名部分的處理,惡意URL常用的混淆域名手段有兩種。
(1)使用IP地址代替域名,對于這種情況,我們通過正則表達(dá)式檢測出IP地址并且替換為UNKIP以此來區(qū)分它和普通的未知域名(UNKDOMAIN+ Length)。
(2)惡意URL常常使用良性知名網(wǎng)站的品牌名作為前綴或者后綴來迷惑用戶,對于這種情況,我們選取了Alexa公布的排名前1000個網(wǎng)站的品牌名,來檢測域名部分是否含有品牌名作為前后綴的情況,比如一個惡意URL(googledriver.rhcloud.com/ drive),其中的googledriver會被分成google和driver兩個單詞。如果driver這個單詞只在樣本集中出現(xiàn)一次的話,則分詞之后變?yōu)間oogle和UNKSUF6。
2.2? 生成詞向量
經(jīng)過對URL的預(yù)處理和分詞之后,每個URL會分解為單詞和符號以空格隔開的的形式,一個URL就可以看作是由它們組成的一個句子。但是這種形式是不可以直接作為卷積神經(jīng)網(wǎng)絡(luò)的輸入的,必須把每個單詞和符號都處理為一種向量的形式。常用的詞向量是one-hot編碼,如圖2所示。這種方法把詞表示為一個維度和詞典大小一樣的向量,向量中只有一個元素值為1,這個為1的位置就代表了當(dāng)前詞匯,其他元素值都是0。這種表示方法最大的缺點(diǎn)就是把每個單詞孤立起來了,不能很好刻畫兩個單詞之間的關(guān)系,而且當(dāng)詞典空間巨大的時候容易受到維數(shù)災(zāi)難的困擾。
在以深度學(xué)習(xí)為基礎(chǔ)的文本分類中,通常使用分布式詞向量[16](Distributed representation)來表示一個單詞,這種方法的基本思想是通過訓(xùn)練將某種語言中的每一個詞映射成為一個較低固定長度N(N是一個超參數(shù))的向量,向量中每個元素都是一個實數(shù),相當(dāng)于把原來one-hot編碼得到的稀疏巨大維度壓縮嵌入到一個更小維度的空間,所有的向量構(gòu)成一個詞向量空間,通過在這個向量空間上定義距離就可以刻畫詞之間的關(guān)聯(lián)性了。Word2vec是一個由google開源的生成分布式詞向量的工具,本質(zhì)上是一個神經(jīng)網(wǎng)絡(luò)模型,詞向量是此模型的一個產(chǎn)出物。模型中有兩種訓(xùn)練模式CBOW (Continuous Bag-of-Words Model),Skip-gram (Continuous Skip- gram Model)。其中CBOW是上下文來預(yù)測當(dāng)前詞,而Skip-gram正好相反,是根據(jù)當(dāng)前詞預(yù)測上下文。
2.3? 適用于文本分類的CNN模型結(jié)構(gòu)
隨著深度學(xué)習(xí)在NLP領(lǐng)域[17-18]的應(yīng)用越來越廣泛,循環(huán)神經(jīng)網(wǎng)絡(luò)(RNN)、CNN模型已經(jīng)廣泛應(yīng)用在在文本分類領(lǐng)域,鑒于URL是一個短文本,根據(jù)Yin等人[19]的研究,在短文本分類上CNN更具有優(yōu)勢,所以我們決定采用CNN模型。實驗中構(gòu)建的CNN模型如圖3所示。