楊 杉 肖治華 張 成
(國網湖北省電力公司信息通信公司 武漢 430077)
近年來,隨著各種智能型移動設備的普及應用,互聯網規模也得到了極大地擴張,已經滲透進了民眾生活的各個層面。在多種類型的網絡服務中,萬維網一直是最重要的內容,也是信息傳輸量最大的應用種類。根據CNNIC 發布的報告顯示,萬維網已經成為了用戶登錄網絡并使用應用服務的最主要途徑,在這一過程中,統一資源定位符URL 起到了至關重要的作用[1]。URL 的推出,使得各種異構站點可以采取一種統一的標準格式來向用戶提供具體到某一頁面的定位功能,并通過大量的超鏈接實現多個頁面以及多個站點之間的便捷跳轉。但與此同時,包括計算機病毒、流氓軟件、廣告推送等惡意內容也紛紛以Web 頁面為平臺,以URL 為推廣工具,進行大范圍的傳播與破壞,極大地干擾了各類信息系統的正常運維工作,也給用戶造成了大量的損失[2]。惡意URL 被定義為用戶非自愿訪問的站點地址,通過偽裝成正常服務的方式誘導用戶點擊并進入相關頁面,從而實施各種惡意行為[3]。卡巴斯基2017年推出的安全公報指出,目前通過惡意URL 進行的網絡攻擊占所有網絡非法行為的75%以上,包括各種惡意腳本、漏洞攻擊和可執行的病毒文件等[4]。因此,為針對陌生URL進行快速檢測,判別其所定位的頁面是否具有惡意內容具有著重要的研究意義。
目前惡意URL 檢測工作分為兩個主要的研究方向,其一是應用較為廣泛的黑名單機制,即根據以往記錄的惡意URL 與待檢測的URL 進行對比,如Chrome 瀏覽器的采用的Safe Browsing 機制[5]就屬于這一類型。從檢測模式方面分析,黑名單機制屬于一種被動檢測方法,因此本身存在一些固有的缺陷,例如只能針對名單中的URL 進行對比,而無法對新增加的惡意頁面進行檢測,且隨著黑名單的不斷增多,其檢測效率也會日益下降,對網絡傳輸的實時性能造成影響;第二類方法為主動檢測方法,即利用機器學習來對URL 進行快速檢測,其中具有代表性的方法有決策樹、支持向量機SVM 和Kmeans等[6]。該類方法主要是采用各種算法,提取惡意URL 的特征,并同待檢測URL 進行比對,例如常采用的URL 字符長度、分隔符數量以及一些常見的關鍵詞等。Samtani 等[7]提出針對URL 字符串進行分解,分別從主機定位與詞義表達兩個方面來提取特征;林海倫等[8]針對URL 字符串中的域名、路徑名和文件名進行分析,從中總結出了部分惡意URL 的詞項排列規律,并建立相關的檢測模型。Alrwais 等[9]提出采用圖論方法針對一些已知的惡意主機進行擴展檢測,從而將檢測的對象從頁面轉變為了主機IP,有效地減少了算法的計算規模;Liang等在文獻[10]中針對網頁HTML 代碼標簽進行分析,指出絕大部分的惡意網頁均會隱藏其標簽,因此可根據待檢測網頁中標簽的可見程度來判別該URL是否存在內嵌惡意代碼的可能。
雖然基于網頁內容的檢測方法在檢測準確度方面具有明顯的優勢,但其缺點也是非常明顯的,即需要大規模的采集網頁內容,而對于飛速擴張的互聯網站點規模而言,這一方式顯然會受到極大的制約,其耗費的時間也將會不斷增長。本文提出將威脅情報技術融入到惡意URL 檢測工作中,利用其龐大的數據資源,結合URL 的結構特征和敏感詞特征,并采用多分類器投票機制來完成檢測方案的自我修正,在確保檢測精度的同時,極大地提高檢測方法的執行效率,同時實現了威脅情報庫的自動更新。
如上節所述,由于互聯網站點規模的不斷增大,目前針對頁面進行檢測的技術基本無法解決檢測時延過長的問題,因此本文也將研究的對象放在惡意URL 字符串方面,借助威脅情報平臺的信息庫,深入分析URL 字符的結構特征與敏感詞特征,從而為后續的檢測算法的設計工作奠定基礎。
首先從結構方面對URL 進行分析與特征提取。結合以往的研究經驗,URL可提取的特征包括字符中的點數、字符串長度、大寫字母、特殊符號以及是否包含跳轉的IP 地址等。以下分別進行分析。
1)URL字符串中的點數
眾所周知,URL 中“·”的個數是域名分配機制所采用的分隔符號,能夠準確地反映出該URL 中包含的域名的細分程度。一般正常的域名最多為四級,即包含的點數一般不超過三個,但相當一部分惡意URL 為了引誘用戶點擊而故意在真實域名中仿造知名站點的域名,因此點的個數越多,該域名包含惡意行為的概率就越高[11]。為了避免數值較高的特征所帶來的局部峰值效應,本次采用min-max 標準化對采樣的點數執行歸一化處理,并設置最大點數為10。得到式(1):

