Java内存马检测工具-跨平台通用

admin 2025-12-31 00:52:59 网络安全文章 来源:ZONE.CI 全球网 0 阅读模式

文章总结: Thisdocumentintroducesacross-platformJavamemoryshelldetectiontoolsupportingGUIandCLImodes.Itidentifiescontainer,framework,andagent-basedshellsbyanalyzingmissingclassfiles,keywords,bytecodefeatures,andsuspiciouspaths.Keyfeaturesincludeprocessscanning,codedecompilation,shellremovalfortypeslikeFiltersandControllers,andreportgeneration.Whileeffectiveformostwebshells,Agent-basedvariantscannotberemoveddynamicallyandrequireapplicationrestarts.ThetoolrequiresJDK1.8+andprovidesapracticalsolutionfordetectingandeliminatinghiddenthreatsinJavaenvironments. 综合评分: 87 文章分类: 安全工具,应急响应,WEB安全,应用安全


cover_image

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 修改的类

检测原理

  1. 无class文件检测: 动态注入的内存马在磁盘上没有对应的.class文件
  2. 类名关键字检测: evil、shell、cmd、backdoor、hack、exploit、payload、behinder、godzilla、antsword、memshell、webshell、inject、malicious、trojan、reverse
  3. 字节码特征检测: Runtime.exec、ProcessBuilder、ScriptEngine、ClassLoader.defineClass、JNDI lookup、反序列化等危险调用
  4. 类路径检测: 不在标准jar/war/classes目录中的类

操作功能

  • 进程扫描: 自动发现系统中运行的Java进程
  • 代码反编译: 查看可疑类的源代码,支持语法高亮
  • 内存马移除: 支持移除 Filter、Servlet、Listener、Valve、Controller、Interceptor
  • 报告导出: 支持JSON和文本格式的检测报告

环境要求

  • JDK 1.8+

快速开始

图形界面使用

java -jar memory-shell-detector-gui.jar

GUI界面功能:

  1. 左侧面板显示Java进程列表,双击可扫描
  2. 右上面板显示检测结果,按类型分组(Filter/Servlet/Listener/Valve/Controller/Interceptor/Agent等)
  3. 可疑内存马以红色高亮显示
  4. 右下面板显示反编译代码
  5. 工具栏提供刷新、扫描、查看、移除、导出等操作

命令行使用

列出Java进程

java -jar memory-shell-detector-cli.jar -l

扫描指定进程

java&nbsp;-jar&nbsp;memory-shell-detector-cli.jar&nbsp;-s&nbsp;<PID>

查看可疑类代码

java&nbsp;-jar&nbsp;memory-shell-detector-cli.jar&nbsp;-v&nbsp;<类名>&nbsp;-p&nbsp;<PID>

移除内存马

java&nbsp;-jar&nbsp;memory-shell-detector-cli.jar&nbsp;-r&nbsp;<类名>&nbsp;-p&nbsp;<PID>

导出检测报告

# JSON格式
java&nbsp;-jar&nbsp;memory-shell-detector-cli.jar&nbsp;--report&nbsp;report.json&nbsp;-p&nbsp;<PID>&nbsp;-f&nbsp;json

# 文本格式
java&nbsp;-jar&nbsp;memory-shell-detector-cli.jar&nbsp;--report&nbsp;report.txt&nbsp;-p&nbsp;<PID>&nbsp;-f&nbsp;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 | 安全,已在白名单中 |

#

注意事项

  1. 权限要求: 扫描其他进程需要足够的系统权限
  2. JDK版本: 目标进程和检测工具需使用相同或兼容的JDK版本
  3. 移除风险: 移除内存马可能影响应用正常运行,建议先备份
  4. Agent型: Agent型内存马无法通过本工具移除,需要重启应用
  5. 重启Tomcat: 修改Agent后需要重启Tomcat才能生效(Agent会被JVM缓存)

瑕疵

内存马移除,再次扫描 jvm,会有缓存,实际上内存马已经清除。

工具好不好我说的不算,还需各位师傅们测试,不断的优化,才是好工具

后台回复:memshell 即可获取工具


免责声明:

本文所载程序、技术方法仅面向合法合规的安全研究与教学场景,旨在提升网络安全防护能力,具有明确的技术研究属性。

任何单位或个人未经授权,将本文内容用于攻击、破坏等非法用途的,由此引发的全部法律责任、民事赔偿及连带责任,均由行为人独立承担,本站不承担任何连带责任。

本站内容均为技术交流与知识分享目的发布,若存在版权侵权或其他异议,请通过邮件联系处理,具体联系方式可点击页面上方的联系我

本文转载自:我不懂安全 《Java内存马检测工具-跨平台通用》

评论:0   参与:  0