国产日韩欧美一区二区三区三州_亚洲少妇熟女av_久久久久亚洲av国产精品_波多野结衣网站一区二区_亚洲欧美色片在线91_国产亚洲精品精品国产优播av_日本一区二区三区波多野结衣 _久久国产av不卡

?

基于多特征融合的Webshell惡意流量檢測(cè)方法

2022-01-18 08:25李源王運(yùn)鵬李濤馬寶強(qiáng)
關(guān)鍵詞:數(shù)據(jù)包分類(lèi)器載荷

李源,王運(yùn)鵬,李濤,馬寶強(qiáng)

(四川大學(xué)網(wǎng)絡(luò)空間安全學(xué)院,四川 成都 610065)

1 引言

隨著Web應(yīng)用的爆炸式增長(zhǎng),Web應(yīng)用系統(tǒng)遭受攻擊的事件越來(lái)越多,帶來(lái)的損失和影響也越來(lái)越大。據(jù)中國(guó)產(chǎn)業(yè)互聯(lián)網(wǎng)發(fā)展聯(lián)盟公布的《2019中國(guó)主機(jī)安全服務(wù)報(bào)告》[1]顯示,2019年中國(guó)境內(nèi)企業(yè)用戶服務(wù)器感染病毒木馬事件超過(guò)百萬(wàn)起。其中Webshell惡意程序感染事件占73.27%。從攻擊者的角度看,植入Webshell是攻擊者進(jìn)行持續(xù)滲透的基礎(chǔ)和前提。因此,為了保障Web服務(wù)器的安全,Webshell檢測(cè)顯得尤為重要。Apache是目前應(yīng)用最普遍的Web應(yīng)用系統(tǒng)[2],在Web應(yīng)用方面具有最為廣泛的代表性,因此本文以Apache服務(wù)器上的Webshell檢測(cè)為研究和實(shí)驗(yàn)對(duì)象。

針對(duì)Webshell的檢測(cè)主要有3個(gè)研究方向:基于文本的靜態(tài)檢測(cè)方法、基于Web日志的事后檢測(cè)以及基于通信流量的檢測(cè)[3]。在基于文本的靜態(tài)Webshell檢測(cè)研究中,研究者主要從代碼層面上對(duì)惡意程序進(jìn)行檢測(cè),常用的檢測(cè)方法是檢查程序中是否包含Webshell執(zhí)行時(shí)所需的系統(tǒng)函數(shù)[4],此方法檢測(cè)效率高,但難以識(shí)別經(jīng)過(guò)混淆加密后的Webshell。為了對(duì)抗混淆的Webshell惡意代碼,Ai等[5]提出使用PHP VLD插件獲得PHP程序編譯時(shí)產(chǎn)生的字節(jié)碼,并經(jīng)N-gram分詞后生成的執(zhí)行序列作為區(qū)分正常文件和Webshell文件的檢測(cè)特征,此模型對(duì)基于PHP語(yǔ)言的Webshell有較好的檢測(cè)效果,但對(duì)于其他語(yǔ)言編寫(xiě)的Webshell,不能提取其編譯時(shí)的字節(jié)碼,因此無(wú)法檢測(cè)。崔艷鵬等[6]提出使用信息熵、最長(zhǎng)單詞、重合指數(shù)、壓縮比等統(tǒng)計(jì)特征作為區(qū)分正常和惡意程序的特征,該方法能夠在一定限度上識(shí)別經(jīng)過(guò)加密混淆后的Webshell文件,但通常需要配合其他方法一同檢測(cè)以防止產(chǎn)生誤報(bào)。Li等[7]提出使用神經(jīng)網(wǎng)絡(luò)模型GRU代替人工提取特征,但該方法在對(duì)文件進(jìn)行分詞時(shí)并未考慮代碼經(jīng)過(guò)編后(如base64編碼)仍可能出現(xiàn)詞向量維度過(guò)大導(dǎo)致訓(xùn)練難度增加、效率降低的問(wèn)題;基于Web日志的事后檢測(cè)是在攻擊發(fā)生后通過(guò)對(duì)Web應(yīng)用運(yùn)行日志進(jìn)行分析、溯源,以檢測(cè)Webshell通信行為[8],但由于Web日志本身屬于格式化處理后的文件,信息丟失較多,因而檢測(cè)效果有限;在基于通信流量的檢測(cè)研究上,研究者常采用對(duì)實(shí)時(shí)流量進(jìn)行捕獲分析來(lái)挖掘通信過(guò)程中可能存在的Webshell惡意流量。2018年,Yang等[9]采用基于4-gram分詞的SVM算法對(duì)數(shù)據(jù)包中的URL請(qǐng)求路徑和請(qǐng)求體進(jìn)行訓(xùn)練以識(shí)別數(shù)據(jù)包中的惡意流量;Zhang等[10]選擇使用CNN+LSTM神經(jīng)網(wǎng)絡(luò)組合模型對(duì)數(shù)據(jù)包整個(gè)請(qǐng)求包載荷的ASCII序列進(jìn)行訓(xùn)練生成分類(lèi)模型,以實(shí)現(xiàn)對(duì)Webshell惡意流量的檢測(cè),而由于在訓(xùn)練過(guò)程中加入過(guò)多與流量識(shí)別無(wú)關(guān)的信息,因此檢測(cè)效率不高。此外,這兩種基于通信流量的檢測(cè)方法均只能完成對(duì)正?;驉阂饬髁康亩诸?lèi)檢測(cè),未能對(duì)Webshell惡意流量屬于何種攻擊類(lèi)型做出判斷,不利于有針對(duì)性的Web防御和加固。

總的來(lái)說(shuō),以上3種檢測(cè)方法,難以高效、精確地對(duì)Webshell進(jìn)行檢測(cè)和分類(lèi),并不能有效阻止通信過(guò)程中Webshell行為所造成的危害。因此本文從Web通信流量出發(fā),以多源視角提取不同維度的靜態(tài)特征,并通過(guò)特征融合和算法集成的方式來(lái)挖掘網(wǎng)絡(luò)流量中可能存在的Webshell惡意通信行為。主要貢獻(xiàn)如下。