2)URL字符串長度
根據大量惡意URL 案例的統計結果顯示,隨著URL 字符長度的增加,該URL 最終被歸類為惡意URL 的可能性就越大。因此本文此處仍舊采取min-max 對長度特征進行歸一化處理,從而平均特征樣本的影響程度,設置長度的max值為60。得到式(2)。

3)URL字符串中包含的大寫字母
在大多數正常的URL 格式中,很少會出現大寫字母與小寫字母混同出現的情況,因為Http協議本身和所有的Windows 服務器均是大小寫不敏感的,只有在運行著Apache 的Unix 系統中才存在大小寫敏感的設定,因此可以認為,若URL 存在大小寫混合的情況,則此頁面可能在一定程度上存在惡意內容,據此設定正則表達式(3):

4)URL字符串中包含的特殊字符
多數URL 處于迷惑用戶的目的,特意在其字符串中添加大量的特殊字符,從而降低其可讀性,使用戶不易分辨其結構特征,如“~”、“&”、“#”、“∧”等,此處同樣采取正則表達式對該特征進行分類,如式(4)所示:

5)URL字符串中包含的IP地址
部分惡意URL 為了規避DNS 檢測機制的審核,將其字符串中的域名部分采用IP 地址來代替,這也成為了惡意URL 的一個顯著特征,因此本文采用正則表達式來濾出含有IP 地址的URL,其特征值設定如式(5):

敏感詞意指被大多數惡意URL 所使用且出現頻率較高的詞匯。通過對敏感詞的統計與提取,可實現對惡意URL 的快速檢索。本文借助了威脅情報平臺的數據優勢,從其URL 信息庫中統計得到了如表1 所示的一系列敏感詞。其提取方法為:首先選擇庫中信譽度為黑色(即信譽度最差,可基本等價認定其包含惡意內容)的URL[12],將這些URL字符串中的協議標識、頂級域名等字符去除,隨后根據剩余部分中的分隔符(如“·”、“/”和“-”等符號)將字符串分詞,統計各個詞段中敏感詞出現的頻率,最后按照該頻率的高低順序刪選出位居前16 名的詞匯作為最終認定的惡意URL 常使用的敏感詞。

表1 惡意URL常見敏感詞
得到了敏感詞匯表之后,在后續的檢測過程中,首先將待測URL 執行分詞操作,并將其與表中詞匯進行比對,若發現其中存在敏感詞匯,則將該特征值置為1,否則為0。
在威脅情報平臺的輔助下提取URL 結構特征和敏感詞特征之后,即可進入到檢測算法設計環節。本文采用決策樹算法、樸素貝葉斯算法和SVM算法來構建動態的機器學習分類器模型。其流程如圖1 所示,首先對待測URL 進行預處理,標注其所述類別,隨后根據上文所述的方法提取結構特征和敏感詞特征,再通過三種不同的分類算法對構建相應的分類器模型,分別判定該URL 是否包含惡意內容。

圖1 分類器訓練流程
1)決策樹分類器
決策樹算法是一種成熟的分類算法,其采用自上而下的遞歸策略,由不同的特征屬性決定各個節點處的分支,并最終構建一棵樹狀結構的特征分布圖。將待測樣本置于根節點處,即可通過屬性特征在每個節點的分支選擇,最終到達葉子節點,該節點即為決策樹算法的最終結果[13]。由此可見,對該算法影響程度最大的就是決策樹模型構建的合理性,即各個節點的判定依據是否有效。本文將信息增益率作為判定的度量,由信息論可知,隨著信息增益的增大,樣本的確定性也會不斷增高。現設D為數據類別的劃分,則其熵可由式(6)來描述:

上式中i為類別序號,n為類別數量,pi表示第i 類在數據集中出現的概率。例如,對數據集中的某個樣本的屬性X 進行分類,則其期望值應根據式(7)得出:

將以上兩式相減即可得到關于屬性X 的信息增益值,即有:

當采用Gain(X)作為屬性選擇的度量標準時,往往會導致擁有更多值的屬性常以較高概率被選中的情況發生,因此本文采用分裂信息的方法來對Gain(X)執行規范化操作:

利用式(9)對Gain(X)進行規范,可得到關于屬性X的增益率為

根據式(10)分別計算出待測URL 的結構特征值與敏感詞特征值所對應的增益率,然后以此為度量標準,選擇出擁有最大增益率的屬性作為當前分裂屬性,并按照此方法繼續計算得到樹中各個分支節點的分裂屬性,最終構建出整個決策樹分類器模型。
2)貝葉斯分類器
樸素貝葉斯算法假設各個分類的條件相互獨立,即分類的結果中不會出現同屬于兩類以上樣本的情況。通過分類項對待測樣本進行分析,并分別計算出該樣本可能出現在這些分類中的概率,最終選取最大概率的分類項作為該樣本的歸類結果[14]。其算法可描述為
(1)設某待測樣本有m 個屬性,可采用m 維特征向量來描述,即:W={w1,w2,…,wm},其中wi為W的特征屬性集中一個屬性,同時設類別個數為n,同樣采用向量形式表述為C={y1,y2,…,yn},同理yi為其中某一種類別。
(2)針對該特征向量,計算其在C 中每個yi項中出現的條件概率,如式(11)所示:

(3)針對一個待測樣本W,若有P(yk|W)=max{P(y1|W),P(y2|W),…,P(yn|W)},則W ∈yk。
通過以上的三個步驟來對待測URL 執行特征提取操作,即可將該URL 的結構特征和敏感詞特征進行有機結合,從而形成多維特征向量,并按照式(11)給出的方法分別計算出不同類別對應的出現概率,完成貝葉斯分類器的訓練任務。
3)SVM分類器
SVM 機制是一種典型的二元化分類方法。其基本思路是構造一個最優化的分類超平面,記為ω ?x+b=0,并按照該平面將樣本群分為兩類,保證這兩類樣本與超平面之間的最小距離之和最大,從而凸顯兩類樣本之間的區分,而確定最優超平面的過程也可轉化為求解帶約束條件函數的最優值的過程[15]。引入Lagrange乘子,如式(12)所示:

上式中的εi為方程的誤差約束條件,C 為懲罰系數,對上式求解可得式(13)和式(14):

結合以上兩式可得分類決策函數如式(15)所示:

