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文件夹内文件属主与生成时间