
Agenten-basierter C2-artiger MCP-Server für Frida-Instrumentierung auf gerooteten Android- und gejailbreakten iOS-Geräten.
Ein MCP-Server mit streamablem HTTP-Transport, der Frida's dynamische Instrumentierung vollständig auf dem Gerät ausführt — keine clientseitigen Tools erforderlich.
Dieses Projekt läuft direkt auf gerooteten Android- und gejailbroken iOS-Geräten und stellt Frida als eine Reihe von über HTTP aufrufbaren Tools bereit. Jeder MCP-kompatible Client kann sich mit einem Gerät im Netzwerk verbinden und dynamische Instrumentierung durchführen, ohne lokal Frida-Tools zu installieren.
In Zukunft zielt die Entwicklung auf Gemini CLI und Claude Code als primäre Clients, da beide native Multi-Agent-Orchestrierung und MCP-Unterstützung entwickeln — was mit der Richtung dieses Projekts übereinstimmt, mehrere MCP-Server (z.B. FridaC2MCP + Jadx-MCP) zu automatisierten Workflows zusammenzusetzen. 5ire wurde in der frühen Entwicklung ausgiebig genutzt und bleibt eine großartige GUI-Option zur Interaktion mit dem Server.
Gemini CLI — MCP-Server des Geräts registrieren (ersetze <DEVICE_IP> durch die LAN-Adresse deines Telefons):
gemini mcp add --transport http frida-c2-mcp http://<DEVICE_IP>:6767/mcp
Android-Demo
https://github.com/user-attachments/assets/7cee77c5-ed40-4797-b6b5-3edb5fdd03ce
iOS-Demo
https://github.com/user-attachments/assets/1f0fa9c4-6fd0-4dfd-a640-78c9f8a95a6b
keep_alive=True).Das Ziel ist vollständig automatisiertes, agentengesteuertes mobiles Sicherheitstesten. Indem Frida als MCP-Server bereitgestellt wird, kann ein Pentester oder ein KI-Agent das Verhalten einer Anwendung inspizieren und manipulieren, ohne nach der anfänglichen Einrichtung eine direkte USB-Verbindung oder lokalen Shell-Zugriff zu benötigen. Der Client benötigt keine Frida-Tools — alles läuft auf dem Zielgerät.
Ein typischer Workflow:
Dies erweitert sich natürlich auf Multi-Geräte-Setups: Du kannst mehrere Telefone im selben Netzwerk betreiben, jedes mit seinem eigenen MCP-Server, und sie von einem einzigen Agenten aus orchestrieren.
cli.py)Läuft in Termux auf gerootetem Android. Verwendet esbuild für das Script-Bundling zur Laufzeit und frida-java-bridge für die Java/Android-Laufzeitinstrumentierung. Obwohl frida-compile technisch über frida-tools verfügbar ist, kann es in Termux nicht verwendet werden, da die SELinux-Domäne untrusted_app von Android die W^X-Speicherzuordnungen blockiert, die der V8-JIT-Compiler benötigt — was bei jedem nicht-trivialen Skript zu einem SIGSEGV führt. esbuild ist ein statisch gelinktes Go-Binary ohne JIT, daher läuft es in jedem SELinux-Kontext problemlos.
ios.py)Läuft auf rootless jailbroken iOS (getestet auf iPhone X, iOS 16.7.12 mit palera1n). Verwendet frida-compile für das Script-Bundling und frida-objc-bridge für die Objective-C-Laufzeitinstrumentierung. Node.js ist auf dem Gerät nicht erforderlich.
Der iOS-Port erforderte das benutzerdefinierte Kompilieren einer gesamten Python 3.12-Toolchain für arm64, da keines dieser Pakete für rootless jailbroken iOS verfügbar war:
Vorkompilierte Wheels und das Python .deb sind in ios_precompiled/ enthalten, sodass du sie nicht selbst bauen musst. Siehe setup.md für iOS-Installationsanweisungen.
Ausführung auf dem Gerät: Sowohl der Frida-Server als auch der Client laufen auf dem Zielgerät. Der MCP-Server übersetzt HTTP-Anfragen in Frida-Befehle. Dies ist eine Abkehr vom traditionellen Modell, bei dem ein Frida-Client auf einem separaten Computer läuft.
Streamabler HTTP-Transport: Verwendet streamables HTTP anstelle von stdio, um mehrere gleichzeitige Verbindungen und die Multi-Geräte-Orchestrierung zu unterstützen.
Script-Bundling auf dem Gerät: Frida 17+ erfordert gebündeltes JavaScript. Auf Android übernimmt esbuild das Bundling (es läuft in jedem SELinux-Kontext ohne JIT). Auf iOS wird frida-compile verwendet, wobei ObjC-Bridge-Importe automatisch injiziert werden.
Agent-First-Design: Entwickelt, um von KI-Agenten statt von menschlichen Bedienern genutzt zu werden. Die MCP-Tool-Schnittstelle ist so gestaltet, dass ein LLM autonom einen vollständigen Pentesting-Workflow durchlaufen kann — Apps starten, Sitzungen anhängen, Hooks schreiben und injizieren, Ergebnisse auslesen — in einer einzigen Konversation.
FridaC2MCP ist ein Gerüst für ein automatisiertes mobiles Pentesting-Framework. Die Idee ist, mehrere spezialisierte MCP-Server zu kombinieren — zum Beispiel: FridaC2MCP für dynamische Instrumentierung, Jadx-MCP für statische Analyse — und KI-Agenten den gesamten Workflow orchestrieren zu lassen. Dekompiliere eine APK, identifiziere interessante Methoden und hooke sie dann live. Kein manuelles Werkzeugwechseln, kein Kopieren und Einfügen zwischen Terminals.
Dies passt natürlich zu Gemini CLI und Claude Code, die bereits native Multi-Tool-MCP-Workflows unterstützen. Das Framework muss keine eigene Agenten-Orchestrierung implementieren — es muss nur die richtigen MCP-Server bereitstellen und den vorhandenen Agenten das überlassen, was sie gut können.
iOS OpenSSL / SSL: Die OpenSSL-Integration des Python 3.12-Builds ist nicht vollständig korrekt. Dies hat den MCP-Server nicht blockiert (der für seinen eigenen Transport nicht auf HTTPS angewiesen ist), könnte aber relevant werden, wenn eine zukünftige Abhängigkeit einen funktionierenden TLS-Kontext auf dem Gerät benötigt. Siehe devlog.md für Details.
Nur FastMCP 2.x: FastMCP 3.x führte bahnbrechende API-Änderungen ein. Android und iOS fixieren beide unter 3.x. Installieren über requirements-android.txt oder requirements-ios.txt — nicht auf ein nicht fixiertes fastmcp upgraden, bis dieses Repo migriert ist.
Dieses Projekt ist eine vernetzte Weiterentwicklung des ursprünglichen FridaMCP von Daniel Nakov. Während das ursprüngliche Projekt die Verwendung von Frida als MCP-Server über stdio vorantrieb, passt FridaC2MCP dieses Konzept für entfernte, Multi-Geräte-C2-Umgebungen an, unter Verwendung von Streamable HTTP und modernem Frida 17-Bundling.
Die iOS Python 3.12-Laufzeit basiert auf python3.12-ios-arm64 von k1tty-xz. Das ursprüngliche Projekt zielte auf rootful Jailbreaks ab — es waren erhebliche Modifikationen erforderlich, um es an rootless Jailbreak-Umgebungen (palera1n, /var/jb/-Layout) anzupassen.
Dies ist ein Proof-of-Concept. Es fehlt an ordnungsgemäßem Sitzungsmanagement, fehlertoleranter Fehlerbehandlung und jeglicher Form von Sicherheit. Die gesamte Kommunikation ist unverschlüsselt und nicht authentifiziert. Verwendung auf eigene Gefahr und nur in sicheren, isolierten Netzwerkumgebungen.
| Paket | Version | Build-System | Grund |
|---|
| Python | 3.12.5 | configure + Make | Basis-Laufzeit — nicht über Procursus verfügbar |
| frida-python | 17.6.0 | Meson + setuptools | Zentrale Frida-Bindungen |
| pydantic-core | 2.41.5 | maturin (Rust/PyO3) | Von FastMCP benötigt |
| cryptography | 47.0.0.dev1 | maturin (Rust) + OpenSSL 3.x | Abhängigkeitskette; benötigte SIGILL-Fix für A11 |
| cffi | 2.0.1.dev0 | setuptools + libffi | Von cryptography benötigt |
| pyyaml | 7.0.0.dev0 | setuptools + libyaml | Von FastMCP-Abhängigkeiten benötigt |
| rpds-py | 0.30.0 | maturin (Rust/PyO3) | Von FastMCP-Abhängigkeiten benötigt |
| lupa | 2.6 | setuptools + Lua | Lua-Einbettung |