當分類決策函數f(x)=+1 時,則判定該URL 正常;當f(x)=-1 時,認定該URL 將指向含有惡意內容的頁面。
在完成了以上三種分類器的訓練之后,下一環節即是結合三種分類結果進行綜合評價,并最終給出對待測URL 是否具有惡意內容的檢測結論。目前常用的投票表決方式往往采用“一人一票”的原則,并沒有很好地考慮到不同分類器的運行特征,也沒有充分兼顧到各種檢測場合對分類器的適應程度,以及不同類型的樣本對分類算法的側重差異,由此導致各種分類器在結合檢測時易出現相互沖突的問題,從而影響到最終檢測結果的可靠性[16]。本文提出采用構建混淆矩陣的方式對每個分類器的識別情況進行綜合解析,并據此得到最終的組合結果,從而顯著提高了檢測結果的識別率和置信度。
首先根據每個分類器針對大規模樣本群的分類結果,構建對應的混淆矩陣,假設有K 種不同的分類器,則其識別結果統計情況如式(16)所示:


根據式(17)可以求得分類器ek針對來自第i類樣本Ci檢測的結果為Cj概率為

當混淆矩陣CMk規模足夠大,包含的樣本信息足以反映其所對應的檢測空間的概率分布時,則可根據ek的檢測結果將CMk引入到投票機制中,作為先驗知識,起到重要的參照效果,即以條件概率P(x ∈Ciek(x)=j)作為投票表決時的得票數,而某一分類項目Ci最終得票數可通過式(19)計算得出。

將各個分類器的識別性能作為先驗知識參與到投票機制中,同時考慮到不同的檢測環境對于表決閾值設定環節的影響,設計出的投票表決機制如式(20)所示:

上式中的Tj即為表決閾值,該參數可根據待測對象的不同,通過以下方法訓練得到。
首先為Tj賦初始值:

其中Nj為Cj類型包含的樣本規模。在訓練過程中,若類型實際為Cz的某個樣本x被多分類器投票表決判定為Cj類,且z ≠j ,則需要對Tj的值進行修改,可分為以下兩種情況:
1)若j=M+1,則表明對x 無法識別,則修正值ΔTj如式(22)所示:

2)若j≠M+1,則表明檢測結果出現偏差,則修正值 ΔTj如式(23)所示:

以上兩式中的α 和 β 分別為學習步長,且均為大于0 的常數。為了保障檢測機制的穩定性,可使α 和β 在每輪訓練中單調減少,從而合理控制因調整閾值而帶來的對檢測結果的波動影響。
以多分類器投票機制為核心,借助威脅情報平臺提供的信息支持,本文設計的針對惡意URL 的主動檢測模型框架如圖2所示。

圖2 惡意URL檢測模型
該方案的具體執行流程主要包括以下幾個步驟。
Step1:首先從威脅情報平臺中調取URL 信息庫,并將待測URL 與該庫中保存的信息進行比對,若存在該URL 的信譽度,則可直接據此判定其是否指向存在惡意內容的頁面,結束檢測并輸出判定結果,否則執行Step2;
Step2:對待檢測的URL 提取結構特征,并根據表1比對其是否具有惡意URL常用的敏感詞特征;
Step3:通過威脅情報平臺提供的大量信息訓練決策樹分類器、貝葉斯分類器和SVM 分類器,并將取得的特征值組成特征向量,置于三種分類器中進行檢測;
Step4:通過威脅情報庫中的大規模數據對投票機制進行訓練,得出符合惡意URL 檢測需求的閾值,并分配各個分類器的權重,據此得出最終組合檢測的表決結果;
Step5:輸出檢測結果,同時將該結果傳輸至威脅情報平臺,實現對URL信息庫的擴充與更新。
本文圍繞惡意URL 的檢測需求,對目前存在的檢測方法進行了研究,剖析了目前的主流方法-黑名單機制和機器學習方法各自存在的不足之處,提出充分利用威脅情報平臺的數據資源,在提取了URL的結構特征和敏感詞特征的條件下,結合多種分類器各自的優勢,并通過權重可調節的投票機制構建組合檢測模型的設計思路。分別研究了決策樹分類器、貝葉斯分類器和SVM 分類器各自的特性,借助威脅情報平臺的大規模數據,構建了基于混淆矩陣方法的投票表決模型,并同時將檢測結果反饋回威脅情報平臺,實現了對信息庫的自動更新。