李澤宇,施 勇,薛 質
(上海交通大學 電子信息與電氣工程學院,上海 200240)
隨著互聯網的發展,網絡攻擊成為日益重要的安全問題。釣魚、木馬、惡意軟件等多種攻擊類型,常常以惡意URL作為途徑。因此,識別惡意URL對阻止各類網絡攻擊、維護網絡安全具有重要意義。
惡意URL識別最傳統的方法是黑名單方法[1],即將已知的惡意URLs建立黑名單,并通過多種手段進行維護,從而根據黑名單直接判斷待檢測URL是否為惡意。該方法簡單直接,查準率高,但只能識別已有的惡意URL,查全率低,時效性差。在此基礎上,一些啟發式算法[2-3]和基于網頁內容的方法[4-5]被提出,是黑名單方法的改進,但依然存在準確率低、規則制定難等問題。
近年來,隨著人工智能的發展,機器學習方法被應用于惡意URL檢測,包括邏輯回歸[6]、支持向量機[7]等。機器學習的特征提取和模型選擇,很大程度上決定了最終檢測效果的好壞。
本文提出了一種特征選取方法,嘗試多種機器學習模型,特別是幾種近年來較為流行的集成學習模型,比較不同模型在同一測試集上的效果。第1章介紹實驗的整體流程,包括數據集的獲取、特征選擇、模型選擇和訓練;第2章給出不同模型的實驗結果,并進行對比分析;第3章對實驗作出總結。
本實驗由數據獲取、特征選取、特征計算、模型訓練以及結果分析等環節構成,流程如圖1所示。

圖1 實驗總體流程
構建惡意URL的分類模型,需要惡意URL和良性URL的相關數據。本實驗通過多種渠道進行數據收集工作。
(1)對惡意URL,實驗從知名反釣魚網站PhishTank[8]使用爬蟲獲取經認證的惡意URL共計20 954條。
(2)對良性URL,實驗從流量統計網站Alexa[9]獲取訪問量排行前100萬的所有網址,保留其中排名前1 000的網址,1 000至100萬名的網址按一定比例進行抽樣,共計獲得18 900條良性URL。
(3)考慮到PhishTank提供的惡意URL僅包含釣魚網站,實驗還參考了開源數據集ISCXURL-2016[10]獲取包括釣魚、垃圾郵件、病毒等多種類型的惡意URL作為補充。
將上述渠道獲得的URL進行匯總、去重,得到實驗最終使用的數據集,共包含76 446條數據。其中,惡意URL共計22 808條,占比29.8%;良性URL共計53 638條,占比70.2%,數據示例如表1所示。

表1 數據示例
其中,標簽為“1”表示該URL為惡意URL,標簽為“0”表示該URL為良性。
通過分析1.2中所述惡意URL數據集,可以發現惡意URL往往具有某些共性。基于這些共性可以提取相關的特征,進而用于機器學習模型的訓練。這里以URL長度這一特征為例,說明數據分析和特征選取的方法。
觀察大量惡意URL數據可以發現,攻擊者常常使用很長的URL,試圖掩蓋URL中可疑的部分。例如:
https://greatertuckertonfoodpantry.org/wp-users/?id=EgjC8KkaZh&email=renaud.chambolle。
為從數據角度證實這一觀點,分別畫出惡意/良性URL的長度分布曲線,見圖2。從圖2可以較為直觀地看出,惡意URL的平均長度更大,兩類URL的長度分布存在明顯差異。因此,URL的長度可以作為構建分類模型的一個重要特征。

圖2 惡意/良性URL長度的分布
其余特征的分析方法類似,這里不再一一列出。經試驗,最終總結出的重要特征如表2所示。

表2 惡意URL分類模型的特征
近年來,集成學習(Ensemble Learning)在大規模數據集上的良好表現,使其成為傳統機器學習領域最流行的方法。
集成學習的基本思想[11]是先訓練若干個弱分類器,再通過某種串行或并行方式將這些弱分類器組合起來,從而達到提高預測準確率的效果。基于組合方法和弱分類器的不同,有多種不同的集成學習模型。實驗中選取幾種最具代表性的集成學習算法進行研究,包括梯度提升算法(Gradient Boosting)[12]、AdaBoost[13]、 隨 機 森 林(Random Forest)[14]和 XGBoost[15]。
在集成學習算法以外,實驗還選取了幾種經典的機器學習算法,包括決策樹(Decision Tree)、樸素貝葉斯(Gaussian NB)和邏輯回歸(Logistic Regression),以進行對比研究。
實驗將1.2中所述數據集進行劃分,隨機抽取其中20%作為測試集,其余作為訓練集和交叉檢驗集。測試集共包含15 290條訓練數據,將惡意URL作為正樣本,良性URL作為負樣本。
評價分類模型好壞的常見指標有準確率(Precision)、召回率(Recall)、正確率(Accuracy)和F1值(F1-score)。由于惡意URL往往具有嚴重威脅,在對比各模型好壞的過程中,優先考慮召回率,其余指標作為參考。各常見指標的含義或計算方法如表3所示。

表3 分類模型的常用評估指標
此外,為了更直觀地對比各模型的好壞,繪制各模型的受試者工作特征曲線(Receiver Operating Characteristic Curve,ROC)并進行對比。
ROC曲線的橫坐標為假陽性率(False Positive Rate,FPR),縱坐標為真陽性率(True Positive Rate,TPR),描述了在一定制約下模型所能達到的預測準確率。真/假陽性率的定義為:

ROC曲線下面積(Area under ROC Curve,AUC)是指ROC曲線與橫坐標軸圍成的面積大小。AUC值越大,代表模型的分類效果越好。
AUC值受正負樣本分布變化的影響較小。實驗使用的數據集與真實情景下正負樣本的分布可能差異較大,因此AUC值是一項重要的評估指標。
為控制無關變量,各模型訓練時的迭代次數均采用默認參數,其余訓練參數簡單調優或使用默認值。
各模型的實驗指標由表4列出,其中每一項的最優值用*標明。

表4 不同機器學習模型的實驗指標
實驗結果表明,集成學習算法的整體表現優于傳統機器學習算法。其中,梯度提升算法(Gradient Boosting)有最高的預測準確率,而XGBoost算法有最高的正確率,隨機森林算法(Random Forest)在召回率、F1值、AUC值3項指標上均為最優。綜合來看,隨機森林算法是研究算法中解決惡意URL識別問題的最優模型。
在傳統機器學習算法方面,決策樹算法(Decision Tree)表現尚可,而樸素貝葉斯算法(GNB)和邏輯回歸算法(Logistic Regression)則表現不佳。此外,不同機器學習模型的ROC曲線如圖3所示。

圖3 不同機器學習模型的ROC曲線
由ROC曲線得到的結論類似,即在解決惡意URL識別問題上,集成學習方法的整體表現優于傳統機器學習方法。
本文對不同機器學習模型在惡意URL識別問題上的應用進行了研究。實驗結果表明,集成學習方法在惡意URL識別問題上的效果優于傳統機器學習模型。其中,隨機森林算法綜合表現最優,能夠達到76.26%的召回率和95.88%的準確率,表明集成學習方法在惡意URL的識別領域具有應用價值。
本文使用的數據集規模偏小(76 446條數據),在訓練集成學習模型時會出現過擬合等問題。可以預期,隨著訓練數據的擴充和硬件水平的提高,集成學習方法在惡意URL識別問題上能夠取得更好的效果。