1. 程式人生 > >基於機器學習演算法識別惡意url

基於機器學習演算法識別惡意url

參考連結:

https://blog.csdn.net/solo_ws/article/details/77095341?utm_source=blogxgwz5

https://www.freebuf.com/articles/network/131279.html

下面的說法直接拷貝上面連結這篇部落格。是為了自己更好地閱讀。有興趣的,可以直接閱讀原文,忽略下文內容。

建議直接看第一條連結的內容。

 

邏輯迴歸的演算法:

Logistic迴歸是一種廣義線性迴歸(generalized linear model),目的是從特徵學習出一個0/1分類模型,而這個模型是將特性的線性組合作為自變數,由於自變數的取值範圍是負無窮到正無窮。因此,使用logistic函式(或稱作sigmoid函式)將自變數對映到(0,1)上,對映後的值被認為是屬於y=1的概率。
Logistic迴歸模型的適用條件二分類問題 所以選擇邏輯迴歸做url分類.
支援向量機:

支援向量機(英語:Support Vector Machine,常簡稱為SVM,又名支援向量網路)是在分類與迴歸分析中分析資料的監督式學習模型與相關的學習演算法。給定一組訓練例項,每個訓練例項被標記為屬於兩個類別中的一個或另一個,SVM訓練演算法建立一個將新的例項分配給兩個類別之一的模型,使其成為非概率二元線性分類器。SVM模型是將例項表示為空間中的點,這樣對映就使得單獨類別的例項被儘可能寬的明顯的間隔分開。然後,將新的例項對映到同一空間,並基於它們落在間隔的哪一側來預測所屬類別。

資料向量化

機器學習的演算法需要輸入一個固定結構的向量,而每一條url都沒有特定的結構。故需要將每條url的文字特徵轉化成固定的數字特徵。這裡可以借鑑文字處理中將文字向量化的常用方法:TD-IDF.
TD-IDF 是一種用於資訊檢索與文字挖掘的常用加權技術,被經常用於描述文字特徵。
TF 詞頻(Term Frequency),表示詞條在某文件中出現的頻率。
IDF 逆向檔案頻率(Inverse Document Frequency),作用在於如果包含詞條的文件越少,則 IDF越大,說明該詞條具有很好的類別區分能力。TF-IDF 傾向於過濾掉常見的詞語,保留重要的詞語。
TD-IDF輸入的是文字的詞語,需要將url分詞。我們選擇通過長度為N的滑動視窗將文字分割為N-Gram序列。n越大 ,產生的字母組合種類越多(256^n),產生的向量維度會更大,運算開銷會增大,考慮到本機的效能,這裡我們選擇n=2。

總結

邏輯迴歸判斷和svm都是常見的分類演算法,從目標函式來看,區別在於邏輯迴歸採用的是logistical loss,svm採用的是hinge loss。這兩個損失函式的目的都是增加對分類影響較大的資料點的權重,減少與分類關係較小的資料點的權重。SVM的處理方法是隻考慮support vectors,也就是和分類最相關的少數點,去學習分類器。而邏輯迴歸通過非線性對映,大大減小了離分類平面較遠的點的權重,相對提升了與分類最相關的資料點的權重。兩者的根本目的都是一樣。所以在很多實驗中,兩種演算法的結果是很接近的。
但是邏輯迴歸相對來說模型更簡單,好理解,實現起來,特別是大規模線性分類時比較方便。而SVM的理解和優化相對來說複雜一些。但是SVM的理論基礎更加牢固,有一套結構化風險最小化的理論基礎,雖然一般使用的人不太會去關注。還有很重要的一點,SVM轉化為對偶問題後,分類只需要計算與少數幾個支援向量的距離,這個在進行復雜核函式計算時優勢很明顯,能夠大大簡化模型和計算量。

侷限:

使用的是監督學習下的二分類器。需要標定的資料集。然而在現實環境中,由於攻擊方式的多樣性,很難獲得覆蓋全面的惡意攻擊url資料集,導致在面對零日攻擊這類比較新的攻擊url具有一定的脆弱性。
此外本次課題由於硬體的限制,樣本資料集還沒有到達百萬集,準確度會受到影響。
改進思路:

在探尋改進方式時,我們找到了一篇發表在Elsevier Science上的論文 McPAD:A Multiple Classifier System for Accurate Payload-based Anomaly Detection
該論文指出,由於我們只有大量白樣本,可以考慮通過單分類模型,學習單類樣本的最小邊界,邊界之外的則識別為異常。通俗的講,就是與其學習攻擊的url特徵,不如直接學習正常url的特徵,拒絕所有不符合正常特徵的url,以不變應萬變。
這裡簡單介紹論文實現的思路:
mcpad通過訓練多個svm單分類器同時判斷url是否正常,來提高系統的精確度。
為了訓練多個不同分類器,需要不同的樣本,通過ngram中n取不同值的方式來將url劃分成不同的向量是一種解決方案,然而此舉會導致特徵空間成指數性增長(特徵空間=256^n)增加計算的複雜度和空間開銷。論文提出2ν-gram的向量化方式,ν代表所取兩個字母間的間隔。通過數學驗證了該方法既不會損失資訊也不會增加運算的複雜度。使用kmeans對資料進行降維後訓練出多個單分類器來進行url的判斷。單分類器的組合方式:Average, product, maximum and minimum probabilities, major voting