趙世雄,韓 斌,張紫妍
(江蘇科技大學(xué) 計算機學(xué)院,江蘇 鎮(zhèn)江 212000)
互聯(lián)網(wǎng)的高速發(fā)展給人們帶來便利的同時也帶來了諸多安全問題,其中以Web 安全問題最為顯著。國外知名安全廠商賽門鐵克在2020 年5 月發(fā)出的安全報告中統(tǒng)計,目前通過Web 進(jìn)行攻擊的行為占據(jù)所有網(wǎng)絡(luò)非法攻擊的70%以上[1];國內(nèi)360 安全廠商發(fā)布的2020 年安全態(tài)勢報告中指出,釣魚郵件的比例大幅增加,攻擊者通過偽造郵件誘導(dǎo)用戶點擊其構(gòu)造的惡意URL,進(jìn)而獲取用戶信息,賬戶甚至密碼;根據(jù)OWASP 組織發(fā)布的Web 應(yīng)用安全攻擊排名中可以看出,跨站腳本、注入缺陷、惡意文件執(zhí)行這三大攻擊方式占據(jù)了榜單的前三名。這些不同攻擊方式的相同點都是攻擊者構(gòu)造惡意URL 來偽裝成正常請求誘導(dǎo)用戶或者繞過企業(yè)安全機制以達(dá)到獲得服務(wù)器權(quán)限的目的,對企業(yè)或者用戶造成數(shù)據(jù)甚至財產(chǎn)損失。因此高效檢測惡意URL 能給企業(yè)和用戶帶來安全保障,同時也是構(gòu)建網(wǎng)絡(luò)安全解決方案的重要方向之一,具有重要的研究意義。
近年來,在惡意統(tǒng)一資源標(biāo)識符(Uniform Resource Locator,URL)判斷方面主要有兩大類方法。第一種是傳統(tǒng)的基于黑名單方式檢測惡意URL,這種方式有兩大局限性:一是無法防御未知或不在黑名單中的惡意攻擊。這種方法往往是在出現(xiàn)了新型的惡意攻擊后再通過人工把規(guī)則寫進(jìn)黑名單庫,此時已經(jīng)亡羊補牢,規(guī)則還未來得及寫入黑名單庫,系統(tǒng)可能就被攻擊者攻破,因此時效性較低,跟不上攻擊者的速度,只是一味的被動防御,做不到自動識別各種各樣的攻擊行為;二是基于黑名單的識別需要耗費較大的人力物力維護(hù)一個惡意URL 庫,防守方需要一個專業(yè)的安全人員無時無刻地更新規(guī)則,規(guī)則維護(hù)成本和規(guī)則構(gòu)造成本比較高。
二種是基于機器學(xué)習(xí)檢測惡意URL。機器學(xué)習(xí)檢測的準(zhǔn)確率較高,但是機器學(xué)習(xí)所需要的特征都基于人工去提取,這種方式有三大弊端:第一,特征更新速度慢。惡意URL 變幻多端,手工提取的特征無法適應(yīng)惡意URL 的多樣性,因此會對整個檢測系統(tǒng)產(chǎn)生較大的誤報和漏報,誤報會導(dǎo)致誤攔截的情況,影響業(yè)務(wù)的穩(wěn)定,而漏報會導(dǎo)致攻擊者趁虛而入,影響業(yè)務(wù)的安全性;第二,完成龐大的特征工程耗費的不僅是人力更是時間,這種方法對設(shè)計者攻防的要求比較高,需要精通Web 安全的各種攻擊行為和特征;第三,機器學(xué)習(xí)模型的精確率很大程度依賴于參數(shù)的選擇,基于目前的研究,大多學(xué)者都是根據(jù)現(xiàn)有的測試集通過主觀經(jīng)驗去調(diào)整參數(shù),而生產(chǎn)環(huán)境中的惡意URL 復(fù)雜多樣,其主觀調(diào)整的參數(shù)會影響真實的準(zhǔn)確率。
隨著深度學(xué)習(xí)的不斷發(fā)展,其不僅在計算機視覺領(lǐng)域取得優(yōu)越的成果,在文本分類等諸多神經(jīng)語言程序?qū)W(Neuro Linguistic Programming,NLP)領(lǐng)域中也被廣泛學(xué)者運用[2]。惡意URL 本身就是一個長短文本,同時考慮到機器學(xué)習(xí)無法自動提取特征,因此本文提出利用深度學(xué)習(xí)來進(jìn)行URL 特征的提取,一方面可以減少機器學(xué)習(xí)中通過人工提取特征所消耗的人力和時間,另一方面通過深度學(xué)習(xí)可以對原始的URL 進(jìn)行自動特征提取,所提取的特征能較大程度地適應(yīng)惡意URL 的多樣性,檢測出各種復(fù)雜的攻擊場景。近年來在機器學(xué)習(xí)的比賽中,極限梯度算法(Extreme Gradient Boosting,XGBoost)被許多參賽者使用,其有效性和精確性得到了很好的回報,因此本文提出將深度學(xué)習(xí)與機器學(xué)習(xí)相結(jié)合的惡意URL 檢測模型。該模型主要通過Word2vec 將預(yù)處理好的URL 訓(xùn)練成詞向量,輸入到卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)中去提取特征,最終將提取的特征輸入到XGBoost 分類器中進(jìn)行分類,并通過煙花算法(Fireworks Algorithm,F(xiàn)WA)優(yōu)化XGBoost關(guān)鍵參數(shù)來提高惡意URL 的準(zhǔn)確率。
在國外,基于已知黑名單庫的識別中比較有知名度的是IBM 的 x -force Exchange,這是一個開源的威脅情報平臺,為企業(yè)和安全人員提供查詢已知的惡意URL、惡意軟件、垃圾郵件、Web 漏洞等威脅情報。在國內(nèi),比較具有知名度的就是微步在線的威脅情報庫,其開放API 接口供安全人員去調(diào)用其黑名單庫進(jìn)行惡意URL 的識別?;诤诿麊螏熳R別惡意URL 的另一種表現(xiàn)形式就是國內(nèi)外各大安全廠商例如綠盟、Mcafee、奇安信等都出的一款名為WEB 應(yīng)用防火墻的產(chǎn)品。該產(chǎn)品里面內(nèi)置了目前曝光在互聯(lián)網(wǎng)上的所有Web 漏洞,利用正則寫成規(guī)則庫,通過匹配規(guī)則庫的方式來驗證是否為惡意攻擊行為。這種方式帶來的局限就是需要頻繁更新廠商發(fā)布的規(guī)則庫以及需要面對業(yè)務(wù)中因為開發(fā)的不規(guī)范導(dǎo)致規(guī)則庫在解析時候帶來誤報而影響業(yè)務(wù)的問題,往往給企業(yè)的業(yè)務(wù)造成巨大的影響,同時還無法應(yīng)對在規(guī)則庫外的新型攻擊行為。這種局限性在很多企業(yè)組織的攻防演練中體現(xiàn)的較為突出。攻擊方往往會放出很多0day(未在互聯(lián)網(wǎng)上爆出的漏洞),這種0day100%會繞過WEB 應(yīng)用防火墻,此時防守方只能被動挨打,任由攻擊方拿到服務(wù)器權(quán)限獲取最終的勝利。
基于機器學(xué)習(xí)算法檢測的原理是手工提取特征,然后通過訓(xùn)練龐大的數(shù)據(jù)生成威脅檢測模型對未知的URL 進(jìn)行判斷。例如,吳少華等[3]、甘宏等[4]通過TF-IDF 提取文本特征后輸入SVM 進(jìn)行訓(xùn)練,雖然便捷但TF-IDF 選取的特征都是頻率較低的值,不能較好地提取出惡意URL 的關(guān)鍵特征。同時惡意URL 是一個文本,使用TF-IDF 進(jìn)行特征提取會忽略詞與詞之間的上下文聯(lián)系,使得提取的特征不精確導(dǎo)致最終模型精度較低。且文獻(xiàn)中數(shù)據(jù)集相對較少,但是生產(chǎn)環(huán)境中面對以億為單位的數(shù)據(jù)量,使用TFIDF 會生成龐大的特征向量增加計算的復(fù)雜度和空間開銷,最終影響模型的檢測效率;劉建等[5]利用決策樹、SVM、樸素貝葉斯3 種機器學(xué)習(xí)算法構(gòu)造一個多層過濾的檢測模型,該模型對3 種算法設(shè)定一個閾值,滿足閾值條件則判斷URL 類別,不滿足則進(jìn)行下一個分類器的閾值判斷,這種方式充分發(fā)揮了3 種算法各自的優(yōu)勢,提高了模型準(zhǔn)確率;李澤宇等[6]利用集成算法訓(xùn)練多個弱分類器,再并行地將這些弱分類器訓(xùn)練的模型組合起來提高模型的準(zhǔn)確率,相較單個模型預(yù)測更準(zhǔn)確,但集成算法在沒有經(jīng)過優(yōu)化的條件下容易出現(xiàn)過擬合以及陷入局部最優(yōu)的問題。同時,該作者手工提取了10 多種特征,根本無法適應(yīng)惡意URL 的多樣性,將該模型應(yīng)用于生產(chǎn)環(huán)境中,面對每天按億為單位的URL 數(shù)據(jù)量,最終精度會大大折扣且產(chǎn)生大量誤報,最終影響正常業(yè)務(wù)。
近年來,深度學(xué)習(xí)在自然語言領(lǐng)域取得了很多成功的實踐。例如,梁斌[7]、高彥琳等[8]、孫敏等[9]均利用CNNLSTM 網(wǎng)絡(luò)對電影以及微博評論進(jìn)行情感分析,通過CNN進(jìn)行提取文本特征,LSTM 層進(jìn)行特征排序與分類,最后與CNN、LSTM 網(wǎng)絡(luò)進(jìn)行對比,得出CNN-LSTM 的準(zhǔn)確率更高證明了CNN-LSTM 模型的有效性。同時也有越來越多的學(xué)者將深度學(xué)習(xí)運用到惡意URL 檢測上,例如王歡歡等[10]將URL 分為主機和參數(shù)兩大部分,分別提取了20 種惡意的主機特征和參數(shù)特征,并組合起來輸入到其提出的Bi-IndRNN 網(wǎng)絡(luò)中進(jìn)行分類,作者對比了KNN、IndRNN、LSTM 在該模型中的分類精度,最終證明其提出的Bi-IndRNN 精確率最高,達(dá)到95.96%;張婷[11]利用skip-gram 對惡意URL 進(jìn)行詞向量編碼,并輸入到LSTM 中,利用平均池化的方式融合LSTM 提取到的特征,提高了分類的準(zhǔn)確率,最終準(zhǔn)確率達(dá)到97.2%;梁飛[12]對URL 通過N-gram 進(jìn)行分詞處理,embedding 成詞向量輸入到BiLSTM 模型中進(jìn)行特征提取,同時加入Attention 機制捕捉文本中詞與詞之間的關(guān)聯(lián)性,最后輸入到分類器進(jìn)行分類,該模型在BiLSTM 算法中加入Attention 機制準(zhǔn)確提取了惡意URL 的特征,提高了模型準(zhǔn)確率。潘司晨[13]、陳康等[14]利用CNN 算法提取特征并將提取到的特征輸入到softmax 進(jìn)行分類,相較于通過機器學(xué)習(xí)進(jìn)行惡意URL 檢測的方法減少了特征提取時間,豐富了特征提取的多樣性,進(jìn)而提高了識別的精確率,可見深度學(xué)習(xí)在提取文本特征上具有良好的效果。此外在商業(yè)領(lǐng)域,國內(nèi)著名安全廠商長亭科技利用深度學(xué)習(xí)算法發(fā)布了國內(nèi)第一款出了基于語義分析的WAF,其通過接入Web 訪問流量,進(jìn)行協(xié)議解析與深度解碼,調(diào)動深度學(xué)習(xí)引擎,對攻擊行為特征進(jìn)行威脅定級,生成基于客戶業(yè)務(wù)流量的威脅檢測模型。隨著樣本數(shù)據(jù)的增加,威脅模型越來越精準(zhǔn),在防護(hù)0day 漏洞的同時也實現(xiàn)真正意義上的主動防御,給諸多企業(yè)帶來了安全保障。
在上述研究的基礎(chǔ)上,本文結(jié)合深度學(xué)習(xí)與機器學(xué)習(xí)的優(yōu)缺點,提出基于CNN-XGBoost 相結(jié)合的惡意URL 檢測模型。該模型利用CNN 提取惡意URL 特征,較大程度降低了人工提取特征所消耗的時間,利用 FWA 算法自動調(diào)整XGBoost 參數(shù),避免了XGBoost 算法在訓(xùn)練時陷入局部最優(yōu)以及過擬合的現(xiàn)象,同時XGBoost 分布式計算能力也極大降低了模型訓(xùn)練時間,提高了運行效率和準(zhǔn)確率。
Http 協(xié)議通過URL 建立數(shù)據(jù)的連接和傳輸,URL 主要分為協(xié)議、域名、端口、文件名和參數(shù)5 個部分,本文主要研究的是惡意URL,而惡意URL 的變換主要在URL 后面4個部分,因此協(xié)議部分可以不作處理。從網(wǎng)上爬取的URL都是經(jīng)過瀏覽器URL 編碼過的,會將一些字符串轉(zhuǎn)換成編碼后的形式,直接作為數(shù)據(jù)集會導(dǎo)致特征提取有誤差,因此對爬取到的數(shù)據(jù)集先進(jìn)行URL 解碼,再統(tǒng)一轉(zhuǎn)換為UTF-8 的形式,最后將各個URL 協(xié)議部分去掉只保留其余4 個字段,同時對數(shù)據(jù)集進(jìn)行去重處理得到最終的數(shù)據(jù)集,預(yù)處理結(jié)果如圖1所示。
Fig.1 URL preprocessing圖1 URL預(yù)處理
利用 Word2Vec 對已經(jīng)預(yù)處理好的URL 進(jìn)行詞向量訓(xùn)練,Word2vec 是Google 開發(fā)的開源生成詞向量工具,包括連續(xù)詞袋模型(Continuous Bag of Words,CBOW)和Skipgram 兩種模型。CBOW 模型通過上下文或者是周邊的詞語預(yù)測當(dāng)前詞語,Skip-gram 模型通過當(dāng)前詞預(yù)測詞的上下文或周邊的詞。本文利用CBOW 模型對預(yù)處理好的URL 進(jìn)行并訓(xùn)練生成詞向量。CBOW 的輸入層由URL 中每個單詞的one-hot 向量組成,隱藏層為one-hot 向量經(jīng)過與權(quán)重矩陣相乘后組成的向量,輸出層為將隱藏層得到的向量乘以輸出權(quán)重矩陣得到最終的輸出向量。設(shè)URL 為U,單詞個數(shù)為x,URL 長度為L,其中L 的長度設(shè)置為200,不足用O 補齊,輸出向量的維數(shù)為N,那么最終每個URL被表示為L行N 列的矩陣。
URL 可以看作文本形式,故本文采用CNN 自動對URL進(jìn)行特征提取。由圖2 可知,CNN 網(wǎng)絡(luò)模型主要包括3 個卷積層,3 個max pooling 以及1 個全連接層,結(jié)構(gòu)如圖2 所示。3 個卷積層對URL 中的主機名+端口、文件名、參數(shù)這3 個部分進(jìn)行訓(xùn)練以提取相應(yīng)特征。對于長度為h 的卷積窗口,輸入矩陣的卷積操作表示為:
式中,w ∈Rh*q表示卷積核的權(quán)重;b∈R表示偏差項bias,vi:i±h表示第i個單詞到第i+h個單詞組成的矩陣;f為激活函數(shù),本文選取ReLu 函數(shù),其比sigmoid 收斂速度更快,有利于降低CNN 網(wǎng)絡(luò)的運算量,在處理大數(shù)據(jù)集時優(yōu)勢突出。
Fig.2 CNN network structure圖2 CNN網(wǎng)絡(luò)結(jié)構(gòu)
考慮到惡意URL 的特征復(fù)雜多樣,會影響模型的運行速度和準(zhǔn)確率,因此采用池化的方式減少特征圖大小,提高模型運行效率。常見池化方式為最大池化和平均池化,觀察數(shù)據(jù)集可以發(fā)現(xiàn)URL 中惡意詞語比例往往比正常詞語低且差異比正常詞語大,而最大池化的作用就是保留文本中差異最大的特征,去除一些冗余無關(guān)的特征。因此,相較于平均池化著重保留文本的上下文信息,最大池化更有利于惡意特征的提取。通過最大池化方式提取特征圖中的關(guān)鍵特征c=max{ }c,將提取到的關(guān)鍵特征進(jìn)行拼接,得到以下輸出矩陣:
將得到的C→輸入全連接層,然后加入dropout,防止過擬合產(chǎn)生。
XGBoost 是廣泛應(yīng)用的樹形學(xué)習(xí)算法,其是在GBDT(Gradient Boosting Decision Tree)的基礎(chǔ)上改進(jìn)而來,計算速度和精度有所改善[15-17]。XGBoost 的核心是對目標(biāo)函數(shù)進(jìn)行二階泰勒展開,利用不斷分裂的新樹擬合上次預(yù)測的殘差以保證模型準(zhǔn)確性。XGBoost 增加了隨機采樣比例,通過遍歷隨機選取的特征降低遍歷所有特征帶來時間的浪費以及過擬合現(xiàn)象,通過設(shè)置樹的最大深度和閾值防止樹生長過深的現(xiàn)象。同時XGBoost 支持并行化,可以對每個特征進(jìn)行分塊并排序,允許以樹狀結(jié)構(gòu)排列對輸出變量進(jìn)行預(yù)測,大大提高了模型訓(xùn)練速度。模型推導(dǎo)公式為:
將所有樣本Xi劃入第j個葉子結(jié)點樣本集中,表示為:
將公式(6)和(7)代入公式(5)中,得到的目標(biāo)函數(shù)表示為:
以上推導(dǎo)過程可以得出一棵最佳決策樹以及決策樹每個節(jié)點對應(yīng)的的最優(yōu)得分。
FWA 算法是通過觀察燃放煙花產(chǎn)生火花這一現(xiàn)象而提出的一種智能優(yōu)化算法[18-20]。對于FWA 算法來說,每一朵煙花都可以作為一個可行解,每一朵煙花爆炸產(chǎn)生火花的過程就是FWA 算法不斷搜索最優(yōu)解的過程。FWA 算法爆炸產(chǎn)生的爆發(fā)性和多樣性使其在全局搜索和局部搜索上都具有良好的尋優(yōu)能力,其具體實現(xiàn)步驟如下:
步驟1:初始化種群數(shù)位N,隨機產(chǎn)生一部分煙花,每朵煙花xi代表一個解。
步驟2:在N 個位置上分別釋放煙花,并且計算煙花的適度值f(xi),同時計算每朵煙花產(chǎn)生的火花個數(shù)Si以及爆炸半徑Ai,分別表示為:
式中,ymin和ymax分別當(dāng)前種群中適應(yīng)度的最小值和最大值;表示爆炸半徑大??;ε表示機器最小量,用于避免分母為0;M 是用于調(diào)整爆炸產(chǎn)生火花數(shù)量的常數(shù)。
步驟3:根據(jù)適應(yīng)度值,通過公式(13)調(diào)整火花數(shù)量;公式(14)主要對爆炸和變異導(dǎo)致超出范圍的火花進(jìn)行映射;公式(15)為變異算子,主要用于負(fù)責(zé)種群的多樣性,其目的是為了保存超出范圍的火花。
步驟4:采用輪盤賭法的方式在區(qū)域N-1 個煙花中選出適應(yīng)值最小的煙花直接進(jìn)入下一代種群,每個煙花被選中的概率為:
式中,D(xi)表示xi到其他個體之間距離總和;d(xi,xj)表示任意一個xi到xj之間的歐式距離;k 表示候選煙花種群。
步驟5:滿足終止條件則結(jié)束,不滿足則返回步驟2。
目前XGBoost 常用的參數(shù)優(yōu)化方法有人工調(diào)參和網(wǎng)格搜索兩種。人工調(diào)參需要調(diào)參者對各個參數(shù)很熟悉,并且需要通過大量實驗確定最終參數(shù),時間成本大而且太過依賴主觀判斷。網(wǎng)格搜索法又稱窮舉搜索法,其會在指定參數(shù)范圍內(nèi)按照步長遍歷所有參數(shù),直到找到精度最高的一個參數(shù)。該方法會導(dǎo)致在選取參數(shù)范圍較大的情況下計算復(fù)雜度呈指數(shù)形式增長,增加設(shè)備性能消耗,降低整個模型的效率,一般適合于規(guī)模較小的超參數(shù)優(yōu)化。
本文采用FWA 算法對XGBoost 參數(shù)進(jìn)行優(yōu)化。XGBoost 參數(shù)主要分為通用參數(shù)、Booster 參數(shù)以及學(xué)習(xí)目標(biāo)參數(shù),其中通用參數(shù)主要對宏觀函數(shù)進(jìn)行控制,學(xué)習(xí)目標(biāo)參數(shù)主要控制分類類型是二分類還是多分類,而Booster 參數(shù)可以調(diào)控XBOOST 最終分類的效果和計算代價??紤]到本實驗數(shù)據(jù)集較大,調(diào)整過多的參數(shù)反而會導(dǎo)致模型運行慢降低計算效率。因此,本次實驗主要調(diào)整Booster 中三大關(guān)鍵參數(shù),其中Learning_rate 表示每一步迭代的步長,設(shè)置太大會降低準(zhǔn)確率,設(shè)置太低會影響訓(xùn)練的速度。取值范圍設(shè)置為[0,1],缺省值為0.3,該參數(shù)決定模型的運行速度和準(zhǔn)確率;Subsample 表示對于每棵樹隨機進(jìn)行采用的比例值,取值范圍在(0,1],缺省值為1;Max_depth 表示樹的最大深度,數(shù)值過大模型學(xué)習(xí)到的樣本會更具體但會出現(xiàn)過擬合狀態(tài),取值范圍[0,∞],缺省值為6。Subsample和Max_depth 決定模型的復(fù)雜程度,防止模型出現(xiàn)過擬合現(xiàn)象,使模型學(xué)習(xí)更加具體。將這三組參數(shù)作為FWA 尋優(yōu)解進(jìn)行優(yōu)化,利用測試集進(jìn)行預(yù)測,將平均誤差作為適應(yīng)度函數(shù),表示為:
如圖3 所示,本文實驗分為三大部分,第一部分為數(shù)據(jù)預(yù)處理,主要對公網(wǎng)爬取的數(shù)據(jù)集進(jìn)行數(shù)據(jù)清理以及均衡正負(fù)樣本集;第二部分為特征提取,對數(shù)據(jù)集進(jìn)行編碼輸入到CNN 網(wǎng)絡(luò)中進(jìn)行特征提??;第三部分為模型訓(xùn)練和優(yōu)化,將提取到的特征輸入到XGBoost 中進(jìn)行回歸分析,同時結(jié)合FWA 算法對XGBoost 關(guān)鍵參數(shù)進(jìn)行優(yōu)化以提高模型精確率。
根據(jù)國家疾病控制中心性病診斷標(biāo)準(zhǔn)中對于梅毒診斷標(biāo)準(zhǔn)施行診斷,記錄不同檢查結(jié)果的靈敏度、特異度、陰性預(yù)測值以及陽性預(yù)測值[5-6]。
Fig.3 Model implementation process圖3 模型實現(xiàn)流程
采用準(zhǔn)確率、召回率、精確率、F1 以及時間成本5 個指標(biāo)評估模型分類能力,并與通過手工提取特征-XGBoost 的檢測模型以及其他機器學(xué)習(xí)算法模型進(jìn)行比較,驗證本文CNN-XGBoost 模型檢測惡意URL 的有效性。
惡意URL 來源于Github 中的部分?jǐn)?shù)據(jù)集以及知名釣魚網(wǎng)站PhishTank 中爬蟲獲取的數(shù)據(jù),共計8 萬條,作為正樣本。正常URL 來源于Alexa 公布的正常網(wǎng)站,從中隨機選取前100萬個數(shù)據(jù)中的5萬條作為負(fù)樣本。
上述URL 經(jīng)過去重以及數(shù)據(jù)清洗工作得到126 593 個樣本,其中正樣本71 785 條,負(fù)樣本54 808 條,正負(fù)樣本比約為6∶4。隨機選取數(shù)據(jù)集中的30%作為測試樣本,70%作為訓(xùn)練樣本。
硬件環(huán)境:CPU 為Intel(R)Core i5-10210U;內(nèi)存為DDR4 16G;硬盤為512G 固態(tài)。
軟件環(huán)境:gensim==2.0.0;numpy==1.12.0;pandas==0.19.2;sklearn==0.18.1;tensorflow==1.1.0。
利用CNN 模型對惡意URL 的主機名、路徑+文件名、參數(shù)域3 個部分進(jìn)行特征提取。根據(jù)數(shù)據(jù)集樣本大小,將3 個部分的卷積核大小分別設(shè)置為5×20×8、5×30×8、5×40×8,防止CNN 出現(xiàn)過擬合現(xiàn)象,使用Dropout 機制同時加入L2 正則化參數(shù),采用Adam 優(yōu)化器,最終通過最大池化方式以及全連接層輸出一個128 維的一維向量,作為后續(xù)XGBoost算法的輸入,具體參數(shù)如表1所示。
Table 1 CNN parameters表1 CNN參數(shù)
基于FWA 的XGBoost 參數(shù)優(yōu)化實驗分為3 個,結(jié)果見表2。實驗一中FWA 算法初始總?cè)簲?shù)量為30,最大振幅為40,正?;鹦强倲?shù)為25,特殊火星總數(shù)為5,尋優(yōu)迭代次數(shù)為100。在迭代40 次時,適應(yīng)度值下降的幅度降低,表明此時算法收斂速度變得緩慢,從而導(dǎo)致算法在后續(xù)迭代過程中全局搜索能力開始降低,60~100 之間的適應(yīng)度值一直徘徊在9±0.2 之間,即該條件下搜索能力逐漸下降,此時容易導(dǎo)致產(chǎn)生較少火花,火花減少帶來的影響就是算法只能在一個很小的范圍內(nèi)不斷搜索從而陷入局部最優(yōu),從最終適應(yīng)度值9.105 可以發(fā)現(xiàn),該條件下的算法確實已經(jīng)陷入局部最優(yōu)中。
Table 2 Experimental data of fireworks algorithm表2 FWA算法實驗數(shù)據(jù)
為提高FWA 算法的收斂速度,實驗二中使用曼哈頓距離計算公式代替原有的歐式距離計算公式的選擇策略,表示為:
與歐式距離不同的是,曼哈頓距離計算兩點之間的距離只需要進(jìn)行加減而不需要開平方,不僅降低了計算開銷,也消除了開平方導(dǎo)致取近似值帶來的誤差,加快了算法收斂速度,又增強了全局搜索能力,最終提高了搜索精度。實驗二中,算法在迭代40 次時適應(yīng)度值已經(jīng)搜索到了8.713,而實驗一100 次迭代時才搜索到9.015,實驗二以較少的迭代次數(shù)搜索到了最優(yōu)值。同時實驗二算法在迭代60 次時的適應(yīng)度值降低到了7.927,此時算法前期的全局尋優(yōu)能力和收斂速度得到顯著提高,但與實驗一一樣,實驗二在迭代60 次后也只是在搜索到的最優(yōu)值附近繼續(xù)搜索,并沒有跳出最優(yōu)值,可見該算法跳出局部最優(yōu)的能力較弱。
為跳出局部最優(yōu),實驗三將火星種群數(shù)量增加至50,將每次迭代產(chǎn)生的正?;鹦强倲?shù)減少至15,其余與實驗二保持一致,這樣增加了后續(xù)迭代過程中選擇較優(yōu)火星的概率和較優(yōu)火星產(chǎn)生的正?;鹦潜槐A舻母怕?,有利于后續(xù)跳出局部最優(yōu)。可以看出,迭代到40 次時適應(yīng)度值已經(jīng)降低至7.265,比前兩組實驗的適應(yīng)度值降低許多,可見算法收斂速度增加了很多。同時算法在60~80 次迭代的過程中由原本的6.576 跳出至最終的5.734,已跳出局部最優(yōu),算法整體優(yōu)化性能提高。
FWA 算法和網(wǎng)格搜索初始種群數(shù)量為50,尋優(yōu)迭代次數(shù)取100,二者比較結(jié)果見圖4。FWA 算法在尚未迭代至40 次時便已迅速收斂至網(wǎng)格搜索的最優(yōu)值,在迭代至60 次時已經(jīng)達(dá)到全局最優(yōu)解;在60~100 次的迭代過程中進(jìn)行局部搜索,跳出了6.576 的最優(yōu)值,達(dá)到最終的5.617。而反觀網(wǎng)格搜索在20~40 次迭代的過程中便已經(jīng)逐步陷入局部最優(yōu)解,由于尋優(yōu)參數(shù)的區(qū)間值較大,后續(xù)40~100次迭代相當(dāng)于在進(jìn)行無效搜索,最終適應(yīng)度值遠(yuǎn)低于FWA算法。綜上所述,F(xiàn)WA 算法無論是收斂速度、全局尋優(yōu)能力還是局部尋優(yōu)能力均高于網(wǎng)格搜索。因此,本文最終選取FWA 算法搜索出來的最優(yōu)值作為XGBoost 關(guān)鍵參數(shù)值,其最優(yōu)參數(shù)為Subsample=0.5,Max_depth=11Learning_rate=0.2。
Fig.4 Comparison of firework algorithm and grid search parameter optimization圖4 FWA算法與網(wǎng)格搜索參數(shù)尋優(yōu)比較
為評估 CNN-XGBoost 模型在惡意URL 檢測上的適用性,選取文獻(xiàn)[14]和文獻(xiàn)[20]中的特征選擇方法和分類算法以及常用分類器SVM、邏輯回歸以及隨機森林進(jìn)行比較,從精確率、準(zhǔn)確率、召回率、F1 分?jǐn)?shù)以及訓(xùn)練時間5 個方面評估模型的檢測能力,結(jié)果見表3??梢钥闯?,CNNXGBoost 的精確率、召回率、F1 在幾個模型中最高,其中精確率達(dá)到97.2%,召回率達(dá)到94.1%,F(xiàn)1 值達(dá)到93.5%,表明其能很好地提取特征并基于提取的特征準(zhǔn)確分類。文獻(xiàn)[14]中基于手工提取—XGBoost 的方法精確率只達(dá)到90.9%,原因是手工提取的特征并沒有適應(yīng)訓(xùn)練樣本中惡意URL 特征的多樣性,導(dǎo)致有部分惡意樣本由于其特征未在手工提取的特征中而影響了整體模型精度;文獻(xiàn)[20]中的Bi-IndRNN 模型精確率達(dá)到94.5%,與本文算法相比降低2.7%,可見通過CNN 自動提取特征的準(zhǔn)確率明顯高于手工提取特征。CNN-RF 模型的精確率僅次于CNN-XGBoost,達(dá)到96.1%,而CNN-SVM 模型的精確率只達(dá)到92.7%,可見SVM 算法雖然適合進(jìn)行二分類,但在數(shù)據(jù)集龐大時效率低下。CNN-LR 模型精確率為93.6%,其使用極大似然估計函數(shù)對目標(biāo)函數(shù)進(jìn)行求解,在數(shù)據(jù)集龐大的情況下會使模型不斷擬合數(shù)據(jù),從而導(dǎo)致最終模型陷入過擬合狀態(tài)。而XGBoost 算法加入了正則化,控制了模型復(fù)雜度,自動調(diào)整learning_rate,max_depth 以及subsample 這3 個參數(shù),避免了在樣本集過大時葉子節(jié)點過多而造成的巨大開銷,同時可避免限制樹的最大深度以及樹的采樣率陷入過擬合狀態(tài)。XGBoost 最大的優(yōu)點是利用損失函數(shù)進(jìn)行二階泰勒展開,通過學(xué)習(xí)新的函數(shù)擬合上次預(yù)測的殘差,使模型更接近真實值,加快了模型收斂,提高了模型準(zhǔn)確率。
在相同的實驗環(huán)境下,CNN-XGBoost模型只用了1 361s便完成了模型訓(xùn)練,可見其并行計算的能力大大降低了模型訓(xùn)練時間。而SVM 由于二次規(guī)劃求解支持向量,在數(shù)據(jù)量龐大的情況下求解速度變低導(dǎo)致時間消耗大,比CNN-XGBoost 多消耗近50%的時間。CNN-LR 使用梯度下降算法,利用較少的資源處理龐大數(shù)據(jù),在時間成本方面有很大優(yōu)勢。CNN-RF 完成模型訓(xùn)練花費了1 721s,相較XGBoost 提高25%以上。因此,CNN-XGBoost 模型無論是準(zhǔn)確率還是時間成本均優(yōu)于其他機器學(xué)習(xí)模型。
Table 3 Indicators comparison of different models表3 不同模型評價指標(biāo)比較
本次實驗還觀察了各模型在訓(xùn)練過程中CPU 的使用情況,結(jié)果見圖5??梢钥闯?,各模型消耗的CPU 均在80%以上,CPU 使用率較高不僅會降低模型準(zhǔn)確率和檢測速度,還會影響設(shè)備穩(wěn)定性。在生產(chǎn)環(huán)境中,設(shè)備的穩(wěn)定性決定著業(yè)務(wù)的穩(wěn)定性。因此,如何在保證模型準(zhǔn)確率的同時降低設(shè)備負(fù)載是未來需要克服的重要問題。
Fig.5 CPU% usage of each mode圖5 各模型CPU%使用情況
Web 安全目前成為各大企業(yè)以及安全廠商的關(guān)注重點,市面上90%的防護(hù)采用傳統(tǒng)的黑名單防范機制,攻擊的多樣性導(dǎo)致黑名單防范的局限性日益凸顯,使得越來越多的安全廠商和安全研究員研究新型惡意URL 檢測。因此,針對日益嚴(yán)峻的Web 安全問題,本文分析了目前已有研究的優(yōu)點以及缺點,提出基于CNN-XGBoost 的新型惡意URL 檢測模型。該模型利用深度學(xué)習(xí)進(jìn)行特征提取,其能隨著模型訓(xùn)練不斷調(diào)整從而提取最優(yōu)特征,能更好地適應(yīng)惡意URL 特征的多樣性,發(fā)現(xiàn)更多未知惡意攻擊,精確率高達(dá)97.2%。然而,本次實驗在設(shè)備性能消耗方面沒有進(jìn)行較多優(yōu)化,導(dǎo)致模型在訓(xùn)練過程中使CPU 超負(fù)荷運行,影響了最終檢測率與穩(wěn)定性。后續(xù)將繼續(xù)研究如何在保證模型準(zhǔn)確率的同時降低對設(shè)備性能的消耗,使其適應(yīng)更大數(shù)據(jù)量的環(huán)境。