QuinnBast/Malicious-MCP

GitHub: QuinnBast/Malicious-MCP

展示恶意 MCP 服务器如何通过伪装与代理转发窃取环境与通信数据的安全研究项目。

Stars: 3 | Forks: 0

# 恶意 MCP 这是一个概念验证项目,允许你部署一个伪装成其他任何 MCP 服务器的 MCP 服务器。 该 MCP 充当 MCP “代理”,并简单地将所有传入请求转发到上游 MCP 服务器。 ### 什么是 MCP? [MCP 服务器](https://modelcontextprotocol.io/docs/learn/server-concepts) 是一个为 AI 应用程序提供额外能力的程序。 一些示例包括: - 用于代码管理的 [GitHub](https://github.com/github/github-mcp-server) 服务器, - 用于团队沟通的 [Slack](https://docs.slack.dev/ai/slack-mcp-server/) 服务器, - 用于管理和创建任务及文档的 [Atlassian](https://support.atlassian.com/atlassian-rovo-mcp-server/docs/getting-started-with-the-atlassian-remote-mcp-server/) 服务器。 MCP 服务器在 AI 领域很常见,但正如本仓库所展示的,它们应该极其谨慎地安装。 # **你永远不应该安装来自不受信任来源的 MCP 服务器。** # 攻击向量 这是一个伪装成另一个 MCP 服务器的恶意 MCP。 该 MCP 充当 MCP “代理”,并简单地将所有传入请求转发到上游 MCP 服务器,本质上执行了中间人攻击。 用户只需安装你的 MCP,整个系统(以及网络)就会被破坏。 你可以得到: - [用户的完整环境变量列表](src/main/kotlin/malicious/env/EnvironmentCollector.kt) - 这包括用户用于配置 MCP 的环境变量(以及更多)。 - 因此,你很可能已经窃取了受害者的账户访问令牌。 - [所有 MCP 工具调用数据](src/main/kotlin/McpProxy.kt) - 这包括用户进行工具调用的目的、输入数据、聊天文本和输出数据。 - [本地键盘记录器](src/main/kotlin/malicious/keylogger/Keylogger.kt) - 该二进制文件还包含一个键盘记录器。 - 如果用户不是在 Docker 容器中运行,它会收集所有按键并为你收集。 - [下载并执行任意文件](src/main/kotlin/malicious/file/FileDownloader.kt) - 安装额外的恶意软件、后门、SSH 隧道等。 - [将受害者的文件发送给你自己](src/main/kotlin/malicious/file/FileExporter.kt) - 搜索密码文件、浏览器 Cookie、个人文件等。 - 劫持工具调用 - 你也可以在受害者不知情的情况下,对实际的上游 MCP 执行 MCP 工具调用。 - 为此,你可以插入一些代码,使得在特定工具调用之后,它会执行另一个不同的调用。 - 虽然,你已经从上面的环境变量中拿到了他们的账户令牌,所以这可能是多余的,因为你现在已经拥有了他们账户的完全访问权限。 - [将所有用户数据发送到任意服务器](src/main/kotlin/malicious/interceptors/HttpDataInterceptor.kt) - 等等 - 这只是个开始。这是一个在用户 PC 上运行的 Java 进程,所以可能性是无限的 - 窃取他们的文件 - 窃取浏览器 Cookie - 安装远程访问工具(后门) - 查看他们的本地网络并在这些设备上安装后门! - 删除系统 32 - 勒索他们的计算机 - 更多... 这个 MCP 不仅仅拦截受害者的 AI 消息,它是一个完整的病毒。 任何安装此 MCP 的受害者都完了。 # 证明它有效 以下是一些截图,展示了这个 MCP 服务器确实在窃取任何传入的调用: 使用这个恶意 MCP 服务器在 Claude Code 中伪装成 GitHub 的 MCP 服务器,同时窃取用户数据: ![Stolen Data](https://static.pigsec.cn/wp-content/uploads/repos/2026/04/f0df3d96da071547.png) - [概念验证日志输出](assets/proof-of-concept.log) # 获取受害者 ## 第一步 - 配置此构建 首先,叉出并克隆这个项目。 然后,你需要配置项目以实现 *你的* 目标。使用项目中的配置文件,你可以: - 将恶意 MCP 服务器命名为有说服力的名称 - 设置与“受害者”MCP 服务器的连接 - 配置文件中列出了你可能想要“伪造”的一些常用 MCP - 选择要启用的恶意工具 在 [配置文件](src/main/resources/malicious-mcp-config.yaml) 中完成所有这些操作。 此外,你可能还想向代码中添加一些额外的恶意软件。 我这里没有可以安装后门、窃取用户文件等的代码示例,但添加它们并不难。 ## 第二步 - 构建项目 一旦你添加了所需的恶意活动并设置了受害者的 MCP 连接配置,执行构建并获取生成的 `jar` 工件。 注意:此项目可以很容易地转换为其他部署方式,例如 `docker`、`npx`,甚至是托管的 `http` 服务(如果你想走到那一步)。 ## 第三步 - 对受害者进行社会工程 为了捕获不知情受害者并让他们将所有数据发送给你,创建一个新的 GitHub 仓库。 将仓库标题命名为一些吸引人的内容,让人们觉得像是“-Catchy Text- --Gitlab/Github/Atlassian/Etc.-- MCP Server”。 接下来,在 GitHub 中创建一个“发布”,其中包含上面创建的 `jar` 输出文件。 你可能还想向仓库添加一些代码,使其看起来更合法。 接下来,你需要一个 README,让人们知道如何安装你的“完全合法”的 MCP 服务器: ``` # 安装 To install this MCP server, download the release `jar` and add the following line to your MCP server configuration file: \``` { "mcpServers": { "weather": { "command": "java", "args": [ "-jar", "/ABSOLUTE/PATH/TO/mcp.jar" ], "env": { // Tell the user to put victim MCP ENV vars here. } } } } \``` ## 环境变量 Copy and paste some info for how the user should configure their env variables for the victim's MCP. If you want to look different, change up the name of the ENV vars ## 可用工具 The project provides the following tools: - Copy and paste your victim's MCP tool list... ## 贡献 Some other social engineering content here to look legit... ``` 注意:同样,这个项目可以很容易地转换为其他部署方式,例如 `docker` 或 `npx`。 ## 第四步 - 获利 恭喜!所有不知情的受害者一旦添加了你的 MCP 服务器,就已经安装了恶意软件! 尽情发挥吧。 # 本地运行 要在本地运行此项目,请根据需要更新 [配置文件](src/main/resources/malicious-mcp-config.yaml)。 配置完成后,在本地运行此项目,构建项目并配置你的 MCP 服务器使用以下配置: ``` { "mcpServers": { "weather": { "command": "java", "args": [ "-jar", "/ABSOLUTE/PATH/TO/PARENT/FOLDER/project/build/libs/weather-0.1.0-all.jar" ] } } } ``` 这将配置你的 AI 指向此项目的构建文件夹。只需构建项目,并加载你 AI 的 MCP 以在本地测试。 # 值得吸取的教训 从中学到的关键教训是: - 所有 MCP 都极不安全。 - 任何托管 MCP 的人都可以捕获你的数据。 - 只使用受信任的 MCP。 - 尽可能将 MCP 作为 Docker 容器运行。 - `npx`、`java` 或其他类型的 MCP 将在主机机器上运行并打开更多攻击向量
标签:AI安全, Chat Copilot, JS文件枚举, Kotlin, MCP, MITM, PoC, RuleLab, 中间人攻击, 代理, 代码分析, 凭证管理, 威胁情报, 容器逃逸, 密钥记录, 开发者工具, 恶意软件, 攻击向量, 无文件攻击, 暴力破解, 模型上下文协议, 环境变量窃取, 网络窃听