亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于RNN的Webshell檢 測研究

        2020-07-17 08:19:46龍,王晨,史
        計算機工程與應(yīng)用 2020年14期
        關(guān)鍵詞:源文件字符串準確率

        周 龍,王 晨,史 崯

        1.武漢郵電科學(xué)研究院,武漢 430000

        2.南京烽火軟件科技股份有限公司,南京 210000

        1 引言

        Webshell是一種惡意代碼,可用于網(wǎng)站管理,主要由PHP、asp、jsp等語言編寫而成。一旦Webshell源文件被入侵者成功植入到服務(wù)器中,入侵者就可通過瀏覽器訪問Webshell,獲取相關(guān)操作權(quán)限,控制服務(wù)器,竊取重要數(shù)據(jù)。

        Webshell可分為兩類,一是小馬,二是大馬。小馬,源文件代碼量較少,通常是幾行到幾十行不等,其功能主要是文件上傳、執(zhí)行命令行程序等。大馬,文件大小少則幾KB,多則幾百KB,甚至超過1 MB,功能復(fù)雜,包括執(zhí)行命令行程序、上傳文件、權(quán)限提升、端口掃描、數(shù)據(jù)庫操作等。此外,大馬要完成其功能還需要其他源文件的配合,協(xié)同作戰(zhàn),達到攻擊目的。

        2 相關(guān)工作

        針對Webshell的檢測方法,可分為3類:基于文件的檢測、基于流量的檢測以及基于日志的檢測。

        目前的研究集中于基于文件的檢測,即直接分析源文件,提取文本特征,包括API函數(shù)名稱、變量名稱、信息熵、最長字符串、文件壓縮比、重合指數(shù)、字符串長度差等。此外,還可針對具體腳本語言,根據(jù)其執(zhí)行機制,提取編譯結(jié)果的特征,比如字節(jié)碼特征等。當前機器學(xué)習相關(guān)技術(shù)的應(yīng)用也是學(xué)術(shù)界的研究熱點,網(wǎng)絡(luò)安全就是其中一個領(lǐng)域。正常web系統(tǒng)其源文件的編碼命名規(guī)范有別于Webshell源文件?;诖讼敕?,文獻[1]提出將余弦相似度應(yīng)用于Webshell檢測,通過比較不同文件的余弦相似度,以及匹配特征關(guān)鍵詞來判斷Webshell,但是漏報率和誤報率較高。文獻[2]針對PHP源文件,進行語法分析,將生成的文件指紋用于Webshell檢測,再進一步進行污點分析。該方法依賴于預(yù)先設(shè)定的樣本庫,且準確率較低。文獻[3]將MLP(多層感知機)應(yīng)用于檢測Webshell,將源文件編譯之后,根據(jù)TF-IDF提取Bi-Gram特征,此方法,需要將源文件預(yù)先編譯,且準確率較低。文獻[4]將MLP與word2vec相結(jié)合,提取100維詞向量,來檢測Webshell,在驗證集上實現(xiàn)了平均準確率98.6%,取得了較好的效果,但是依賴于word2vec的預(yù)先訓(xùn)練好的詞向量。此外,文獻[5]將神經(jīng)網(wǎng)絡(luò)應(yīng)用于獲取樣本的文本向量,再結(jié)合以SVDD(Support Vector Domain Description,SVDD)算法來檢測Webshell,誤報率較高。國外也有關(guān)于基于文件的檢測研究。Wrench P M等人[6]提出了解除混淆,基于聚類的方法對PHP程序設(shè)計語言編寫的Webshell源文件進行分類。而Tu T D等人[7]提出一種基于最優(yōu)閾值的算法檢測Webshell。

        基于流量的檢測,相對基于文件的檢測而言,研究較少。趙運弢等人[8]分析了基于流量的檢測方法,指出通過網(wǎng)絡(luò)流量負載,提取具有明顯攻擊傾向的關(guān)鍵詞來檢測Webshell。文獻[9]結(jié)合關(guān)鍵詞、機器學(xué)習算法和手動校驗,先匹配關(guān)鍵詞,再使用機器學(xué)習算法檢測關(guān)鍵詞匹配之后的樣本,最后手動校驗。此方法嚴重依賴于校驗人員的經(jīng)驗。

        基于日志的檢測,一般情況下針對系統(tǒng)日志信息進行統(tǒng)計分析。文獻[10]針對http行為日志進行統(tǒng)計分析,對比分析了幾種常規(guī)機器學(xué)習算法檢測Webshell的性能。文獻[11]利用日志數(shù)據(jù),結(jié)合特征匹配和頁面關(guān)聯(lián)分析,來檢測Webshell。

        目前,關(guān)于Webshell的檢測方法,常用的機器學(xué)習算法,比如SVM、KNN、MLP等,不能提取深層次的特征,存在準確率較低、誤報率和漏報率較高等不足?;谔卣髌ヅ涞臋z測算法,受限于特征,不能有效檢測出Webshell。而深度學(xué)習方法則可以很好地解決此類問題。鑒于此,本文提出了基于RNN的Webshell檢測方法。

        3 基于RNN的Webshell檢測

        RNN[12](Recurrent Neural Network)是一種深度學(xué)習方法,具有循環(huán)結(jié)構(gòu),被廣泛應(yīng)用于語音識別、機器翻譯、文本處理等領(lǐng)域。RNN中的循環(huán)結(jié)構(gòu),有多種選擇,本文選取GRU(Gated Recurrent Unit)。GRU是LSTM(Long Short Term Memory)[13]諸多變體中的一個,在很多領(lǐng)域都得到了大量的使用。

        本文Webshell檢測方法的處理流程見圖1。傳統(tǒng)的Webshell檢測方法多是將提取的樣本的各種特征表示成一個向量,包括信息熵、重合指數(shù)、文件壓縮比等特征,再使用機器學(xué)習算法分類。即使提取樣本關(guān)鍵詞,也將每個關(guān)鍵詞對應(yīng)一個特征,統(tǒng)計該關(guān)鍵詞的詞頻等。而本文則從關(guān)鍵詞集來近似樣本的角度,通過提取關(guān)鍵詞,使用樣本對應(yīng)的關(guān)鍵詞集來近似表示樣本,排除了樣本中的無用噪聲,在此基礎(chǔ)上使用RNN對樣本建模。

        圖1 Webshell檢測流程

        3.1 數(shù)據(jù)預(yù)處理

        預(yù)處理是對源文件進行處理,以提高效率和識別準確率。預(yù)處理工作包括切詞、提取關(guān)鍵詞等。

        切詞,對文本數(shù)據(jù)進行切分,得到具有一定實際意義的詞。

        提取關(guān)鍵詞,出于效率的考慮,以及并不是每個詞都有助于識別,由此,需要對切詞結(jié)果進行取舍。

        總體上來說,源文件中的每一部分,都是為程序?qū)崿F(xiàn)相關(guān)功能服務(wù)的,相輔相成。程序代碼用來實現(xiàn)其功能,而注釋是對程序代碼的補充,依賴于具體程序而存在,以提高可讀性,以及記錄重要信息。不同的源文件,注釋不盡相同。因此,在切詞之前,保留源文件中的所有信息,包括注釋等。

        3.1.1 切詞

        切詞,是根據(jù)某種規(guī)則對文本文件中的文本進行切割。程序代碼是由自然語言編寫的,因此,除了正常的英語之外,還可能存在其他語言,比如中文等。不同的語言,切詞規(guī)則不同,英語是根據(jù)空格進行切分,中文是根據(jù)相關(guān)語法、語義等信息來切割。

        鑒于PHP源文件中有英語和中文,以及大量的運算符和標點符號。中文字符一般作為注釋或者變量值,數(shù)量遠遠少于英文字符。而英文字符是程序代碼的主體部分,具有實現(xiàn)相關(guān)功能的作用。

        因此,采用以非字母和非數(shù)字字符作為分割符來切分源文件。切詞之后,存在大量的各種字母和數(shù)字字符串,包括單個字母、單個數(shù)字、字母組成的字符串、數(shù)字串等,這些字符串可能是變量名稱、函數(shù)名稱等。字符串字符長度范圍變化較大,從1到1 000不等,甚至少量字符串超過1 000個字符。

        按照上述方法對整個數(shù)據(jù)集切詞,統(tǒng)計分析發(fā)現(xiàn),約95.02%的字符串長度小于25,其中小于25個字符的字符串數(shù)量情況見圖2。

        圖2 不同長度的字符串數(shù)量

        從圖2中可見,字符串主要集中在長度小于15的短字符串。對于長度為小于4的字符串一般是沒有實際意義的變量名或變量值的一部分,幾乎在每個樣本中都會大量出現(xiàn)。而字符串長度大于等于15的字符串大多是經(jīng)過編碼和加密處理之后的字符串,此類字符串詞頻極低,且對源文件幾乎沒有區(qū)分能力。因此,只保留字符串長度介于3到15之間的字符串。

        3.1.2 提取關(guān)鍵詞

        由于各個源文件實現(xiàn)的功能有差異,導(dǎo)致源文件的大小不一。即使這些源文件實現(xiàn)的功能相同,但由于編寫人員之間的差異性,包括編碼習慣不同、編碼水平差異等,其文件大小也不同。關(guān)鍵詞提取,極大地減少了模型訓(xùn)練時間,在一定程度上屏蔽了編碼人員之間的差異性,均衡樣本之間字符串數(shù)量差異。

        本文采用TF-IDF算法來提取關(guān)鍵詞。TF-IDF算法是基于詞頻和逆文檔頻率。通常情況下,對于詞頻越高的詞,其越能表示文本的信息,對分本的區(qū)分能力則越強。而逆文檔頻率越高,該詞出現(xiàn)過的文檔越少,對文本也有很好的區(qū)分能力。因此,TF-IDF算法偏向于選擇詞頻高且出現(xiàn)過的文本少的詞。

        正常源文件和Webshell源文件,因?qū)崿F(xiàn)的功能有差別,調(diào)用的API函數(shù)不同。正常源文件,總體上調(diào)用了幾乎所有的API函數(shù),而Webshell源文件中調(diào)用的主要是系統(tǒng)函數(shù),包括文件操作、執(zhí)行命令行程序等。對于變量名稱,正常源文件一般是見名知意,可讀性強,相比而言,Webshell文件這種特征不明顯。因此,TF-IDF算法可有效地用于關(guān)鍵詞提取。TF-IDF算法提取關(guān)鍵詞示例見表1。

        3.2 模型結(jié)構(gòu)

        本文使用的GRU參考于文獻[14],GRU是對vanillaLSTM[15]復(fù)雜結(jié)構(gòu)的簡化,LSTM結(jié)構(gòu)見圖3,GRU結(jié)構(gòu)見圖4。

        表1 關(guān)鍵詞示例

        圖3 vanilla LSTM結(jié)構(gòu)圖

        圖4 GRU結(jié)構(gòu)圖

        原始的LSTM中有3個門,輸入門、輸出門、遺忘門,而GRU只有更新門(update gate)和重置門(reset gate)2個門。此外,LSTM有cell狀態(tài)的循環(huán)更新,而GRU中則去掉了cell,取而代之的是更多的直接依賴于GRU的輸出h的加法和乘法運算。

        GRU結(jié)構(gòu)中信息流向見方程(1)~(4)。其中重置門和更新門計算方式見方程(1)和(2),可見兩個門都依賴于上一時刻的輸出和當前時刻的輸入,兩者之間是加法關(guān)系。GRU的輸出計算方式見方程(3)和(4),兩個門通過其值域限制了上一時刻信息的通過量,即上一時刻的輸出,因為門的存在部分信息流向當前時刻的輸出,而剩余的信息則被當前時刻的輸出丟掉。另外,方程(4)是對中間狀態(tài)和加權(quán)平均,根據(jù)門的取值偏向于兩者中的一個。重置門的計算方程:

        更新門計算方程:

        GRU輸出計算方程:

        其中,符號⊙表示對應(yīng)元素相乘,x表示輸入,h表示某時刻的輸出,t表示時間,取值范圍[1,T],l表示層,取值范圍[1,L],W,U分別表示對應(yīng)的權(quán)值矩陣,σ是sigmoid函數(shù),值域為[0,1],分別對應(yīng)于各個門。

        從方程中可見,GRU的相鄰時刻的輸出聯(lián)系緊密,上一個時刻的輸出貫穿了當前時刻的輸出的整個計算流。

        一般情況下,對于這種分類問題,通常是取RNN的最后一層的最后一個時刻的輸出,即hLT。而多層RNN的每一層都提取不同的特征[16],簡單地使用最后一層的特征,利用的信息量較少。因此,本文利用每一層的特征表示,即將每一層的最后時刻的輸出hlT合并,見方程(5),然后通過一個線性映射到一個特征向量hG,維度與hl T相同,矩陣W是線性映射的系數(shù),見方程(6)。

        3.3 實驗參數(shù)設(shè)置

        實驗使用的RNN結(jié)構(gòu)由2層GRU構(gòu)成,其隱層單元數(shù)量取200,見圖5。經(jīng)過多次迭代,多層GRU的每層的最后輸出映射到一個向量,該向量通過一個全連接層映射到一個2維向量,通過一個softmax函數(shù)輸出樣本所屬類別的概率。實驗采用Adam[17]優(yōu)化算法,學(xué)習率初值取0.001,每1 000步指數(shù)衰減,衰減比率取0.8。損失函數(shù)選擇交叉熵,為防止過擬合,選擇L2損失,系數(shù)取0.001。

        在RNN模型之前還有一個詞嵌入層,用于將詞映射成詞向量,參數(shù)是一個隨機初始化的矩陣。針對預(yù)處理之后的訓(xùn)練集,建立一個詞表,將所有詞加入到詞表,若某個詞不在詞表中,則加入到詞表;反之,不作處理。每個詞表中的詞都有一個唯一的索引。通過詞嵌入層,可將樣本中詞序列根據(jù)詞索引映射成一個詞向量序列,詞的索引對應(yīng)于矩陣行號。該矩陣初值每個元素服從0均值,方差為1的高斯分布。

        圖5 網(wǎng)絡(luò)結(jié)構(gòu)圖

        4 實驗

        4.1 數(shù)據(jù)來源

        實驗數(shù)據(jù)都來自于Github,其中Webshell樣本是在GitHub中搜索Webshell,取前6個搜索結(jié)果,取其中的PHP源文件,而正常樣本是在GitHub中搜索web,編程語言選擇PHP,排除其中Webshell相關(guān)搜索結(jié)果,選擇前50個,取其中的PHP源文件。所有樣本都是PHP源文件,數(shù)量情況見表2。

        表2 各類樣本數(shù)量及占比

        樣本總量為1 307+11 746=13 053個,由表2可知,Webshell樣本和正常樣本之比接近1∶10。

        4.2 數(shù)據(jù)集劃分

        將數(shù)據(jù)集劃分成測試集、訓(xùn)練集,具體情況見表3。

        表3 各數(shù)據(jù)子集樣本數(shù)量

        表3中測試集用于最后測試模型在未知樣本的情況下的預(yù)測性能,而訓(xùn)練集又進一步劃分為2個子集,用于模型的訓(xùn)練和驗證。由于數(shù)據(jù)集中Webshell樣本和正常樣本之比接近1∶10,因此,隨機過采樣至1∶1。

        4.3 評級指標

        Webshell的檢測是個二分類問題,選擇準確率、漏報率、誤報率3個指標來綜合評價算法的性能。相關(guān)符號表示見表4。

        表4 實際類別和預(yù)測類別符號標記

        準確率(Accuracy,Acc),正確分類的樣本比例,方程如下:

        漏報率(Rate of missing report,Rmr),在實際是Webshell的樣本中,被預(yù)測為正常樣本的比例,方程如下:

        誤報率(False alarm rate,F(xiàn)ar),在預(yù)測為Webshell的樣本中,實際是正常樣本的比例,方程如下:

        4.4 實驗結(jié)果

        本文主要從算法的角度來評價Webshell的檢測性能,對比分析了不同算法對PHP源文件的檢測性能。

        對于GRU(本文方法)、SVM、GBDT(Gradient Boosting Decision Tree)和CNN 4種算法,訓(xùn)練10 000步,每種算法都取驗證集上準確率最高的模型參數(shù),其中GRU驗證集準確率為99.34%,明顯要優(yōu)于其他3種算法。

        針對測試集中的未知樣本,Webshell樣本113個,正常樣本887個,4種算法的具體檢測情況見表5。

        表5 測試集檢測結(jié)果

        綜合來看,針對未知樣本,GRU明顯優(yōu)于其他3種算法。GRU的分類準確率明顯高于CNN、GBDT、SVM。雖然GRU的誤報數(shù)量多于GBDT達23個,但是漏報數(shù)量明顯低于GBDT,并且GRU的準確率為97.4%,高于GBDT約4%,誤報率高于GBDT約2%。其中CNN中所使用的卷積是5×5,提取文本的局部特征,可能由于數(shù)據(jù)本身的字符串數(shù)量不同,以及提取關(guān)鍵詞之后,又不同程度地丟掉了信息,導(dǎo)致根據(jù)從數(shù)據(jù)中提取的特征不能有效區(qū)分Webshell。GRU將文本當作序列數(shù)據(jù)來處理,提取樣本的順序特征,并結(jié)合不同層的不同特征,即使預(yù)處理丟掉了較多沒有實際意義的字符串和對文件區(qū)分能力較弱的字符串,包括少量的變量名稱、較多的變量值,以及函數(shù)的部分名稱等,但是保留了可用于區(qū)分正常文件和Webshell文件的字符串。因此,可有效識別出Webshell,且識別率最優(yōu)。

        以上實驗結(jié)果,TF-IDF提取了每個樣本的200個關(guān)鍵詞??赏ㄟ^調(diào)整字符串長度取值范圍來為關(guān)鍵詞提取提供更多的字符串,增加關(guān)鍵詞數(shù)量來減少每個樣本預(yù)處理丟掉的信息,減少原始樣本和近似樣本的差異,但是增加關(guān)鍵詞數(shù)量,模型的訓(xùn)練時間會延長。

        5 結(jié)束語

        本文提出的一種基于RNN的Webshell檢測方法,采用GRU網(wǎng)絡(luò)結(jié)構(gòu),有效地解決了Webshell的檢測。對樣本的主要成分PHP程序代碼切詞,根據(jù)TF-IDF算法提取關(guān)鍵詞,關(guān)鍵詞保持原始順序不變。實驗結(jié)果表明,在準確率、漏報率等指標上,該方法要優(yōu)于其他檢測算法,比如CNN、GBDT、SVM等。但是,誤報率還有提升的空間。

        在下一步的研究中,可提取更多的關(guān)鍵詞,結(jié)合BiRNN(Bidirectional Recurrent Neural Network),提取樣本數(shù)據(jù)兩個方向上的特征。此外,切詞對Webshell的檢測結(jié)果有重要影響,需要調(diào)整切詞方法,使得切出來的詞具有實際意義,進一步提升算法的檢測性能。

        猜你喜歡
        源文件字符串準確率
        乳腺超聲檢查診斷乳腺腫瘤的特異度及準確率分析
        健康之家(2021年19期)2021-05-23 11:17:39
        不同序列磁共振成像診斷脊柱損傷的臨床準確率比較探討
        2015—2017 年寧夏各天氣預(yù)報參考產(chǎn)品質(zhì)量檢驗分析
        網(wǎng)絡(luò)社區(qū)劃分在軟件質(zhì)量問題分析中的應(yīng)用
        基于源文件可疑度的軟件缺陷定位方法研究
        高速公路車牌識別標識站準確率驗證法
        LKJ基礎(chǔ)數(shù)據(jù)源文件自動編制系統(tǒng)的研究
        一種新的基于對稱性的字符串相似性處理算法
        誤寫C源文件擴展名為CPP的危害
        依據(jù)字符串匹配的中文分詞模型研究
        中文字幕在线乱码av| 中文少妇一区二区三区| 熟妇激情内射com| 一区二区在线观看日本视频| 在线精品国内视频秒播| 日韩国产精品无码一区二区三区| 亚洲精品一区二区三区新线路| 国产主播一区二区在线观看| 日本高清中文字幕一区二区三区| 欧美日韩精品一区二区在线视频| 老熟女熟妇嗷嗷叫91| 在线久草视频免费播放| 国产人妻高清国产拍精品| 亚洲精品无码乱码成人| 2021国产精品一区二区在线| 久久精品伊人久久精品| 国产在线第一区二区三区| 国产精品jizz视频| 99成人无码精品视频| 91快射视频在线观看| 99热在线观看| 欧美丰满大爆乳波霸奶水多| 久久免费网站91色网站| 亚洲综合偷自成人网第页色| 成人无码α片在线观看不卡| 国产成人77亚洲精品www| 又爽又猛又大又湿的视频| 亚洲av熟女少妇久久| 天堂…在线最新版资源| 成人在线免费视频亚洲| 国产福利不卡视频在线| 又粗又大又硬毛片免费看| 国际无码精品| av福利资源在线观看| 91中文人妻熟女乱又乱| 波多野结衣乳巨码无在线| 亚洲www视频| 日韩精品一区二区免费| 日韩欧美人妻一区二区三区 | 亚洲视频一区二区蜜桃| 亚洲国产成人极品综合|