999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于深度學習的Webshell惡意代碼檢測方法研究

2021-04-20 12:07:58周子恒李琳趙敘李凱
電腦知識與技術 2021年7期
關鍵詞:深度學習

周子恒 李琳 趙敘 李凱

摘要:在當今現代化的世界中,人工智能逐漸被應用在各個領域之中,而深度學習就是人工智能的核心算法之一,近些年來也被廣泛應用于網絡安全領域,傳統簡單的通過人工定義規則集的檢測方法逐漸被淘汰掉。而現在,如果將深度學習方法應用在檢測Webshell中,不僅可以很好地提高準確率,而且和傳統的機器學習方法相比,可以自動提取特征值,完成特征工程的過程更加智能化。因此基于深度學習來研究Webshell檢測是近些年來一個得到持續關注的熱點課題。該文主要針對使用PHP編寫的Webshell進行檢測,將深度學習方法和PHP文件操作碼序列的特點進行結合,在構建的模型上訓練測試數據集,最終可以獲得相當高的準確率。

關鍵詞:Webshell;操作碼;詞向量;長短記憶網絡;深度學習

中圖分類號:TP393? ? ? ? 文獻標識碼:A

文章編號:1009-3044(2021)07-0180-04

Abstract: In todays modern world,artificial intelligence is gradually applied in various fields,deep learning is one of the core algorithm of artificial intelligence. And the deep learning methods have also been gradually applied in the field of network security. Therefore, the traditional simple detection method of manually defining rule sets is gradually eliminated. And now, applying the deep learning method to the detection of Webshell can not only improve the accuracy, but also, compared with the traditional machine learning method, can automatically extract features ,therefore, complete feature engineering more intelligently. As a result, it is a very hot topic to study Webshell detection based on deep learning. Then, this paper mainly tests Webshell written in PHP, We combine the deep learning method and the characteristics of PHP file opcode sequence, then train the test data set on the built models, and can obtain a high accuracy rate.

Key words:Webshell;opcode; word embedding; LSTM;deep learning

1 緒論

1.1項目背景及相關研究

Webshell是一種網絡頁面后門程序,也被稱為木馬,是一種Web管理工具,可以對web服務器進行操作。黑客往往利用各種漏洞上傳自己編寫的Webshell到Web服務器,從而對文件、數據庫等進行管理。黑客可以對被植入Webshell的網站進行文件的上傳和下載,調用相關系統命令等一系列惡意操作,更有甚者可以通過各種混淆的手段繞過WAF。Webshell極具隱蔽性,很難被發現,并且隨著時間的推移,其種類得到了大量的擴充。根據腳本類型可以分為PHP木馬、ASP木馬、JSP木馬和CGI木馬;按照功能則可以將其分成大馬、小馬及一句話木馬。各種Webshell的破壞性、隱藏性等都不容小覷,嚴重威脅著一個網站的安全,甚至在一些領域威脅到了國家安全。但目前大多數對于Webshell的檢測都是基于規則集的檢測方法,通過人工核定特征碼、危險函數等來識別一種特定的Webshell,雖然這種方法查找起來速度較快,但是存在很高的出錯率和遺漏率,在網站規模日益龐大的信息化時代,人工設定規則集的方式顯然不能滿足日益變化的Webshell種類。

近些年機器學習的興起和在各個領域的應用,給Webshell的檢測工作帶來了新的思路,也有相當多的學者、科研機構進行了一定的研究。例如,2016年胡必偉提出基于貝葉斯的Webshell檢測技術,同時還應用統計學檢測方法,計算文件信息熵,并以此為依據確定文件是正常文件還是Webshell文件。同時在賈文超等人近期進行的研究中,采用了隨機森林算法,提高決策樹分類強度,降低了樹間的相關度,達到了相當好的效果,同時根據其仿真實驗得出的結果可以證明,該算法提高了Webshell檢測的效率和準確率。在2018年,張涵等人在論文《基于多層神經網絡的Webshell改進檢測方法研究》中利用深度學習的卷積神經網絡對Webshell進行了檢測,利用詞向量轉換算法word2vec將經過預編譯處理得到的中間代碼進行轉換,得到特征向量。最后,利用多層神經網絡進行檢測。實驗結果證明,該方法與傳統的機器學習算法相比,有效提高了準確率,降低了丟失率,減少了人工的操作,對未知Webshell的檢測能力也得到了有效加強。

