劉 濤李思鑒 何智帆 周 宇 姚興博
(1.深圳供電局有限公司,廣東 深圳 518133;2.南瑞集團(國網(wǎng)電力科學研究院),江蘇 南京 210000;3.南京農(nóng)業(yè)大學人工智能學院,江蘇 南京 210095)
惡意URL(Malicious URLs)是網(wǎng)絡(luò)犯罪的重要途徑,它作為釣魚網(wǎng)站、網(wǎng)絡(luò)惡意程序和腳本的載體,為網(wǎng)絡(luò)違法犯罪活動提供了可乘之機[1]。這些惡意URL有著和一般URL幾乎一致的特征,一般不易被檢測出,且具有誘導、欺騙的特征,對用戶和企業(yè)的隱私、數(shù)據(jù)和財產(chǎn)等安全問題造成很大威脅。隨著網(wǎng)絡(luò)攻擊形式逐漸多樣化,惡意URL變得更加復雜、隱蔽且更具危害性,這就要求網(wǎng)絡(luò)安全研究人員研究更加高效的檢測方案以實現(xiàn)對其有效檢測。因此,對惡意URL的高效識別與檢測至關(guān)重要[2]。
傳統(tǒng)的惡意URL檢測方法包括黑名單技術(shù)[3]、啟發(fā)式技術(shù)[4-5],隨著新型惡意URL的逐漸復雜化,傳統(tǒng)技術(shù)的檢測水平逐漸下降,且具有誤報率高、更新復雜等特點,無法滿足網(wǎng)絡(luò)安全的需求。
近年來,機器學習為惡意URL的檢測提供了新的研究方向。其中具有代表性的算法為k近鄰算法(KNN)[6]、Random Forest[7-8],此類算法常被用于一般的惡意URL檢測場景。但是隨著時間的推移以及惡意URL的逐漸復雜化、隱蔽化,這種分類模型往往不能達到預期的分類效果,變得誤判率高且穩(wěn)定性隨時間下降。而gcForest算法[9]由于其易訓練、可擴展、效率高的優(yōu)點,在惡意URL檢測領(lǐng)域具有很大的發(fā)展空間。
本文對URL的特性展開針對性研究,并對機器學習模型訓練過程中的特征工程技術(shù)與分類算法展開實驗,結(jié)果表明,gcForest算法訓練出的模型在準確率、精確率、召回率、F1-score等各方面遠優(yōu)于一般機器學習算法,能實現(xiàn)對惡意URL的高效檢測。
機器學習的一般流程包括數(shù)據(jù)集獲取、數(shù)據(jù)集預處理、特征工程、選取算法訓練模型、模型調(diào)優(yōu)與應(yīng)用等步驟。因此,惡意URL高效檢測的機器學習模型包括以下步驟:
(1)獲取由正常URL和惡意URL組成的數(shù)據(jù)集,并分析其特征;
(2)對數(shù)據(jù)進行預處理,劃分訓練集、測試集,去除冗余信息;
(3)開展特征工程,對URL數(shù)據(jù)集進行分詞、特征提取,并轉(zhuǎn)化為詞向量形式;
(4)部署gcForest算法,輸入URL數(shù)據(jù)進行模型訓練;
(5)選取評估指標,通過測試集對模型進行評估,判斷其是否符合標準;
(6)將訓練完的模型導出并應(yīng)用,實現(xiàn)對新的URL的檢測,判斷其是否為惡意URL。
以上步驟的流程圖如圖1所示。
圖1 基于gcForest的惡意URL檢測模型開發(fā)流程圖
其中,最為關(guān)鍵的部分為特征工程和機器學習算法選取與模型訓練。在特征工程部分,本文對原始的URL數(shù)據(jù)進行分詞、特征提取、詞向量表示,最終作為機器學習模型訓練的數(shù)據(jù)輸入。在算法選取與模型訓練部分,本文利用gcForest研究在惡意URL檢測方面的應(yīng)用,通過準確度、精確率、召回率、F1-score等多項指標對其進行評估,并將其與傳統(tǒng)的k近鄰算法(KNN)和Random Forest算法進行對比。最終,將模型導出并應(yīng)用于惡意URL的檢測。
gcForest[9]即多粒度級聯(lián)森林算法,是一種基于決策樹的集成方法,其思想是通過隨機森林的級聯(lián)結(jié)構(gòu)進行學習。gcForest的性能較之深度神經(jīng)網(wǎng)絡(luò)有很強的競爭力,將其用于惡意URL檢測模型中,可以達到極佳的性能。本部分將介紹gcForest應(yīng)用于URL分類問題的原理以及實現(xiàn)方法。
gcForest采用的多層級結(jié)構(gòu)如圖2所示,每層(layer)由4個隨機森林組成,包括2個隨機森林和2個極端隨機森林,每個森林都會對數(shù)據(jù)進行訓練并輸出結(jié)果,這個結(jié)果被稱為森林生成的類向量。同時由圖2可知,每層都會輸出2個結(jié)果,即每個森林的預測結(jié)果與4個森林的預測的平均結(jié)果。
圖2 每層隨機森林結(jié)構(gòu)及輸出結(jié)果示意圖
如圖3所示,為防止過擬合,先對輸入給每個森林的訓練數(shù)據(jù)進行k折交叉驗證。同時,由于每一層結(jié)構(gòu)(layer)都會生成4個類向量,故將上一層的4個類向量以及原有的數(shù)據(jù)作為新的訓練數(shù)據(jù),輸入下一層進行訓練,如此疊加,最后一層將類向量進行平均,作為預測結(jié)果。
圖3 基于gcForest實現(xiàn)惡意URL檢測的完整結(jié)構(gòu)圖
實驗平臺為Windows 10,64位操作系統(tǒng),CPU為i5-10200H,2.40 GHz,GPU為NVIDA GeForce GTX 1650,內(nèi)存為16.0 GB。Python版本為3.9.12,pandas為1.3.4,conda為4.12.0。
本文使用準確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1-score、maro avg和weighted avg這6種指標來評估模型的分類能力[10]。
準確率(Accuracy)表示分類正確樣本占總樣本的比例,是最直觀的評價指標,其公式為:
式中:TP表示預測為正樣本且實際為正樣本;FP表示預測為正樣本而實際為負樣本;TN表示預測為負樣本且實際為負樣本;FN表示預測為負樣本而實際為正樣本。
精確率(Precision)表示所有預測結(jié)果為正例樣本中真實為正例的比例,其計算公式為:
召回率(Recall)表示在所有真實為正例的樣本中預測結(jié)果為正例的比例,其計算公式為:
F1-score是對模型精確率和召回率的加權(quán)平均計算,反映了模型的穩(wěn)健性,結(jié)合精確率和召回率計算公式如下:
maro avg為宏平均,其計算方式是對某個指標求其所有類別指標值的算術(shù)平均,以精確率Pi為例,Pi的maro avg計算公式如下:
weighted avg為加權(quán)平均,其計算方式是對某個指標求其所有類別指標值的加權(quán)平均,記Si表示支持第i類的樣本數(shù),以精確率Pi為例,Pi的weighted avg計算公式如下:
在數(shù)據(jù)集的選取上,本實驗中所需的URL數(shù)據(jù)集來源于kaggle,網(wǎng)址為:https://www.kaggle.com/taruntiwarihp/phishing-site-urls。先對URL數(shù)據(jù)進行初步篩選,并按照8:2的比例劃分訓練集和測試集,得到數(shù)據(jù)集情況如表1所示。
表1 URL數(shù)據(jù)集
由 于URL中 的 協(xié) 議 部 分 中 如“http”“https”和“www.”等字段對URL分類基本無影響[6],因此,在對URL分詞前可先將這些部分去除掉,以提高分類效率。去除協(xié)議部分后的部分URL如表2所示。
表2 去除協(xié)議部分后的URL舉例
其次,由于URL是緊密連接的字符與符號,因此要對其進行分詞,以此為基礎(chǔ)才能實現(xiàn)對URL的詞向量表示。如表3所示,經(jīng)過對比測試常用的分詞工具發(fā)現(xiàn),基于正則表達式Re工具可以實現(xiàn)對URL的最準確分詞,其效果遠優(yōu)于Jieba或Nltk等分詞工具。
表3 分詞結(jié)果對比
最后,本文借助sklearn中的TfidfVectorizer工具,完成對URL的文本特征提取和詞向量表示工作,以作為機器學習分類算法的數(shù)據(jù)輸入。
將上述預處理數(shù)據(jù)作為初始訓練數(shù)據(jù)輸入gcForest,進行模型訓練即可得到分類模型。使用gcForest模型得到的訓練結(jié)果評估如表4所示。
表4 基于gcForest的惡意URL檢測訓練結(jié)果評估
由表4可知,該模型的分類準確率(Accuracy)達到了99.53%,在保留兩位小數(shù)的情況下,該模型對惡意URL識別的精確率(Precision)、召回率(Recall)、F1-score均達到0.996以上;而對正常URL識別的精確率(Precision)、召回率(Recall)、F1-score能達到0.992以上。因此,該模型在惡意URL檢測的應(yīng)用中具有極高的準確度與穩(wěn)定性,具有很大的應(yīng)用價值。
此外,本文將基于gcForest算法訓練出的模型與KNN和Random Forest算法模型進行對比,結(jié)果如圖4所示。
圖4 不同學習算法分類URL結(jié)果對比
gcForest在準確率、精確率、召回率、F1-score、macro avg和weighted avg指標下均遠高于傳統(tǒng)的KNN算法,其中準確率提升4.40%,精確率提升3.17%。而對比gcForest底層的Random Forest算法,其在精確率上帶來了3.42%的提升,衡量模型穩(wěn)定性的F1-score提升了2.31%。由此可以得出,gcForest在惡意URL檢測方面具有遠優(yōu)于傳統(tǒng)機器學習算法的性能。
本文將gcForest算法應(yīng)用于惡意URL檢測,訓練出能夠準確且高效識別惡意URL的機器學習模型,并從原理出發(fā),系統(tǒng)介紹了基于gcForest算法的惡意URL檢測模型訓練過程。本文的機器學習模型準確率達到99.53%,遠高于傳統(tǒng)的機器學習分類算法,且其精確率、召回率、F1-score、maro avg和weighted avg值均高于0.99,具有很好的檢測效果。