Token导航 LogoToken导航TokenDH.com
Memory Shell Detector MCP logo
安全风控stdio官方级别未说明来源级核验

Memory Shell Detector MCP

MCP Server

基于FastMCP构建的Java内存马检测和清理工具,支持本地和SSH远程执行,提供源码分析和AI确认功能。

工具数

9

提示词数

0

GitHub Stars

25

资源数

0
PythonClaude安全Claude DesktopClaudeCursorWindsurfClineVS Code

安装说明

本站只整理中文说明和来源信息,不托管安装包,也不代用户安装。

作者 / 组织

RuoJi6

提供方

RuoJi6

最后核验

2026/5/17 20:20

运行时

Python

快速接入

先看主来源和安装命令,再打开仓库或文档;下面只保留这个条目的关键接入事实。

命令预览

uvx memory-shell-mcp

详细介绍

Memory Shell Detector MCP

基于 FastMCP 构建的 Java 内存马检测和清理工具 MCP 服务器,支持本地执行和 SSH 远程执行。

项目地址:https://github.com/RuoJi6/memory-shell-mcp

功能

功能工具名称对应命令
执行命令(本地/SSH)execute_command-
下载检测工具download_detector_tools-
列出Java进程list_java_processes-l
扫描指定进程scan_process`-s
`
查看可疑类代码view_class_code`-v -p
`
移除内存马remove_memory_shell`-r -p
`
导出检测报告export_report--report
获取系统信息get_system_info_tool-
检测网络状态check_network-

安全特性

  • 移除内存马前会先获取源代码供 AI 分析确认
  • 需要 AI 确认后(ai_confirmed=True)才会执行移除操作
  • 自动处理移除确认提示

环境要求

  • Python 3.10+
  • JDK 1.8+(目标机器)
  • uv(Python 包管理器)

快速开始(uvx 方式)

发布到 PyPI 后,直接使用 uvx 运行,无需安装:

uvx memory-shell-mcp

MCP 配置(uvx 方式)

支持 MCP 的客户端:本工具可配置到任何支持 Model Context Protocol 的 AI 客户端,包括但不限于: - IDE/编辑器CursorWindsurfVS Code(需安装 Copilot 扩展)、ZedKiro 以下是常用客户端的配置示例:

Kiro

.kiro/settings/mcp.json 中添加:

{
  "mcpServers": {
    "memory-shell-detector": {
      "command": "uvx",
      "args": ["memory-shell-mcp"],
      "env": {},
      "disabled": false,
      "autoApprove": []
    }
  }
}

Claude Desktop

claude_desktop_config.json 中添加:

{
  "mcpServers": {
    "memory-shell-detector": {
      "command": "uvx",
      "args": ["memory-shell-mcp"],
      "env": {}
    }
  }
}
说明env 中的环境变量均为可选配置。不配置时,工具会下载到系统临时目录,SSH 参数可通过 AI 对话传入。

开发者模式(本地源码)

安装

git clone https://github.com/RuoJi6/memory-shell-mcp.git
cd memory-shell-mcp

# 创建虚拟环境并安装依赖
uv venv --python python3.12
source .venv/bin/activate  # Linux/macOS
# .venv\Scripts\activate   # Windows

uv pip install -e .

运行

# 激活虚拟环境后
memory-shell-mcp

MCP 配置(开发者模式)

{
  "mcpServers": {
    "memory-shell-detector": {
      "command": "uv",
      "args": [
        "run",
        "--directory",
        "/path/to/memory-shell-mcp",
        "memory-shell-mcp"
      ],
      "env": {}
    }
  }
}
说明env 中的环境变量均为可选配置。不配置时,工具会下载到系统临时目录,SSH 参数可通过 AI 对话传入。

环境变量说明(可选)

变量说明
TOOLS_DIR检测工具(JAR 文件)存放目录,不设置则下载到系统临时目录
SSH_HOSTSSH 主机地址
SSH_USERNAMESSH 用户名
SSH_PASSWORDSSH 密码
SSH_KEY_PATHSSH 私钥路径(与密码二选一)
SSH_PORTSSH 端口(默认 22)
JAVA_HOMEJDK 路径(可选)
- 所有环境变量均为可选,不配置也可正常使用 - 设置环境变量后,调用工具时无需每次传入对应参数 - 如果 TOOLS_DIR 目录中已存在工具文件,download_detector_tools 会跳过下载 - SSH 参数也可以通过 AI 对话动态传入,优先级高于环境变量

使用流程

完整检测流程

第一步:准备工作

1. 调用 download_detector_tools 下载检测工具
2. 调用 list_java_processes 列出所有 Java 进程,找到目标进程 PID

第二步:扫描检测

3. 调用 scan_process(pid=目标PID) 扫描目标进程
4. 扫描结果会列出所有可疑类,记录完整类名

第三步:源码分析(关键步骤)

5. 对每个可疑类调用 view_class_code(class_name="类名", pid=PID) 反编译查看源码
6. 分析源码判断是否为内存马

