基于 Agent + Instrumentation + ASM 的 Java 进程内存马检测与清除工具(含 GUI)
本项目是一款用于检测与清除 Java 进程中内存马的工具。工具设计为三部分:
- GUI 管理端(JFormDesigner):提供可视化操作界面,用于目标进程选择、会话管理、实时日志查看与分发、审计与导出。
- Agent(注入模块):运行在目标 JVM 内部,基于 Instrumentation获取字节码、保存原始字节码、使用 ASM 分析字节码以判定可疑/恶意模块,并在确认后通过 redefineClasses + 反射手段执行清除。
- 部分工具类:如socket服务端,JVM列表处理类等
GUI 与 Agent 通过 socket 连接通信:日志集中展示并按内存马类型分发到对应日志面板,便于定位与审计。
socket分别监听本地8899端口和9900端口。
- 可视化管理界面(JFormDesigner)——便捷、直观的操作流程。
- Agent 注入(attach)——运行时进入目标进程执行检测与清除。
- 字节码持久化保存——把抓取的内存马字节码 写入本地,便于离线反编译与深度分析。
- 基于 ASM 的字节码分析引擎——按规则/签名识别可疑行为模式。
- 一键清除(Instrumentation.redefineClasses() + 反射移除入口)——尽可能彻底移除内存马入口与持久化引用。
- 实时日志分发与导出——按模块/类型分发日志并支持导出 JSON/HTML 报告。
- 可扩展的检测规则库——便于添加新型内存马特征与策略。
-
注入与会话管理
- 使用 Attach API 将 Agent 加载到目标 JVM,并建立 socket 会话。
- 支持通过 PID 列表选择或手动指定目标进程。
-
字节码抓取与保存
- 在目标进程内抓取内存马字节码。
- 将抓取到的字节码持久化到磁盘(按包/类名组织),便于使用 JADX /IDEA 等工具反编译。
-
字节码分析(ASM)
- 解析方法调用、反射使用、动态类生成、独立 ClassLoader 等可疑特征。
- 根据规则/签名对可疑模块进行分类(例如:动态加载并执行字节数组的模块、持有网络回连逻辑的模块、注入到关键框架的 hook 等)。
-
清除逻辑
- 对确认的内存马使用 Instrumentation.redefineClasses()将恶意类替换为安全/空实现。
- 通过反射断开入口(清理静态字段、移除 hook、停止相关线程、关闭网络连接等)。
- 清除操作在进程内执行并记录完整操作日志以备审计。
-
日志与告警
- 所有检测与清除操作实时回传 GUI 并按模块分发到相应日志面板。
- 支持标记高危事件为告警并导出审计报告
重要提醒:本工具仅用于在已获得授权的环境中进行安全检测与应急响应。未经授权在第三方系统使用可能违法或违反政策。
启动 GUI
1.Kill_Memshell.jar是主文件,MemShellScannerAgent-1.0-SNAPSHOT.jar是agent端,使用时两个文件需要在同一目录下。
2.导出的内存马字节码在当前根目录下的dumpClassFile文件夹下。
java -jar Kill_Memshell.jar
- 启动 GUI 点击获取当前进程,可得到当前运行的JVM进程列表。
- 选择进程点击attach则可注入进程,下方的日志界面会输出检测进程和结果。在中间的内存马分类板块会输出各内存马相关信息。
- 在内存马板块获取到内存马类名后可在右侧板块按照格式[filter/servlet/listener….]classname 输入,点击清除内存马,即可移除进程中内存马。
- 导出的内存马字节码保存在当前根目录下的dumpClassFile文件夹中
- 支持导出抓取到的字节码(打包为 zip)以便离线反编译分析。
- 支持将检测报告导出为 JSON 或 HTML 以便存档与审计。
- 权限:Attach 与类重定义通常需要对目标机器/进程有相应权限(例如 root / 管理员 / 进程所有者)。
- 审计:所有清除操作应保留完整日志与抓取的字节码备份,以便回溯与复现。
- 合法性:请在获得明确授权的前提下操作;未经授权的入侵检测与清除可能违法。
- 扩展 ASM 规则库以覆盖更多内存马变种。
- 增加“清除策略模板”并支持回滚机制。
- 引入沙箱机制,在隔离的 JVM 中先执行清除试运行。
- 集成自动化反编译与相似签名比对(如 yara-like 签名库)。
- 提供远程集中管理与多 Agent 会话汇总功能。
© 版权声明
THE END
请登录后查看评论内容