1) 提出了一種基于多特征融合的檢測(cè)方法,融合了不同維度的數(shù)據(jù)流特征,彌補(bǔ)了單一特征識(shí)別能力不足的問(wèn)題,能夠在不同類(lèi)型的Webshell的識(shí)別上都有較高的檢測(cè)能力,進(jìn)一步細(xì)化不同種類(lèi)的Webshell攻擊。

2) 提出基于集成學(xué)習(xí)的Webshell分類(lèi)模型,通過(guò)結(jié)合不同學(xué)習(xí)器各自的優(yōu)勢(shì)生成分類(lèi)模型,降低模型在Webshell多分類(lèi)情況下出現(xiàn)誤報(bào)的概率。

2 多特征融合檢測(cè)方法

2.1 檢測(cè)框架

Webshell惡意流量檢測(cè)模型的總體框架如圖1所示,包括數(shù)據(jù)預(yù)處理、特征提取和異常檢測(cè)3個(gè)階段。

圖1 Webshell惡意流量檢測(cè)模型的總體框架Figure 1 Webshell malicious traffic detection model framework

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

對(duì)采集到的原始流量進(jìn)行解析后依次過(guò)濾非正常響應(yīng)、媒體資源文件的數(shù)據(jù)包,并對(duì)通信過(guò)程中產(chǎn)生的分段數(shù)據(jù)包按五元組<源IP,源端口,目的IP,目的端口,協(xié)議>將相同的源和目的IP地址合并為一次的完整通信會(huì)話,并生成文本向量用于特征提取。

(2)特征提取

對(duì)原始流量進(jìn)行預(yù)處理得到的文本向量,從數(shù)據(jù)包元信息、數(shù)據(jù)包載荷內(nèi)容以及流量訪問(wèn)行為3個(gè)維度提取特征,并將融合后的特征向量作為特征數(shù)據(jù)集。

(3)異常檢測(cè)

將融合后的特征數(shù)據(jù)集輸入至包含4個(gè)初級(jí)分類(lèi)器和1個(gè)次級(jí)分類(lèi)器的Stacking集成模型并保存模型參數(shù),通過(guò)模型對(duì)未知流量進(jìn)行識(shí)別分類(lèi),以實(shí)現(xiàn)對(duì)具體攻擊類(lèi)型的分類(lèi)。

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

數(shù)據(jù)預(yù)處理模塊主要由數(shù)據(jù)包解析、數(shù)據(jù)包分段重組、數(shù)據(jù)包解碼以及數(shù)據(jù)包過(guò)濾4部分組成。數(shù)據(jù)包解析主要完成對(duì)捕獲的二進(jìn)制流量按網(wǎng)絡(luò)協(xié)議進(jìn)行逐層解析,生成可讀的網(wǎng)絡(luò)封包的詳細(xì)信息以供特征提取階段使用;數(shù)據(jù)包分段重組主要完成對(duì)來(lái)自同一個(gè)數(shù)據(jù)包產(chǎn)生的分段數(shù)據(jù)包的重組;數(shù)據(jù)包解碼主要完成對(duì)編碼后的數(shù)據(jù)進(jìn)行數(shù)據(jù)還原;數(shù)據(jù)包過(guò)濾主要采用文件頭標(biāo)識(shí)來(lái)處理數(shù)據(jù)流中的多媒體資源文件,以避免其中的不可見(jiàn)字符對(duì)模型訓(xùn)練造成干擾。

2.2.1數(shù)據(jù)包解析

本文主要使用基于Python編程語(yǔ)言的數(shù)據(jù)包解析工具Scapy庫(kù)[11]對(duì)采集的網(wǎng)絡(luò)流量進(jìn)行處理。Scapy庫(kù)是一個(gè)功能強(qiáng)大的數(shù)據(jù)包處理工具,利用該工具可以輕松實(shí)現(xiàn)發(fā)送、嗅探、解析和偽造網(wǎng)絡(luò)數(shù)據(jù)包。本文使用Scapy解析并提取數(shù)據(jù)包字段(時(shí)間戳、請(qǐng)求類(lèi)型、確認(rèn)號(hào)、序列號(hào)、源IP地址、目的IP地址、有效載荷、數(shù)據(jù)包大小等)。對(duì)取值為離散值的字段需要其進(jìn)行編碼,如請(qǐng)求類(lèi)型字段為:GET、POST等,則對(duì)應(yīng)編碼為GET=1,POST=2。

2.2.2數(shù)據(jù)包分段重組

當(dāng)發(fā)送端發(fā)送的數(shù)據(jù)包長(zhǎng)度大于通信雙方協(xié)商的每一個(gè)報(bào)文段所能承載的最大數(shù)據(jù)長(zhǎng)度MSS(maximum segment size)時(shí),需要對(duì)數(shù)據(jù)包進(jìn)行分段傳輸,產(chǎn)生多個(gè)具有完整首部的TCP報(bào)文段。為了在接收端將來(lái)自同一個(gè)數(shù)據(jù)包產(chǎn)生的多個(gè)報(bào)文段進(jìn)行重組還原,本文首先將捕獲到待重組報(bào)文段按照序列號(hào)由小到大排列得到[seqk1,seqk2,…, seqk n]。對(duì)于序列號(hào)為seqi的報(bào)文段,其TCP長(zhǎng)度為T(mén)CP - payloadi,則下一個(gè)分片序列號(hào)為seqi+ TCP - payloadi。以此類(lèi)推,可將所有來(lái)自相同數(shù)據(jù)包產(chǎn)生的報(bào)文段按順序拼接完成。

2.2.3數(shù)據(jù)包解碼

當(dāng)發(fā)送端發(fā)送請(qǐng)求包中的請(qǐng)求地址字段包含特殊字符時(shí),根據(jù)RFC 3986協(xié)議[12]規(guī)定,需要在數(shù)據(jù)傳輸前對(duì)其進(jìn)行編碼,具體操作為使用百分號(hào)和對(duì)應(yīng)的ASCII值進(jìn)行替換。因此,對(duì)于經(jīng)過(guò)編碼后的請(qǐng)求地址字段內(nèi)容,如:“/index?id=shop%23name”,需要進(jìn)行解碼得到原始請(qǐng)求字段內(nèi)容為“index?id=shop#name”。

