https://mp.weixin.qq.com/s/mBI3B8sBeT8DzVi6FFQq6w
1.Servlet-API类内存马—java-memshell-scanner
使用这个工具进行查和杀:https://github.com/c0ny1/java-memshell-scanner
支持Servlet/Filter/Listener类型内存马,使用只要将项目的JSP文件运行到网站根目录即可直接访问
效果:如下图中名称里面带$表示匿名内部类,这种也是比较可疑的,一般来说三大组件里面的类都是有正常名的,出现这种情况,大概率时攻击者构造内存马的时候创建相关恶意组件类实例,没有命名,创建的是匿名类实现对应接口,可以看到十分简单快捷的找出了上面三种内存马;(一般实战中攻击者比较喜欢使用filter类型的马,我们可以观察Patern字段,这个字段是该filter过滤的url特征);然后一般情况下,我们需要关注一些重点业务实例类,也就是可能存在被利用的servlet组件实例,比如下图中,我们都是通过jsp去注入的内存马,jsp本身就是一个特殊的servlet,所以我们看到所以的匿名内部类的外部类都是jsp下的一个实例类

可以对页面疑似存在内存马的类进行导出,将导出的代码使用JADX反编译查看源码中是否存在恶意代码,存在即可kill掉

- 问题1:对于Listener的内存马,点击Kill,内存马无法有效删除
- 问题2:使用这个tomcat-memshell-scanner导出恶意类进行分析时,当前项目的JDK版本不能超过11,超过11无法成功导出
- 对于Filter类型的内存马,如果你成功查杀一次,那么只要服务器不重启,无法在注入相同的内存马
- 但是对于Servlet类型的内存马,你查杀一次,但是没删除对应注入内存马的.jsp文件,还是可以继续注入内存马
- 还有个问题就是当项目真正运行时上传jsp文件到文件目录下无法访问,需要重启项目才能正常访问
1.1.使用哥斯拉注入内存马
我这里使用哥斯拉无法注入内存马(原因是我的Tomcat版本为10版本,并且使用的依赖是jakarta.servlet-api),解决方法将tomcat10降级为tomcat9,即可注入成功。换了个哥斯拉特战版注入成功后,使用工具将内存马删除后,发现还是能正常连接,并且无法dump出恶意文件,太奇怪了
|
|

2.cop.jar
项目地址:https://github.com/LandGrey/copagent
这个就没有像上面那个这么智能了,cop.jar 会把正在运行的 java应用文件全部还原为jsp文件,然后我们可以下载到本地,用D盾或者其它杀软进行查杀。使用cop.jar这个工具时要注意jdk版本,jdk版本过高经常卡死
|
|
3.shell-anaylzer
缺点:不能查杀Spring框架型内存马,只能查杀Servlet-API型内存马
项目地址:https://github.com/4ra1n/shell-analyzer
内存马检测工具shell-analyzer(1)最初版展示与设计思路
内存马检测工具shell-analyzer(2)远程查杀实现
|
|
本地查杀
|
|
即可对当前Java进程中所有Servlet组件进行分析,反编译对应的代码,将可疑代码可以使用AI进行分析也可以保存使用WebShell查杀工具进行查杀

将可以类名字复制出来进行删除即可,这只能删除内存马,没法删除WebShell,删除后刷新依然会继续显示,但是实际上哥斯拉已经无法连接了

远程查杀
|
|

4.Arthas
优点:可以查找所有类型的内存马,包括Spring Controller类型和Interceptor类型内存马
项目地址:https://github.com/alibaba/arthas/releases
最后一个工具就是Arthas,这个其实就是一个JAVA的排查工具,它会帮你列出当前程序加载的类,当前就只有Tomcat这个Java程序在运行。
|
|

|
|
4.1.使用Arthas查找Spring框架内存马
https://mp.weixin.qq.com/s/53M9HowgJC6wZHNO6iEYPQ
https://forum.butian.net/share/4053

将可疑的Controller层代码和Interceptor代码反编译到本地进行分析

杀掉这个内存马感觉只能靠重启Spring中间件了
5.FindShell
https://github.com/geekmc/FindShell
|
|
万不得已,重启Java中间件
案例:使用Shiro反序列化靶场来搭建

使用工具一键注入4种类型内存马

使用Arthas进行排查,可以看到存在可以的Filter

|
|

Arthas好像不具备杀内存马功能,只具备查找和反编译功能,杀我这使用的是shell-analyzer
