文章总结: Thisdocumentintroducesacross-platformJavamemoryshelldetectiontoolsupportingGUIandCLImodes.Itidentifiescontainer,framework,andagent-basedshellsbyanalyzingmissingclassfiles,keywords,bytecodefeatures,andsuspiciouspaths.Keyfeaturesincludeprocessscanning,codedecompilation,shellremovalfortypeslikeFiltersandControllers,andreportgeneration.Whileeffectiveformostwebshells,Agent-basedvariantscannotberemoveddynamicallyandrequireapplicationrestarts.ThetoolrequiresJDK1.8+andprovidesapracticalsolutionfordetectingandeliminatinghiddenthreatsinJavaenvironments. 综合评分: 87 文章分类: 安全工具,应急响应,WEB安全,应用安全
Java内存马检测工具-跨平台通用
我不懂安全
2025年12月30日 14:31 北京
以下文章来源于轩公子谈技术 ,作者private null
轩公子谈技术 .
从0到1,五年翻身之路,安全笔记分享 擅长渗透测试,应急响应,内网渗透,代码审计。
应急其实有时候也蛮多的,然后内存马遇到的情况也不好说,有些工具只能检测特定的,而且要好几个并用,操作很麻烦,所以想写一个集成检测工具,图形化的系统用 gui,命令行的用 cli,都是基于 jdk1.8 来开发的,本地也测试了常见的类型,也都能检测出来。
功能特性
检测能力
容器型内存马
- 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
GUI界面功能:
- 左侧面板显示Java进程列表,双击可扫描
- 右上面板显示检测结果,按类型分组(Filter/Servlet/Listener/Valve/Controller/Interceptor/Agent等)
- 可疑内存马以红色高亮显示
- 右下面板显示反编译代码
- 工具栏提供刷新、扫描、查看、移除、导出等操作
命令行使用
列出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缓存)
瑕疵
内存马移除,再次扫描 jvm,会有缓存,实际上内存马已经清除。
工具好不好我说的不算,还需各位师傅们测试,不断的优化,才是好工具
后台回复:memshell 即可获取工具
免责声明:
本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。
任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。
本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我。
本文转载自:我不懂安全 《Java内存马检测工具-跨平台通用》
版权声明
本站仅做备份收录,仅供研究与教学参考之用。
读者将信息用于其他用途的,全部法律及连带责任由读者自行承担,本站不承担任何责任。









评论