2.2.4數(shù)據(jù)包過(guò)濾

為了縮短模型在預(yù)處理階段所花的時(shí)間,同時(shí)避免數(shù)據(jù)流中的不可見(jiàn)字符影響模型訓(xùn)練效果,需要對(duì)采集到的網(wǎng)絡(luò)流量依據(jù)數(shù)據(jù)類(lèi)型進(jìn)行過(guò)濾,其中一部分是頁(yè)面加載時(shí)的靜態(tài)資源文件(如html、js、css)等,另一部分主要是圖片、音視頻等非文本類(lèi)型的數(shù)據(jù)。針對(duì)這兩部分?jǐn)?shù)據(jù),在數(shù)據(jù)包過(guò)濾時(shí)主要根據(jù)數(shù)據(jù)包中的請(qǐng)求資源定位符來(lái)過(guò)濾掉非PHP文件。但已有研究表明,存在將Webshell藏在圖片的末尾形成“圖片馬”以繞過(guò)目標(biāo)服務(wù)器防護(hù)設(shè)備檢查的攻擊手段,因此對(duì)于PNG、JPEG等格式的圖片文件,主要通過(guò)文件頭尾標(biāo)識(shí)符定位來(lái)處理。文件頭標(biāo)識(shí)符是以二進(jìn)制形式存于文件開(kāi)頭一段區(qū)域的數(shù)據(jù),該數(shù)據(jù)對(duì)應(yīng)每一種文件類(lèi)型。常見(jiàn)的多媒體資源文件同樣擁有獨(dú)一無(wú)二的文件頭信息,如PNG格式圖片的文件頭尾標(biāo)識(shí)符分別為0x89 50 4E 47 0D 0A 1A 0A和0x49 45 4E 44 AE 42 60 82。因此,通過(guò)識(shí)別數(shù)據(jù)流中的文件標(biāo)識(shí)符,進(jìn)而定位到多媒體資源文件的首尾并對(duì)其中部分進(jìn)行過(guò)濾,即可提取出插入文件末尾的Webshell,處理示意如圖2所示。

圖2 文件頭尾標(biāo)識(shí)符處理“圖片馬”Figure 2 Use file header-tail identifier to process “picture horse”

2.3 特征提取

為了對(duì)不同類(lèi)型的Webshell惡意流量進(jìn)行準(zhǔn)確識(shí)別,需要提取有關(guān)流量的各方面特征,并將其序列化表示輸入分類(lèi)器中。按照業(yè)界對(duì)Webshell惡意程序的功能以及攻擊影響進(jìn)行劃分,可分為3種類(lèi)型。

定義1簡(jiǎn)單型Webshell程序,俗稱(chēng)“一句話木馬”程序,指僅提供基本命令執(zhí)行功能的Webshell程序,代碼結(jié)構(gòu)簡(jiǎn)單。

定義2文件上傳型Webshell程序,俗稱(chēng)“小馬”程序,指功能單一且不包含命令執(zhí)行功能的惡意程序,通常作為跳板程序用于上傳其他惡意文件。

定義3網(wǎng)頁(yè)型Webshell程序,俗稱(chēng)“大馬”程序,指具有人性化操作界面、包含多種攻擊手段的Webshell程序,代碼結(jié)構(gòu)復(fù)雜,功能多樣。

具體而言,簡(jiǎn)單型Webshell程序通常不包含其他功能代碼,命令執(zhí)行時(shí)還需上傳完整的執(zhí)行代碼,并由攻擊者通過(guò)HTTP直連或Webshell客戶端進(jìn)行傳輸;文件上傳型Webshell程序通常被應(yīng)用在目標(biāo)服務(wù)器對(duì)上傳文件大小進(jìn)行限制時(shí),首先被上傳至服務(wù)器作為跳板程序,進(jìn)而上傳其他包含惡意代碼的Webshell程序用以規(guī)避服務(wù)器審查;網(wǎng)頁(yè)型Webshell程序通常將所有的功能代碼整合到Webshell文件中,且包含大量頁(yè)面元素構(gòu)成操作界面。針對(duì)各類(lèi)型Webshell程序工作原理的不同,本文主要從數(shù)據(jù)包元信息、載荷內(nèi)容和通信行為3個(gè)方面進(jìn)行特征提取,提取的主要特征如下。

2.3.1數(shù)據(jù)包元信息

數(shù)據(jù)包元信息是指通信雙方在進(jìn)行通信時(shí)需按照TCP/IP規(guī)定的方式構(gòu)造網(wǎng)絡(luò)數(shù)據(jù)包,這些字段可直接從解析后的數(shù)據(jù)包中采集得到,本文利用第三方工具Scapy完成對(duì)數(shù)據(jù)包的解析,主要提取本文需要的相關(guān)字段信息如下。

1) 請(qǐng)求包載荷長(zhǎng)度:該字段反映了源主機(jī)向目標(biāo)主機(jī)發(fā)送請(qǐng)求報(bào)文時(shí)所攜帶的數(shù)據(jù)長(zhǎng)度。在Webshell通信過(guò)程中,攻擊者在發(fā)送攻擊載荷時(shí)通常為了規(guī)避入侵檢測(cè)工具(IDS)等設(shè)備檢測(cè),將請(qǐng)求載荷進(jìn)行混淆加密處理進(jìn)而導(dǎo)致載荷變長(zhǎng),因而當(dāng)網(wǎng)絡(luò)中出現(xiàn)較長(zhǎng)請(qǐng)求載荷時(shí)則可能存在Webshell惡意通信行為。

2) 請(qǐng)求包請(qǐng)求參數(shù)個(gè)數(shù):該字段反映了攻擊者對(duì)請(qǐng)求載荷進(jìn)行變換處理后,攻擊載荷被分割為多段,最后在攻擊載荷到達(dá)目標(biāo)服務(wù)器后進(jìn)行重組,此過(guò)程需要多個(gè)請(qǐng)求參數(shù)用于存儲(chǔ)和拼接請(qǐng)求載荷,因而導(dǎo)致請(qǐng)求包中請(qǐng)求參數(shù)個(gè)數(shù)增加。

