
루팅된 Android 및 탈옥된 iOS에서 Frida 계측을 위한 에이전틱 C2 스타일 MCP 서버
스트리밍 가능한 HTTP 전송을 지원하는 MCP 서버로, Frida의 동적 계측을 전적으로 기기 내에서 실행합니다. 클라이언트 측 도구가 필요하지 않습니다.
이 프로젝트는 루팅된 Android 및 탈옥된 iOS 기기에서 직접 실행되며, Frida를 HTTP로 호출 가능한 도구 세트로 노출합니다. 모든 MCP 호환 클라이언트는 네트워크 상의 기기에 연결하여 로컬에 Frida 도구를 설치하지 않고도 동적 계측을 수행할 수 있습니다.
향후 개발은 주로 Gemini CLI와 Claude Code를 타겟으로 진행됩니다. 두 도구 모두 기본 다중 에이전트 오케스트레이션과 MCP 지원을 구축하고 있기 때문입니다. 이는 여러 MCP 서버(예: FridaC2MCP + Jadx-MCP)를 자동화된 워크플로우로 구성하려는 이 프로젝트의 방향과 일치합니다. 5ire는 초기 개발 과정에서 광범위하게 사용되었으며, 서버와 상호작용하기 위한 훌륭한 GUI 옵션으로 남아 있습니다.
Gemini CLI — 기기 MCP 서버 등록 (<DEVICE_IP>를 휴대폰 LAN 주소로 바꾸세요):
gemini mcp add --transport http frida-c2-mcp http://<DEVICE_IP>: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
keep_alive=True) 모두 지원.완전히 자동화된 에이전트 기반 모바일 보안 테스트가 목표입니다. Frida를 MCP 서버로 노출함으로써, 침투 테스터 또는 AI 에이전트는 초기 설정 이후 USB 직접 연결이나 로컬 셸 접근 없이 애플리케이션의 동작을 검사하고 조작할 수 있습니다. 클라이언트는 Frida 도구가 전혀 필요하지 않으며, 모든 것이 대상 기기에서 실행됩니다.
일반적인 워크플로우:
이는 다중 기기 설정으로 자연스럽게 확장됩니다: 동일한 네트워크에서 각각 자체 MCP 서버를 가진 여러 대의 휴대폰을 실행하고, 단일 에이전트로 이들을 오케스트레이션할 수 있습니다.
cli.py)루팅된 Android의 Termux에서 실행됩니다. 즉시 스크립트 번들링을 위해 esbuild를 사용하고, Java/Android 런타임 계측을 위해 frida-java-bridge를 사용합니다. frida-compile이 기술적으로 frida-tools를 통해 사용 가능하지만, Android의 untrusted_app SELinux 도메인이 V8 JIT 컴파일러에 필요한 W^X 메모리 매핑을 차단하기 때문에 Termux에서는 사용할 수 없습니다. 이로 인해 중요한 스크립트에서 SIGSEGV가 발생합니다. esbuild는 정적으로 링크된 Go 바이너리이며 JIT가 없으므로 모든 SELinux 컨텍스트에서 깔끔하게 실행됩니다.
ios.py)탈옥된 rootless iOS(iPhone X, iOS 16.7.12, palera1n 테스트 완료)에서 실행됩니다. 스크립트 번들링을 위해 frida-compile을 사용하고, Objective-C 런타임 계측을 위해 frida-objc-bridge를 사용합니다. 기기에 Node.js가 필요하지 않습니다.
iOS 포트는 arm64용 맞춤형 Python 3.12 툴체인 전체를 컴파일해야 했습니다. 이러한 패키지 중 rootless 탈옥 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 임베딩 |
미리 컴파일된 휠과 Python .deb는 ios_precompiled/에 포함되어 있으므로 직접 빌드할 필요가 없습니다. iOS 설치 지침은 setup.md를 참조하십시오.
기기 내 실행: Frida 서버와 클라이언트 모두 대상 기기에서 실행됩니다. MCP 서버는 HTTP 요청을 Frida 명령으로 변환합니다. 이는 Frida 클라이언트가 별도의 컴퓨터에서 실행되는 기존 모델과의 차별점입니다.
스트리밍 가능한 HTTP 전송: 여러 동시 연결 및 다중 기기 오케스트레이션을 지원하기 위해 stdio 대신 스트리밍 가능한 HTTP를 사용합니다.
기기 내 스크립트 번들링: Frida 17+는 번들된 JavaScript를 필요로 합니다. Android에서는 esbuild가 번들링을 처리합니다(JIT 없이 모든 SELinux 컨텍스트에서 실행 가능). iOS에서는 frida-compile을 사용하며 ObjC 브릿지 import가 자동으로 주입됩니다.
에이전트 우선 설계: 인간 운영자보다는 AI 에이전트가 사용하도록 구축되었습니다. MCP 도구 인터페이스는 LLM이 단일 대화 내에서 전체 침투 테스트 워크플로우(앱 실행, 세션 연결, 훅 작성 및 주입, 결과 읽기)를 자율적으로 탐색할 수 있도록 설계되었습니다.
FridaC2MCP는 자동화된 모바일 침투 테스트 프레임워크를 위한 발판입니다. 동적 계측을 위한 FridaC2MCP, 정적 분석을 위한 Jadx-MCP 등 여러 특화 MCP 서버를 구성하고 AI 에이전트가 전체 워크플로우를 오케스트레이션하도록 하는 아이디어입니다. APK를 디컴파일하고, 흥미로운 메서드를 식별한 다음, 실시간으로 훅을 연결합니다. 수동 도구 전환, 터미널 간 복사-붙여넣기가 필요 없습니다.
이는 이미 다중 도구 MCP 워크플로우를 기본 지원하는 Gemini CLI 및 Claude Code와 자연스럽게 연결됩니다. 프레임워크가 자체 에이전트 오케스트레이션을 구현할 필요가 없습니다. 적절한 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의 네트워크 기반 진화입니다. 원본 프로젝트는 stdio를 통해 Frida를 MCP 서버로 사용하는 선구적인 역할을 했지만, FridaC2MCP는 이 개념을 스트리밍 가능한 HTTP와 최신 Frida 17 번들링을 사용하여 원격 다중 기기 C2 환경에 적용합니다.
iOS Python 3.12 런타임은 k1tty-xz의 python3.12-ios-arm64를 기반으로 합니다. 원본 프로젝트는 rootful 탈옥을 대상으로 했으나, rootless 탈옥 환경(palera1n, /var/jb/ 레이아웃)에 맞게 상당한 수정이 필요했습니다.
이는 개념 증명입니다. 적절한 세션 관리, 정상적인 오류 처리 및 보안이 전혀 없습니다. 모든 통신은 암호화되지 않고 인증되지 않습니다. 자신의 책임 하에 사용하고 안전하고 격리된 네트워크 환경에서만 사용하십시오.