- 工信部備案號 滇ICP備05000110號-1
- 滇公安備案 滇53010302000111
- 增值電信業務經營許可證 B1.B2-20181647、滇B1.B2-20190004
- 云南互聯網協會理事單位
- 安全聯盟認證網站身份V標記
- 域名注冊服務機構許可:滇D3-20230001
- 代理域名注冊服務機構:新網數碼
隨著移動互聯網的蓬勃發展,Web應用已經廣泛深入各行各業。針對Web應用的攻擊已成為企業面臨的主要安全問題之一。面對日益增加的Web應用攻擊,傳統基于規則的安全產品難以實現對未知威脅的攔截,且隨著規則的逐漸增加,將嚴重影響安全產品的性能。因此,研究多分類檢測模型,實現模型對威脅數據的識別檢測,并通過模型優化及真實環境數據進行對比驗證。結果證明,基于隨機森林及lightGBM算法構建的多分類模型,在多分類模型的評估指標上優于基于SVM的多分類檢測模型,能夠達到理想的檢測效果。
近年來,隨著移動互聯網的蓬勃發展,Web應用已經廣泛深入各行各業,承載著各大公司的關鍵、核心業務。現階段,Web應用已成為網絡安全攻擊的主要目標。為了應對威脅攻擊,傳統基于規則的安全防護產品起到了至關重要的作用。但是,隨著Web應用及組件漏洞的逐漸增加和攻擊方式的逐漸演進,傳統基于規則的安全產品難以實現對眾多已知及未知威脅的有效攔截。所以,研究、探索新一代檢測技術已經成為各大安全公司及科研究機構的重點研究內容。本文主要基于機器學習對Web應用入侵檢測技術進行研究,構建了多分類Web應用入侵威脅檢測模型,包括基于隨機森林的多分類檢測模型、基于lightGBM的多分類檢測模型及基于SVM的多分類檢測模型,并通過實驗對比了3種不同機器學習算法的多分類檢測模型。結果證明,基于隨機森林及lightGBM算法構建的多分類模型,在多分類模型的評估指標上優于基于SVM的多分類檢測模型,能夠達到理想的檢測效果。
一、國內外研究現狀
Web應用的飛速發展,極大地方便了人們的日常生活,已經成為互聯網時代最重要的基礎設施之一。Web應用在給人們帶來巨大便利的同時,也伴隨著不可忽視的安全風險。用戶爆炸性增長,使得新威脅和攻擊不斷出現。大量網站遭受攻擊、用戶數據泄露,給企業與用戶造成了嚴重影響。Web應用入侵安全問題已成為企業面臨的重要問題。
現有基于規則的Web應用入侵威脅檢測、防護產品都存在誤報率、漏報率高等問題,主要原因在于威脅在不斷演進,但威脅規則更新不實時,無法抵抗0day漏洞攻擊。
Rieck等人提出了一種基于網頁內容分析的啟發式威脅檢測方法,經過規則過濾后再對Web入侵的最終執行動作進行分析,通過一些異常指標進行威脅判定。Prakash等人利用帶有相似性規則的啟發式檢測技術,構建了一個PhishNet系統,利用威脅數據及所體現出來的相似規則對異常URL進行檢測。但是,該系統的性能依賴于威脅的數據量。當威脅數據量較大時,需要大量及專業的安全研究人員支持以構建相關規則。Le等人選擇先將Web入侵的URL根據不同的部分進行切割,包括URL的域名、路徑、參數等部分,并對每個部分進行選定特征的提取,如參數的長度及個數等。Ma等人提取對Web入侵的URL中的host等特征,以此進行Web應用入侵威脅檢測。Kolari等人則采用詞袋模型解決Web威脅入侵的檢測問題。劉健等人通過訓練多個機器學習模型,定義每個模型對Web入侵URL檢測的層級關系,設置每個機器學習模型的判別閾值。如果上層機器學習模型對URL的檢測結果超過所指定的判別閾值,則該URL被判定為異常URL,判斷為威脅入侵。它利用將URL逐層傳遞到每層機器學習模型中檢測的方式,以降低對Web入侵威脅檢測結果的誤報率。陳光英等人研究以系統調用序列和網絡數據包作為檢測對象,建立以支持向量機算法模型的入侵檢測方法。
綜上所述,將機器學習應用于Web應用威脅檢測,國內外均有大量的研究基礎。可見,將機器學習技術融入安全防護產品是威脅檢測發展的必然趨勢。
二、機器學習算法及特征工程
1.機器學習算法
隨機森林
隨機森林指的是利用多棵決策樹對樣本進行訓練并預測的一種分類器。通過組合多個弱分類器,最終結果通過投票或取均值使得整體模型的結果具有較高的精確度和泛化性能。隨機森林算法模型,如圖1所示。
圖1 隨機森林算法
隨機森林構建過程如下。
(1)隨機抽樣,訓練決策樹。N個樣本的樣本集,有放回地抽取N次,每次抽取1個,形成一個有N個樣本的樣本集,用來訓練一個決策樹,作為決策樹根節點處的樣本。
(2)選擇節點分裂屬性。當每個樣本有M個屬性時,在決策樹的每個節點需要分裂時,隨機從這M個屬性中選取出m個屬性,m應遠小于M,然后從這m個屬性中采用某種策略(如信息增益)來選擇1個屬性作為該節點的分裂屬性。
(3)重復步驟2,直到不能分裂。決策樹形成過程中每個節點都要按照步驟2來分裂。如果下一次該節點選出來的屬性是剛剛其父節點分裂時用過的屬性,則該節點已經達到了葉子節點,不再繼續分裂。需要注意,每棵樹都會完整成長而不會剪枝。
(4)將生成的多棵分類數組成隨機森林。如果是回歸問題,則最后的輸出是每個樹輸出的均值;如果是分類問題,則根據投票原則,確定最終的類別。
LightGBM
LightGBM(Light Gradient Boosting Machine)是微軟開源的實現GBDT算法的框架,支持高效率的并行訓練。梯度提決策升樹(Gradient Boosting Decision Tree,GBDT)是一種基于迭代所構造的決策樹算法,既可以做回歸也可以做分類。它以分類回歸樹(Classification and Regression Trees,CART)模型作為弱學習器,將新學習器建立在之前學習器損失函數梯度下降的方向,通過不斷迭代來訓練模型。迭代過程中,每一輪預測值和實際值有殘差,下一輪根據殘差再進行預測,最后將所有預測相加作為最終結論。因此,GBDT可以表示為決策樹的加法模型,如式(1)所示:
式中,表示決策樹,
為決策樹參數,M為樹的個數。根據向前分步算法,第m步的模型可以表示為:
設定為第i個樣本的真實值,
為第i個樣本的預測值,取損失函數為平方損失,那么損失函數可以表示為:
根據式(4)極小化損失函數可得到參數:
通過多次迭代,更新回歸樹可以得到最終模型。LightGBM使用基于直方圖的分割算法取代了傳統的預排序遍歷算法,不僅在訓練速度和空間效率上均優于GBDT,還能有效防止過擬合,更加適用于訓練海量高維數據。
支持向量機
支持向量機(Support Vector Machine,SVM)是在分類與回歸中分析數據的機器學習算法。
SVM通過尋找一個滿足分類要求的最優分類超平面,將實例表示為空間中的點。最優超平面將實例明顯地間隔分開,通過判斷實例在超平面的哪一側來預測所屬類別。理論上,SVM可以實現對線性可分數據的最優分類。
除了進行線性分類之外,SVM還可以使用核技巧將原空間的數據映射到高維特征空間,然后在高維特征空間進行線性分類模型訓練,從而有效實現非線性分類。
2.特征工程
特征工程是指從原始數據中提取特征并將其轉換為適合機器學習模型的格式,通常指的是從N個特征集合中選出M個特征的子集并滿足條件。它包括特征處理和特征提取兩個方面。特征處理指通過包括一組特征中去除冗余或不相關的特征來降維。特征提取廣義上指的是一種變換,將處于高維空間的樣本通過映射或變換的方式轉換到低維空間,達到降維的目的。兩者常聯合使用,如先通過變換將高維特征空間映射到低維特征空間,后去除冗余和不相關的特征來進一步降低維數。
特征處理訓練機器學習模型的數據集由于數據量通常很大,會存在數據不全(缺失值)、數據重復(冗余數據)及數據錯誤(異常值)等問題(如收入-15元,或身高1 688 cm)。
(1)缺失值可以采用局部數據的線性插值法進行補缺或使用一個全局常量或屬性的平均值填充空缺值。如無法填充,則可考慮進行忽略。
(2)冗余數據數據集中的冗余數據,可以采用對數據去重、刪除冗余的方式。
(3)異常值數據集中存在的錯誤數據,可以根據已有數據的規律及數據類型的特點進行修改,或者采用將錯誤數據移除數據集的方式。
特征提取
本文研究的主要特征即為文本特征。數據主要來源于Web,表示形式通常表現為URL形式。
對于文本特征的處理國內外研究很多。羅燕等人針對詞頻-逆向文件頻率(Term Frequency-Inverse Document Frequency,TF-IDF)提取特征效率低、準確性差的問題,提出了一種基于詞頻統計的關鍵詞提取方法。實驗結果表明,基于詞頻統計的關鍵詞提取方法的精確率、召回率等指標方面均優于傳統的TF-IDF算法,且能提高關鍵詞提取的效率;龐劍鋒等人利用向量空間模型對3種分類方法進行研究,提出了文本分類系統模型。
本文對于特征提取方法采用TF-IDF模型,是一種用于信息檢索與數據挖掘的常用加權技術。
詞頻(Term Frequency,TF),某個詞語在文件中(或單個語句中)出現的次數。這個數字通常會被歸一化,一般是詞頻除以文章總詞數,以防止它偏向長的文件(同一個詞語在長文件里可能會比短文件有更高的詞頻,而不管該詞語重要與否)。
逆文本頻率(Inverse Document Frequency,IDF)反映了一個詞在所有文本(整個數據集)中出現的頻率。如果一個詞在很多文本中出現,那么它的IDF值應該低。反過來,如果一個詞在比較少的文本中出現,那么它的IDF值應該高。常見的詞如“是”“或”“好”等,IDF值應該低。如果一個詞在所有的文本中都出現,那么它的IDF值為0。
TF-IDF的計算方式如下。
TF計算公式:
式中,是在某一文本中詞w出現的次數,N是該文本總詞數。
IDF計算公式:
式中,Y是文檔總數,是包含詞條w的文檔數.需要說明的是,分母加1是為了避免w未出現在任何文檔中從而導致分母為0的情況。
TF-IDF的是將TF和IDF相乘,即:
從以上計算公式可以看出,某一特定文件內的高詞語頻率,以及該詞語在整個文件集合中的低文件頻率,可以產生高權重的TF-IDF。因此,TF-IDF傾向于過濾掉常見的詞語,保留重要的詞語。
三、威脅入侵檢測模型構建
Web應用入侵通常通過在URL上構建惡意文本的方式進行,因此本文根據Web應用入侵的文本特征構建了基于TF-IDF特征提取的隨機森林、LightGBM及SVM多分類模型。通過優化并比較3個模型,結合生產環境及搜集的開源數據,對3個模型進行優化及驗證。通過多分類評估指標進行評估,可得出各模型的分類效果。
構造本研究中所提出的模型需要經歷多個階段的處理,包括數據集的收集及預處理、特征的提取和選定、機器學習模型的訓練及模型的參數調優等。
1.數據收集及特征工程
數據集來源
在本次研究工作中,采用多種渠道多種來源獲取訓練所需的數據。所收集的數據整體分為正常數據和異常數據。
(1)正常數據集搜集通過網頁爬蟲,選定某幾個網站,對網站進行訪問,爬蟲自動獲取網站訪問的URL鏈接,以此作為正常訪問數據;搜集生產系統中通過WAF訪問并標記為正常的日志,提取訪問URL。
(2)異常數據集搜集通過開源數據集進行搜集;搜集生產系統中通過WAF訪問并標記為異常的日志,提取數據URL鏈接;基于開源軟件生成。
總體訓練數據包含7種類型,分別為XSS、SQL注入、LFI、命令執行、目錄遍歷、RFI以及正常的流量樣本數據,數量如表1所示。總體搜集數據量為286 951條。
表1 訓練數據類別及數量
特征工程
對搜集到的數據進行統一的格式化處理,以便能夠進行特征工程。
正常數據。爬蟲獲取的數據,為單個URL完整的連接,因此需要對URL進行處理。根據URL的組成結構,惡意payload不會存在于protocol協議部分、hostname主機地址以及port端口部分(或域名)。所以,對于URL數據,只需提取URL中的path及parameter部分即可。將提取的結果逐行存儲為json格式,并將文件命名為normal,作為正常數據的標簽。WAF訪問日志需要分析日志格式,批量進行日志篩選,提取WAF標記為normal的日志數據,再將日志數據中GET請求的URL(包含parameter)進行切分處理并存儲于normal文件。如果為POST請求,則分別提取URL和parameter中的數據,存儲于normal文件。
異常數據。開源數據集,根據數據集單條數據的標簽對數據進行提取分類。不同標簽數據類型存儲于不同的文件,如sql.json。單條數據格式同樣存儲為json格式,以便模型提取訓練。WAF訪問日志篩選標記為攻擊的數據,提取日志中attack字段,即為異常payload。同樣,按照開源數據集的處理方式進行存儲。開源軟件生成,根據不同的開源軟件類型生成的payload,按照異常數據類型進行存儲。
(1)數據預處理
①異常值處理。刪除訓練集中所存在的空數據及其他異常數據。
②數據變換。Web攻擊通常會存在變換Payload大小寫、添加空字符、URL html編碼以及base64編碼等操作,以試圖繞過安全防護產品的檢測。所以,為了使機器學習模型能夠達到更好的識別能力,需要將搜集的訓練集中的數據進行變換操作,包括將每一條數據中的內容統一轉為小寫字符、解析樣本數據中的URL編碼、對html轉義字符進行處理以及將樣本中出現的數字統一替換為0等。字符類型的標簽數據轉換為數值類型,如標簽為[xss,sqli,os_command],轉換后為[0,1,2]。
以XSS為例,其他類型樣本的處理流程一致,原始樣本如下:d%3D375%22%3E%3Cscript%3Ealert%281337%29%3C/script%3E原始樣本依次執行以下處理。
(1)樣本轉小寫處理:id%3d375%22%3e%3cscript%3ealert%281337%29%3c/script%3e
(2)解析樣本數據中的URL編碼以及進行html轉義字符處理:id=375">
(3)將樣本中出現的數字統一替換為0:id=0">
(4)處理URL中的Schemes和地址等無效信息:示例樣本無Scheme輸出結果無變化
(5)字符類型的標簽數據轉換為數值類型:本樣本標簽是XSS,將標簽“XSS”編碼為0,作為模型訓練的標簽。經過數據預處理后的樣本變為以下形式,如表2所示。
表2 特征變換結果
③數據去重。經過異常值處理及數據變換后,存在部分冗余數據,如上一步示例中的處理結果。因此,需要對整個數據集數據進行去重處理。
(2)特征提取本文研究的內容為文本數據特征提取,包含樣本分詞、分詞后的ngram處理及tfidf轉換。
①樣本分詞。將樣本數據以‘char’的粒度進行分詞處理,如?id=0&age=0分詞后為?,i,d,=,0,&,a,g,e,=,0。②Ngram處理。將分過詞的樣本進行ngram處理。ngram中n的取值范圍是(1,2),n為1表示每條樣本中分好的詞不考慮前后組合,轉換后?,i,d,=,0,&,a,g,e,=,0的形式保持不變。n為2表示樣本中分好的詞進行前后相鄰的兩兩組合,如i,d,=,0,&,a,g,e,=,0,處理后為id,d=,=0,0&,&a,ag,ge,e=,=0。ngram和分詞的方法已封裝在sklearn庫中。
③tfidf轉換。tfidf用于將非結構化的數據轉換成結構化的數值矩陣。樣本數據經過分詞、ngram處理后進行去重,得到一個不重復的詞集,在不限制特征數量的情況下,將詞集中每個詞作為一個特征形成一個詞向量空間。每篇文檔都會轉化成一個向量,向量的維度等于詞集中詞的數量。假如有10 000個文檔,處理后有2 000個不重復的詞。這些文檔將會轉換成一個10 000×2 000的數值矩陣。矩陣中任意的第m行、第n列的取值表示n所對應的詞在m對應的文本中的tfidf值。tfidf已封裝在sklearn庫中。
同樣以XSS為例,經過數據預處理后為:
id=0">
以char為單位的分詞:
i,d,=,0,",>,<,s,c,r,i,p,t,>,a,l,e,r,t,(,0,),<,>
ngram處理,組合方式是單個字符自成一組,以及進行兩個相鄰字符的兩兩組合:
i,d,=,0,",>,<,s,c,r,p,t,a,l,e,(,), d=",=0,0","">,><,,>a,al,le,er,rt,t(,(0,0),)<,
tfidf處理,將文本數據轉換成數值矩陣,行表示樣本數,每一列表示一個詞,所有樣本中有多少個不重復的詞,矩陣就有多少列,并通過tfidf的取值反映出每個詞在文檔中的權重。
示例中只有1個樣本,樣本包含42個不同的詞,所以輸出是一個1×42的矩陣。經過特征工程后,可以利用算法進行模型訓練,特征是一個1×42的矩陣,如表3所示。
表3 tfidf結果
其他類型數據的處理步驟和XSS樣本處理一致,只是不同的種類樣本,標簽對應不同的值,所有類型樣本的特征的維度是固定的。比如,設定1 000維,樣本條數為n,那么特征就是一個n×1 000的數值矩陣,標簽就是一個n×1的矩陣。
2.多分類模型構建
訓練環境說明模型構建編程語言為Python,版本為python3.6。訓練模型用到的Python主要工具庫以及功能描述如下。
re:Python正則表達式模塊,用于數據預處理階段,結合其他工具對數據進行處理;
URLlib:用于前期的數據預處理,對URL數據進行解析;
pandas:數據分析工具,用于數據讀取、數據處理和分析;
sklearn:機器學習工具,用于特征工程、訓練隨機森林及SVM模型以及模型評估;
lightgbm:用于訓練LightGBM模型。
模型訓練分別基于sklearn及lightgbm庫構建隨機森林、LightGBM及SVM多分類模型。如圖2所示。訓練時,將特征和標簽輸入到算法進行訓練,訓練后得到模型。
圖2 多分類模型訓練
預測時,輸入新樣本的特征到模型,模型預測出新樣本的標簽。
模型評估將原數據分為訓練集和測試集。訓練集訓練模型,并根據測試集的特征做預測,將預測結果與測試集本身的標簽進行對比。本文研究的模型為多分類模型。模型評估基于多分類模型的評估準則。評估指標是精確率、召回率和F值,這些數值在測試集上越高表示模型性能越好。以上評估方法已封裝在sklearn庫中。
四、實驗及模型對比
1.實驗數據準備實驗使用數據286 951條,類型分別為XSS、SQL注入、LFI、命令執行、目錄遍歷、RFI以及正常的流量樣本數據。數據分布如圖3所示。
圖3 實驗數據分布
訓練數據存儲在csv文件中,每個csv文件代表一種類型的數據,文件中每一行代表一個樣本。
按照8:2比例劃分為訓練集和測試集。
2.模型對比分析
隨機森林通過訓練及優化隨機森林模型參數,當設置n_estimators參數為300,criterion設置為gini時,模型識別效果最好。最終在模型參數固定情況下,使用20%的數據為測試集,80%數據為訓練集,重復執行多次得到隨機森林的實驗結果如表4所示。
表4 隨機森林多分類結果
觀察多次實驗結果,得到平均精確率為99.5%,平均召回率為99.2%,平均F1值為99.3%。從實驗結果來看,多次實驗結果相近,證明隨機森林多分類效果穩定,同時分類結果各評估值均能達到理想的結果。
LightGBM
通過訓練及優化LightGBM模型參數,當設置n_estimators參數為533、random_state設置為7時,模型識別效果最好。最終在模型參數固定情況下,使用20%的數據作為測試集,80%數據作為訓練集,重復執行多次得到LightGBM的實驗結果,如表5所示。
表5 LightGBM多分類結果
觀察多次實驗結果,得到平均精確率為99.4%,平均召回率為99.2%,平均F1值為99.3%。從實驗結果來看,多次測試結果指標穩定,分類準確率較高。
SVM通過訓練及優化SVM模型參數,設定kernel參數為rbf、gamma設置為scale時,模型識別效果最好。最終在模型參數固定情況下,使用20%的數據作為測試集,80%數據作為訓練集,重復執行多次得到SVM模型的實驗結果,如表6所示。
表6 SVM多分類結果
觀察多次實驗結果,得到平均精確率為99.1%,平均召回率為99.1%,平均F1值為99.1%。
綜合對比分析綜合結果可以分析出,在使用相同樣本進行訓練的情況下,基于隨機森林算法和LightGBM算法的多分類模型,效果較SVM多分類模型更好。
隨機森林分類模型在分類評估指標上同LightGBM分類模型指標接近,證明其分類效果相近。SVM由于徑向基核函數,理論上會擬合任何數據分布,但是會不斷給數據升維,增加特征數量,導致SVM訓練效率非常低。同時,實驗中發現,SVM模型的分類效率明顯低于隨機森林分類模型和LightGBM分類模型。
五、結 語
本文研究了基于機器學習模型在Web應用入侵檢測的可行性,并通過實驗驗證了基于隨機森林及lightGBM算法構建的多分類模型,在多分類模型的評估指標上優于基于SVM的多分類檢測模型,能夠達到理想的檢測效果。綜上所述,將機器學習用于信息安全領域,在理論與實踐中具有巨大意義。但是,由于機器學習模型檢測效率較傳統規則檢測效率低,本文研究成果目前僅能與已有的安全防護軟件進行融合(如WAF)進行離線威脅檢測,通過檢測結果補充已有的安全規則,提升安全產品的防護能力。所以,研究如何提升機器學習模型的威脅識別效率,實現模型的實時檢測能力,替換傳統的規則檢測方式,將會是本文后續的研究工作。
提交成功!非常感謝您的反饋,我們會繼續努力做到更好!
這條文檔是否有幫助解決問題?
售前咨詢
售后咨詢
備案咨詢
二維碼
TOP