2.3.2載荷內(nèi)容特征

Webshell通信過(guò)程的本質(zhì)是發(fā)送命令和執(zhí)行命令,攻擊者發(fā)送給Webshell程序的危險(xiǎn)命令通常存儲(chǔ)于數(shù)據(jù)包的有效載荷中,本文從請(qǐng)求、響應(yīng)包的有效載荷中提取以下特征。

1)請(qǐng)求包命令執(zhí)行函數(shù):在基于PHP腳本語(yǔ)言編寫(xiě)的Webshell程序中,由于攻擊載荷需要通過(guò)PHP腳本語(yǔ)言進(jìn)行語(yǔ)法解析和編譯器執(zhí)行,因而PHP語(yǔ)言中涉及危險(xiǎn)系統(tǒng)命令的執(zhí)行函數(shù)均可能成為攻擊者進(jìn)行遠(yuǎn)程命令執(zhí)行所調(diào)用的函數(shù)[13],如在冰蝎Webshell客戶端中,當(dāng)客戶端首次連接被植入PHP語(yǔ)言編寫(xiě)的Webshell的受害服務(wù)器時(shí),默認(rèn)會(huì)執(zhí)行phpinfo函數(shù)。表1給出PHP語(yǔ)言中的危險(xiǎn)函數(shù)。

一般認(rèn)為,當(dāng)數(shù)據(jù)包請(qǐng)求載荷中出現(xiàn)了表1中的危險(xiǎn)功能函數(shù),則在一定限度上認(rèn)為該網(wǎng)絡(luò)可能存在Webshell惡意通信行為。

表1 PHP語(yǔ)言中的危險(xiǎn)功能函數(shù)Table 1 Unsafe PHP function details

2)請(qǐng)求包參數(shù)轉(zhuǎn)移概率系數(shù):狀態(tài)轉(zhuǎn)移概率[14]是描述模型在各個(gè)狀態(tài)間轉(zhuǎn)換的概率。在正常業(yè)務(wù)中,為了方便程序維護(hù),在各類(lèi)表單請(qǐng)求參數(shù)時(shí)大多選取與業(yè)務(wù)相關(guān)且具有較高可讀性的參數(shù)。抽象成數(shù)學(xué)可以理解的語(yǔ)言,正常業(yè)務(wù)中的參數(shù)名轉(zhuǎn)移概率系數(shù)偏高,而在Webshell程序中程序變量名的選取較為隨機(jī),因此轉(zhuǎn)移概率系數(shù)偏低。計(jì)算一個(gè)字符串觀測(cè)序列的概率分布如式(1)所示。

其中,p(1x)表示字符串中每一個(gè)字符出現(xiàn)的概率。當(dāng)給定的字符串符合語(yǔ)言規(guī)律,則計(jì)算得到的轉(zhuǎn)移概率值較高,而不符合可讀性的概率則較低。因此,請(qǐng)求包中參數(shù)名的轉(zhuǎn)移概率系數(shù)大小可以作為區(qū)分正常流量與Webshell惡意流量的特征之一。

3)請(qǐng)求包載荷信息熵:信息熵的概念最初由香農(nóng)提出,用于研究傳輸信息中的信息量大小。請(qǐng)求包載荷信息熵值反映了請(qǐng)求報(bào)文中載荷內(nèi)容的混亂程度。在Webshell通信過(guò)程中,攻擊者往往對(duì)攻擊載荷進(jìn)行填充、加密等變換,導(dǎo)致載荷的字符空間混亂程度增加即信息熵增大,因而通過(guò)計(jì)算請(qǐng)求載荷的信息熵大小是否偏離正常水平可在一定限度上認(rèn)為該網(wǎng)絡(luò)中出現(xiàn)Webshell惡意通信行為。信息熵計(jì)算公式為

其中,L為請(qǐng)求包的載荷內(nèi)容,p L(i)為載荷中每個(gè)字符發(fā)生的概率。當(dāng)計(jì)算得到的信息熵值越大,則表明該載荷所包含的信息量越大,字符串呈現(xiàn)出無(wú)序、不確定性,因而被判定是攻擊載荷的可能性越高。

4) 響應(yīng)包title標(biāo)簽內(nèi)容:通過(guò)對(duì)大量樣本進(jìn)行分析,在網(wǎng)頁(yè)型Webshell程序中,由于這類(lèi)惡意程序通常采用編程語(yǔ)言——HTML(hypertext markup language)來(lái)實(shí)現(xiàn)人性化操作界面,且在代碼的title標(biāo)簽內(nèi)包含該惡意程序的名稱(chēng)(如WSO、b374k、r57等)。因此提取的響應(yīng)包中的title標(biāo)簽內(nèi)容,也可作為區(qū)別正常業(yè)務(wù)流量和Webshell惡意流量的特征之一。

5) 響應(yīng)包網(wǎng)頁(yè)標(biāo)簽個(gè)數(shù):正常業(yè)務(wù)通信的響應(yīng)包中通常包含動(dòng)態(tài)腳本程序生成的頁(yè)面,頁(yè)面主要由HTML語(yǔ)言中的標(biāo)簽構(gòu)成。而簡(jiǎn)單型Webshell程序通常只包含腳本語(yǔ)言(如PHP編程語(yǔ)言)編寫(xiě)的惡意代碼,在遠(yuǎn)程執(zhí)行命令過(guò)程中響應(yīng)頁(yè)面不包含HTML標(biāo)簽。因此,當(dāng)網(wǎng)絡(luò)中出現(xiàn)不包含HTML標(biāo)簽的響應(yīng)內(nèi)容時(shí),則可認(rèn)為網(wǎng)絡(luò)中可能存在Webshell惡意通信行為。

2.3.3 通信行為特征

正常HTTP請(qǐng)求與Webshell通信時(shí)存在明顯的行為差異,因?yàn)閃eb服務(wù)器中的正常業(yè)務(wù)均可被不同用戶訪問(wèn),但Webshell程序的資源訪問(wèn)地址只由攻擊者可知,因而在訪問(wèn)行為上呈現(xiàn)單一用戶短時(shí)間內(nèi)頻繁訪問(wèn)現(xiàn)象。因此,本文從通信行為角度提取如下特征。

