检测能力
容器型内存马
- Tomcat: Filter、Servlet、Listener、Valve
- Jetty: Filter、Servlet、Handler
- WebLogic: Filter、Servlet
- JBoss/WildFly (Undertow): Filter、Servlet
- Resin: Filter、Servlet
框架型内存马
- Spring MVC/Spring Boot: Controller、Interceptor
- Shiro: Filter
Agent型内存马
- 冰蝎 (Behinder)
- 哥斯拉 (Godzilla)
- 蚁剑 (AntSword)
- 天蝎 (Suo5)
- 通过 Instrumentation/ClassFileTransformer 修改的类
检测原理
- 无class文件检测: 动态注入的内存马在磁盘上没有对应的.class文件
- 类名关键字检测: evil、shell、cmd、backdoor、hack、exploit、payload、behinder、godzilla、antsword、memshell、webshell、inject、malicious、trojan、reverse
- 字节码特征检测: Runtime.exec、ProcessBuilder、ScriptEngine、ClassLoader.defineClass、JNDI lookup、反序列化等危险调用
- 类路径检测: 不在标准jar/war/classes目录中的类
操作功能
- 进程扫描: 自动发现系统中运行的Java进程
- 代码反编译: 查看可疑类的源代码,支持语法高亮
- 内存马移除: 支持移除 Filter、Servlet、Listener、Valve、Controller、Interceptor
- 报告导出: 支持JSON和文本格式的检测报告
环境要求
- JDK 1.8+
快速开始
图形界面使用
java -jar memory-shell-detector-gui.jar
命令行使用
列出Java进程
java -jar memory-shell-detector-cli.jar -l
扫描指定进程
java -jar memory-shell-detector-cli.jar -s <PID>
查看可疑类代码
java -jar memory-shell-detector-cli.jar -v <类名> -p <PID>
移除内存马
java -jar memory-shell-detector-cli.jar -r <类名> -p <PID>
导出检测报告
# JSON格式
java -jar memory-shell-detector-cli.jar --report report.json -p <PID> -f json
# 文本格式
java -jar memory-shell-detector-cli.jar --report report.txt -p <PID> -f text
命令行参数
| 参数 | 说明 |
|---|---|
-l, --list |
列出所有Java进程 |
-s, --scan <PID> |
扫描指定进程 |
-v, --view <类名> |
查看类的反编译代码 |
-r, --remove <类名> |
移除指定的内存马 |
-p, --pid <PID> |
指定目标进程ID |
--report <文件> |
导出检测报告 |
-f, --format <格式> |
报告格式: json/text |
--hex |
以十六进制显示字节码 |
--force |
强制执行(跳过确认) |
--verbose |
显示详细输出 |
-h, --help |
显示帮助信息 |
支持移除的内存马类型
| 类型 | 支持移除 |
|---|---|
| Filter | |
| Servlet | |
| Listener | |
| Valve | |
| Controller | |
| Interceptor | |
| Agent | (Agent型无法移除,需重启应用) |
风险等级
| 等级 | 说明 |
|---|---|
| CRITICAL | 确认为内存马,需立即处理 |
| HIGH | 高度可疑,建议人工确认 |
| MEDIUM | 中等风险,可能是正常组件 |
| LOW | 低风险,基本可排除 |
| SAFE | 安全,已在白名单中 |
注意事项
- 权限要求: 扫描其他进程需要足够的系统权限
- JDK版本: 目标进程和检测工具需使用相同或兼容的JDK版本
- 移除风险: 移除内存马可能影响应用正常运行,建议先备份
- Agent型: Agent型内存马无法通过本工具移除,需要重启应用
- 重启Tomcat: 修改Agent后需要重启Tomcat才能生效(Agent会被JVM缓存)
免责声明
1.一般免责声明:本文所提供的技术信息仅供参考,不构成任何专业建议。读者应根据自身情况谨慎使用且应遵守《中华人民共和国网络安全法》,作者及发布平台不对因使用本文信息而导致的任何直接或间接责任或损失负责。
2. 适用性声明:文中技术内容可能不适用于所有情况或系统,在实际应用前请充分测试和评估。若因使用不当造成的任何问题,相关方不承担责任。
3. 更新声明:技术发展迅速,文章内容可能存在滞后性。读者需自行判断信息的时效性,因依据过时内容产生的后果,作者及发布平台不承担责任。
本文为 独立观点,未经授权禁止转载。
如需授权、对文章有疑问或需删除稿件,请联系 FreeBuf
客服小蜜蜂(微信:freebee1024)