1.2研究內容

本文將主要解決深度學習在Webshell檢測中的相關應用問題,計劃利用深度學習理論智能提取惡意代碼操作碼序列特征并對分類模型進行相關研究。本文將PHP文件編譯成操作碼序列,利用循環神經網絡(RNNs-LSTM)對Webshell檢測進行模型搭建,其中還包含word2vec詞向量轉換、多層LSTM結構等。最后通過實驗數據,比較出不同層次結構模型的表現,選擇最佳的模型。

1.3論文結構

本文首先在第一章中對Webshell的相關概念及可能造成的威脅進行了介紹,同時也闡明了近些年來學界所做的相關研究,并表明我們做的研究方向和期望。

第二章中將介紹本文涉及的相關技術,主要包括深度學習的優勢、PHP操作碼序列獲取,詞向量等。

第三章則是介紹本文所提出的基于深度學習的Webshell檢測模型。

第四章中調整模型層數,獲取實驗結果進行對比,找到最佳模型。

最后在第五章中,我們對全文進行了總結,對我們所提出的模型和結果進行了分析,總結了所提出技術的優缺點,并對未來進行了展望。

2相關技術及其研究

2.1深度學習自動化特征提取

對于機器學習系統而言,特征提取是尤為關鍵的,將對整個模型的架構和最終的結果產生相當大的影響。但是傳統的機器學習又往往需要人工調整規則集,誤差較大的同時可遷移性也很差,還浪費了大量的人力物力。而深度學習在大數據中分析自動獲得所需的特征值,大大降低了人力的開銷,同時提高了檢測的準確性。因此具有相當好的效果,在各種領域中也得到了十分廣泛的應用。

2.2 PHP操作碼序列

PHP操作碼(opcode)是一種底層的代碼,類似于匯編指令,只不過該指令在PHP的Zend虛擬機中運行。執行PHP高級語言的代碼時大致會經過如下幾個步驟,如圖1所示。

(1)詞法分析,去掉注釋、空格,識別出有意義的單詞。

(2)語法分析,組合單詞成符合文法的語句。

(3)將語句編譯成一條條指令,即opcode。

(4)Zend虛擬機執行opcode,運行PHP腳本。

我們的樣本是由PHP高級語言寫成的,其中包含了各類關鍵字、標識符,單詞類別繁雜,若是直接對其進行向量化處理,將會得到一個非常大的稀疏矩陣,從而造成資源浪費。我們可以將PHP高級語言寫成的代碼轉換為一個較小的有限指令集,即PHP操作碼,然后再對操作碼進行向量化處理。

操作碼可以通過VLD(VulcanLogicDisassembler)擴展獲得。例如,cmd里運行命令“php -dvld.active=1 -dvld.execute=0 ./phpinfo.php”,可得到phpinfo.php的操作碼(圖2中的op字段)。其中,“-dvld.active=1”表示啟用擴展,“-dvld.execute=0”表示不執行該程序腳本。

下面對本地所有樣本執行該命令(部分結果如圖3所示)。第一列字段值為序號;第二列字段值為1表示是webshell文件,字段值為0表示是正常文件;第三列字段值為文件路徑;第四列字段值為操作碼;第五列字段值為操作碼個數。這樣就得到了所有樣本的操作碼序列,后續可以進行向量化。

2.3詞向量

2.3.1基本概念

機器無法直接處理現實中的語言文字,故需要將他們數學化,而詞向量就是語言文本數學化后的數據。簡單地說,通過某種方法,將語言文本中的一個個文字單位轉化成一個個向量,這些向量就稱為詞向量。

2.3.2 one-hot表示法

最簡單的向量化方法。假如有句子“afriendinneedisafriendindeed”,對句子進行處理,對單詞去重,形成一本字典,就有{“a”,“friend”,“in”,“need”,“is”,“indeed”},這個字典就作為輸入。經過one-hot表示后,輸出即為每個單詞的向量表示,比如“friend”表示為[0,1,0,0,0,0],“need”表示為[0,0,0,1,0,0]。這種方法雖然簡單,但能直觀地讓人明白向量化的過程,說明了單詞是如何數學化的。

