天天看點

淺談webshell檢測方式3.Webshell後門檢測4.傳統及現有的檢測方法5.傳統檢測方法的缺陷6.新型Webshell後門檢測方法設計7.總結

一  什麼是webshell

“web”的含義是顯然需要伺服器開放web服務,“shell”的含義是取得對伺服器某種程度上操作權限。webshell常常被稱為匿名使用者(入侵者)通過網站端口對網站伺服器的某種程度上操作的權限。

簡單了解:webshell就是一個web的頁面,但是它的功能非常強大可以獲得一些管理者不希望你獲得的權限,比如執行系統指令、删除web頁面、修改首頁等。

webshell中由于需要完成一些特殊的功能就不可避免的用到一些特殊的函數,我們也就可以對着特征值做檢查來定位webshell,同樣的webshell本身也會進行加密來躲避這種檢測。

二  webshell長什麼樣子

<a href="http://s3.51cto.com/wyfs02/M02/79/75/wKioL1aSGzjznxYhAAFT6yjFz00665.png" target="_blank"></a>

目前針對Webshell的特征檢測一般是通過特征比對及檔案屬性異常的靜态檢測和基于通路情況、行為模式特征的動态檢測方式進行清除,由于竊密型Webshell通常會僞裝成正常的WEB腳本檔案,靜态特征檢測及動态行為檢測都無法有效的針對此類後門進行檢測。

靜态特征檢測是指對腳本檔案中所使用的關鍵詞、高危函數、檔案修改的時間、檔案權限、檔案的所有者以及和其它檔案的關聯性等多個次元的特征進行檢 測,即先建立一個惡意字元串特征庫,例如:“組專用大馬|提權|木馬|PHP\s?反彈提權cmd執行”,“WScript.Shell、 Shell.Application、Eval()、Excute()、Set Server、Run()、Exec()、ShellExcute()”,同時對WEB檔案修改時間,檔案權限以及檔案所有者等進行确認。通常情況下 WEB檔案不會包含上述特征或者特征異常,通過與特征庫的比對檢索出高危腳本檔案。

該檢測方法的優點:可快速檢測,快速定位;

缺點:容易誤報,無法對加密或者經過特殊處理的Webshell檔案進行檢測。尤其是針對竊密型Webshell無法做到準确的檢測,因為竊密型Webshell通常具有和正常的WEB腳本檔案具有相似的特征。

動态特征檢測通過Webshell運作時使用的系統指令或者網絡流量及狀态的異常來判斷動作的威脅程度,Webshell通常會被加密進而避免靜态 特征的檢測,當Webshell運作時就必須向系統發送系統指令來達到控制系統或者操作資料庫的目的,通過檢測系統調用來監測甚至攔截系統指令被執行,從 行為模式上深層檢測腳本檔案的安全性。

優點:可用于網站叢集,對新型變種腳本有一定的檢測能力。

缺點:針對特定用途的後門較難檢測,實施難度較大。

使用Webshell一般不會在系統日志中留下記錄,但是會在網站的web日志中留下Webshell頁面的通路資料和資料送出記錄。日志分析檢測 技術通過大量的日志檔案建立請求模型進而檢測出異常檔案,稱之為:HTTP異常請求模型檢測。例如:一個平時是GET的請求突然有了POST請求并且傳回 代碼為200、某個頁面的通路者IP、通路時間具有規律性等。

優點:采用了一定資料分析的方式,網站的通路量達到一定量級時這種檢測方法的結果具有較大參考價值。

缺點:存在一定誤報,對于大量的通路日志,檢測工具的處理能力和效率會比較低。

在Webshell後門檢測中被使用較為廣泛的一種方法是統計學方法,NeoPi是國外流行的一個基于統計學的Webshell後門檢測工具,它使用五種計學方法在腳本檔案中搜尋潛在的被混淆或被編碼的惡意代碼。

NeoPi使用以下五種檢測方法:

1、資訊熵(Entropy):通過使用ASCII碼表來衡量檔案的不确定性;

2、最長單詞(Longest

Word):最長的字元串也許潛在的被編碼或被混淆;

3、重合指數(Index

of Coincidence):低重合指數預示檔案代碼潛在的被加密或被混效過;

4、特征(Signature):在檔案中搜尋已知的惡意代碼字元串片段;

5、壓縮(Compression):對比檔案的壓縮比。

采用這種檢測方法也存在明顯的弱點,NeoPi的檢測重心在于識别混淆代碼,它常常在識别模糊代碼或者混淆編排的木馬方面表現良好。未經模糊處理的 代碼對于NeoPi的檢測機制較為透明。如果代碼整合于系統中的其它腳本之上,這種“正常”的檔案極可能無法被NeoPi識别出來。

現有技術是針對普通的腳本後門、以控制伺服器為目的、通常包含較為明顯的靜态特征或者行為模式,不能對竊密型後門進行有效檢測。

