【网络安全】Java内存马的检测与发现
一、Java内存马的现象
webshell可以正常访问,并且从log日志中可以看到webshell的访问状态码为200,但是在对应的目录中却找不到文件,如果存在此类情况,可以判断服务器中了内存马
二、检测思路
根据Java内存马的特点,检测思路如下:
- 注入jar包
- dump已加载的class字节码
- 反编译为java代码
- 源码webshell检测
这样检测比较消耗性能,可以考虑缩小源码检测
三、重点关注类
在检测过程中需要重点关注的几个类和方法:
javax/servlet/http/HttpServlet#service
org/apache/catalina/core/ApplicationFilterChain#doFilter
org/springframework/web/servlet/DispatcherServlet#doService
org/apache/tomcat/websocket/server/WsFilter#doFilter
四、检测方法
1. 检查方法(FindShell)
排查工具:FindShell:https://github.com/geekmc/FindShell
安装&打包方法:
- 进入到
FindShell
目录,打包项目,执行mvn package
- 如果没有
mvn
命令需要先install apache-maven
- 如果报错提示
sd-jdi.jar
的问题,就需要修改pom
⽂件中的sd-jdi.jar
⽂件的路径,然后重新打包
- 如果没有
- 打包成功后会在
target
⽬录下⽣成FindShell-1.0.jar
⽂件
通过官方文档可以得知检测命令为java -jar FindShell.jar --pid [目标JVM的PID]
- 找到
jvm
进程,并记住pid
:jps -l
- 查找内存⻢并
dump
出class
⽂件(保存在当前路径下):java -jar FindShell-1.0.jar --pid xxx —debug
发现内存马提示如下图所示
未发现内存马提示如下图所示:
针对dump
出来的⽂件使⽤jd-gui
进⾏class
反编译,可以发现是冰蝎3.0
2. 检查方法(sa-jdi)
排查工具:sa-jdi.jar: 在jdk中的/lib/目录下
、dumpclass.jar:https://github.com/hengyunabc/dumpclass
使用方法:
使用GUI的方法可以执行命令如下:
- 找到
sa-jdi.jar
⽂件位置:echo $JAVA_HOME/lib
- 出现图形化界面:
sudo java -cp sa-jdi.jar sun.jvm.hotspot.HSDB
- or 不找位置直接执行:
sudo java -classpath "$JAVA_HOME/lib/sa-jdi.jar" sun.jvm.hotspot.HSDB
- or
jhsdb hsdb
- or 不找位置直接执行:
注:如果在attach进程的时候提示error,多半是权限问题,程序权限和木马权限保持⼀致即可
注入以后可以在菜单栏的tools
中查看是否有关键类
如果发现存在关键class的话,可以使用dumpclass.jar
或者sa-jdi
文件进行dump(sa-jdi.jar
可以点击下图的create
进行创建)
如下图所示
左半部分图片上面为存在类,成功导出;
左半部分下面为不存在无法导出的结果
使用jd-gui
进行反编译
3. 检查方法(arthas-boot)
检查工具:arthas-boot.jar:https://github.com/alibaba/arthas/releases
使用方法:
java -jar arthas-boot.jar
- 查看相关类名:sc xxxxx类名
- 反编译类名:jad xxxxx类名
- 下载指定类到本地:dump xxxxx类名
直接反编译选中的类
4. 检查方法(cop.jar)
检查工具:cop.jar:https://github.com/LandGrey/copagent/
使用方法:java -jar cop.jar -p xxx
执行后在本地存放扫描结果,并标注高、中、低危
同时也把可能有问题的代码转成java
⼀并存放在本地
5. 检查方法(memshell_scanner)
检查工具:memshell_scanner.jsp:https://github.com/c0ny1/java-memshell-scanner
使用方法:把jsp
文件放在存在内存马的web目录中,然后访问该文件即可
参考链接:
- 内存马查杀思路:https://my.oschina.net/9199771/blog/5529686
- Arthas 简介:https://arthas.aliyun.com/doc/
其他内存马查杀工具: