Webshell檢測
背景:
在B/S架構為主流的當下,web安全成了攻防領域的主戰場,其中上傳webshell是所有web黑客入侵后一定會做的事,所以檢測網站中是否有webshell程序是判斷被入侵強有力的證據。
目的:
通過多種維度組成多種方案來幫助管理員盡可能快的在大量文件中檢索出webshell。
注意:
多種方案可疊加使用,方案與方案之間無互斥關系,多種方案混合使用可提高檢測率。如是多種方案疊加使用的話需對結果進行去重處理。
思路1(基於日志檢測):
此方法可采用的維度較多,且不會對業務造成影響,是性價比非常高的一種方法。
1、從ELK提取WEB訪問日志,以下為日志舉例:
172.20.163.127 - - [21/Feb/2019:16:28:03 +0800] "GET / HTTP/1.1" 200 3380 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
172.20.163.127 - - [21/Feb/2019:16:28:03 +0800] "GET /icons/openlogo-75.png HTTP/1.1" 200 6040 "http://172.20.163.123/" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
172.20.163.127 - - [21/Feb/2019:16:28:55 +0800] "GET /game.php HTTP/1.1" 200 221 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
172.20.163.127 - - [21/Feb/2019:16:29:00 +0800] "GET /abc.php HTTP/1.1" 404 502 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.36 SE 2.X MetaSr 1.0"
2、提取狀態碼、訪問文件名稱、訪問時間、user-agent
3、將提取到的信息與webshell判斷邏輯做匹配
思路2(基於流量檢測):
此方法需要配合IDS使用,且對IDS日志實時性有一定要求。
1、在網絡入口處部署IDS
2、實時提取IDS關於請求webshell的原始數據包
3、解析提取到的數據包,並將其源目IP、TCP序列號取出
4、鏡像網絡入口處流量,根據提取到的源目IP、TCP的ACK抓取相應回包,並解析其7層http的狀態碼
思路3(基於agent):
此方法需要在主機上部署agent程序,涉及范圍會比較大。
1、在主機上部署agent
2、周期性檢測web文件夾內文件屬主與生成時間