1) 頁(yè)面對(duì)外開(kāi)放度:該特征反映了某一URL地址在一段時(shí)間內(nèi)被不同IP地址主機(jī)進(jìn)行訪問(wèn)的程度。對(duì)于采用B/S架構(gòu)的Web應(yīng)用程序而言,當(dāng)正常業(yè)務(wù)被部署至互聯(lián)網(wǎng)中可被任何連接到互聯(lián)網(wǎng)中的主機(jī)進(jìn)行訪問(wèn),因而該正常頁(yè)面的對(duì)外訪問(wèn)度較高。而對(duì)于被植入服務(wù)器中的Webshell程序而言,通常該后門(mén)程序的訪問(wèn)地址只由攻擊者已知,因而該后門(mén)程序的頁(yè)面對(duì)外開(kāi)放度水平較低。因此,某一頁(yè)面的對(duì)外開(kāi)放度可作為區(qū)分正常業(yè)務(wù)和惡意后門(mén)頁(yè)面的特征之一。

2) 頁(yè)面訪問(wèn)頻率:該特征反映了某一URL地址在一段時(shí)間內(nèi)被同一IP地址訪問(wèn)的頻率大小。正常用戶訪問(wèn)服務(wù)器上的資源文件時(shí)通常不會(huì)過(guò)長(zhǎng)時(shí)間停留于單個(gè)頁(yè)面,且由于現(xiàn)在大部分正常頁(yè)面采用HTML配合JavaScript、CSS(cascading style sheets)等語(yǔ)言進(jìn)行頁(yè)面優(yōu)化,使得單次訪問(wèn)中必不可少地有資源文件被訪問(wèn)和下載。而攻擊者遠(yuǎn)程連接Webshell惡意程序過(guò)程中由于只需要接收命令和執(zhí)行命令,因而該Webshell頁(yè)面的訪問(wèn)頻率高于正常水平。因此,某一頁(yè)面訪問(wèn)頻率可作為區(qū)分正常業(yè)務(wù)訪問(wèn)和Webshell惡意訪問(wèn)的特征之一。

2.4 集成學(xué)習(xí)檢測(cè)模型

對(duì)上述提出的諸多特征,如果僅用單一學(xué)習(xí)器對(duì)特征構(gòu)成的特征矩陣進(jìn)行訓(xùn)練,由于各決策器在設(shè)計(jì)之初存在各自優(yōu)勢(shì)和缺點(diǎn),可能訓(xùn)練得到的分類(lèi)器出現(xiàn)較高的偏差或方差的現(xiàn)象,并且在應(yīng)對(duì)未知樣本時(shí)泛化性能較差。集成學(xué)習(xí)在實(shí)際生產(chǎn)環(huán)境下發(fā)揮重要作用,通過(guò)結(jié)合多個(gè)模型力圖在海量數(shù)據(jù)中獲得多樣且準(zhǔn)確的模型[15]。并結(jié)合不同單一弱分類(lèi)器在各類(lèi)數(shù)據(jù)上的表現(xiàn)構(gòu)造出強(qiáng)分類(lèi)器,以獲得高檢測(cè)率和低誤報(bào)率,并且能夠用于檢測(cè)未知的Webshell惡意流量。

本文采用基于Stacking集成策略來(lái)構(gòu)建分類(lèi)模型,這是一種通用的通過(guò)訓(xùn)練分類(lèi)器來(lái)結(jié)合個(gè)體分類(lèi)器的方法。此時(shí),個(gè)體分類(lèi)器被稱(chēng)為初級(jí)學(xué)習(xí)器,結(jié)合器被稱(chēng)為次級(jí)分類(lèi)器。在本文中,初級(jí)學(xué)習(xí)器應(yīng)該選取預(yù)測(cè)性能優(yōu)秀的機(jī)器學(xué)習(xí)模型,更重要的還需要保證模型間的多樣性[16],在分析個(gè)體學(xué)習(xí)器的單獨(dú)預(yù)測(cè)能力,并全面比較個(gè)體學(xué)習(xí)器的組合效果后,本文從基于Python的Scikit-learn庫(kù)[17]所提供的封裝分類(lèi)器中選取了4種典型機(jī)器學(xué)習(xí)算法:邏輯回歸(LR,logistic regression)、樸素貝葉斯(NB,naive bayes)、支持向量機(jī)(SVM,support vector machine)、和多層感知機(jī)(MLP,multilayer perceptron)算法作為初級(jí)分類(lèi)器,次級(jí)學(xué)習(xí)器一般選取穩(wěn)定性較好的簡(jiǎn)單模型,起到整體提升模型性能的作用,本文選擇決策樹(shù)(DT,decision tree)算法作為次級(jí)分類(lèi)器,并采用Stacking集成策略對(duì)各層學(xué)習(xí)器進(jìn)行結(jié)合。本文中相關(guān)算法及參數(shù)設(shè)置如下。

1) LR:這是一種基于距離分類(lèi)超平面的離散選擇模型,具體如式(3)。

其用距離度量判斷該數(shù)據(jù)流是否為Webshell惡意流量的概率大小。在本文中懲罰項(xiàng)選擇L2,懲罰因子為1.0,損失函數(shù)優(yōu)化算法選擇坐標(biāo)軸下降法。

2) NB:對(duì)測(cè)試樣例x進(jìn)行分類(lèi)時(shí),學(xué)習(xí)算法可構(gòu)建概率模型來(lái)選取具有最大后驗(yàn)概率值的y作為輸出,如式(4):

3) SVM:SVM分類(lèi)器主要借助核函數(shù)將特征向量映射到高維線性可分空間,并依靠邊界樣本來(lái)建立需要的分離曲線。本文選擇的核函數(shù)徑向基函數(shù)(RBF),其中懲罰系數(shù)C為1.0,誤差精度0.01。

4) MLP:一種前饋神經(jīng)網(wǎng)絡(luò),模型通過(guò)定義多個(gè)前向反饋的隱藏層來(lái)克服單個(gè)感知器的局限性,本文的反饋函數(shù)是基于符號(hào)的函數(shù)σ(x) =[1+e-x]-1,具體如式(5)。

