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