
Agentic C2-style MCP server pour Frida instrumentation sur rooted Android et jailbroken iOS.
Un serveur MCP avec transport HTTP streamable qui exécute l'instrumentation dynamique de Frida entièrement sur l'appareil — aucun outil côté client requis.
Ce projet s'exécute directement sur les appareils Android rootés et iOS jailbreakés, exposant Frida comme un ensemble d'outils appelables via HTTP. Tout client compatible MCP peut se connecter à un appareil sur le réseau et effectuer une instrumentation dynamique sans installer d'outillage Frida localement.
À l'avenir, le développement cible Gemini CLI et Claude Code comme clients principaux, car tous deux intègrent nativement l'orchestration multi-agent et le support MCP — ce qui correspond à la direction de ce projet de composer plusieurs serveurs MCP (par ex. FridaC2MCP + Jadx-MCP) dans des workflows automatisés. 5ire a été largement utilisé pendant le développement précoce et reste une excellente option d'interface graphique pour interagir avec le serveur.
Gemini CLI — enregistrer le serveur MCP de l'appareil (remplacez <DEVICE_IP> par l'adresse LAN de votre téléphone) :
gemini mcp add --transport http frida-c2-mcp http://<DEVICE_IP>:6767/mcp
Démo Android
https://github.com/user-attachments/assets/7cee77c5-ed40-4797-b6b5-3edb5fdd03ce
Démo iOS
https://github.com/user-attachments/assets/1f0fa9c4-6fd0-4dfd-a640-78c9f8a95a6b
keep_alive=True).L'objectif est un test de sécurité mobile entièrement automatisé, piloté par un agent. En exposant Frida comme un serveur MCP, un pentester ou un agent IA peut inspecter et manipuler le comportement d'une application sans connexion USB directe ni accès shell local après la configuration initiale. Le client n'a besoin d'aucun outillage Frida — tout s'exécute sur l'appareil cible.
Un workflow typique :
Cela s'étend naturellement aux configurations multi-appareils : exécutez plusieurs téléphones sur le même réseau, chacun avec son propre serveur MCP, et orchestrez-les depuis un seul agent.
cli.py)S'exécute dans Termux sur Android rooté. Utilise esbuild pour le regroupement de scripts à la volée et frida-java-bridge pour l'instrumentation du runtime Java/Android. Bien que frida-compile soit techniquement disponible via frida-tools, il ne peut pas être utilisé sur Termux car le domaine SELinux untrusted_app d'Android bloque les mappings mémoire W^X requis par le compilateur JIT de V8 — provoquant un SIGSEGV sur tout script non trivial. esbuild est un binaire Go lié statiquement sans JIT, il s'exécute donc proprement dans n'importe quel contexte SELinux.
ios.py)S'exécute sur iOS jailbreaké sans root (testé sur iPhone X, iOS 16.7.12 avec palera1n). Utilise frida-compile pour le regroupement de scripts et frida-objc-bridge pour l'instrumentation du runtime Objective-C. Node.js n'est pas requis sur l'appareil.
Le port iOS a nécessité la compilation personnalisée d'une chaîne d'outils Python 3.12 complète pour arm64, car aucun de ces paquets n'était disponible pour iOS jailbreaké sans root :
Les wheels précompilés et le .deb Python sont inclus dans ios_precompiled/ pour que vous n'ayez pas à les construire vous-même. Voir setup.md pour les instructions d'installation iOS.
Exécution sur l'appareil : Le serveur Frida et le client s'exécutent tous deux sur l'appareil cible. Le serveur MCP traduit les requêtes HTTP en commandes Frida. Cela s'écarte du modèle traditionnel où un client Frida s'exécute sur un ordinateur séparé.
Transport HTTP streamable : Utilise HTTP streamable au lieu de stdio pour supporter plusieurs connexions simultanées et l'orchestration multi-appareils.
Regroupement de scripts sur l'appareil : Frida 17+ nécessite du JavaScript regroupé. Sur Android, esbuild gère le regroupement (il s'exécute dans n'importe quel contexte SELinux sans JIT). Sur iOS, frida-compile est utilisé avec les imports du pont ObjC injectés automatiquement.
Conception orientée agent : Conçu pour être consommé par des agents IA plutôt que par des opérateurs humains. L'interface d'outils MCP est conçue pour qu'un LLM puisse naviguer de manière autonome dans un workflow de pentesting complet — lancer des applications, attacher des sessions, écrire et injecter des hooks, lire les résultats — en une seule conversation.
FridaC2MCP est un échafaudage pour un framework de pentesting mobile automatisé. L'idée est de composer plusieurs serveurs MCP spécialisés — par exemple : FridaC2MCP pour l'instrumentation dynamique, Jadx-MCP pour l'analyse statique — et de laisser les agents IA orchestrer le workflow complet. Décompiler un APK, identifier les méthodes intéressantes, puis les hooker en direct. Pas de changement d'outil manuel, pas de copier-coller entre terminaux.
Cela s'associe naturellement avec Gemini CLI et Claude Code, qui supportent déjà nativement les workflows MCP multi-outils. Le framework n'a pas besoin d'implémenter sa propre orchestration d'agents — il doit seulement fournir les bons serveurs MCP et laisser les agents existants faire ce qu'ils savent faire.
OpenSSL / SSL sur iOS : L'intégration OpenSSL de la construction Python 3.12 n'est pas entièrement correcte. Cela n'a pas bloqué le serveur MCP (qui ne dépend pas de HTTPS pour son propre transport), mais cela pourrait importer si une future dépendance nécessite un contexte TLS fonctionnel sur l'appareil. Voir devlog.md pour les détails.
FastMCP 2.x uniquement : FastMCP 3.x a introduit des changements d'API cassants. Android et iOS pincent tous deux en dessous de 3.x. Installez via requirements-android.txt ou requirements-ios.txt — ne passez pas à un fastmcp non épinglé tant que ce dépôt n'a pas migré.
Ce projet est une évolution en réseau du FridaMCP original par Daniel Nakov. Alors que le projet original a été le pionnier de l'utilisation de Frida comme serveur MCP sur stdio, FridaC2MCP adapte ce concept pour des environnements C2 distants multi-appareils en utilisant Streamable HTTP et le bundling moderne de Frida 17.
Le runtime Python 3.12 pour iOS est basé sur python3.12-ios-arm64 par k1tty-xz. Le projet original ciblait les jailbreaks avec root — des modifications importantes ont été nécessaires pour l'adapter aux environnements jailbreakés sans root (palera1n, disposition /var/jb/).
Ceci est une preuve de concept. Il manque une gestion de session appropriée, une gestion gracieuse des erreurs, et toute forme de sécurité. Toutes les communications sont non chiffrées et non authentifiées. Utilisez à vos risques et périls et uniquement dans des environnements réseau sécurisés et isolés.
| Paquet | Version | Système de construction | Raison |
|---|
| Python | 3.12.5 | configure + Make | Runtime de base — non disponible via Procursus |
| frida-python | 17.6.0 | Meson + setuptools | Liaisons Frida principales |
| pydantic-core | 2.41.5 | maturin (Rust/PyO3) | Requis par FastMCP |
| cryptography | 47.0.0.dev1 | maturin (Rust) + OpenSSL 3.x | Chaîne de dépendances ; correction SIGILL nécessaire pour A11 |
| cffi | 2.0.1.dev0 | setuptools + libffi | Requis par cryptography |
| pyyaml | 7.0.0.dev0 | setuptools + libyaml | Requis par les dépendances FastMCP |
| rpds-py | 0.30.0 | maturin (Rust/PyO3) | Requis par les dépendances FastMCP |
| lupa | 2.6 | setuptools + Lua | Intégration Lua |