基於深度學習的惡意 URL 識別

基於深度學習的惡意 URL 識別

原文作者:陳康, 付華崢, 向勇

原文期刊:計算機系統應用,2018,27(6):27–33

原文鏈接:http://www.c-s-a.org.cn/1003-3254/6370.html

一、論文主要內容

在本文工作中,我們提出一種基於深度學習的惡意 URL 識別模型。本文的模型基於 URL 詞法特徵進行檢測。首先通過正常 URL 樣本訓練得到 URL 中的字符的分佈表示。將 URL 轉化成二維圖像,然後通過訓練 CNN 模型對二維圖像進行特徵抽取,最後使用全連接層進行分類。

二、作者工作

2.1 相關工作

目前的惡意 URL 識別工作使用的主要是黑名單、啓發式技術和機器學習技術。黑名單技術只能給與用戶最低程度的保護,並不能及時檢測出惡意網站,阻斷用戶對惡意網站的訪問。啓發式算法是對黑名單技術的一種補充算法,其主要原理是利用從惡意網址中發現的黑名單相似性規則來發現並識別惡意網頁。但是啓發式算法有誤報率高以及規則更新難等缺點。

機器學習算法通過分析網頁 URL 以及網頁信息,提取域名的重要特徵表示,並訓練出一個預測模型。有監督算法也叫分類算法,此算法的準確率較高而且誤報率相對較低,但是卻對標註數據以及特徵工程比較敏感,標註數據的準確率以及選擇使用的特徵會嚴重影響算法的準確率和效率。無監督機器學習方法又稱聚類方法。此類方法的具體分類過程主要由特徵提取、聚類、簇標記和網頁判別等步驟組成。主要做法是首先將 URL 數據集劃分爲若干簇,使得同一簇的數據對象之間相似度較高,而不同簇的數據對象之間的相似度較低。然後,通過構造和標記數據集中的簇來區分惡意網頁和良性網頁。

深度學習通過學習深層非線性網絡結構,逐層訓練特徵,將樣本在原空間的特徵表示逐步變換到新特徵空間,最大好處是可以自動學習特徵和抽象特徵。

2.2 模型設計

設計思想

根據 Anh 等人,正常和惡意 URL 具有不同的詞法特徵,即字符出現的頻率、位置、和前後字符的關係具有可以區分的特徵,我們提出一種完全基於 URL 字符串的詞法特徵,利用深度神經網絡實現的惡意 URL 識別算法。

具體實現

算法分爲 3 個階段:

首先,訓練構成 URL 的字符表示爲實數向量的形式;

其次,基於第一步得到的映射表,將 URL 轉換成特徵圖像;

最後,將特徵圖像輸入卷積神經網絡 CNN 去學習特徵,通過一個全連接層實現對 URL 的分類。

image-20200607153438895

本算法共有兩個部分:訓練部分和預測部分。

訓練流程:

  • 系統監控用戶瀏覽行爲過程並生成日誌;
  • 使用深度學習對日誌文件進行訓練得到字符的嵌入式模型;
  • 利用上一步得到的模型對網頁URL進行特徵轉化;
  • 使用CNN算法訓練已標註的惡意/良性URL特徵。

預測/評估過程:

  • 使用字符的嵌入式表示對日誌行爲數據進行特徵轉化;
  • 使用訓練後的CNN模型進行詞法特徵提取;
  • 再使用分類輸出層進行惡意概率計算。

使用語料訓練 RNN 生成字符的嵌入式表示

主要工作是將字符映射到 K 維向量空間,將其轉爲連續值的向量表示。

  1. 首先從 0 開始對 URL 中出現的所有字符進行編碼。設定一個詞彙表大小 v,將所有出現的字符按出現的頻率從 1 到 v–2 進行編碼。0 作爲填充字符的編碼,v–1 作爲未知 (未出現在字符表中) 字符的編碼 1;

  2. 訓練一個兩層的神經網絡模型。構建一個[v,k]的二維向量,將正常的 URL 作爲訓練樣本輸入。例如 www.baidu.com,轉換爲訓練序列 (w, w), (w, w), (w,w), …, (a, b), (a, i), …, (m, o),然後計算輸出預測和它實際值的損失函數,訓練過程中更新二維向量的值;

  3. 訓練結束後,得到維度爲[v, k]的映射表。

將 URL 轉化爲特徵圖像

確定一個 URL 最大長度 n,構建一個[n, k]大小的圖像。如果 URL 長度小於 n 的,使用 0 作爲填充,對於長度大於 n 的 URL 做截斷。轉換後圖像的每一行即是 URL 中的一個字符的向量表示。如圖 3 所示。

CNN 提取特徵並進行分類

構建一個 CNN 分類模型,將上述得到的特徵圖像作爲輸入,通過卷積層對進行特徵提取,最後通過一個全連接層進行分類,得到輸出變量-即分類結果。CNN 模型如圖 4 所示。

三、實驗

3.1 實驗數據

本次研究篩選出某個月的用戶瀏覽記錄前 50 000 的 url 作爲正常的 URL;同時採用爬蟲從網站 https://www.malwaredomainlist.com/mdl.php、http://www.phishtank.com/等網站中收集了 3 萬多條URL 數據作爲惡意網站數據。

3.2 實驗結果

本次實驗使用一臺服務器進行, 安裝了 python3.6.2,TensorFlow1.2.0, sklearn 等。服務器操作系統是 Centos 7.2 版本,內存爲 512 G,核數爲 40。

本研究採用十折交叉驗證對 80 000 多個 URL 進行分類驗證。圖 5 和圖 6 爲算法精度和損失函數曲線
和 ROC 曲線圖。

在我們的實驗數據集上,模型的準確率爲 0.962、召回率爲 0.879、F1 值爲 0.918,模型整體達到了很好的預測效果。

在本次試驗數據的過程中,目前測試的樣本集下,全連接層的個數會嚴重影響模型結果。如果在算法的最後再增加一層全連接層,模型效果精度將會降低 50% 左右,因此對類似數據量的模型訓練來說,全連接層的個數至關重要。

我們使用 grid search 進行參數選擇,發現卷積核分別設置爲 128 和 256,批處理數量分別設置爲 128 或者 256,學習率設置爲 0.001 時,算法較好。

四、總結

本文提出了一種基於URL字符串轉化爲二維圖片,利用CNN進行分類的深度學習方法。是一種學習了URL詞法特徵的方法,但處理的URL需要限制長度,然而攻擊者常常使用很長的URL來試圖掩蓋可以部分。而且只考慮了單個字符出現的頻率,沒有考慮字符出現的位置、和前後字符的關係,或許會出現一些偏差。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章