2.3.3 基于頻率的詞向量

基于頻率的詞向量表示方法主要有CountVector、TF-IDFVector、Co-OccurenceVector。

CountVector是對句子中出現的單詞進行計數,從而生成一張二維表來表示向量化后的結果。表頭為字典,字典對所有文檔(及整個語料庫)進行去重;每一行代表一個文檔。比如,現有兩個文檔,D1=“Heishandsome”,D2=“Heishandsome,veryhandsome”。字典為{“He”,“is”,“handsome”,“very”},生成二維表如表1。

這一方法只是簡單的計數,對于一些特殊的詞匯,例如“is”“and”等在日常使用中經常出現,使用高頻,但顯然不表示重要意義。對這些詞計數實質上加大了它們的重要性,這并不合理。

TF-IDF方法則引入了逆文檔頻率的概念。逆文檔頻率IDF=log(N/n)。N為文檔總數,n代表某個單詞在多少個文檔中出現過。對于常用詞匯,更可能出現在各種文檔中,IDF的值降低了這一類詞的權重。 TF即為某個詞在某個特定文檔里出現的次數,TF與IDF的乘積就作為詞匯最終的權重,表示其重要性,相比純計數更加合理。

Co-OccurenceVector還將上下文內容考慮了進來。舉例如下,現有句子“Heisaveryhandsomeboy.Heisclever”。引入概念contextwindow表示上下文范圍,假定contextwindow=2,那么與very共現的單詞即為[“is”,“a”,“handsome”,“boy”]。取該句子的字典,下面構建共現矩陣,如表2所示。看看He這一行是怎么得到的:He出現了兩次,第一次與它共現的單詞為[“is”,“a”],第二次與它共線的單詞為[“handsome”,“boy”,“is”,“clever”],故“is”出現了兩次,除“He”“very”外,其余單詞出現次數均為1。

共現矩陣的詞向量包含了上下文語義信息,相比前面兩種方法更優秀。

2.3.4基于預測的詞向量

基于頻率的詞向量表示方法主要有連續詞袋模型(CBOW,continuesbagofwords)、跳字模型(Skip-Gram)。之前介紹的三種詞向量都有一個共同的缺點,即一旦單詞數目非常多后,矩陣會變得龐大而稀疏,造成資源浪費,處理也更加麻煩。CBOW和Skip-Gram與上述模型有相似之處,都可以包含上下文信息;不同的是,它們通過構建神經網絡的方式對向量降維,達到了壓縮詞向量的效果,使詞向量的表示更加緊密。

2.3.5word2vec工具

word2vec是Google發布的一個工具,其中就包含了上述的跳字模型和連續詞袋模型,它使用方便,可以使我們快速地將單詞向量化,然后讓機器來讀取數據。

使用該工具只需一句話:model=gensim.models.Word2Vec(sentences,min_count=1),第一個參數是訓練語料,第二個參數指小于該數的單詞會被剔除,第三個參數是神經網絡的隱藏層單元數,默認為100。

2.4本章小結

本章首先從深度學習和傳統的機器學習相比,在提取特征方面的優勢出發,著重介紹了PHP操作碼的獲取和在Webshell檢測中的應用以及詞向量的相關概念。

3基于深度學習的Webshell檢測模型的設計

3.1 RNNs-LSTM模型

長短期記憶模型LSTM(Longshort-termmemory)是一種特殊的循環神經網絡。它能夠在較長序列數據中起作用,使數據有更長距離的依賴性,解決長序列的梯度消失和梯度爆炸問題。

LSTM的輸入有三個,細胞狀態Ct-1、隱層狀態ht-1、輸入向量Xt;輸出有兩個,細胞狀態Ct、隱層狀態ht。細胞狀態的信息會一直在上面的一條線上傳遞,隱層狀態的信息一直在下面的一條線上傳遞,它們之間會有一些交互,即隱層狀態的信息會通過門結構傳遞到上層,從而對細胞狀態施加影響。

