雷天翔,萬(wàn) 良,于 淼,褚 堃
1(貴州大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院,貴陽(yáng) 550025)
2(貴州大學(xué) 計(jì)算機(jī)軟件與理論研究所,貴陽(yáng) 550025)
近年來(lái),隨著Web 應(yīng)用程序以瀏覽器/服務(wù)器(B/S)架構(gòu)占據(jù)主流市場(chǎng),Web 服務(wù)已經(jīng)被廣泛的應(yīng)用,瀏覽器和網(wǎng)頁(yè)已然成為傳播惡意代碼的重要途徑.攻擊者使用網(wǎng)站代碼漏洞,第三方應(yīng)用程序漏洞,瀏覽器漏洞和操作系統(tǒng)漏洞對(duì)網(wǎng)站執(zhí)行跨站點(diǎn)腳本攻擊,注入Web 木馬,篡改網(wǎng)頁(yè),網(wǎng)絡(luò)釣魚(yú)和竊取個(gè)人信息,造成用戶個(gè)人信息泄露和財(cái)產(chǎn)損失.根據(jù)《2019中國(guó)網(wǎng)絡(luò)安全報(bào)告》,瑞星“云安全”在2019年全球共截獲惡意網(wǎng)址(URL)總量1.45 億個(gè),其中掛馬類網(wǎng)站1.2 億個(gè),釣魚(yú)類網(wǎng)站2454 萬(wàn)個(gè)[1].中國(guó)的惡意URL 總數(shù)為471.63 萬(wàn),位列全球第五.惡意內(nèi)容包含在惡意網(wǎng)頁(yè)中,這些惡意網(wǎng)頁(yè)很容易使訪問(wèn)者不知不覺(jué)地受到網(wǎng)絡(luò)攻擊,例如病毒傳播,特洛伊木馬植入,信息泄漏等.他們的惡意代碼主要是腳本語(yǔ)言,例如JavaScript.為了避免檢測(cè),這些惡意腳本還以不同的編碼方法進(jìn)行了混淆[2].經(jīng)過(guò)混淆后的JavaScript 惡意代碼更是成為提高檢測(cè)性能的一大難點(diǎn).
當(dāng)前,靜態(tài)檢測(cè)方法為大多數(shù)研究人員在對(duì)Java-Script 惡意代碼檢測(cè)過(guò)程中使用的方法.此方法通過(guò)對(duì)JavaScript 源碼的語(yǔ)法、過(guò)程、結(jié)構(gòu)等進(jìn)行分析從而提取特征達(dá)到對(duì)惡意代碼的檢測(cè)的目的.隨后使用機(jī)器學(xué)習(xí)[3-5]的檢測(cè)方法被提出.Likarish 等[6]從每個(gè)代碼文件中選擇65 個(gè)統(tǒng)計(jì)特征作為輸入,包括可讀序列的數(shù)量,每個(gè)JavaScript 關(guān)鍵字的頻率,腳本的長(zhǎng)度,每行平均字符數(shù)和Unicode 符號(hào).數(shù)量等.評(píng)估代碼的可讀性,然后利用機(jī)器學(xué)習(xí)來(lái)檢測(cè)模糊的惡意JavaScript 代碼,取得了很好的分類效果.Wang[7]采用機(jī)器學(xué)習(xí)技術(shù)抽取和分析惡意腳本特征,使用SVM 分類模型進(jìn)行分類,結(jié)果表明具有較高的檢測(cè)率低誤報(bào)率.Li 等[8]使用自編碼器將高維數(shù)據(jù)轉(zhuǎn)換為低維數(shù)據(jù),緊接著采用深度自編碼網(wǎng)絡(luò)自動(dòng)學(xué)習(xí)JavaScript 惡意代碼的特征,從而對(duì)其進(jìn)行檢測(cè)和分類.通過(guò)研究發(fā)現(xiàn)現(xiàn)有的檢測(cè)技術(shù)存在著手工提出特征,工作量大主觀性太強(qiáng)和對(duì)混淆的惡意代碼檢測(cè)難度大等不足,針對(duì)上述不足之處,一些研究人員開(kāi)始使用深度學(xué)習(xí)的方法來(lái)檢測(cè)JavaScript 惡意代碼,深度學(xué)習(xí)神經(jīng)網(wǎng)絡(luò)可以自動(dòng)學(xué)習(xí)特征,因此避免了手動(dòng)提取特征的復(fù)雜性和主觀性.Cui[9]將深度學(xué)習(xí)中的卷積神經(jīng)網(wǎng)絡(luò)(Convolutional Neural Networks,CNN)運(yùn)用到JavaScript 惡意代碼檢測(cè).Wu 等[10]使用卷積神經(jīng)網(wǎng)絡(luò)、LSTM、CNNLSTM 模型進(jìn)行漏洞檢測(cè).上述實(shí)驗(yàn)結(jié)果顯示,相比于傳統(tǒng)的方法,上述方法的優(yōu)勢(shì)盡顯無(wú)疑.Fang 等[11]使用LSTM 來(lái)對(duì)JavaScript 惡意代碼.LSTM 能有效地檢測(cè)JavaScript 惡意代碼,但對(duì)于混淆的JavaScript 惡意代碼的檢測(cè)還不夠準(zhǔn)確.Choi 等[12]和Visaggio 等[13]使用3 個(gè)衡量標(biāo)準(zhǔn)來(lái)對(duì)混淆進(jìn)行檢測(cè),衡量指標(biāo)分別是字符串的最大長(zhǎng)度、無(wú)序狀態(tài)的熵、在忽略大小寫后,非數(shù)字字母在字符串中所占的比例.Lu 等[14]從代碼的語(yǔ)義方面對(duì)代碼進(jìn)行反混淆.馬洪亮等[15]將靜態(tài)分析和動(dòng)態(tài)分析相結(jié)合起來(lái),以此來(lái)達(dá)到惡意代碼反混淆的目的.
基于上訴文獻(xiàn),為了獲取惡意代碼深層本質(zhì)特征,提出了一種基于雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)的JavaScript 檢測(cè)方法.LSTM是帶有記憶細(xì)胞單元的循環(huán)神經(jīng)網(wǎng)絡(luò),常用于處理長(zhǎng)序列數(shù)據(jù),能解決長(zhǎng)序列數(shù)據(jù)依賴的問(wèn)題.但是單向的LSTM 只能解決上文對(duì)下文的依賴而無(wú)法解決下文對(duì)上文的依賴,使得對(duì)JavaScript 代碼特征提取不夠充分.在此基礎(chǔ)上本文選擇雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)來(lái)學(xué)習(xí)JavaScript 代碼,獲得更加全面的代碼特征,提高檢測(cè)的準(zhǔn)確度.實(shí)驗(yàn)結(jié)果分析,該方法具有較優(yōu)的分類效果,強(qiáng)魯棒性和較強(qiáng)的泛化能力.
本文檢測(cè)方法的整體框架如圖1所示,首先通過(guò)爬蟲(chóng)工具從Alexa和PhishTank 網(wǎng)站收集大量數(shù)據(jù),隨后經(jīng)過(guò)數(shù)據(jù)清洗、數(shù)據(jù)分詞和數(shù)據(jù)向量化后得到能輸入到神經(jīng)網(wǎng)絡(luò)中的標(biāo)準(zhǔn)化數(shù)據(jù)集,最后使用雙向長(zhǎng)短時(shí)神經(jīng)網(wǎng)絡(luò)對(duì)標(biāo)準(zhǔn)數(shù)據(jù)集進(jìn)行訓(xùn)練和分類,得到最終的結(jié)果.
圖1 JavaScript 檢測(cè)整體框架
在1991年,研究人員提出了一種改進(jìn)的RNN 網(wǎng)絡(luò),也就是長(zhǎng)短時(shí)神經(jīng)網(wǎng)絡(luò)(Long Short term Memory Networks,LSTM).這一網(wǎng)絡(luò)的出現(xiàn)成功的解決了RNN的長(zhǎng)期依賴問(wèn)題和梯度消失問(wèn)題.
LSTM 網(wǎng)絡(luò)結(jié)構(gòu)如圖2所示,其有4 個(gè)重要組成部分為遺忘門、輸入門、輸出門、用于更新細(xì)胞狀態(tài)的部分[16];遺忘門決定保留和遺忘上一時(shí)刻狀態(tài)ct-1的哪些信息;輸入門負(fù)責(zé)決定在t時(shí)刻的輸入xt有多少信息被保留到ct;輸出門選擇ct有多少輸送到了LSTM在t時(shí)刻的輸出值ht;數(shù)學(xué)表達(dá)式如下:
圖2 長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)結(jié)構(gòu)
更新遺忘門輸出ft:
式(1)中,遺忘門的權(quán)重矩陣為wf,ht-1和xt拼接成的一個(gè)新向量 [ht-1,xt],偏置為bf,σ1(x)為激活函數(shù)使用Sigmoid.
更新輸入門的輸出it,同時(shí)計(jì)算候選狀態(tài),計(jì)算公式如下:
其中,wi為輸入門的權(quán)重,bi為偏置向量,激活函數(shù)σ2(x)同樣使用Sigmoid 函數(shù),wc為權(quán)重矩陣,bc為偏置向量,激活函數(shù)為t anh(x).
更新當(dāng)前時(shí)刻細(xì)胞狀態(tài)ct:
更新輸出門輸出ht:
式(5)中,輸出門的權(quán)重矩陣為wo,激活函數(shù)使用tanh(x),bo是輸出門的偏置.
LSTM 解決了RNN的梯度消失問(wèn)題,但單向的LSTM 只能從前向后傳遞依賴,無(wú)法充分利用上下文信息,在面對(duì)預(yù)測(cè)問(wèn)題時(shí),需要上下文信息來(lái)共同決定當(dāng)前預(yù)測(cè)結(jié)果,使得預(yù)測(cè)結(jié)果更加準(zhǔn)確.因此,雙向LSTM 被提出來(lái)解決此問(wèn)題,其結(jié)構(gòu)如圖3所示.
圖3 BiLSTM 網(wǎng)絡(luò)結(jié)構(gòu)
2.4.1 模型構(gòu)建
為了充分利用上下文的依賴關(guān)系,本文提出一種基于BiLSTM的檢測(cè)模型.如圖4所示.
圖4 基于BiLSTM的檢測(cè)模型
Input layer:輸入層.數(shù)據(jù)以向量的形式進(jìn)行輸入,同時(shí)還要設(shè)置相關(guān)參數(shù)(batchsize).
BiLSTM layer:雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)層.BiLSTM具有能解決數(shù)據(jù)長(zhǎng)期依賴并且能保留上下文語(yǔ)義信息的優(yōu)點(diǎn),讓其自動(dòng)學(xué)習(xí)JavaScript 惡意代碼的特征.其中包括了兩部分,從前向后傳遞的LSTM 層和從后向前傳遞的LSTM 層,在某一時(shí)刻,將兩個(gè)方向不同的層的結(jié)果結(jié)合起來(lái),得到最終的輸出結(jié)果傳遞給下一層.
Dropout layer:為了使檢測(cè)模型具有較強(qiáng)的泛化能力,防止過(guò)擬合問(wèn)題的產(chǎn)生.
Output layer:輸出層.輸出分類器分類后的結(jié)果.
本文的JavaScript 惡意代碼檢測(cè)模型步驟如下,具體分為兩步,第1 步為提取代碼的抽象特征,第2 步對(duì)其進(jìn)行分類檢測(cè).輸入:Xi={x1,x2,…,x49,x50}
步驟1:
(1)將Xi作為輸入,經(jīng)過(guò)輸入層得到輸出向量Ii={i1,i2,…,i49,i50}.
(2)Ii作為BiLSTM 層的輸入向量,經(jīng)過(guò)這一層的前向LSTM 得到前向的隱向量hLi={hL1,hL2,···,hL63,hL64}.經(jīng)過(guò)后向的LSTM 得到后向的隱向量hRi={hR1,hR2,···,hR63,hR64}.
(3)最后將(2)中的兩個(gè)向量拼接成為一個(gè)新的向量{[hL1,hR1],[hL2,hR2],···,[hL63,hR63],[hL64,hR64]},即hi={h0,h1,···,h63,h64}.
步驟2:
(1)為了防止過(guò)擬合問(wèn)題的產(chǎn)生,在dropout 層,隨機(jī)的使若干個(gè)神經(jīng)元失活,這一層的輸入為hi,這一層的輸出為d={d1,d2,…,d63,d64}.
(2)將dropout 層的輸出向量d輸入到Output 層的Softmax 函數(shù)中進(jìn)行分類,得到最終的二維輸出y.
2.4.2 算法設(shè)計(jì)
為了檢測(cè)出惡意代碼,設(shè)計(jì)了算法1.
算法1.BiLSTM 訓(xùn)練算法1) 構(gòu)建BiLSTM 神經(jīng)網(wǎng)絡(luò)并對(duì)網(wǎng)絡(luò)的權(quán)重和偏置進(jìn)行初始化操作;2) 構(gòu)建Softmax 并初始化其參數(shù);3) for iin epoch,進(jìn)行迭代循環(huán)訓(xùn)練,epoch為訓(xùn)練迭代次數(shù);4) 將預(yù)處理后的訓(xùn)練集Xi 作為輸入層的輸入,得到輸出Ii;5)將Ii 作為BiLSTM的輸入,經(jīng)過(guò)前向LSTM和后向LSTM 分別得到前向隱向量hL和后向隱向量hR,將hL和hR 拼接得到抽象特征h;6) 經(jīng)過(guò)dropout 層避免模型出現(xiàn)過(guò)擬合;7) 將抽象特征向量輸入到Softmax 分類其中得到分類結(jié)果;8) 根據(jù)最后的輸出結(jié)果和真實(shí)結(jié)果之間的差距,通過(guò)反向傳播算法依次調(diào)整各個(gè)參數(shù);9) 更新Softmax的參數(shù);10)對(duì)BiLSTM 神經(jīng)網(wǎng)絡(luò)的權(quán)重和偏置進(jìn)行更新;11) end for 12) 將Ti={t1,t2,…,t49,t50}作為測(cè)試集輸入到訓(xùn)練好的模型中,得到測(cè)試結(jié)果.
本文實(shí)驗(yàn)的硬件條件為:處理器Intel(R) Core(TM)i7-9750H CPU@2.60 GHz,內(nèi)存8 GB,圖像處理器NIVDIA GeForce GTX 1650,顯存4 GB.實(shí)驗(yàn)環(huán)境為Python3.6.2、Tensorflow-gpu1.15.0.
本文的數(shù)據(jù)集中,良性的數(shù)據(jù)來(lái)自于Alexa 排名靠前的網(wǎng)站所抓取的數(shù)據(jù),惡意的數(shù)據(jù)來(lái)源于知名網(wǎng)站PhishTank的數(shù)據(jù)庫(kù),經(jīng)過(guò)數(shù)據(jù)預(yù)處理后,獲得良性的代碼數(shù)據(jù)84 208 條和惡意代碼數(shù)據(jù)26 216 條.為良性的數(shù)據(jù)打上標(biāo)記為1,惡意的數(shù)據(jù)打上標(biāo)記為0.實(shí)驗(yàn)中,從樣本中以7:3的比例隨機(jī)選取訓(xùn)練集和測(cè)試集數(shù)據(jù).表1展示了數(shù)據(jù)集分布情況.
表1 數(shù)據(jù)集分布
為了提高輸入數(shù)據(jù)的質(zhì)量以此來(lái)提高整個(gè)模型性能,在此基礎(chǔ)上,本文對(duì)收集的所有數(shù)據(jù)進(jìn)行了數(shù)據(jù)預(yù)處理.
(1)代碼反混淆:利用解碼技術(shù)對(duì)于惡意的Java-Script 混淆代碼進(jìn)行了反混淆處理.本文采用動(dòng)態(tài)分析的技術(shù)進(jìn)行反混淆.首先生成混淆代碼的抽象語(yǔ)法樹(shù)AST,遍歷AST的所有節(jié)點(diǎn),若該節(jié)點(diǎn)為變量,數(shù)組,方法等,則將該節(jié)點(diǎn)進(jìn)行保留,其余的節(jié)點(diǎn)則刪除,對(duì)保留的節(jié)點(diǎn)使用變量值讀取器[17]讀取終值.經(jīng)過(guò)上述反混淆過(guò)程,隱藏在變量終值中的初始JavaScript 惡意代碼會(huì)被還原出來(lái).如圖5所示為混淆代碼還原為原始代碼.
圖5 混淆代碼經(jīng)過(guò)反混淆還原為初始代碼
(2)分詞:對(duì)數(shù)據(jù)進(jìn)行代碼反混淆的工作后,由于神經(jīng)網(wǎng)絡(luò)的輸入為向量,因此先進(jìn)行分詞處理,使用分詞工具NLTK對(duì)代碼數(shù)據(jù)進(jìn)行分詞,去除停用詞,為后續(xù)訓(xùn)練詞向量做準(zhǔn)備.圖6展示了分詞結(jié)果.
圖6 分詞后的結(jié)果
(3)向量化:首先根據(jù)詞頻-逆文件頻率(TF-IDF)算法建立詞匯庫(kù),選擇那些對(duì)識(shí)別惡意代碼具有關(guān)鍵作用的詞.根據(jù)詞匯庫(kù)將代碼數(shù)據(jù)轉(zhuǎn)化為數(shù)值型數(shù)據(jù),使用Gensim 工具包中的Word2Vec 模型對(duì)分詞的數(shù)據(jù)訓(xùn)練,將分詞的數(shù)據(jù)轉(zhuǎn)化為向量,表2展示了一個(gè)向量化的樣例.由于神經(jīng)網(wǎng)絡(luò)輸入長(zhǎng)度固定,而向量化后的代碼長(zhǎng)度不固定.因此選擇合適的向量維度對(duì)于模型精度極其重要,于是在訓(xùn)練詞向量的過(guò)程中根據(jù)最后的向量維度,如果數(shù)據(jù)的長(zhǎng)度超過(guò)向量維度,則對(duì)其進(jìn)行截?cái)?如果數(shù)據(jù)的長(zhǎng)度沒(méi)有超過(guò)向量維度,后面的數(shù)據(jù)用-1 進(jìn)行填充.使得所有輸入數(shù)據(jù)都保持在合適的向量維度.
表2 向量化結(jié)果
表3展示了BiLSTM的實(shí)驗(yàn)結(jié)果.此結(jié)果為代碼數(shù)據(jù)經(jīng)過(guò)BiLSTM 神經(jīng)網(wǎng)絡(luò)的訓(xùn)練和分類后得到的.
表3 BiLSTM 實(shí)驗(yàn)結(jié)果混淆矩陣
3.3.1 評(píng)價(jià)指標(biāo)
為了驗(yàn)證本文方法的性能,本文方法的評(píng)判標(biāo)準(zhǔn)為準(zhǔn)確率(Accuracy)、誤報(bào)率(False Positive Rate,FPR)和召回率(Recall,RE),評(píng)價(jià)分類模型的3 個(gè)重要指標(biāo)如下:
準(zhǔn)確率:被正確檢測(cè)出的數(shù)據(jù)占所有樣本的比例,即:
召回率:正確分類為惡意的代碼占所有惡意代碼的比例,即:
誤報(bào)率:良性的數(shù)據(jù)被誤判為惡意代碼占樣本總數(shù)的比例,即:
具體參數(shù)見(jiàn)表4.
表4 模型參數(shù)設(shè)置
3.3.2 檢測(cè)方法分析
(1)向量維度
在數(shù)據(jù)預(yù)處理時(shí),不同的向量維度對(duì)模型的訓(xùn)練和檢測(cè)的效率具有不同的影響,一個(gè)合適的向量維度才能使模型充分利用數(shù)據(jù)的信息.向量維度過(guò)長(zhǎng)會(huì)使得模型的收斂速度變慢,向量維度過(guò)短會(huì)遺失大量的有效信息,因此為了選擇合適的向量維度,本文對(duì)比了30、50、100、150 這4 個(gè)向量維度,以此來(lái)觀察向量維度與準(zhǔn)確率和訓(xùn)練時(shí)間的變化關(guān)系.實(shí)驗(yàn)結(jié)果如圖7所示.由圖中的結(jié)果可以得出,向量維度超過(guò)50 后,模型的檢測(cè)效果相差不明顯,但是模型訓(xùn)練所用的時(shí)間卻相差很大.模型在向量維度為50和100 時(shí),其檢測(cè)效果是最好的,然而選擇100 維向量時(shí),模型的訓(xùn)練時(shí)間幾乎是50 維向量的2 倍,因此,本文在數(shù)據(jù)預(yù)處理時(shí)選擇了向量維度為50 維,對(duì)不足50 維的向量進(jìn)行填充,對(duì)超過(guò)50 維的向量進(jìn)行截?cái)?
圖7 向量維度
(2)優(yōu)化器
神經(jīng)網(wǎng)絡(luò)中的優(yōu)化器是在利用損失函數(shù)計(jì)算出模型的損失值后,再利用損失值對(duì)模型的各個(gè)參數(shù)進(jìn)行優(yōu)化,使其達(dá)到最優(yōu)的值.最終使得模型的預(yù)測(cè)值和真實(shí)值的誤差越來(lái)越小.不同的優(yōu)化器會(huì)導(dǎo)致模型性能的差異,模型的收斂速度的不同.本文對(duì)幾種常見(jiàn)的優(yōu)化器進(jìn)行了對(duì)比試驗(yàn),損失函數(shù)的變化曲線如圖8所示.可以看出,優(yōu)化器SDG的效果最差,并且收斂的速度不如其余幾個(gè)優(yōu)化器,Adam 優(yōu)化器的收斂速度略微高于其余幾種優(yōu)化器而它的損失函數(shù)值更小.故本文的模型選擇了Adam 優(yōu)化器,使模型更加快速的收斂到一定的值.
圖8 優(yōu)化器
(3)分類器
分類器是根據(jù)數(shù)據(jù)的真實(shí)標(biāo)簽來(lái)學(xué)習(xí)分類的規(guī)則,隨后在訓(xùn)練完畢后對(duì)未知的數(shù)據(jù)進(jìn)行分類.常用的兩種分類器為L(zhǎng)R 分類器和Softmax 分類器,LR 分類器主要用于二分類問(wèn)題,Softmax 常用于互斥的多分類問(wèn)題,在分類數(shù)為2的時(shí)候,會(huì)退化為邏輯回歸分類.本文對(duì)兩種分類器進(jìn)行了對(duì)比實(shí)驗(yàn).從表5中的實(shí)驗(yàn)結(jié)果可以看出使用了Softmax 分類器的模型的性能要優(yōu)于使用LR 分類器的檢測(cè)模型,因此這里選擇Softmax 作為分類器.
表5 分類器
在實(shí)驗(yàn)環(huán)節(jié),本文對(duì)各種參數(shù)的設(shè)置進(jìn)行了對(duì)比實(shí)驗(yàn),選擇了能使模型達(dá)到最優(yōu)效果的參數(shù),所得的檢測(cè)模型的參數(shù)設(shè)置如表6所示.
表6 模型參數(shù)設(shè)置
本文提出的實(shí)驗(yàn)方法結(jié)果如圖9~圖11所示,隨著訓(xùn)練次數(shù)的增加,準(zhǔn)確率和損失函數(shù)曲線會(huì)逐漸收斂.通過(guò)預(yù)測(cè)值和真實(shí)值之間的誤差反向傳播調(diào)節(jié)各個(gè)參數(shù)的值,直到模型的效果達(dá)到最優(yōu),在5 個(gè)epoch 后,此時(shí)準(zhǔn)確率和損失函數(shù)的值會(huì)收斂到一定值.模型訓(xùn)練完畢后,使用測(cè)試集數(shù)據(jù)對(duì)模型進(jìn)行測(cè)試,實(shí)驗(yàn)發(fā)現(xiàn),本文提出的方法對(duì)于一條script 標(biāo)簽的代碼進(jìn)行檢測(cè)的時(shí)間約為0.33 s,并且數(shù)據(jù)隨來(lái)隨檢測(cè),可以對(duì)網(wǎng)頁(yè)中的JavaScript 惡意代碼實(shí)現(xiàn)實(shí)時(shí)的檢測(cè).
圖9 損失函數(shù)曲線
圖10 準(zhǔn)確率變化曲線
圖11 ROC 曲線
3.3.3 對(duì)比分析
本文通過(guò)兩組對(duì)比實(shí)驗(yàn)來(lái)評(píng)估模型的效果.其中一組對(duì)比實(shí)驗(yàn)是將本文的方法和文獻(xiàn)[7]的SVM,AD Tree 等檢測(cè)方法進(jìn)行對(duì)比.另一組對(duì)比試驗(yàn)是將本文中的方法與其他深度學(xué)習(xí)算法如TextCNN,RCNN 等進(jìn)行對(duì)比.
(1)機(jī)器學(xué)習(xí)對(duì)比實(shí)驗(yàn)
從表7和圖12可以看出,傳統(tǒng)的機(jī)器學(xué)習(xí)方法對(duì)JavaScript 惡意代碼實(shí)現(xiàn)了較好的檢測(cè),但與本文的BiLSTM 相比,對(duì)惡意代碼檢測(cè)的準(zhǔn)確率沒(méi)有本文方法的高,并且誤報(bào)率相對(duì)而言較高,而本文方法的準(zhǔn)確率為99.52%而誤報(bào)率僅為1.4%,并且不需要手動(dòng)提取惡意代碼特征,節(jié)省了大量的人力.
表7 BiLSTM與機(jī)器學(xué)習(xí)算法對(duì)比結(jié)果
圖12 BiLSTM與機(jī)器學(xué)習(xí)算法對(duì)比
(2)深度學(xué)習(xí)對(duì)比實(shí)驗(yàn)
為了驗(yàn)證本文提出的方法效果更優(yōu),將本文的方法與TextCNN,RCNN和LSTM 進(jìn)行對(duì)比實(shí)驗(yàn),結(jié)果如表8和圖13所示,TextCNN 常用于文本分類,其將一個(gè)句子中的每個(gè)詞當(dāng)作一個(gè)一維向量,使用卷積的方式去獲取句子的特征,但是其網(wǎng)絡(luò)結(jié)構(gòu)忽略了句子之間的結(jié)構(gòu)信息,沒(méi)有考慮到惡意代碼中的函數(shù)、數(shù)組、變量的調(diào)用關(guān)系,分類效果沒(méi)有本文方法中的效果好.RCNN 則是在經(jīng)過(guò)一個(gè)雙向RNN 后再經(jīng)過(guò)一個(gè)最大池化層,試圖找到最重要的潛在語(yǔ)義因素,然而在惡意代碼檢測(cè)領(lǐng)域,無(wú)論是最重要的因素還是次重要的因素都可能對(duì)我們的安全造成威脅,因此,在本實(shí)驗(yàn)中,RCNN的準(zhǔn)確率不及本文方法.LSTM 沒(méi)有充分的獲取到上下文的相關(guān)信息,因此它的誤報(bào)率明顯高于本文方法.
表8 BiLSTM與深度學(xué)習(xí)方法對(duì)比結(jié)果
圖13 不同深度學(xué)習(xí)方法對(duì)比
綜上所述,與其他機(jī)器學(xué)習(xí)方法和深度學(xué)習(xí)方法相比,使用本文提出的BiLSTM 更適合對(duì)JavaScript 惡意代碼進(jìn)行檢測(cè),BiLSTM 模型明顯優(yōu)于其他方法.
本文在現(xiàn)有檢測(cè)技術(shù)的基礎(chǔ)上,提出一種使用雙向長(zhǎng)短時(shí)記憶網(wǎng)絡(luò)檢測(cè)JavaScript 惡意代碼攻擊的方法.為了提高檢測(cè)的精度,首先使用解碼技術(shù)對(duì)JavaScript進(jìn)行反混淆的處理,并利用深度學(xué)習(xí)工具Word2Vec將代碼向量化作為神經(jīng)網(wǎng)絡(luò)的輸入.最后,使用深度學(xué)習(xí)算法BiLSTM對(duì)JavaScript 惡意代碼進(jìn)行分類,提高檢測(cè)的性能.和機(jī)器學(xué)習(xí)算法相比,BiLSTM 檢測(cè)模型無(wú)需人工提取代碼特征,其會(huì)自動(dòng)的提取出跟惡意代碼檢測(cè)相關(guān)的特征.和深度學(xué)習(xí)其他算法相比,BiLSTM檢測(cè)模型更加充分的獲取到代碼的上下文相關(guān)信息,模型的檢測(cè)性能更加的優(yōu)異,通過(guò)測(cè)試檢測(cè)模型并與機(jī)器學(xué)習(xí)和深度學(xué)習(xí)分類算法進(jìn)行比較,驗(yàn)證了本文提出的基于BiLSTM的JavaScript惡意代碼檢測(cè)模型的可行性和有效性.結(jié)合上述實(shí)驗(yàn)結(jié)果,本文方法可以應(yīng)用到實(shí)踐中去,將本文的提出方法以插件的形式嵌入到瀏覽器中,如谷歌瀏覽器,用戶在不經(jīng)意點(diǎn)開(kāi)某些惡意站點(diǎn)如色情網(wǎng)站,虛假的購(gòu)物網(wǎng)站,賭博網(wǎng)站時(shí)會(huì)發(fā)出警告來(lái)提醒用戶有潛在的安全威脅.
計(jì)算機(jī)系統(tǒng)應(yīng)用2021年8期