摘要: 常规的Webshell基于文件类形式存在,而内存马是一种无文件攻击手段,因此也被称为不落地马或者无文件马。因为常规的Webshell有文件落地,所以被发现的机率较大。而内存马存在于内存中,降低被发现的概率,给检测带来巨大难度,通常被作为后门进...
常规的Webshell基于文件类形式存在,而内存马是一种无文件攻击手段,因此也被称为不落地马或者无文件马。
因为常规的Webshell有文件落地,所以被发现的机率较大。而内存马存在于内存中,降低被发现的概率,给检测带来巨大难度,通常被作为后门进行使用,持久化地驻留在目标服务器中。
1、内存马检测难点
内存马的类型众多
根据不同的脚本类型,存在各种触发机制不同的内存马,没有稳定的静态特征,易于混淆,常规的WAF安全产品难以检测。
各种类型的“马”
内存马的存在形式
内存马仅存在于进程的内存空间中,系统层面的安全检测工具无法检测出内存马。
2、Java Servlet 内存马
Java Servlet 内存马攻击原理
Java Servlet 的实现原理,如下图:
客户端发起的web请求会依次经过Listener、Filter、Servlet三个组件,而内存马利用在请求过程中在内存中修改或动态注册新的组件,达到注入Webshell的目的。
Java Servlet 内存马检查方式
(1)使用工具Arthas发现内存马。Arthas是一款开源的Java诊断工具,基本使用场景是定位复现一些生产环境比较难以定位问题。可以在线排查问题,以及动态追踪Java代码,实时监控JVM状态等等。
java -jar .\arthas-boot.jar #java应用进程PID,如下图:
输入Mbean 查看或监控 Mbean 的属性信息,根据哥斯拉内存马的特性,进行筛选出异常组件,如下图:
(2)使用cop.jar工具提取Java内存马。把工具放在网站根目录下,输入:java -jar cop.jar -p,如下图:
(3)使用D盾工具对.copagent目录进行查杀,如下图:
上述是Java Servlet内存马的查杀方法外,如需了解更加全面的内存马查杀方法,以及更多的网络安全技术,欢迎持续关注我站!
稿源:厦门安胜网络科技有限公司