内存马判断标准:

  • ✅ 是否包含命令执行代码(Runtime.execProcessBuilder
  • ✅ 是否包含反射调用敏感方法
  • ✅ 是否有异常的网络连接或文件操作
  • ✅ 是否动态注册 Filter/Servlet/Listener
  • ✅ 是否有加密/编码的可疑字符串(Base64、AES 等)
  • ✅ 是否有 Webshell 特征(参数名为 cmd/command/exec 等)
  • ✅ 类名是否异常(随机字符串、与业务无关)
  • ✅ 是否有类加载器操作(defineClass、ClassLoader)

第四步:清除内存马

7. 确认是内存马后,调用 remove_memory_shell(class_name="类名", pid=PID, ai_confirmed=True)
8. 移除后立即再次调用 scan_process 验证是否清除成功
9. 重要:某些内存马需要多次移除才能彻底清除,如果仍然存在,重复步骤 7-8

第五步:生成报告(可选)

10. 调用 export_report 导出检测报告存档

示例提示词

直接复制以下提示词发送给 AI 即可开始检测:

本地检测

帮我检测本机的 Java Web 服务,排查是否存在内存马。

检测要求:
1. 先下载检测工具,然后列出 Java 进程找到目标 PID
2. 扫描该进程,获取所有可疑类列表
3. 对每个可疑类反编译源代码,分析是否为内存马
4. 如果确认是内存马,执行移除操作
5. 移除后再次扫描验证,某些内存马需要多次移除才能彻底清除
6. 最后给我一个检测报告总结

SSH 远程检测

帮我检测远程服务器上的 Java 服务是否存在内存马。

服务器信息:
- IP: 192.168.1.100
- 用户名: root
- 密码: your_password

检测要求:
1. 通过 SSH 连接到服务器
2. 下载检测工具到 /tmp 目录
3. 列出所有 Java 进程,扫描可疑进程
4. 反编译分析每个可疑类的源代码
5. 确认是内存马后执行移除,并验证移除结果
6. 生成检测报告

内存马类型说明

类型特征移除难度
Filter 型实现 javax.servlet.Filter,动态注册到 FilterChain中等,可能需要多次移除
Servlet 型继承 HttpServlet,动态注册路由中等
Listener 型实现 ServletRequestListener较易
Spring Controller使用 @RequestMapping 动态注册中等
Spring Interceptor实现 HandlerInterceptor中等
Agent 型通过 Instrumentation 修改字节码困难,可能需要重启
Valve 型 (Tomcat)继承 ValveBase中等

旧版使用流程(简化版)

1. 下载检测工具

调用 download_detector_tools

2. 列出 Java 进程

调用 list_java_processes()

3. 扫描可疑进程

调用 scan_process(pid=进程ID)

4. 查看可疑类源代码

调用 view_class_code(class_name="类名", pid=进程ID)

5. 移除内存马

# AI 确认后调用
调用 remove_memory_shell(class_name="类名", pid=进程ID, ai_confirmed=True)

SSH 远程执行

方式1:环境变量预设

在 MCP 配置的 env 中设置:

"env": {
  "TOOLS_DIR": "/your/tools/directory",
  "SSH_HOST": "192.168.1.100",
  "SSH_USERNAME": "root",
  "SSH_PASSWORD": "password"
}

调用时只需设置 use_ssh=True

调用 scan_process(pid=12345, use_ssh=True)

方式2:AI 对话动态传入

直接告诉 AI SSH 连接信息:

调用 scan_process(
    pid=12345,
    use_ssh=True,
    ssh_host="192.168.1.100",
    ssh_username="root",
    ssh_password="password"
)
对话传入的参数优先级高于环境变量

工具下载地址

工具会自动从以下地址下载:

  • Agent JAR: https://xget.xi-xu.me/gh/RuoJi6/memory-shell-mcp/releases/download/1/detector-agent-1.0.0-SNAPSHOT.jar
  • CLI JAR: https://xget.xi-xu.me/gh/RuoJi6/memory-shell-mcp/releases/download/1/memory-shell-detector-cli.jar

支持系统

  • Windows / Linux / macOS

风险等级说明

等级说明
CRITICAL确认为内存马,需立即处理
HIGH高度可疑,建议人工确认
MEDIUM中等风险,可能是正常组件
LOW低风险,基本可排除
SAFE安全,已在白名单中

注意事项

  1. 扫描其他进程需要足够的系统权限
  2. 目标进程和检测工具需使用相同或兼容的 JDK 版本
  3. Agent JAR 需要和 CLI JAR 放在同一目录下
  4. Agent 型内存马无法通过本工具移除,需要重启应用
  5. 移除内存马可能影响应用正常运行,建议先备份

发布到 PyPI

# 1. 注册 PyPI 账号并获取 API Token
# https://pypi.org/manage/account/token/

# 2. 构建包
uv build

# 3. 发布到 PyPI
uv publish --token YOUR_PYPI_TOKEN

# 4. 发布后即可通过 uvx 运行
uvx memory-shell-mcp

参考项目

License

MIT License

目录标签

目录标签

PythonClaude安全内存马检测本地部署Java安全恶意软件清除服务器安全AI辅助安全

支持客户端

Claude DesktopClaudeCursorWindsurfClineVS Code

接入字段

传输方式(transport,传输协议)

stdio

鉴权方式(authType,认证方式)

token

运行时(runtime,运行环境)

Python

工具数量(toolCount,工具数)

9

资源数量(resourceCount,资源数)

0

提示词数量(promptCount,提示词数)

0

权限和风险

stdiotoken部署方式未说明

接入前请确认传输方式、认证方式和部署位置,并根据实际工具能力限制访问范围。

安装前确认

不要直接授予不必要的文件、网络或账号权限;先核对安装命令和配置内容。

来源信息

继续浏览同类 MCP