常规的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内存马的查杀方法外,如需了解更加全面的内存马查杀方法,以及更多的网络安全技术,可在美亚柏科企业网络安全能力培训(ECSC)课程中进行学习。
美亚柏科
企业网络安全能力(ECSC)培训
该培训主要面向企业或信息化部门负责人、网络安全工程师、企业网络安全攻防赛参赛队伍。课程包括政策解读、攻防技术、赛事技巧三大板块。
通过培训有助于提高企业对网络安全的认识,强化对网络安全基本要求的理解,提升网络安全工程师的安全防护能力,促进企业在网络安全领域的合规性建设和日常安全管理。