最近在研究webshell檢測的小東西,所以開啟一個專門記錄webshell檢測工具開發的專欄,若有遺漏之處,請大佬們指出。
本篇大致了解以下內容
- 什么是webshll?有哪些類型?各自有什么不同?
- Webshell有哪些常見的檢測方式?
- 對于webshell檢測,最難的挑戰是什么?
【什么是webshll?有哪些類型?各自有什么不同?】
屬于木馬其中一種類型,主要是攻擊者通過web端,上傳一些惡意代碼文件,嘗試獲取服務器信息和權限的文件,一般的,利用能夠執行系統命令、加載代碼的函數,或者組合一些普通函數,完成一些高級間諜功能的網站后門的腳本,叫做 Webshell
大致分一句話木馬、小馬(通常比較簡單)、大馬(代碼量大,可以更好獲取服務器信息,但易被發現)
【Webshell有哪些常見的檢測方式?】
大致分為五種
- 靜態檢測:常見的就是正則匹配 和 文件md5對比,只能檢測固定的木馬腳本
- 動態檢測:
- 污點分析模擬執行:主要是借助php編譯的特性,在php的語法分析中生成AST,獲取命令執行關鍵執行節點,并獲取最終結果【可以借助php parser】
- 語法檢測:剝離代碼、注釋,分析變量、函數、字符串、語言結構
- 統計學檢測:主要是根據Webshell腳本與正常源碼的差異性來識別的
- 詞袋統計
- 基于黑白名單的檢測
- 基于抽象語法樹的評分規則
- 基于opcode的機器學習研究【詞袋分析】
【哪一種檢測方式是比較有效的?】
- 河馬采用的海量hash值匹配,數據夠大,準確率也會變高
- 單純是php檢測的話,可以采用AST抽象樹,進行代碼剝離,得到最終的執行結果,這個是D盾的做法
- 也可以用機器學習,通過數據訓練出來的hash值和敏感詞,進行統計計分,同樣需要大量的數據支撐