中間框部分即為門結構。σ代表sigmoid函數,它的輸出在0到1之間;tanh是雙曲正切函數,它的輸出在-1到1之間。門結構包括了遺忘門、更新門、輸出門。遺忘門對上一節點傳來的輸入進行選擇性遺忘;更新門獲得新的輸入帶來的信息并進行選擇性記憶,保留部分信息;輸出門決定哪些數據將作為當前狀態的輸出。

3.2本章小結

本章簡要介紹了長短期記憶模型LSTM及其門結構。

4實驗結果測試及分析

4.1實驗環境

Windows10下使用Python3.6.8運行,使用的IDE為VisualStudioCode

4.2 實驗模型及測試結果

使用LSTM模型進行測試。

樣本操作碼利用word2vec全部向量化后就可以作為檢測模型的輸入了。我們使用keras進行建模。keras在TensorFlow的基礎上又封裝了一層,使用方便,很適合用來做實驗。

model = Sequential()

model.add(LSTM(128, dropout=0.2, recurrent_dropout=0.2))

model.add(Dense(1, activation='sigmoid'))

model.compile(loss='binary_crossentropy',

optimizer='adam',

metrics=['accuracy'])

print('now training....')

model.fit(x_train, y_train, epochs=100, batch_size=32)

Sequential用來插入神經網絡層。add創建了一個單層的LSTM模型,其中包含128個神經元。dropou=0.2規定了每次訓練隨機丟失20%的權重,用于防止過擬合,從而增加模型的泛化能力。sigmoid函數用作神經網絡的激活函數,常用于二分類問題,它能將任何一個實數映射到(0,1)的區間里,可以用于將數據變成一個0-1分布。compile用于配置訓練時使用的損失函數、優化器、準確率評測標準。model.fit()開始訓練,參數epochs=100,即把所有訓練數據完整地迭代100遍,最終得到了0.95的準確率,如圖5所示。

4.3 結果比對及分析

增加模型層數,使用兩層和三層的LSTM模型進行訓練和測試,結果如表3所示。

從上述結果中可以發現,并不是LSTM模型的層數越多越好,兩層、三層模型的測試準確率都不如單層模型理想,三層LSTM的準確率不到0.90,相比單層低了約0.5。導致這一現象的原因可能是梯度消失,當網絡層數加深時,程序在反復學習過程中找到最佳權值以獲取最佳輸出,梯度的反向傳播導致權值的連乘效應加強,梯度效應消失,對結果造成影響。也可能是網絡層數加深導致的過擬合。結果顯示,當使用單層LSTM時,檢測效果最好,此時準確率為0.95161。

4.4 本章小結

改變LSTM模型的層數大小進行了新的訓練和測試,最終得出了檢測結果的準確率與層數多少并不成正比的結論。較多的網絡層數可能導致過擬合,從而檢測結果不準確。

5總結及展望

本文在對Webshell操作碼序列進行分析后,在已有的相關研究的基礎之上,汲取了相關思想,較為創新性的提出了基于深度學習的神經網絡模型,并將其與Webshell檢測進行結合,最終的模型測試結果取得了不錯的準確率,是切實有效的。

當然,本文所提出的模型和實驗過程也存在一定的缺陷,例如測試的過程中,雖然已經選擇了一定的實驗數據,但是在當前龐大復雜的網絡環境中,Webshell變化多端,存在各種不同的變種和類型。那么不可避免的,本文所提出的模型在對某些Webshell進行檢測時不具有普適性,或許會檢測失敗。這也是我們未來的一個進行深入研究的方向,我們在未來會持續關注這個領域的相關研究和測試,在測試中不斷完善本文所提出的模型,爭取在更多的測試用例中都取得優良的結果,以使得我們的模型更具有普適性。

參考文獻:

[1] 胡必偉.基于貝葉斯理論的Webshell檢測方法研究[J].科技廣場,2016(6):66-70.

[2] 張涵,薛質,施勇.基于多層神經網絡的Webshell改進檢測方法研究[J].通信技術,2019,52(1):179-183.

[3] YoonKim.ConvolutionalNeural Networks for Sentence Classfication[R].Neural and Evolutionary Computing,2014.

