淺談webshell檢測方式


一  什麼是webshell

“web”的含義是顯然需要服務器開放web服務,“shell”的含義是取得對服務器某種程度上操作權限。webshell常常被稱爲匿名用戶(***者)通過網站端口對網站服務器的某種程度上操作的權限。
簡單理解:webshell就是一個web的頁面,但是它的功能非常強大可以獲得一些管理員不希望你獲得的權限,比如執行系統命令、刪除web頁面、修改主頁等。
webshell中由於需要完成一些特殊的功能就不可避免的用到一些特殊的函數,我們也就可以對着特徵值做檢查來定位webshell,同樣的webshell本身也會進行加密來躲避這種檢測。


二  webshell長什麼樣子

wKioL1aSGzjznxYhAAFT6yjFz00665.png


3.Webshell後門檢測

目前針對Webshell的特徵檢測一般是通過特徵比對及文件屬性異常的靜態檢測和基於訪問情況、行爲模式特徵的動態檢測方式進行查殺,由於竊密型Webshell通常會僞裝成正常的WEB腳本文件,靜態特徵檢測及動態行爲檢測都無法有效的針對此類後門進行檢測。


4.傳統及現有的檢測方法

4.1靜態檢測

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

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

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

4.2動態檢測

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

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

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

4.3日誌分析

使用Webshell一般不會在系統日誌中留下記錄,但是會在網站的web日誌中留下Webshell頁面的訪問數據和數據提交記錄。日誌分析檢測 技術通過大量的日誌文件建立請求模型從而檢測出異常文件,稱之爲:HTTP異常請求模型檢測。例如:一個平時是GET的請求突然有了POST請求並且返回 代碼爲200、某個頁面的訪問者IP、訪問時間具有規律性等。

優點:採用了一定數據分析的方式,網站的訪問量達到一定量級時這種檢測方法的結果具有較大參考價值。

缺點:存在一定誤報,對於大量的訪問日誌,檢測工具的處理能力和效率會比較低。

4.4統計學

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

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

1、信息熵(Entropy):通過使用ASCII碼錶來衡量文件的不確定性;

2、最長單詞(Longest
Word):最長的字符串也許潛在的被編碼或被混淆;

3、重合指數(Index
of Coincidence):低重合指數預示文件代碼潛在的被加密或被混效過;

4、特徵(Signature):在文件中搜索已知的惡意代碼字符串片段;

5、壓縮(Compression):對比文件的壓縮比。

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

5.傳統檢測方法的缺陷

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

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


6.新型Webshell後門檢測方法設計

6.1檢測方法

6.1.1基於數據庫操作審計的檢測方式

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

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

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

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

6.1.2建立機器學習日誌分析系統

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

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

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

  •  數學統計模型系統:

由於竊密型web應
用腳本後門只服務於***者,所執行的查詢語句也是超出業務系統正常使用邏輯的,在一個有一定訪問量級的業務系統中,竊密使用的查詢語句是執行量最少的。對
業務系統數據庫的日誌進行參數歸一化處理後,正常應用中的查詢語句與竊密使用的語句從數量上來看一定有數量級的差距。可以建立查詢語句的統計模型,也可以
對竊密型Webshell行爲進行審計。

6.2檢測系統設計

該方法有兩種實現過程:

一種是直接在數據庫服務器上增加日誌審計客戶端,可以實時的審計數據庫操作記錄。

優點是審計全面並且處於***後方被人爲破壞機率較小;

缺點是數據庫在開啓較多的日誌記錄的情況下會造成嚴重的性能負擔。



wKiom1aSHEGwJJp6AACCcRCYpcI980.png


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

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

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


wKioL1aSHG2zCj8nAAC5M-hylk0946.png


7.總結

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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章