其中,權(quán)重參數(shù)ω和偏置參數(shù)b可通過(guò)訓(xùn)練數(shù)據(jù)不斷訓(xùn)練得到。本文隱藏層數(shù)量為2,神經(jīng)元數(shù)量為50,使用擬牛頓方法(L-BFGS)來(lái)優(yōu)化模型參數(shù)權(quán)重,正則化項(xiàng)參數(shù)0.000 1。

5) DT:通過(guò)特征選擇算法從訓(xùn)練集中依次選擇最優(yōu)特征來(lái)建立分裂點(diǎn)并逐步迭代生成樹(shù)。常見(jiàn)的決策樹(shù)算法有ID3、C4.5和CART等。本文次級(jí)學(xué)習(xí)器選擇使用Gini系數(shù)用于特征選擇的CART算法,其中構(gòu)建樹(shù)的最大深度為6。

本文采用的基于Stacking集成策略實(shí)現(xiàn)方法如圖3所示,網(wǎng)絡(luò)輸入包含n個(gè)數(shù)據(jù)包的訓(xùn)練集D= {(xi,y i) ,i=1,2,…,n}和m個(gè)數(shù)據(jù)包的測(cè)試集T={(xj,y j),j=1,2,…,m},其中,xi和xj表示數(shù)據(jù)包的特征向量,yi和yj為該數(shù)據(jù)包的真實(shí)標(biāo)簽。為防止第一層初級(jí)分類(lèi)器在訓(xùn)練集上訓(xùn)練模型導(dǎo)致過(guò)擬合問(wèn)題,本文采用5折交叉驗(yàn)證方法對(duì)訓(xùn)練集隨機(jī)分成D1,D2,…,D5,定義Dk和表示第k折交叉驗(yàn)證的驗(yàn)證集和訓(xùn)練集,對(duì)于每一個(gè)初級(jí)分類(lèi)器l(l= 1,2,3,4),數(shù)據(jù)集被用于生成訓(xùn)練模型對(duì)生成的模型在數(shù)據(jù)集Dk和測(cè)試集T上進(jìn)行預(yù)測(cè)得到對(duì)每輪交叉驗(yàn)證中驗(yàn)證集Dk的預(yù)測(cè)值sil按行進(jìn)行拼接生成用于次級(jí)分類(lèi)器的訓(xùn)練樣本si=( (si1,…,si n),yi),對(duì)每輪交叉驗(yàn)證中測(cè)試集T的預(yù)測(cè)值sjl取平均值生成用于次級(jí)分類(lèi)器的測(cè)試樣本最終利用l個(gè)初級(jí)分類(lèi)器產(chǎn)生的訓(xùn)練集和測(cè)試集訓(xùn)練次級(jí)分類(lèi)器得到最終的Webshell惡意流量集成模型。

圖3 基于Stacking集成策略的實(shí)現(xiàn)方法Figure 3 Implementation method of ensemble learning structure based on Stacking

3 實(shí)驗(yàn)與分析

3.1 實(shí)驗(yàn)環(huán)境和實(shí)驗(yàn)數(shù)據(jù)

本文實(shí)驗(yàn)在四川大學(xué)網(wǎng)絡(luò)靶場(chǎng)進(jìn)行。本文的數(shù)據(jù)集分為正常流量和惡意流量?jī)刹糠郑凑?:2的比例隨機(jī)劃分為訓(xùn)練集和測(cè)試集。其中惡意流量的獲取主要來(lái)自網(wǎng)絡(luò)開(kāi)源倉(cāng)庫(kù)Github中下載量最高的11個(gè)倉(cāng)庫(kù)(如tennc/webshell、ysrc/webshell-sample等),約2 000個(gè)惡意樣本按圖4所示的網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)部署后仿真采集得到。在采集到8萬(wàn)條以上基于HTTP協(xié)議的惡意流量中,按照Webshell類(lèi)型篩選出3萬(wàn)條以上(不包括非正常響應(yīng)以及媒體資源文件)確定具有惡意行為特征的數(shù)據(jù)分組。其中,簡(jiǎn)單型木馬流量約占18%,網(wǎng)頁(yè)型木馬流量約占80%,文件上傳型木馬流量約占1.1%。正常流量的獲取來(lái)源于某安全公司的業(yè)務(wù)流量,經(jīng)人工篩選后對(duì)數(shù)據(jù)打上正常標(biāo)簽。仿真數(shù)據(jù)集具體信息如表2所示。

表2 仿真數(shù)據(jù)集Table 2 Simulation dataset

圖4 數(shù)據(jù)仿真環(huán)境Figure 4 Simulation environment topology

由于進(jìn)行數(shù)據(jù)多分類(lèi)實(shí)驗(yàn)的數(shù)據(jù)集為不平衡數(shù)據(jù)集,文件上傳型Webshell與簡(jiǎn)單型Webshell、網(wǎng)頁(yè)型Webshell的樣本數(shù)量差距較大,為增加實(shí)驗(yàn)的合理性,在此采用SMOTE算法[18]進(jìn)行隨機(jī)采樣至各類(lèi)別比例接近1:1。

3.2 評(píng)價(jià)標(biāo)準(zhǔn)

本文采用準(zhǔn)確率(Accuracy)、精確率(Precision)、召回率(Recall)、F1值(F1-score)來(lái)評(píng)價(jià)二分類(lèi)情況下分類(lèi)器的性能,為了評(píng)估模型的檢測(cè)能力,首先定義二分類(lèi)模型的預(yù)測(cè)結(jié)果與真實(shí)結(jié)果的4種情況。

(1)TP(true positive):預(yù)測(cè)當(dāng)前流量是Webshell惡意流量,且實(shí)際上是Webshell惡意流量。

(2)FN(false negative):預(yù)測(cè)當(dāng)前流量是正常流量,但實(shí)際上是Webshell惡意流量。

(3)FP(false positive):預(yù)測(cè)當(dāng)前流量是Webshell惡意流量,但實(shí)際上是正常流量。

