s4dp4nd4/frida-c2-mcp

GitHub: s4dp4nd4/frida-c2-mcp

将Frida动态插桩能力封装为MCP服务器,在移动设备端运行并通过HTTP暴露给AI智能体,实现完全自动化的移动安全测试工作流。

Stars: 36 | Forks: 10

# FridaC2MCP 一个支持流式 HTTP 传输的 MCP 服务器,**完全在设备上**运行 Frida 的动态插桩——无需客户端工具。 [![TLDR Featured](https://img.shields.io/badge/Featured%20in-TLDR%20InfoSec-blue)](https://tldr.tech/infosec/2026-01-30) **本项目直接在已 root 的 Android 和已越狱的 iOS 设备上运行**,将 Frida 作为一组可通过 HTTP 调用的工具暴露出来。任何兼容 MCP 的客户端都可以连接网络上的设备并执行动态插桩,而无需在本地安装任何 Frida 工具。 **展望未来,开发工作将以 [Gemini CLI](https://github.com/google-gemini/gemini-cli) 和 [Claude Code](https://docs.anthropic.com/en/docs/agents-and-tools/claude-code/overview)** 为主要客户端,因为两者都在构建原生多智能体编排和 MCP 支持——这与本项目将多个 MCP 服务器(例如 FridaC2MCP + Jadx-MCP)组合成自动化工作流的方向一致。[5ire](https://github.com/nanbingxyz/5ire) 在早期开发过程中被广泛使用,并且仍然是与服务器交互的绝佳 GUI 选择。 **Gemini CLI — 注册设备 MCP 服务器**(将 `` 替换为您手机的局域网地址): ``` gemini mcp add --transport http frida-c2-mcp http://:6767/mcp ``` **Android 演示** https://github.com/user-attachments/assets/7cee77c5-ed40-4797-b6b5-3edb5fdd03ce **iOS 演示** https://github.com/user-attachments/assets/1f0fa9c4-6fd0-4dfd-a640-78c9f8a95a6b ## 核心功能 - **进程与应用管理:** 列出已安装的应用程序,枚举正在运行的进程,并获取前台应用程序的信息。 - **应用程序控制:** 通过标识符或 PID 启动和终止应用程序。 - **动态插桩:** 通过附加到正在运行的进程来创建交互式会话。 - **远程脚本执行:** 在附加的会话中执行自定义 Frida (JavaScript) 脚本。脚本即时编译以确保与 Frida 17+ 的兼容性。这支持一次性脚本和持久性 Hook (`keep_alive=True`)。 ## 预期用例 目标是实现完全自动化、智能体驱动的移动安全测试。通过将 Frida 作为 MCP 服务器暴露,渗透测试人员或 AI 智能体可以在初始设置后无需直接 USB 连接或本地 shell 访问的情况下检查和操纵应用程序的行为。客户端不需要任何 Frida 工具——一切都运行在目标设备上。 典型的工作流程: 1. 将您的 AI 智能体(Claude Code, Gemini CLI 等)指向设备的 MCP endpoint。 2. 智能体启动目标应用程序,附加 Frida 会话,并注入 Hook。 3. 安全控制(root/越狱检测、SSL pinning 等)被动态绕过。 4. 智能体观察结果并进行迭代——所有这些都无需人工干预。 这自然扩展到多设备设置:在同一网络上运行多部手机,每部手机都有自己的 MCP 服务器,并从单个智能体进行编排。 ## 平台支持 ### Android (`cli.py`) 在已 root 的 Android 上的 Termux 中运行。使用 `esbuild` 进行即时脚本打包,并使用 `frida-java-bridge` 进行 Java/Android 运行时插桩。虽然 `frida-compile` 技术上可以通过 `frida-tools` 使用,但它不能在 Termux 上使用,因为 Android 的 `untrusted_app` SELinux 域阻止了 V8 JIT 编译器所需的 W^X 内存映射——导致在任何非平凡脚本上出现 SIGSEGV。`esbuild` 是一个静态链接的 Go 二进制文件,没有 JIT,因此它可以在任何 SELinux 上下文中干净地运行。 ### iOS (`ios.py`) 在无根越狱 iOS 上运行(在 iPhone X, iOS 16.7.12 with palera1n 上测试)。使用 `frida-compile` 进行脚本打包,并使用 `frida-objc-bridge` 进行 Objective-C 运行时插桩。**设备上不需要 Node.js**。 iOS 移植需要为 arm64 定制编译整个 Python 3.12 工具链,因为这些包都不适用于无根越狱的 iOS: | 包 | 版本 | 构建系统 | 原因 | |---------|---------|-------------|-----| | **Python** | 3.12.5 | configure + Make | 基础运行时 — 无法通过 Procursus 获取 | | **frida-python** | 17.6.0 | Meson + setuptools | 核心 Frida 绑定 | | **pydantic-core** | 2.41.5 | maturin (Rust/PyO3) | FastMCP 必需 | | **cryptography** | 47.0.0.dev1 | maturin (Rust) + OpenSSL 3.x | 依赖链;A11 需要 SIGILL 修复 | | **cffi** | 2.0.1.dev0 | setuptools + libffi | cryptography 必需 | | **pyyaml** | 7.0.0.dev0 | setuptools + libyaml | FastMCP 依赖项必需 | | **rpds-py** | 0.30.0 | maturin (Rust/PyO3) | FastMCP 依赖项必需 | | **lupa** | 2.6 | setuptools + Lua | Lua 嵌入 | 预编译的 wheel 包和 Python `.deb` 包含在 `ios_precompiled/` 中,因此您不必自己构建它们。iOS 安装说明请参阅 `setup.md`。 ## 架构与设计理念 - **设备端执行:** Frida 服务器和客户端都在目标设备上运行。MCP 服务器将 HTTP 请求转换为 Frida 命令。这背离了 Frida 客户端运行在单独计算机上的传统模式。 - **流式 HTTP 传输:** 使用流式 HTTP 而不是 stdio,以支持多个并发连接和多设备编排。 - **设备端脚本打包:** Frida 17+ 需要打包的 JavaScript。在 Android 上,`esbuild` 处理打包(它在任何 SELinux 上下文中运行,无需 JIT)。在 iOS 上,使用 `frida-compile` 并自动注入 ObjC 桥接导入。 - **智能体优先设计:** 专为 AI 智能体而非人类操作员构建。MCP 工具界面的设计使得 LLM 可以自主导航完整的渗透测试工作流程——启动应用、附加会话、编写和注入 Hook、读取结果——在单次对话中完成。 ## 愿景 FridaC2MCP 是自动化移动渗透测试框架的脚手架。其想法是组合多个专门的 MCP 服务器——例如:FridaC2MCP 用于动态插桩,[Jadx-MCP](https://github.com/pari-27/jadx-mcp) 用于静态分析——并让 AI 智能体编排整个工作流程。反编译 APK,识别感兴趣的方法,然后实时 Hook 它们。无需手动切换工具,无需在终端之间复制粘贴。 这与 Gemini CLI 和 Claude Code 自然配对,后者已经原生支持多工具 MCP 工作流。该框架不需要实现自己的智能体编排——它只需要提供正确的 MCP 服务器,让现有的智能体做它们擅长的事情。 ## 已知问题 - **iOS OpenSSL / SSL:** Python 3.12 构建的 OpenSSL 集成不完全正确。这并没有阻碍 MCP 服务器(它不依赖 HTTPS 进行自身的传输),但如果未来的依赖项需要设备上工作的 TLS 上下文,这可能很重要。详情请参阅 `devlog.md`。 - **仅限 FastMCP 2.x:** FastMCP 3.x 引入了破坏性 API 更改。**Android 和 iOS** 都固定在 3.x 以下。通过 `requirements-android.txt` 或 `requirements-ios.txt` 安装——在此仓库迁移之前不要升级到未固定的 `fastmcp`。 ## 致谢 本项目是 Daniel Nakov 原始 [FridaMCP](https://github.com/dnakov/frida-mcp) 的网络化演进。虽然原始项目开创了通过 stdio 将 Frida 用作 MCP 服务器,但 **FridaC2MCP** 将此概念适配为使用流式 HTTP 和现代 Frida 17 打包的远程、多设备 C2 环境。 iOS Python 3.12 运行时基于 k1tty-xz 的 [python3.12-ios-arm64](https://github.com/k1tty-xz/python3.12-ios-arm64)。原始项目针对有根越狱——需要大量修改才能使其适用于无根越狱环境(palera1n, `/var/jb/` 布局)。 ### **⚠️ 免责声明** 这是一个概念验证。它缺乏适当的会话管理、优雅的错误处理以及**任何形式的安全性**。所有通信均未加密且未经身份验证。**使用风险自负**,并且仅在安全、隔离的网络环境中使用。
标签:Agentic Workflow, Android越机, API安全, API接口, C2架构, Claude Code, Docker支持, Frida, Gemini CLI, Hook技术, HTTP传输, iOS越狱, Jailbreak设备, JavaScript脚本执行, JSON输出, LLM代理工具, MCP服务器, Modbus, RASP, Root设备, SSH蜜罐, 云资产清单, 目录枚举, 移动安全, 移动应用安全, 网络安全, 进程注入, 远程控制, 远程调试, 逆向工具, 逆向工程, 隐私保护, 黑盒测试