張 婷,錢麗萍,汪立東,張 慧
(1.北京建筑大學 電氣與信息工程學院,北京 100044;2.國家計算機網絡應急技術處理協(xié)調中心,北京 100029)
隨著網絡服務日益普及,不法分子利用網絡進行攻擊的行為日漸普遍。攻擊者不斷采用自動生成域名及網頁隱匿等新的技術手段來增強惡意URL的隱蔽性,提高攻擊命中率。其中,一種極為有效的手段就是采用惡意仿冒URL方式,該類URL在主機名、路徑名、文件名或參數域中使用一些知名網站的域名,造成用戶混淆,降低防備,誘導用戶點擊,從而完成攻擊。由于仿冒特征對原始特征的擾動幅度較小,一定程度上影響了目前常用的基于字符串特征匹配、基于統(tǒng)計特性檢測及基于特征學習等檢測方法的檢測性能。
惡意仿冒URL是惡意URL中的一種類型,與傳統(tǒng)的惡意URL具有類似的檢測方法。主要使用的方法包括黑名單、規(guī)則匹配和機器學習等。雖然上述方法能夠在一定程度上實現對惡意仿冒URL的檢測,但仍存在一定的局限性。
由于惡意仿冒URL在統(tǒng)計分布特性上類似于良性URL,往往被當前檢測方法漏檢。本文提出一種基于skip-gram編碼器和卷積神經網絡(convolutional neural network,CNN)相結合的惡意仿冒URL檢測方法。該方法首先根據URL的結構特性,將其切分為協(xié)議、主機名、路徑名、文件名及參數域5個部分,再利用skip-gram模型進行編碼,最后使用連續(xù)卷積CNN模型對編碼后的各部分分別進行特征提取,并結合機器學習方法實現對惡意仿冒URL的檢測。
當前主流的惡意URL的檢測方法主要包括黑名單檢測、規(guī)則匹配檢測、基于機器學習檢測[1]及基于深度學習的方法。
黑名單是一份包含已驗證為惡意URL的網址列表。Kührer等[2]提出一種基于圖表的方法用于識別黑名單中的漏洞,并對15個公共惡意軟件黑名單和4個由殺毒軟件供應商提供的黑名單進行有效性評估。雖然研究人員對黑名單列表進行擴展,但其識別能力仍依賴原有黑名單集,不僅容易引起漏判,且時間開銷大。
傳統(tǒng)機器學習方法被廣泛應用于惡意URL檢測領域。Vanhoenshoven等[3]運用決策樹、隨機森林、支持向量機(SVM)、多層神經網絡(MLP)等方法完成對惡意URL數據集的檢測。甘宏等[4]提出使用基于RBF核的SVM分類器對URL進行分類檢測,并采用準確率、召回率、精準度和F-measure等評價指標對結果進行評估。由于機器學習算法的局限性,導致在特征提取和實驗方面需要消耗大量的時間精力。
深度學習主要使用多層神經網絡對字符串進行特征提取,找出字符串的隱性特征,便于URL的檢測。Goldberg[5]從自然語言處理研究的角度介紹卷積神經網絡,介紹自然語言的輸入輸出、特征提取、優(yōu)化方式和常用函數(激勵函數、損失函數、正則化、梯度下降、反向傳播等)。陳旭等[6]論述以卷積神經網絡為主體的深度學習算法的實現。潘思晨等[7]使用多層卷積神經網絡對惡意URL進行檢測。Le等[8]使用多層卷積神經網絡對惡意URL在字符級和單詞級分別進行檢測?;谏疃葘W習的檢測,雖然能夠較準確地檢測字符級惡意URL。但其模型的網絡層數較多,導致特征提取與檢測過程的時間與空間復雜度較高。
攻擊者常仿冒知名域名構造惡意URL,特別是結合使用域名生成算法(domain generation algorithms,DGA),如suppobox、cryptowall等,快速生成與Alexa Top 1M一元字符分布高度相似的惡意仿冒URL集,傳統(tǒng)規(guī)則匹配或基于簡單統(tǒng)計分布的機器學習檢測方法難以區(qū)分[9,10]。
由于以上方法存在準確率較低、時間開銷大、更新困難等不足,因此本文設計并實現了一種連續(xù)多個卷積層的CNN與多種機器學習算法相結合的檢測模型,能夠準確、高效地抽取惡意仿冒URL的判別特征,檢測模型具有普適性,可以有效地提升惡意仿冒URL的識別能力。
統(tǒng)一資源定位符(uniform resource locator,URL)是互聯(lián)網上標識資源的唯一地址,格式為protocol://hostname[:port]/path/[?query](IETF request for comment 1738,RFC1738),其中“[]”表示可選內容。本文以超文本傳輸協(xié)議(hypertext transfer protocol,HTTP)的URL為主要研究對象,該類URL每個部分具有特殊的意義與構造規(guī)則,如圖1 所示。因此,本文根據URL的結構特性將其劃分為協(xié)議、主機名、路徑名、文件名及參數域5個部分。由于本文主要研究基于HTTP協(xié)議的URL,故協(xié)議部分不作為研究對象。
圖1 http協(xié)議形式
深度學習網絡模型無法直接處理字符串信息,因此如何在保留URL所包含信息的基礎上對其進行轉化是本文研究的重點之一。skip-gram[11]作為基于分布式思想編碼的方法之一,具有強大的表征能力,能夠將文本語料的最小語義單元映射為實數向量,并用不同語義單元的空間距離表示語義相似度;同時可以通過給定目標字符預測上下文信息,應用范圍廣且適用于較大量的數據集運算。且相較于CBOW模型,能夠更加顯式地表達字符間的關系,更加準確地提取字符特征,為后文URL的特征提取節(jié)省時間。因此本文設計skip-gram對URL進行稠密編碼,完成URL信息轉換。
skip-gram模型旨在將字符轉換為占用空間更小的稠密向量。本文以URL為處理單位,選擇其最細粒度——字符,作為最小語義單元,統(tǒng)計正、負數據集中的最小語義單元的頻次,并按降序排列,結果如圖2所示。橫坐標為字符降序排列的序號,縱坐標為1-gram字符出現的頻次。本文將頻次較低字符包括中文字符(’翡’,’語’,’利’,’款’等)、非常用字符(’>’,’π’,’^’,’`’等)及亂碼字符(’す’,’í’,’の’,’й’等)全部置為”UNK”,以減少模型訓練的時間及空間復雜度,且不會對編碼結果造成影響。故本文以頻次為334次的第79個字符’!’作為切分點,舍去頻次小于300次的字符。并將保留的79個字符與”UNK”組成skip-gram模型所需的字符表V。
圖2 1-gram字符頻次降序排列折線
在skip-gram模型中,w∈Rd是w∈V的向量表示,其中,d為字符向量的維數,w為字符表V中的字符。如圖3所示,使用滑動窗口得到訓練數據 (w,c), 不僅能獲取相鄰字符間的關系,也能獲取具有一定距離字符間的關系。相較于普通二元數據對能更加準確表達字符的上下文關系。且本文設置大小為5的滑動窗口,即能保證充分獲取字符間的關系,又能避免因距離過遠而獲取的錯誤關系。
圖3 skip-gram模型掃描結果注:陰影代表當前“輸入字符”,方框代表滑動窗口。
在目標字符w的上下文中觀察到字符c的概率如式(1)所示,在目標字符w的上下文中未觀察到字符c的概率如式(2)所示
(1)
(2)
其中,向量w與向量c分別為字符w與字符c的向量表示。
skip-gram模型使用噪聲-對比估計(noise-contrastive estimation,NCE)預測目標字符,并利用負采樣(negative sampling)技術,盡可能分配高概率給真實目標,低概率給其它噪聲。將上文滑動窗口掃描得到的實驗數據集D, 放入skip-gram字符編碼器中,其隱藏層為無激活函數的線性神經元,輸出層使用softmax激活函數。并設置相應負隨機采用集D′進行訓練,如式(3)所示。并通過式(4)計算出字符的稠密編碼向量
(3)
w′=w·Wh
(4)
其中,向量w′是字符w的稠密編碼向量,向量w是字符w的one-hot向量,Wh為skip-gram字符編碼器訓練結束后所得隱藏層權重矩陣。
綜上所述,利用以上skip-gram字符編碼器模型得到映射表S, 該映射表為字符到向量的一一映射。能充分表達字符含義與字符間的關系,降低后文CNN特征提取的復雜度,減少特征提取時間。
近年來,CNN不僅在圖像、語音識別方面取得成功,也在自然語音處理方面取得突破性的進展。Saxe等使用多核卷積對短字符串(惡意URL、文件路徑、注冊表等)進行特征提取并分類,其結果優(yōu)于手動特征提取[12]。Vijayaraghavan等使用卷積神經網絡在字符級和單詞級上對多個短文本數據集進行分類檢測,取得較好的結果[13]。故本文借鑒以上模型優(yōu)點,使用連續(xù)多個卷積層的CNN模型(采用連續(xù)兩、三、四個卷積層3種模型),分別針對URL的主機名、路徑名、文件名及參數域部分進行訓練,選取URL各部分的最優(yōu)模型組合為最終模型,對整個URL進行特征提取。連續(xù)兩個卷積層的CNN模型如圖4所示,先采用連續(xù)兩個卷積層進行連續(xù)特征提取,再使用平均池化對特征進行優(yōu)化。由于池化作用會過濾部分相關特征,故本文采用多次連續(xù)卷積的方式,盡可能充分的提取URL的特征向量。
圖4 連續(xù)兩層卷積CNN模型結構
卷積層是連續(xù)多個卷積層模型的重要部分,主要作用是對數據進行特征提取。本文采用連續(xù)卷積即連續(xù)多次特征提取,相較于普通CNN模型,能夠更充分提取字符間的特征關系。且首先選擇較大尺寸的卷積核對URL整體特征進行有效提取,再選擇較小尺寸的卷積核對URL局部特征進行詳細提取。并采用”VALID”方式填充,相較于”SAME”方式能有效降低特征圖的維度,降低運算的復雜度。池化層的主要作用是進行特征篩選,去除冗余或不相關特征,本文采用平均池化對特征進行篩選,相較于其它池化方式,平均池化能夠篩選出URL的最優(yōu)特征表達。
激活函數是神經網絡的重要函數之一,利用它的去線性化功能,使神經網絡實現非線性傳播。其中ReLU函數僅使用一個閾值就能得到激活值,大大降低了神經網絡的運算量,且ReLU函數適用于較小學習率參數。根據惡意仿冒URL本身特點、運算速度及較小學習率的設置,在卷積層和全連接層ReLU函數選擇激活函數。
本文以連續(xù)兩個卷積層模型為例,輸入為數據向量X,Xi∈Rn, 長度為n的數據表示為X1∶n=X1X2…Xn, 兩次卷積后得到特征向量C、C′, 如式(5)、式(6)所示。池化后得到特征向量P,如式(7)所示
Ci=f(W1·Xi*step1∶i*step1+c1-1+b1)
(5)
C′i=f(W2·Ci*step1∶i*step1+c2-1+b2)
(6)
Pi=Average{Ci*step2∶i*step2+c3-1}
(7)
其中,c1、c2為卷積核的尺寸,step1為卷積步長,W1∈R4*c1,W2∈R1*c2為卷積核的權重矩陣,b1∈R,b2∈R為卷積偏置項,c3為池化過濾器的尺寸,step2為池化步長。
綜上所述,由2.1節(jié)得到的skip-gram字符編碼器與2.2節(jié)得到的連續(xù)多個卷積層的CNN特征提取模型組成的網絡模型如圖5所示,且連續(xù)多個卷積層的CNN模型結構圖如圖4所示。故本文利用該網絡模型對URL檢測特征自動提取。
圖5 本文模型結構
Alexa與Phishtank網站全球公認的且被大量使用的良性與惡意URL數據集。本文從Alexa 網站爬取五萬多條良性真實URL作為正樣本集。并采用如下方法得到惡意仿冒URL樣本集。
Jaccard系數(Jaccard similarity coefficient)[14]衡量兩個集合之間相似性的重要方式,如式(8)所示為集合A,B的Jaccard系數。且惡意仿冒URL一般通過構造變換或字符變換模仿知名網站,故本文采用Jaccard系數來度量兩個URL中特定部分之間的相似性
(8)
將Alexa Top 1M域名集的m條域名去除頂級域名作為集合U={U1,U2…Um}, 從Phishtank網站爬取的n條惡意URL,按第2章所述方法將其切分。本文數據均為基于HTTP協(xié)議的URL,故無需與集合U進行相似度對比。將主機名域,路徑名域,文件名域,參數域作為集合H={H1,H2…Hn},P={P1,P2…Pn},F={F1,F2…Fn},Q={Q1,Q2…Qn} 分別與集合U進行Jaccard相似系數計算,若Ui與Hi,Pi,Fi,Qi中任意的Jaccard系數大于等于0.65,則第i條惡意URL為惡意仿冒URL,即負樣本集,見表1。某些惡意仿冒URL的提取過程較費時,可能導致惡意仿冒URL集的提取過程耗費一定時間,但并不影響后續(xù)實驗的檢測。
表1 惡意仿冒URL樣例
根據以上規(guī)則,本文選定實驗所需正負樣本集,并在其中分別隨機選取30%的樣本集作為測試集(正樣本 16 950 條;負樣本12 065條),剩下各70%的數據作為訓練集(正樣本39 550條;負樣本28 151條)。
為體現本研究意義,增強對比度,提升實驗結果說服力。本文設計以下模型:
1.2 方法 采用自行設計的脊髓損傷神經源性膀胱功能障礙者排尿方式調查表和應用間歇導尿影響因素的調查表,內容包括脊髓損傷者的基本信息、排尿方式和應用間歇導尿的狀況及影響因素等方面。調查者以問卷為基礎,與被調查者交談,充分講解問卷中各項問題及填表要求,使患者完全理解后填寫,并當場回收調查表。共發(fā)放76份,回收有效問卷76份,回收有效率100%。
模型1:運用本文URL數據集,調整已有模型結構,完成實驗。本模型將本文skip-gram編碼后的URL使用Saxe等提出的eXpose多核卷積模型進行特征提取,根據本文數據集,將卷積核的大小調整為4×20×8,4×30×8,4×40×8,4×50×8,dropout調整為0.6,最終得到128維的特征向量。
模型2:根據第2章提出的網絡模型進行URL檢測。先分別設計連續(xù)二層卷積層(模型2-a)、三層卷積層(模型2-b)、四層卷積層(模型2-c)的CNN模型對URL的主機名、路徑名、文件名及參數域部分進行訓練。如表2所示,模型2-a的卷積層參數為卷積c1、卷積c2;模型2-b的卷積層參數為卷積c1、卷積c2、卷積c3;模型2-c的卷積層參數為卷積c1、卷積c2、卷積c3、卷積c4。池化層過濾器使用大小為1×2,步長為2的平均池化。并選擇各部分的最優(yōu)模型組合為模型2的最終優(yōu)選模型。根據數據集與CNN的特點,選用交叉熵計算誤差代價,使用Adam優(yōu)化器進行優(yōu)化,設dropout為0.6,學習率為0.0001。
分別訓練模型1與模型2,每次隨機從訓練集中選擇100組數據訓練,數據集共迭代60輪(即batch_size=100,epoch=60)。并基于測試集完成模型的特征提取,且對提取的特征進行評估與選擇。
表2 URL各部分的3種模型卷積層參數
3.3.1 skip-gram編碼結果與分析
為了能夠更直觀地對skip-gram編碼結果進行分析,本文采用PCA技術對2.1節(jié)編碼結果進行PCA降維處理,將高維字符向量降至二維向量,如圖6所示。經本文skip-gram字符編碼后,字符按語義相似性聚集,大、小寫字母、數字分別聚簇。數據集中多次出現”http”,”taobao”,”com”,”Www”等字符串,即’h’、’t’、’p’,’a’、’b’、’o’、’t’,’c’、’o’、’m’,’W’、’w’字符之間具有頻繁的上下文關系,在二維坐標中它們之間的空間距離較近。故skip-gram模型能夠學習并擴大字符間的關系,使字符間的特征更顯式表達,且與one-hot編碼(80維/字符)相比,skip-Gram編碼(4維/字符)數據所占內存空間更少,運算速度更快。故本文字符編碼模型效果良好,能夠將語義相似的字符聚類,為后文特征提取與分類提供良好的基礎。
圖6 各字符向量的PCA二維映射
3.3.2 模型優(yōu)選結果與分析
模型2的優(yōu)選過程中,分別使用模型2-a、模型2-b、模型2-c對URL的主機名、路徑名、文件名及參數域部分的訓練結果如圖7~圖10所示。表3為模型2各部分,全部使用模型2-a的全兩層卷積模型、全部使用模型2-b的全三層卷積模型、全部使用模型2-c的全四層卷積模型及最終優(yōu)選模型對惡意仿冒URL的分類結果對比表。
圖7 主機名部分3種模型訓練結果對比
圖8 路徑名部分3種模型訓練結果對比
如圖7可知,模型2-b與模型2-c的結果相似,且模型2-b的層數較少、復雜性較小,故主機名域選擇模型2-b為較優(yōu)模型。
如圖8可知,模型2-c的趨勢較其余兩類模型平穩(wěn),且準確率高,故選擇模型2-c為路徑名域的較優(yōu)模型。
如圖9可知,模型2-c的結果均優(yōu)于其余兩類模型,故文件名域選擇模型2-c為較優(yōu)模型。
圖9 文件名部分3種模型訓練結果對比
圖10 參數域部分3種模型訓練結果對比
表3 不同組合模型分類結果對比
如圖10可知,模型2-b的結果均優(yōu)于其余兩類模型,故參數域選擇模型2-b為較優(yōu)模型。
綜上所述,模型2的最終優(yōu)選模型的組合方式為:主機名域與參數域部分使用連續(xù)三層卷積層的模型2-b,路徑名域與文件名域使用連續(xù)四層卷積層的模型2-c。
此外,根據對不同模型提取的特征空間評估,如表3可知,模型的正確率、召回率、F-M、ROC面積均隨著卷積層數增加而增高,但其上升趨勢均隨著卷積層數增加而降低,故僅僅依靠增加卷積層數并不能達到最優(yōu)結果。同時,與最終優(yōu)選模型對比可知,最終優(yōu)選模型較其它模型更優(yōu),故本文提出將URL切分為5部分分別進行特征提取的方法有效,且URL的各部分分別選擇適合該部分數據特征的模型能夠達到更優(yōu)結果。
3.3.3 各模型結果對比分析
表4為eXpose模型[14]、模型1、模型2在FPR(假陽率)等于10-4、10-3、10-2時TPR(真陽率)的結果對比表。采用隨機樹、隨機森林、貝葉斯、J48多種機器學習算法對模型1、模型2的結果進行十重交叉驗證。并使用正確率、錯誤率、召回率、F-Measure、ROC面積評價指標對分類結果進行評估,結果見表5、表6。
表4 各模型分類效果對比
表5 模型1的分類結果評估
表6 模型2的分類結果評估
以表4中模型2的結果為例,在FPR等于10-4、10-3、10-2時,模型2的TPR的結果為80%、88%、94%,故TPR的結果隨著FPR的增大而增大。由表4中FPR等于10-2時,eXpose、模型1、模型2的TPR的結果可知,模型2的分類結果優(yōu)于其它模型,故使用模型2的特征提取方式對本文惡意仿冒URL數據集具有較良好效果。由模型1與eXpose的結果可知,eXpose的分類效果優(yōu)于模型1,故本文對eXpose多核卷積模型的復現效果未達到最優(yōu),或eXpose多核卷積模型對惡意仿冒URL數據集未有最優(yōu)效果。
由表5、表6可知,ROC曲線的評價結果較其它評價指標結果良好。并由表5、表6對比可知,模型2的分類效果均優(yōu)于模型1,故模型2將URL切分為協(xié)議、主機名、路徑名、文件名及參數域5個部分分別訓練,更充分地提取了惡意仿冒URL的有效特征,提高了惡意仿冒URL的檢測準確率,準確率最高達97.7%。
惡意URL識別是網絡安全領域保證用戶上網安全的重要檢測手段之一。針對惡意URL中較難識別的類型——惡意仿冒URL,本文提出一種基于連續(xù)多個卷積層的CNN模型對惡意仿冒URL進行檢測。實驗結果表明,skip-gram字符編碼器產生的稠密編碼,能夠充分體現字符上下文關系,降低后文特征提取的復雜度。利用URL的結構特性將其切分為5部分,每部分使用不同層數卷積模型進行預訓練,再將各部分模型組合進行特征提取的方法有效。且選擇三層卷積層模型處理主機名域與參數域、四層卷積層的模型處理路徑名域與文件名域的最終優(yōu)選模型的準確率最高。故本文提出的惡意仿冒URL檢測方法能夠有效提高網絡安全人員對惡意仿冒URL的檢測效率與準確率,在網絡安全領域具有較好的應用前景。