(4)TN(true negative):預(yù)測(cè)當(dāng)前流量是正常流量,且實(shí)際是正常流量。

根據(jù)以上的判定結(jié)果,定義二分類(lèi)下Webshell惡意流量檢測(cè)的評(píng)價(jià)指標(biāo)如下。

另外,由于本文需要對(duì)Webshell惡意流量的具體類(lèi)別進(jìn)行判定,故將二分類(lèi)情況下的混淆矩陣(confusion matrix)推廣至多分類(lèi),得到式(10)所示的混淆矩陣Ml×l。其中,l為待檢測(cè)類(lèi)別,M ii表示預(yù)測(cè)當(dāng)前流量是第i個(gè)類(lèi)別且實(shí)際上為第i個(gè)類(lèi)別流量的個(gè)數(shù),Mij表示預(yù)測(cè)當(dāng)前流量是第i個(gè)類(lèi)別但實(shí)際上是第j個(gè)類(lèi)別流量的個(gè)數(shù),計(jì)算第i個(gè)類(lèi)別的精確率[19]、召回率[19]和F1值如下所示。

3.3 實(shí)驗(yàn)結(jié)果分析

實(shí)驗(yàn)預(yù)期要達(dá)到兩個(gè)分類(lèi):一是模型要能區(qū)分通信流量中的正常流量和惡意流量:二是模型能夠區(qū)分該惡意流量屬于何種類(lèi)型的Webshell攻擊。本文主要從特征融合前后與現(xiàn)有同類(lèi)研究方法兩方面進(jìn)行評(píng)估,另外為證明分類(lèi)器的有效性,在實(shí)驗(yàn)過(guò)程中選擇了XGBoost、GBDT、AdaBoost等常見(jiàn)集成學(xué)習(xí)算法進(jìn)行對(duì)比。

實(shí)驗(yàn)1同類(lèi)研究方法對(duì)比

第一組實(shí)驗(yàn)對(duì)比同類(lèi)型研究中基于通信流量的Webshell惡意檢測(cè)的各方面性能指標(biāo),由于文獻(xiàn)[9-10]中并未對(duì)惡意流量屬于何種攻擊類(lèi)型做深入研究,故實(shí)驗(yàn)主要針對(duì)正常惡意流量二分類(lèi)情況進(jìn)行對(duì)比。為避免實(shí)驗(yàn)數(shù)據(jù)劃分不合理導(dǎo)致實(shí)驗(yàn)結(jié)果的偶然性,本文采用十折交叉驗(yàn)證對(duì)模型進(jìn)行評(píng)估,實(shí)驗(yàn)最終的性能指標(biāo)取交叉驗(yàn)證結(jié)果的平均值,如圖5所示。

圖5 不同方法模型比較結(jié)果Figure 5 Comparison result of different method models

實(shí)驗(yàn)結(jié)果表明,在相同的數(shù)據(jù)集下,本文提出的方法在正確率、精確率、ROC曲線的AUC面積以及F1指標(biāo)上均達(dá)到最優(yōu),分別為98.65%、99.25%、99.07%、98.33%。這說(shuō)明本文提出的方法能夠更準(zhǔn)確地檢測(cè)Webshell惡意流量,并且模型更加穩(wěn)定。召回率僅比文獻(xiàn)[9]低0.4%,比文獻(xiàn)[10]低1.8%。

除此之外,本文還對(duì)比了同類(lèi)研究方法中的模型訓(xùn)練以及模型檢測(cè)所需要的時(shí)間開(kāi)銷(xiāo)。其中,一個(gè)完整的Webshell惡意流量檢測(cè)系統(tǒng)的檢測(cè)時(shí)間主要包括兩個(gè)部分。①使用Scapy等工具捕獲并解析未知網(wǎng)絡(luò)數(shù)據(jù)包;②訓(xùn)練生成的模型對(duì)流量數(shù)據(jù)進(jìn)行檢測(cè)。本文統(tǒng)一使用Scapy對(duì)數(shù)據(jù)包進(jìn)行捕獲并解析,同時(shí)使用文獻(xiàn)[9-10]對(duì)原始數(shù)據(jù)集的20%數(shù)據(jù)進(jìn)行檢測(cè),平均消耗時(shí)間對(duì)比如表3所示。

表3 平均消耗時(shí)間對(duì)比Table 3 Average elapsed time comparison

由表3可知,本文提出的方法與文獻(xiàn)[9]采用的CNN+LSTM構(gòu)建分類(lèi)模型相比,在訓(xùn)練時(shí)間和檢測(cè)時(shí)間上減少了95.73%和86.14%。此外,在設(shè)置序列長(zhǎng)度為1 500,與文獻(xiàn)[10]中采用4-gram+SVM算法相比,在訓(xùn)練時(shí)間和檢測(cè)時(shí)間上減少了70.87%和99.51%。因此,本文提出的方法可大幅降低檢測(cè)器的訓(xùn)練和檢測(cè)時(shí)間,滿足實(shí)際應(yīng)用中快速檢測(cè)的要求。

實(shí)驗(yàn)2特征融合前后對(duì)比

第二組實(shí)驗(yàn)對(duì)比特征經(jīng)過(guò)融合前后在不同類(lèi)型的Webshell惡意流量上的識(shí)別效果。在實(shí)驗(yàn)中選用數(shù)據(jù)集的80%數(shù)據(jù)進(jìn)行訓(xùn)練,20%的數(shù)據(jù)進(jìn)行測(cè)試。同時(shí),按照特征數(shù)據(jù)包元信息、數(shù)據(jù)包載荷內(nèi)容以及流量訪問(wèn)行為3個(gè)維度分為3組特征子集,并設(shè)置3組對(duì)比實(shí)驗(yàn)分別為:未經(jīng)過(guò)融合的第1組特征,只融合第1、2組特征,融合第1、2、3組特征。本實(shí)驗(yàn)的目的是驗(yàn)證本文提出的方法在改善單一特征對(duì)不同類(lèi)型的Webshell惡意流量識(shí)別能力和模型魯棒性上的提升,識(shí)別結(jié)果如圖6~圖8所示。

