技術(shù)分享:竊密型WebShell檢測(cè)方法
前段時(shí)間由于項(xiàng)目的需要也因?yàn)檎谪?fù)責(zé)一個(gè)后門檢測(cè)小工具的項(xiàng)目開發(fā)所以惡補(bǔ)了一下Webshell檢測(cè)技術(shù)內(nèi)容,一路天馬行空寫下此文和大家分享。小弟才疏學(xué)淺如有內(nèi)容上的問題還請(qǐng)不吝指正。
1.前言
近年來網(wǎng)站被植入后門等隱蔽性攻擊呈逐年增長態(tài)勢(shì),國家互聯(lián)網(wǎng)應(yīng)急中心發(fā)布的《2013年我國互聯(lián)網(wǎng)網(wǎng)絡(luò)安全態(tài)勢(shì)綜述》稱2013年國家互聯(lián)網(wǎng)應(yīng)急中心共監(jiān)測(cè)發(fā)現(xiàn)我國境內(nèi)6.1萬個(gè)網(wǎng)站通過境外被植入后門,較2012年增長62.1%。黑客在利用WEB應(yīng)用漏洞攻擊成功后,通常會(huì)利用植入 Webshell后門實(shí)現(xiàn)對(duì)應(yīng)用系統(tǒng)篡改、對(duì)操作系統(tǒng)控制以及對(duì)數(shù)據(jù)庫中敏感數(shù)據(jù)的竊取。攻擊者通過瀏覽器或者控制端與被控制的WEB應(yīng)用系統(tǒng)之間通過開啟的合法端口交換數(shù)據(jù),隱蔽性很高,傳統(tǒng)防火墻無法進(jìn)行攔截,并且一般在系統(tǒng)日志中無操作記錄。
針對(duì)Webshell后門的檢測(cè)方法一般是靜態(tài)特征屬性的檢測(cè)方式,此類方式一般可查殺常見的破壞型后門,但在巨大的經(jīng)濟(jì)利益誘惑下,以竊取網(wǎng)站內(nèi)敏感信息為目的的竊密型后門越來越多。此類后門往往采用特殊的變型方式與業(yè)務(wù)相融合,傳統(tǒng)方法難以檢測(cè),本文針對(duì)竊密型后門進(jìn)行了研究分析,通過研究多種竊密型后門的特點(diǎn)及原理,提出了一種全新的檢測(cè)方法,豐富了竊密型腳本后門的檢測(cè)手段,并就相關(guān)核心問題進(jìn)行了分析和闡述。
2.Webshell后門
隨著信息化的不斷發(fā)展,信息系統(tǒng)所承載的不僅僅是新聞發(fā)布、內(nèi)容展示等傳統(tǒng)功能,同時(shí)還承擔(dān)了信息查詢、訂單處理、事務(wù)管理等業(yè)務(wù),其中往往涉及一些需要保密的信息,竊密型web應(yīng)用腳本后門應(yīng)運(yùn)而生,其以竊密為主要目的,獲取系統(tǒng)保密信息,危害極大。
“Web”的含義是需要服務(wù)器開放web服務(wù),“shell”的含義是取得對(duì)服務(wù)器某種程度上的操作權(quán)限,常常被稱為匿名用戶(入侵者)通過網(wǎng)站端口對(duì)網(wǎng)站服務(wù)器的某種程度的操作權(quán)限。由于Webshell大多是以動(dòng)態(tài)腳本的形式出現(xiàn),也有人稱之為網(wǎng)站后門工具或者WEB應(yīng)用腳本后門。但由于此類后門往往與系統(tǒng)契合度較高,利用了系統(tǒng)部分功能模塊以實(shí)現(xiàn)以假亂真、長期潛伏的目的。該類后門往往不具備文件操作、命令執(zhí)行等常見木馬功能,多數(shù)只具備查詢數(shù)據(jù)庫功能,可直接調(diào)用系統(tǒng)自身的存儲(chǔ)過程來連接數(shù)據(jù)庫,與系統(tǒng)契合度高。
3.Webshell后門檢測(cè)
目前針對(duì)Webshell的特征檢測(cè)一般是通過特征比對(duì)及文件屬性異常的靜態(tài)檢測(cè)和基于訪問情況、行為模式特征的動(dòng)態(tài)檢測(cè)方式進(jìn)行查殺,由于竊密型Webshell通常會(huì)偽裝成正常的WEB腳本文件,靜態(tài)特征檢測(cè)及動(dòng)態(tài)行為檢測(cè)都無法有效的針對(duì)此類后門進(jìn)行檢測(cè)。
4.傳統(tǒng)及現(xiàn)有的檢測(cè)方法
4.1靜態(tài)檢測(cè)
靜態(tài)特征檢測(cè)是指對(duì)腳本文件中所使用的關(guān)鍵詞、高危函數(shù)、文件修改的時(shí)間、文件權(quán)限、文件的所有者以及和其它文件的關(guān)聯(lián)性等多個(gè)維度的特征進(jìn)行檢測(cè),即先建立一個(gè)惡意字符串特征庫,例如:“組專用大馬|提權(quán)|木馬|PHP\s?反彈提權(quán)cmd執(zhí)行”,“WScript.Shell、 Shell.Application、Eval()、Excute()、Set Server、Run()、Exec()、ShellExcute()”,同時(shí)對(duì)WEB文件修改時(shí)間,文件權(quán)限以及文件所有者等進(jìn)行確認(rèn)。通常情況下 WEB文件不會(huì)包含上述特征或者特征異常,通過與特征庫的比對(duì)檢索出高危腳本文件。
該檢測(cè)方法的優(yōu)點(diǎn):可快速檢測(cè),快速定位;
缺點(diǎn):容易誤報(bào),無法對(duì)加密或者經(jīng)過特殊處理的Webshell文件進(jìn)行檢測(cè)。尤其是針對(duì)竊密型Webshell無法做到準(zhǔn)確的檢測(cè),因?yàn)楦`密型Webshell通常具有和正常的WEB腳本文件具有相似的特征。
4.2動(dòng)態(tài)檢測(cè)
動(dòng)態(tài)特征檢測(cè)通過Webshell運(yùn)行時(shí)使用的系統(tǒng)命令或者網(wǎng)絡(luò)流量及狀態(tài)的異常來判斷動(dòng)作的威脅程度,Webshell通常會(huì)被加密從而避免靜態(tài)特征的檢測(cè),當(dāng)Webshell運(yùn)行時(shí)就必須向系統(tǒng)發(fā)送系統(tǒng)命令來達(dá)到控制系統(tǒng)或者操作數(shù)據(jù)庫的目的,通過檢測(cè)系統(tǒng)調(diào)用來監(jiān)測(cè)甚至攔截系統(tǒng)命令被執(zhí)行,從行為模式上深度檢測(cè)腳本文件的安全性。
優(yōu)點(diǎn):可用于網(wǎng)站集群,對(duì)新型變種腳本有一定的檢測(cè)能力。
缺點(diǎn):針對(duì)特定用途的后門較難檢測(cè),實(shí)施難度較大。
4.3日志分析
使用Webshell一般不會(huì)在系統(tǒng)日志中留下記錄,但是會(huì)在網(wǎng)站的web日志中留下Webshell頁面的訪問數(shù)據(jù)和數(shù)據(jù)提交記錄。日志分析檢測(cè)技術(shù)通過大量的日志文件建立請(qǐng)求模型從而檢測(cè)出異常文件,稱之為:HTTP異常請(qǐng)求模型檢測(cè)。例如:一個(gè)平時(shí)是GET的請(qǐng)求突然有了POST請(qǐng)求并且返回代碼為200、某個(gè)頁面的訪問者IP、訪問時(shí)間具有規(guī)律性等。
優(yōu)點(diǎn):采用了一定數(shù)據(jù)分析的方式,網(wǎng)站的訪問量達(dá)到一定量級(jí)時(shí)這種檢測(cè)方法的結(jié)果具有較大參考價(jià)值。
缺點(diǎn):存在一定誤報(bào),對(duì)于大量的訪問日志,檢測(cè)工具的處理能力和效率會(huì)比較低。
4.4統(tǒng)計(jì)學(xué)
在Webshell后門檢測(cè)中被使用較為廣泛的一種方法是統(tǒng)計(jì)學(xué)方法,NeoPi是國外流行的一個(gè)基于統(tǒng)計(jì)學(xué)的Webshell后門檢測(cè)工具,它使用五種計(jì)學(xué)方法在腳本文件中搜索潛在的被混淆或被編碼的惡意代碼。
NeoPi使用以下五種檢測(cè)方法:
1、信息熵(Entropy):通過使用ASCII碼表來衡量文件的不確定性;
2、最長單詞(LongestWord):最長的字符串也許潛在的被編碼或被混淆;
3、重合指數(shù)(Indexof Coincidence):低重合指數(shù)預(yù)示文件代碼潛在的被加密或被混效過;
4、特征(Signature):在文件中搜索已知的惡意代碼字符串片段;
5、壓縮(Compression):對(duì)比文件的壓縮比。
采用這種檢測(cè)方法也存在明顯的弱點(diǎn),NeoPi的檢測(cè)重心在于識(shí)別混淆代碼,它常常在識(shí)別模糊代碼或者混淆編排的木馬方面表現(xiàn)良好。未經(jīng)模糊處理的代碼對(duì)于NeoPi的檢測(cè)機(jī)制較為透明。如果代碼整合于系統(tǒng)中的其它腳本之上,這種“正常”的文件極可能無法被NeoPi識(shí)別出來。
5.傳統(tǒng)檢測(cè)方法的缺陷
現(xiàn)有技術(shù)是針對(duì)普通的腳本后門、以控制服務(wù)器為目的、通常包含較為明顯的靜態(tài)特征或者行為模式,不能對(duì)竊密型后門進(jìn)行有效檢測(cè)。
由于業(yè)務(wù)系統(tǒng)更新頻繁,WEB腳本文件相關(guān)的屬性經(jīng)常發(fā)生變化所以偏重于文件屬性檢測(cè)的方法往往會(huì)產(chǎn)生更多的誤報(bào),基于動(dòng)態(tài)行為檢測(cè)的方法往往技術(shù)難度較大,難以實(shí)現(xiàn),而且對(duì)系統(tǒng)造成的性能影響較大,甚至可能對(duì)系統(tǒng)穩(wěn)定性造成影響,基于日志的檢測(cè)方法,一方面,由于業(yè)務(wù)功能較多且復(fù)雜,部分功能可能很少會(huì)被用到,其日志訪問可能會(huì)命中某些檢測(cè)規(guī)則從而造成更多的誤報(bào),另一方面,大量的日志記錄處理起來會(huì)對(duì)服務(wù)器性能產(chǎn)生負(fù)擔(dān)、而且由于日志量巨大檢測(cè)過程消耗時(shí)間長,檢測(cè)速度較慢。而竊密型Webshell后門往往會(huì)模擬正常的數(shù)據(jù)庫操作、不具有較為明顯靜態(tài)特殊屬性、被訪問的次數(shù)比較少無法形成較為明顯的訪問特征,通過日志分析也很難發(fā)現(xiàn)。
6.竊密型Webshell后門檢測(cè)方法設(shè)計(jì)
6.1檢測(cè)方法
6.1.1基于數(shù)據(jù)庫操作審計(jì)的檢測(cè)方式
針對(duì)竊密型Webshell必須具有操作數(shù)據(jù)庫的能力,可以引申出一種新的檢測(cè)方法,通過分析正常WEB腳本文件和竊密型Webshell對(duì)數(shù)據(jù)庫操作的差異進(jìn)行分析是本檢測(cè)方法所重點(diǎn)研究的方向。
正常情況下WEB站點(diǎn)進(jìn)行數(shù)據(jù)操作的過程應(yīng)該是重復(fù)性且較為復(fù)雜的查詢過程,這種查詢通常精確度非常高,查詢過程不會(huì)出現(xiàn)類似于“select * from”這種查詢語句。正常的WEB腳本在進(jìn)行數(shù)據(jù)庫操作的過程中也不會(huì)出現(xiàn)跨越數(shù)據(jù)庫查詢的情況,一旦出現(xiàn)這種現(xiàn)象基本可以判斷為非正常的WEB腳本操作過程。
就以上思路設(shè)計(jì)如下的檢測(cè)方案:
審計(jì)數(shù)據(jù)操作記錄。通過審計(jì)數(shù)據(jù)庫操作記錄可以單獨(dú)的為每一個(gè)WEB站點(diǎn)甚至WEB站點(diǎn)中的每一個(gè)腳步文件建立查詢請(qǐng)求模型,通過幾天甚至數(shù)月的自我學(xué)習(xí)過程來學(xué)習(xí)并維護(hù)一份查詢請(qǐng)求數(shù)據(jù)庫。該數(shù)據(jù)庫的內(nèi)容包含了每次查詢操作的詳細(xì)信息、請(qǐng)求歸類和分析結(jié)果。并且建立動(dòng)態(tài)查詢請(qǐng)求規(guī)則,Agent一旦檢測(cè)到違反該規(guī)則的查詢請(qǐng)求后會(huì)向Server端傳遞相關(guān)信息,Server端再結(jié)合其它的掃描過程綜合判斷發(fā)起請(qǐng)求的文件是否為Webshell,并最終決定是否向管理員報(bào)警。
6.1.2建立機(jī)器學(xué)習(xí)日志分析系統(tǒng)
由于數(shù)據(jù)庫操作記錄日志量非常大,使用人工的方法難以進(jìn)行精確篩選和審計(jì)。所以需要建立一套機(jī)器自學(xué)習(xí)的日志審計(jì)系統(tǒng)。該日志審計(jì)系統(tǒng)主要基于查詢模型白名單學(xué)習(xí)與數(shù)學(xué)統(tǒng)計(jì)模型這兩方面進(jìn)行設(shè)計(jì)。
查詢模型白名單學(xué)習(xí)系統(tǒng):
在一個(gè)網(wǎng)站系統(tǒng)中,由于系統(tǒng)業(yè)務(wù)邏輯相對(duì)固定,執(zhí)行的數(shù)據(jù)庫查詢語句可以歸類并且是可預(yù)測(cè)的,基于這些事實(shí)可以建立一套自學(xué)習(xí)系統(tǒng),在無人值守的狀態(tài)下進(jìn)行無監(jiān)督的機(jī)器學(xué)習(xí)。在對(duì)日志進(jìn)行泛化處理之后,根據(jù)特征(包括時(shí)間,查詢語句,參數(shù)等)建立N維的特征向量。使用k-均值聚類算法對(duì)日志進(jìn)行初步分組。其中對(duì)參數(shù)的處理使用局部加權(quán)線性回歸算法預(yù)測(cè)參數(shù)類型。對(duì)聚類后的數(shù)據(jù)進(jìn)行抽樣,使用貝葉斯決策樹進(jìn)行抽樣結(jié)果的機(jī)器決策。
數(shù)學(xué)統(tǒng)計(jì)模型系統(tǒng):
由于竊密型web應(yīng)用腳本后門只服務(wù)于入侵者,所執(zhí)行的查詢語句也是超出業(yè)務(wù)系統(tǒng)正常使用邏輯的,在一個(gè)有一定訪問量級(jí)的業(yè)務(wù)系統(tǒng)中,竊密使用的查詢語句是執(zhí)行量最少的。對(duì)
業(yè)務(wù)系統(tǒng)數(shù)據(jù)庫的日志進(jìn)行參數(shù)歸一化處理后,正常應(yīng)用中的查詢語句與竊密使用的語句從數(shù)量上來看一定有數(shù)量級(jí)的差距??梢越⒉樵冋Z句的統(tǒng)計(jì)模型,也可以對(duì)竊密型Webshell行為進(jìn)行審計(jì)。
6.2檢測(cè)系統(tǒng)設(shè)計(jì)
該方法有兩種實(shí)現(xiàn)過程:
一種是直接在數(shù)據(jù)庫服務(wù)器上增加日志審計(jì)客戶端,可以實(shí)時(shí)的審計(jì)數(shù)據(jù)庫操作記錄。
優(yōu)點(diǎn)是審計(jì)全面并且處于攻擊后方被人為破壞幾率較小;
缺點(diǎn)是數(shù)據(jù)庫在開啟較多的日志記錄的情況下會(huì)造成嚴(yán)重的性能負(fù)擔(dān)。
圖1:審計(jì)型Agent
另外一種實(shí)現(xiàn)是方法是在WEB服務(wù)器上部署代理型Agent,代理型Agent可以代理所有的數(shù)據(jù)庫操作過程,精確的檢索出異常操作,并且較審計(jì)型檢測(cè)速度快。代理型Agent可以經(jīng)過優(yōu)化后與中間件進(jìn)行深度結(jié)合能夠追蹤到發(fā)起數(shù)據(jù)查詢請(qǐng)求的具體腳本文件。
優(yōu)點(diǎn)是檢測(cè)速度快,精準(zhǔn)度高,可以查詢到發(fā)起查詢操作的具體的腳本文件;
缺點(diǎn)是:位于前端WEB服務(wù)器上被破壞的可能性較大。學(xué)習(xí)過程時(shí)間稍長。
圖2:代理型Agent
7.總結(jié)
只依靠一種檢測(cè)方法也是很難以進(jìn)行全面檢測(cè)的。在真實(shí)的環(huán)境中進(jìn)行部署檢測(cè)系統(tǒng)時(shí)需要同步的部署傳統(tǒng)檢測(cè)方法的系統(tǒng),來達(dá)到互補(bǔ)和增強(qiáng)檢測(cè)結(jié)果可行度的目的。