吳海濱 張冬梅



摘? 要: 惡意URL現如今對網絡安全影響巨大,能否高效的檢測惡意URL成為一個亟待解決的問題。針對傳統基于文本特征的檢測方法沒有考慮到URL中詞的位置和上下文信息的缺點,提出了一種基于上下文信息的惡意URL檢測方法,首先利用預處理方法解決了URL中存在大量的隨機字符組成單詞的問題,使用特殊符號作為分隔符對URL分詞,對得到的分詞結果使用Word2vec生成詞向量空間,然后訓練卷積神經網絡提取文本特征并分類。實驗結果表明,該方法在大量真實數據上能夠達到97.30%的準確率、90.15%的召回率和92.33%的F1值。
關鍵詞: 惡意URL;網絡安全;上下文信息;詞向量;卷積神經網絡
中圖分類號: TP393? ?文獻標識碼: 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? 引言
近年來,網絡已經發展成為人們日常生活不可或缺的一項,隨著互聯網給人們帶來越來越便利的服務,各種網站大量涌現出來。根據中國互聯網絡信息中心(CNNIC)發布的第41次《中國互聯網絡發展狀況統計報告》[1]顯示,截至2017年12月,中國網民規模已達7.72億,并且這一數字還在不斷增加。
然而互聯網是一把雙刃劍,方便和安全永遠不能完美兼得,如此巨大數量的用戶和網站由于安全問題而暴露出危險?;ヂ摼W中存在各種各樣的惡意網站、惡意軟件、病毒木馬,對用戶個人隱私和財產安全造成巨大威脅,并且這些攻擊進化的越來越復雜、自動化且難以檢測。用戶稍不注意就有可能導致信息泄露和財產損失。這些攻擊絕大多數是通過惡意URL來實現的。URL是統一資源定位符,對可以從互聯網上得到的資源的位置和訪問方法的一種簡潔的表示,是互聯網上標準資源的地址。因此通過檢測惡意URL來判斷是否受到網絡威脅是至關重要的。每天互聯網上產生大量的新網頁,對如何高效且準確的檢測惡意URL提出了新的挑戰。
為此,本文提出了一種基于上下文信息的惡意URL檢測方法,把URL分類當做是文本分類的相關問題,該方法利用大量預處理的URL按照特殊符號為分隔符進行分詞,并且使用詞向量生成工具(Word2vec)生成詞向量,然后訓練卷積神經網絡(CNN)學習特征,最后接入一個Softmax層進行分類。
本文余下部分的結構為:第一節介紹了當前檢測惡意URL的相關研究進展,同時也介紹了在深度學習在文本分類中的應用;第二節我們詳細介紹了本文提出的基于上下文信息的惡意URL檢測技術;第三節描述了我們的實驗結果及分析。最后一節是本文的一個總結。
1? 相關工作
目前惡意URL檢測技術大致可以分為2類,分別是基于黑名單的方法和基于URL和網頁源碼特征的機器學習方法。
1.1? 基于黑名單的方法
黑名單是一份由安全監測機構維護的包含惡意網頁URL的數據表。這種技術的優點是十分方便,快捷,而且資源消耗很少,適用于惡意網頁檢測系統的第一個環節。但是黑名單檢測技術有一個致命的缺點,即該方法只能檢測出以前被判定為惡意網頁的URL,對于剛產生的惡意網頁或者還沒有被核實的惡意網頁都無法檢測。而且現在惡意網頁生命周期短,形式多變,每天都會產生數量巨大的惡意網頁,由于黑名單檢測技術的時效性低這一缺陷而導致用戶受到新產生的惡意網頁攻擊。Prakash等人[2]對黑名單技術進行了改進,構建了一個名為PhishNet的系統。該系統通過分析黑名單中的URL的結構和相似性,以此出發來尋找新的惡意URL。但是這種方法依賴于原始黑名單的規模,而且當黑名單規模變大的時候,這種方式的還需要人工總結新的規則。
1.2? 基于URL和網頁源碼特征的機器學習方法
基于URL和網頁源碼特征的檢測方法大致分為三個步驟:1. 收集大量的已標注樣本,并且提取相應的特征。2. 把這些特征輸入到機器學習算法中訓練模型,常用的算法有SVM、決策樹、樸素貝葉斯算法等有監督算法和KMeans等無監督算法。3.利用步驟2中訓練好的模型對新樣本進行預測。
MA等人[3]提出了利用URL的詞匯和主機信息特征使用在線學習的方法訓練出一個分類器,并且可以更快的適應惡意URL不斷變化的新特征,但是用到的詞袋模型(Bag of words)忽略了詞語之間的順序關系,并且沒有捕獲到前后詞語的關聯性。Sang等人[4]從URL的重定向行為提取出重定向鏈接長度等新特征,并使用邏輯回歸分類器構建了Warningbird的實時URL檢測系統。除了從URL本身提取特征之外,還有大量學者[5-7]研究了包括主機信息、網頁內容、JavaScript代碼等方面的特征用于分類。例如王正琦等人[8]提出的TSWMD檢測系統,利用了兩層分類器來實現惡意網頁的檢測,第一層用于快速過濾良性網頁,追求檢測速度,第二層使用更加復雜的特征來檢測,追求檢測的準確率,缺點是每一層都需要網頁源碼的特征,檢測的時間和資源開銷都比較大。
在惡意URL檢測領域之外,許多學者已經在基于深度學習的文本分類[9][10][11]中做了大量的相關研究工作。例如,Kim等人[12]提出了適用于文本分類的TextCNN結構。C. N等人[13]展示了使用無監督網絡(Word2vec)配合CNN在短文本情感分析方面有很好的效果。
2? 基于上下文信息的惡意URL檢測技術實現
本文把惡意URL檢測看作是一個文本分類的相關問題,但是URL和自然語言所構成的文本不同之處主要有兩點:1.文本分類中出現的詞匯都是由自然語言形成的,單詞出現的數量是有限的,然而URL中會有很多在樣本集中由隨機字符拼湊出只出現一次的單詞(以下稱為‘未知單詞),如果沒有對這些未知單詞進行處理,會導致詞典的空間很大,而且也會對模型的特征學習和分類結果造成一定的干擾。2.惡意URL會常用一些混淆的方式[14]來躲避安全檢測工具,但是文本的作者并不會刻意隱瞞自己想要表達的情感,所以要對常見的URL混淆方式采取一定的反制措施從而提高CNN模型的特征學習和檢測能力。
如圖1所示,本文提出的基于上下文信息的惡意URL檢測流程主要包含以下兩個步驟:1.訓練:對預處理的URL進行分詞并存入文件;然后使用Word2vec對分詞后的URL訓練生成詞向量;把已帶有標注(惡意/正常)的URL使用詞向量替換并輸入到CNN模型中訓練。2.預測:對待測的URL進行預處理、分詞、替換為詞向量,然后經過訓練好的卷積神經網絡進行分類,得到樣本的所屬類別,下面對訓練流程進行詳細介紹。
2.1? URL預處理方案
去掉協議和www.部分的URL的按照結構可以分為域名、路徑、文件名、參數四個部分,其中對于路徑和文件名中的‘未知單詞分別可以替換為UNKPATH+Length、UNKFILE+Length,其中Length指的是該‘未知單詞的長度,給這些‘未知單詞加上長度是因為混淆的惡意URL會在其中添加垃圾字符來躲避檢測,經過這種混淆方法的URL在某些部分的長度會大于正常URL,所以各部分的長度也可以為模型提供信息。在處理參數部分時又區分了參數名和參數值,分別替換為UNKKEY+Length和UNKVALUE+Length。對于域名部分的處理,惡意URL常用的混淆域名手段有兩種。
(1)使用IP地址代替域名,對于這種情況,我們通過正則表達式檢測出IP地址并且替換為UNKIP以此來區分它和普通的未知域名(UNKDOMAIN+ Length)。
(2)惡意URL常常使用良性知名網站的品牌名作為前綴或者后綴來迷惑用戶,對于這種情況,我們選取了Alexa公布的排名前1000個網站的品牌名,來檢測域名部分是否含有品牌名作為前后綴的情況,比如一個惡意URL(googledriver.rhcloud.com/ drive),其中的googledriver會被分成google和driver兩個單詞。如果driver這個單詞只在樣本集中出現一次的話,則分詞之后變為google和UNKSUF6。
2.2? 生成詞向量
經過對URL的預處理和分詞之后,每個URL會分解為單詞和符號以空格隔開的的形式,一個URL就可以看作是由它們組成的一個句子。但是這種形式是不可以直接作為卷積神經網絡的輸入的,必須把每個單詞和符號都處理為一種向量的形式。常用的詞向量是one-hot編碼,如圖2所示。這種方法把詞表示為一個維度和詞典大小一樣的向量,向量中只有一個元素值為1,這個為1的位置就代表了當前詞匯,其他元素值都是0。這種表示方法最大的缺點就是把每個單詞孤立起來了,不能很好刻畫兩個單詞之間的關系,而且當詞典空間巨大的時候容易受到維數災難的困擾。
在以深度學習為基礎的文本分類中,通常使用分布式詞向量[16](Distributed representation)來表示一個單詞,這種方法的基本思想是通過訓練將某種語言中的每一個詞映射成為一個較低固定長度N(N是一個超參數)的向量,向量中每個元素都是一個實數,相當于把原來one-hot編碼得到的稀疏巨大維度壓縮嵌入到一個更小維度的空間,所有的向量構成一個詞向量空間,通過在這個向量空間上定義距離就可以刻畫詞之間的關聯性了。Word2vec是一個由google開源的生成分布式詞向量的工具,本質上是一個神經網絡模型,詞向量是此模型的一個產出物。模型中有兩種訓練模式CBOW (Continuous Bag-of-Words Model),Skip-gram (Continuous Skip- gram Model)。其中CBOW是上下文來預測當前詞,而Skip-gram正好相反,是根據當前詞預測上下文。
2.3? 適用于文本分類的CNN模型結構
隨著深度學習在NLP領域[17-18]的應用越來越廣泛,循環神經網絡(RNN)、CNN模型已經廣泛應用在在文本分類領域,鑒于URL是一個短文本,根據Yin等人[19]的研究,在短文本分類上CNN更具有優勢,所以我們決定采用CNN模型。實驗中構建的CNN模型如圖3所示。