圖6 不同特征融合方案對(duì)簡(jiǎn)單型Webshell識(shí)別效果對(duì)比Figure 6 Effect of different feature fusion schemes on simple Webshell

圖8 不同特征融合方案對(duì)網(wǎng)頁(yè)型Webshell識(shí)別效果對(duì)比Figure 8 Effect of different feature fusion schemes onweb-based Webshell

圖7 不同特征融合方案對(duì)文件上傳型Webshell識(shí)別效果對(duì)比Figure 7 Effect of different feature fusion schemes on file-upload Webshell

實(shí)驗(yàn)結(jié)果表明,本文提出的多特征融合方法在識(shí)別不同類(lèi)型的Webshell惡意流量上都要優(yōu)于未經(jīng)過(guò)特征融合以及特征融合不充分的情況,各類(lèi)型識(shí)別精確率分別為95.66%、97.61%和90.86%。其中,對(duì)網(wǎng)頁(yè)型Webshell惡意流量的識(shí)別上效果提升明顯,精確率平均提升27.99%。這是因?yàn)榫W(wǎng)頁(yè)型Webshell惡意程序本質(zhì)上仍然為一個(gè)Web應(yīng)用,因而相較于具有較強(qiáng)特征的簡(jiǎn)單型和文件上傳型,惡意流量上更容易被單一分類(lèi)器識(shí)別為正常業(yè)務(wù)流量最終導(dǎo)致誤報(bào)。而本文通過(guò)集成的方式構(gòu)建分類(lèi)模型,在一定限度上提高了分類(lèi)準(zhǔn)確率,能夠更加有效地識(shí)別網(wǎng)頁(yè)型Webshell惡意流量。

實(shí)驗(yàn)3不同集成算法對(duì)比

第三組實(shí)驗(yàn)是對(duì)比不同集成學(xué)習(xí)算法在融合后的特征空間下的分類(lèi)效果。在實(shí)驗(yàn)中選定常見(jiàn)的集成學(xué)習(xí)模型:XGBoost、GBDT、AdaBoost算法與本文采用基于Stacking框架生成的分類(lèi)模型進(jìn)行比較。本實(shí)驗(yàn)的目的是驗(yàn)證基于Stacking框架的集成學(xué)習(xí)分類(lèi)模型相比其他采用集成學(xué)習(xí)算法在多類(lèi)型Webshell流量識(shí)別上,能夠取得更好的分類(lèi)性能,實(shí)驗(yàn)結(jié)果如圖9~圖11所示。

圖9 不同集成學(xué)習(xí)算法對(duì)簡(jiǎn)單型Webshell識(shí)別效果對(duì)比Figure 9 Effect of different ensemble algorithms on simple Webshell

圖10 不同集成學(xué)習(xí)算法對(duì)文件上傳型Webshell識(shí)別效果對(duì)比Figure 10 Effect of different ensemble algorithms on file-upload Webshell

圖11 不同集成學(xué)習(xí)算法對(duì)網(wǎng)頁(yè)型Webshell識(shí)別效果對(duì)比Figure 11 Effect of different ensemble algorithms on web-based Webshell

實(shí)驗(yàn)結(jié)果表明,在識(shí)別簡(jiǎn)單Webshell惡意流量上,本文提出的算法在精確率和F1值上都要優(yōu)于其他3種集成學(xué)習(xí)算法,達(dá)到95.66%和93.99%,召回率比采用XGBoost算法低1.34%,為92.37%。在識(shí)別文件上傳型Webshell惡意流量上,本文算法在精確率、召回率和F1值上整體優(yōu)于其他3種集成學(xué)習(xí)算法,達(dá)到97.61%、98.3%、97.95%。在識(shí)別網(wǎng)頁(yè)型Webshell惡意流量上,本文提出的算法在召回率和F1值上都要優(yōu)于其他3種集成學(xué)習(xí)算法,達(dá)到94.14%和92.47%,而精確率比采用XGBoost算法高2.44%,為90.86%。因此在整體的識(shí)別效果上,采用Stacking算法構(gòu)建的分類(lèi)模型相比其他基于集成算法在每個(gè)分類(lèi)上的表現(xiàn)更加穩(wěn)定。

4 結(jié)束語(yǔ)

本文提出了一種基于多特征融合的Webshell檢測(cè)方法,用來(lái)檢測(cè)網(wǎng)絡(luò)通信過(guò)程中可能存在的Webshell惡意流量,該方法從數(shù)據(jù)包元信息、數(shù)據(jù)包載荷內(nèi)容以及流量訪問(wèn)行為等提取流量特征,并將融合后的特征輸入基于集成學(xué)習(xí)策略的分類(lèi)模型中檢測(cè)Webshell惡意流量。實(shí)驗(yàn)結(jié)果表明,該方法不僅在正常與惡意流量的二分類(lèi)上取得不錯(cuò)效果,同時(shí)也能對(duì)惡意流量屬于何種Webshell攻擊做細(xì)分,為Web應(yīng)用的進(jìn)一步加固和防御提供精確的支撐。這一研究成果彌補(bǔ)了現(xiàn)有方法中未對(duì)惡意流量屬于何種攻擊類(lèi)型進(jìn)行研究的不足,以及訓(xùn)練和檢測(cè)效率低的問(wèn)題。

猜你喜歡
數(shù)據(jù)包分類(lèi)器載荷
交通運(yùn)輸部海事局“新一代衛(wèi)星AIS驗(yàn)證載荷”成功發(fā)射
二維隱蔽時(shí)間信道構(gòu)建的研究*
民用飛機(jī)飛行模擬機(jī)數(shù)據(jù)包試飛任務(wù)優(yōu)化結(jié)合方法研究
SmartSniff
基于差異性測(cè)度的遙感自適應(yīng)分類(lèi)器選擇
基于實(shí)例的強(qiáng)分類(lèi)器快速集成方法
滾轉(zhuǎn)機(jī)動(dòng)載荷減緩風(fēng)洞試驗(yàn)
一種基于白噪聲響應(yīng)的隨機(jī)載荷譜識(shí)別方法
基于層次化分類(lèi)器的遙感圖像飛機(jī)目標(biāo)檢測(cè)
一種基于置換的組合分類(lèi)器剪枝方法