
Servidor MCP de estilo C2 agéntico para instrumentación de Frida en Android rooteado e iOS con jailbreak.
Un servidor MCP con transporte HTTP streamable que ejecuta la instrumentación dinámica de Frida enteramente en el dispositivo — sin necesidad de herramientas en el lado del cliente.
Este proyecto se ejecuta directamente en dispositivos Android rooteados e iOS con jailbreak, exponiendo Frida como un conjunto de herramientas invocables a través de HTTP. Cualquier cliente compatible con MCP puede conectarse a un dispositivo en la red y realizar instrumentación dinámica sin instalar ninguna herramienta de Frida localmente.
De aquí en adelante, el desarrollo apunta a Gemini CLI y Claude Code como clientes principales, ya que ambos están construyendo orquestación multi-agente nativa y soporte MCP — lo cual coincide con la dirección de este proyecto de componer múltiples servidores MCP (p. ej. FridaC2MCP + Jadx-MCP) en flujos de trabajo automatizados. 5ire se utilizó ampliamente durante el desarrollo temprano y sigue siendo una excelente opción GUI para interactuar con el servidor.
Gemini CLI — registra el servidor MCP del dispositivo (reemplaza <DEVICE_IP> con la dirección LAN de tu teléfono):
gemini mcp add --transport http frida-c2-mcp http://<DEVICE_IP>:6767/mcp
Demo Android
https://github.com/user-attachments/assets/7cee77c5-ed40-4797-b6b5-3edb5fdd03ce
Demo iOS
https://github.com/user-attachments/assets/1f0fa9c4-6fd0-4dfd-a640-78c9f8a95a6b
keep_alive=True).El objetivo son pruebas de seguridad móvil totalmente automatizadas y dirigidas por agentes. Al exponer Frida como servidor MCP, un pentester o un agente de IA puede inspeccionar y manipular el comportamiento de una aplicación sin necesidad de una conexión USB directa ni acceso a shell local tras la configuración inicial. El cliente no necesita ninguna herramienta de Frida: todo se ejecuta en el dispositivo de destino.
Un flujo de trabajo típico:
Esto se extiende de forma natural a configuraciones multi-dispositivo: ejecuta varios teléfonos en la misma red, cada uno con su propio servidor MCP, y orqúestralos desde un único agente.
cli.py)Se ejecuta en Termux en Android rooteado. Utiliza esbuild para el empaquetado de scripts sobre la marcha y frida-java-bridge para la instrumentación del runtime Java/Android. Aunque frida-compile está técnicamente disponible a través de frida-tools, no puede usarse en Termux porque el dominio SELinux untrusted_app de Android bloquea los mapeos de memoria W^X requeridos por el compilador JIT de V8 — lo que provoca un SIGSEGV en cualquier script no trivial. esbuild es un binario Go estáticamente enlazado sin JIT, por lo que se ejecuta limpiamente en cualquier contexto SELinux.
ios.py)Se ejecuta en iOS con jailbreak rootless (probado en iPhone X, iOS 16.7.12 con palera1n). Utiliza frida-compile para el empaquetado de scripts y frida-objc-bridge para la instrumentación del runtime Objective-C. No se requiere Node.js en el dispositivo.
El port para iOS requirió compilar a medida una cadena de herramientas completa de Python 3.12 para arm64, ya que ninguno de estos paquetes estaba disponible para iOS con jailbreak rootless:
Los wheels precompilados y el .deb de Python están incluidos en ios_precompiled/ para que no tengas que compilarlos tú mismo. Consulta setup.md para las instrucciones de instalación en iOS.
Ejecución en el dispositivo: Tanto el servidor como el cliente de Frida se ejecutan en el dispositivo de destino. El servidor MCP traduce las peticiones HTTP en comandos de Frida. Esto supone una ruptura con el modelo tradicional en el que un cliente de Frida se ejecuta en un ordenador separado.
Transporte HTTP streamable: Utiliza HTTP streamable en lugar de stdio para soportar múltiples conexiones concurrentes y la orquestación de múltiples dispositivos.
Empaquetado de scripts en el dispositivo: Frida 17+ requiere JavaScript empaquetado. En Android, esbuild gestiona el empaquetado (se ejecuta en cualquier contexto SELinux sin JIT). En iOS, se utiliza frida-compile con importaciones del bridge de ObjC inyectadas automáticamente.
Diseño agent-first: Construido para ser consumido por agentes de IA en lugar de operadores humanos. La interfaz de herramientas MCP está diseñada para que un LLM pueda recorrer de forma autónoma un flujo de trabajo completo de pentesting — lanzar apps, adjuntar sesiones, escribir e inyectar hooks, leer resultados — en una sola conversación.
FridaC2MCP es el andamiaje de un framework automatizado de pentesting móvil. La idea es componer múltiples servidores MCP especializados — por ejemplo: FridaC2MCP para instrumentación dinámica, Jadx-MCP para análisis estático — y dejar que los agentes de IA orquesten todo el flujo de trabajo. Descompila un APK, identifica métodos interesantes y luego engancha (hook) en vivo. Sin cambio manual de herramientas, sin copiar y pegar entre terminales.
Esto encaja de forma natural con Gemini CLI y Claude Code, que ya soportan flujos de trabajo MCP multi-herramienta de forma nativa. El framework no necesita implementar su propia orquestación de agentes — solo necesita proporcionar los servidores MCP adecuados y dejar que los agentes existentes hagan lo que mejor saben hacer.
OpenSSL / SSL en iOS: La integración de OpenSSL en la compilación de Python 3.12 no es del todo correcta. Esto no ha bloqueado el servidor MCP (que no depende de HTTPS para su propio transporte), pero podría importar si una dependencia futura necesita un contexto TLS funcional en el dispositivo. Consulta devlog.md para más detalle.
Solo FastMCP 2.x: FastMCP 3.x introdujo cambios de API incompatibles. Android e iOS fijan versiones por debajo de 3.x. Instala mediante requirements-android.txt o requirements-ios.txt — no actualices a un fastmcp sin fijar hasta que este repositorio migre.
Este proyecto es una evolución en red del FridaMCP original de Daniel Nakov. Mientras que el proyecto original fue pionero en el uso de Frida como servidor MCP sobre stdio, FridaC2MCP adapta este concepto para entornos C2 remotos y multi-dispositivo usando HTTP streamable y el empaquetado moderno de Frida 17.
El runtime de Python 3.12 para iOS está basado en python3.12-ios-arm64 de k1tty-xz. El proyecto original apuntaba a jailbreaks rootful — se requirieron modificaciones significativas para adaptarlo a entornos de jailbreak rootless (palera1n, layout /var/jb/).
Esto es una prueba de concepto. Carece de una gestión de sesiones adecuada, manejo elegante de errores y cualquier forma de seguridad. Toda la comunicación no está cifrada ni autenticada. Úsalo bajo tu propio riesgo y solo en entornos de red seguros y aislados.
| Package | Version | Build System | Why |
|---|
| Python | 3.12.5 | configure + Make | Runtime base — no disponible a través de Procursus |
| frida-python | 17.6.0 | Meson + setuptools | Enlaces principales de Frida |
| pydantic-core | 2.41.5 | maturin (Rust/PyO3) | Requerido por FastMCP |
| cryptography | 47.0.0.dev1 | maturin (Rust) + OpenSSL 3.x | Cadena de dependencias; requería corrección de SIGILL para A11 |
| cffi | 2.0.1.dev0 | setuptools + libffi | Requerido por cryptography |
| pyyaml | 7.0.0.dev0 | setuptools + libyaml | Requerido por dependencias de FastMCP |
| rpds-py | 0.30.0 | maturin (Rust/PyO3) | Requerido por dependencias de FastMCP |
| lupa | 2.6 | setuptools + Lua | Embeber Lua |