[4] He K M,ZhangX Y,Ren SQ,etal.Deep residual learning for image recognition[C]//2016 IEEE Conference on Computer Vision and Pattern Recognition (CVPR).June 27-30,2016,Las Vegas,NV,USA.IEEE,2016:770-778.

[5] He KM,SunJ.Convolutional neural networks at constrained time cost[C]//2015 IEEE Conference on Computer Vision and Pattern Recognition (CVPR).June7-12,2015,Boston,MA,USA.IEEE,2015:5353-5360.

[6] Behrens S,Hagen B. Web shell detection using NeoPI[EB/OL].(2012-04-13)[2017-11-6].

[7] 賈文超,戚蘭蘭,施凡,等.采用隨機森林改進算法的WebShell檢測方法[J].計算機應用研究,2018,35(5):1558-1561.

【通聯編輯:代影】

猜你喜歡
深度學習
從合坐走向合學:淺議新學習模式的構建
面向大數據遠程開放實驗平臺構建研究
基于自動智能分類器的圖書館亂架圖書檢測
搭建深度學習的三級階梯
有體驗的學習才是有意義的學習
電子商務中基于深度學習的虛假交易識別研究
現代情報(2016年10期)2016-12-15 11:50:53
利用網絡技術促進學生深度學習的幾大策略
考試周刊(2016年94期)2016-12-12 12:15:04
MOOC與翻轉課堂融合的深度學習場域建構
大數據技術在反恐怖主義中的應用展望
深度學習算法應用于巖石圖像處理的可行性研究
軟件導刊(2016年9期)2016-11-07 22:20:49
主站蜘蛛池模板: 国产免费福利网站| 欧美成人一级| 色妺妺在线视频喷水| 亚洲欧美日韩天堂| 亚洲区第一页| 免费va国产在线观看| 久久77777| 国产亚洲视频免费播放| 国产精品对白刺激| 日韩色图在线观看| yjizz国产在线视频网| 亚洲欧美极品| 99精品热视频这里只有精品7| 性网站在线观看| 国产特级毛片aaaaaa| 亚洲男人天堂2020| 国产av色站网站| 黄色污网站在线观看| 国内老司机精品视频在线播出| 国产欧美日韩视频怡春院| 无码电影在线观看| 国产91在线免费视频| 欧美日韩中文字幕二区三区| 91久久夜色精品国产网站| 亚欧美国产综合| 亚洲激情99| 91久久国产综合精品女同我| 色婷婷在线播放| 超清无码一区二区三区| 91青青在线视频| www.精品国产| 国产成人1024精品| 国产乱子伦精品视频| 久久亚洲国产一区二区| 国产高清在线丝袜精品一区 | 亚洲永久视频| 国模私拍一区二区三区| 精品福利网| 欧美午夜在线播放| 伊人AV天堂| 高清无码一本到东京热| 亚洲人成日本在线观看| 成人午夜视频网站| 欧美一区日韩一区中文字幕页| 中国国产高清免费AV片| 五月激情综合网| 在线免费无码视频| 久久国产热| 国产成人av一区二区三区| 欧美高清三区| 国禁国产you女视频网站| 免费可以看的无遮挡av无码| 国产成人精品三级| 成人免费午夜视频| 国产理论最新国产精品视频| 一个色综合久久| 999在线免费视频| 看你懂的巨臀中文字幕一区二区 | 国产精品色婷婷在线观看| 久久国产亚洲欧美日韩精品| 日韩无码真实干出血视频| 一级毛片在线播放免费| 亚洲国产综合精品一区| 女人av社区男人的天堂| 国产精品第一区| 呦视频在线一区二区三区| 亚洲福利网址| www中文字幕在线观看| 日韩a级毛片| 欧美日韩中文国产va另类| 18禁色诱爆乳网站| 日韩欧美视频第一区在线观看| 久久人妻系列无码一区| 伊伊人成亚洲综合人网7777| 青青操国产| 国产美女视频黄a视频全免费网站| 日韩欧美中文在线| 高潮毛片无遮挡高清视频播放 | 中文字幕亚洲乱码熟女1区2区| 国产区网址| 中国精品久久| 播五月综合|