■ 安徽 劉一利 張家鋼 施凡
編者按:惡意網(wǎng)址URL檢測問題是網(wǎng)絡安全領域研究的一個熱點。本文提出了基于BP神經(jīng)網(wǎng)絡的惡意URL檢測模型,可實現(xiàn)對大批量URL快速、有效判別。
隨著計算機網(wǎng)絡技術的快速發(fā)展,互聯(lián)網(wǎng)已經(jīng)深入到人們生產(chǎn)生活的方方面面,擔負著越來越重要的角色?;ヂ?lián)網(wǎng)金融、互聯(lián)網(wǎng)商務、互聯(lián)網(wǎng)農(nóng)業(yè)、互聯(lián)網(wǎng)醫(yī)療等新興行業(yè)逐漸改變著人們的生活方式。
然而,在計算機網(wǎng)絡快速發(fā)展的同時,網(wǎng)絡安全事件層出不窮,網(wǎng)絡攻擊工具泛濫、網(wǎng)絡威脅時刻相伴,據(jù)國家計算機網(wǎng)絡應急技術處理協(xié)調(diào)中心發(fā)布的《2019年上半年我國互聯(lián)網(wǎng)安全態(tài)勢》顯示,僅上半年新捕獲的惡意程序達3200萬個,惡意程序日均傳播達998萬次,受影響的IP約3762萬個,發(fā)現(xiàn)惡意郵件數(shù)超過5600萬封。
如何檢測惡意網(wǎng)站已成為維護網(wǎng)絡安全的一項重要措施。惡意URL檢測是網(wǎng)絡安全研究的熱點,URL是網(wǎng)站的入口地址,對其進行鑒別可有效提升安全檢測的效果。
關于惡意URL檢測的方法,國內(nèi)外學者也進行了廣泛的研究,主要有基于黑名單的方法、基于TF-IDF的方法、基于深度學習的方法、基于段模式的方法等,下面對幾種典型的方法進行介紹。
黑名單方法廣泛運用于網(wǎng)絡安全領域,主要是通過建立黑名單庫,對URL進行特征比對,具有識別準確率高、識別速度快、簡單方便的優(yōu)點。但由于其采用黑名單庫,對新增的惡意URL無法檢測,同時其需要維護龐大的黑名單數(shù)據(jù)庫需消耗大量資源?;诤诿麊蔚倪^濾方法在Google、eBay Toolbar等瀏覽器中得到了使用。
甘宏等提出利用TF-IDF方法計算各個分詞的權重作為統(tǒng)計特征,來進行惡意URL檢測。
潘司晨等提出的使用卷積神經(jīng)網(wǎng)絡的深度學習方法,通過將URL字符進行編碼映射成二維數(shù)組,通過多層神經(jīng)網(wǎng)絡,自動學習高層次特征并預測結果,不需要特征提取。但該方法需要高質(zhì)量帶標簽數(shù)據(jù)。
林海倫等提出了基于段模式的惡意URL檢測方法,是通過對惡意URL中的域名、路徑名和文件名3個語義段,通過建立三元組為詞項的快速計算惡意URL每個語義段的模式,判定給定的URL是否是惡意URL。
Ma等提出一種基于URL的詞匯特征和主機屬性訓練模型,對惡意URL進行檢測的方法。該方法的有效性基于對特征的準確選取和計算。
本文提出的利用BP(Back Propagation)神經(jīng)網(wǎng)絡方法構建的惡意URL檢測方法,通過提取URL特征,利用歷史數(shù)據(jù)訓練BP神經(jīng)網(wǎng)絡分類模型。運用訓練好的分類模型對未知URL進行預測。
圖1 模型流程圖
表1 訪問控制規(guī)則
BP神經(jīng)網(wǎng)絡是一種按照誤差反向傳播算法訓練的多層前饋神經(jīng)網(wǎng)絡,是應用最廣泛的神經(jīng)網(wǎng)絡。
BP神經(jīng)網(wǎng)絡模型無需事先確定輸入輸出之間映射關系的數(shù)學方程,僅通過使用歷史數(shù)據(jù)對模型進行訓練,學習規(guī)則,實現(xiàn)對未知數(shù)據(jù)的預測。
本文通過設計BP神經(jīng)網(wǎng)絡分類模型,對惡意URL進行檢測。模型基于sklearn庫實現(xiàn)。
完整的處理流程如圖1所示。
本文從URL域名的結構特點,以及正常與惡意URL的差異性等方面,選取的特征如表1所示。
表1中各特征參數(shù)的計算方法為,第11個特征通過網(wǎng)絡爬蟲工具爬取12000個常用域名主域名,在選取常用的6000個英文單詞和15000個常用的中文拼音通過去重處理后,共同組成常用主域名詞數(shù)據(jù)庫。將URL的主域名字符串與主域名詞數(shù)據(jù)庫進行比對,若比對成功,則字符串有意義,最后將這個匹配的字符串與主域名總長度的比值作為有意義系數(shù)。
例如,“http://www.baidu.com.cn”,去掉“http://”,僅對“www.baidu.com.cn”進行特征提取。其中的URL總長度為16,數(shù)字個數(shù)為0,是否含有IP地址為布爾型變量為0,數(shù)字占比為0,最長域名段為“baidu”長度為5,分隔符“/”的個數(shù)為0,大寫字母個數(shù)0,最長連續(xù)字母長度為5,頂級域名是否為五大域名為1,是否含特殊字符為0,主域名中有意義系數(shù)中,主域名僅有一個字符串“baidu”,通過匹配查找能夠匹配,有意義長度為5,主域名總長度為5,有意義系數(shù)為5/5=1。得到該URL的特征提取向量為<16,0,0,0,5,0,0,5,1,0,1>。
通過對訓練集URL進行特征提取,得到特征向量。將正例樣本標記為1,將反例樣本標記為0。模型訓練步驟如圖2所示。
(1)劃分數(shù)據(jù)集
將數(shù)據(jù)集進行合理劃分,一般按照7:3的比例將數(shù)據(jù)集劃分為訓練數(shù)據(jù)和測試數(shù)據(jù)。使用訓練數(shù)據(jù)訓練模型,Adagrad、Adadelta、Adam、Adamax、Nadam。
圖2 模型訓練步驟
(3)判斷訓練結果
將BP神經(jīng)網(wǎng)絡模型對驗證集數(shù)據(jù)的分類結果進行分析,判斷正確率和召回率是否達到要求。如果正確率和召回率達到要求,停止訓練,模型訓練完畢。如果不滿足要求,返回步驟2,重新設置模型超參數(shù),進行訓練,直到達到要求。用測試數(shù)據(jù)來驗證模型的正確率和召回率,判斷模型的有效性。當數(shù)據(jù)集數(shù)量不夠可采用k折交叉驗證,k一般取值為10,我們將數(shù)據(jù)集劃分為k個子集,其中每個子集做一次驗證集,共進行k次訓練,將平均值正確率和召回率作為最終的結果。
(2)設置模型超參數(shù)
BP神經(jīng)網(wǎng)絡模型在訓練之前需要設置超參數(shù),如網(wǎng)絡模型的層數(shù);輸入層、輸出層和隱含層的神經(jīng)元數(shù)量;初始權值設定;學習率,最小訓練速率;激活函數(shù),常用的激活函數(shù)為sigmoid、tanh、relu、leaky relu、elu;優(yōu)化器選擇,常見優(yōu)化器有SGD,
當今,信息安全面臨日益嚴峻的考驗。本文基于BP神經(jīng)網(wǎng)絡機器學習算法,設計了一種快速、有效的對惡意URL的識別方法。通過對URL數(shù)據(jù)的11個特征進行提取,轉化為特征向量,使用數(shù)據(jù)集劃分為訓練集和驗證集,對BP神經(jīng)網(wǎng)絡模型進行訓練和驗證,模型達到指標要求可實現(xiàn)對大批量待檢測URL實現(xiàn)快速識別,可有效實現(xiàn)對惡意URL的實時在線識別。
本文設計的惡意URL識別檢測模型,還需要用更廣泛的URL數(shù)據(jù)進行驗證,下一步將針對模型泛化能力進行深入研究。