由于業務系統更新頻繁,WEB腳本檔案相關的屬性經常發生變化是以偏重于檔案屬性檢測的方法往往會産生更多的誤報,基于動态行為檢測的方法往往技術 難度較大,難以實作,而且對系統造成的性能影響較大,甚至可能對系統穩定性造成影響,基于日志的檢測方法,一方面,由于業務功能較多且複雜,部分功能可能 很少會被用到,其日志通路可能會命中某些檢測規則進而造成更多的誤報,另一方面,大量的日志記錄處理起來會對伺服器性能産生負擔、而且由于日志量巨大檢測 過程消耗時間長,檢測速度較慢。而竊密型Webshell後門往往會模拟正常的資料庫操作、不具有較為明顯靜态特殊屬性、被通路的次數比較少無法形成較為 明顯的通路特征,通過日志分析也很難發現。

針對竊密型Webshell必須具有操作資料庫的能力,可以引申出一種新的檢測方法,通過分析正常WEB腳本檔案和竊密型Webshell對資料庫操作的差異進行分析是本檢測方法所重點研究的方向。

正常情況下WEB站點進行資料操作的過程應該是重複性且較為複雜的查詢過程,這種查詢通常精确度非常高,查詢過程不會出現類似于“select * from”這種查詢語句。正常的WEB腳本在進行資料庫操作的過程中也不會出現跨越資料庫查詢的情況,一旦出現這種現象基本可以判斷為非正常的WEB腳本 操作過程。

就以上思路設計如下的檢測方案:

審計資料操作記錄。通過審計資料庫操作記錄可以單獨的為每一個WEB站點甚至WEB站點中的每一個腳步檔案建立查詢請求模型,通過幾天甚至數月的自 我學習過程來學習并維護一份查詢請求資料庫。該資料庫的内容包含了每次查詢操作的詳細資訊、請求歸類和分析結果。并且建立動态查詢請求規則,Agent一 旦檢測到違反該規則的查詢請求後會向Server端傳遞相關資訊,Server端再結合其它的掃描過程綜合判斷發起請求的檔案是否為Webshell,并 最終決定是否向管理者報警。

由于資料庫操作記錄日志量非常大,使用人工的方法難以進行精确篩選和審計。是以需要建立一套機器自學習的日志審計系統。該日志審計系統主要基于查詢模型白名單學習與數學統計模型這兩方面進行設計。

查詢模型白名單學習系統:

在一個網站系統中,由于系統業務邏輯相對固定,執行的資料庫查詢語句可以歸類并且是可預測的,基于這些事實可以建立一套自學習系統,在無人值守的狀 态下進行無監督的機器學習。在對日志進行泛化處理之後,根據特征(包括時間,查詢語句,參數等)建立N維的特征向量。使用k-均值聚類算法對日志進行初步 分組。其中對參數的處理使用局部權重線性回歸算法預測參數類型。對聚類後的資料進行抽樣,使用貝葉斯決策樹進行抽樣結果的機器決策。

 數學統計模型系統:

由于竊密型web應

用腳本後門隻服務于入侵者,所執行的查詢語句也是超出業務系統正常使用邏輯的,在一個有一定通路量級的業務系統中,竊密使用的查詢語句是執行量最少的。對

業務系統資料庫的日志進行參數歸一化處理後,正常應用中的查詢語句與竊密使用的語句從數量上來看一定有數量級的差距。可以建立查詢語句的統計模型,也可以

對竊密型Webshell行為進行審計。

該方法有兩種實作過程:

一種是直接在資料庫伺服器上增加日志審計用戶端,可以實時的審計資料庫操作記錄。

優點是審計全面并且處于攻擊後方被人為破壞幾率較小;

缺點是資料庫在開啟較多的日志記錄的情況下會造成嚴重的性能負擔。

<a href="http://s3.51cto.com/wyfs02/M01/79/77/wKiom1aSHEGwJJp6AACCcRCYpcI980.png" target="_blank"></a>

另外一種實作是方法是在WEB伺服器上部署代理型Agent,代理型Agent可以代理所有的資料庫操作過程,精确的檢索出異常操作,并且較審計型檢測速度快。代理型Agent可以經過優化後與中間件進行深度結合能夠追蹤到發起資料查詢請求的具體腳本檔案。

優點是檢測速度快,精準度高,可以查詢到發起查詢操作的具體的腳本檔案;

缺點是:位于前端WEB伺服器上被破壞的可能性較大。學習過程時間稍長

<a href="http://s1.51cto.com/wyfs02/M01/79/75/wKioL1aSHG2zCj8nAAC5M-hylk0946.png" target="_blank"></a>

隻依靠一種檢測方法也是很難以進行全面檢測的。在真實的環境中進行部署檢測系統時需要同步的部署傳統檢測方法的系統,來達到互補和增強檢測結果可行度的目的。

     本文轉自Tar0 51CTO部落格,原文連結http://blog.51cto.com/tar0cissp/1733489:,如需轉載請自行聯系原作者