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