
iOS 및 Android용 오픈소스 모바일 보안 테스트 제품군. 이전 명칭은 Passionfruit
Frida 기반의 런타임 모바일 애플리케이션 계측 툴킷입니다. 웹 기반 인터페이스를 통해 모바일 앱을 검사하고, 후킹하고, 수정할 수 있습니다.
이제 iOS와 Android를 모두 지원합니다!
기기에서 Frida 서버가 실행 중이어야 합니다. 먼저 공식 설정 가이드(Android)를 따르세요.
npm (권장, Node.js 22.18+ 필요)
npm install -g igf
igf
또는 설치 없이 실행 (Node.js 22.18+ 필요)
npx igf
macOS, Linux, Windows용 사전 빌드 바이너리는 GitHub Releases에서 사용할 수 있습니다. 소스 개발과 사전 빌드 실행 파일 모두 Node.js를 사용합니다. npm 워크플로에 대해서는 개발 가이드를 참조하세요.
igf [options] Start the server (default)
Options:
--frida <16 | 17> Frida version to use (default: 17)
--host <host> Host to bind (default: 127.0.0.1)
--port <port> Port to bind (default: 31337)
--project <path> Project directory for data/cache/logs (default: .igf in cwd)
--no-open Do not open browser on startup
--help, -h Show help message
| Variable | Description | Default |
|---|---|---|
HOST | 서버 바인드 주소 | 127.0.0.1 |
PORT | 서버 포트 | 31337 |
FRIDA_VERSION | Frida 메이저 버전 (16 또는 17) | 17 |
FRIDA_TIMEOUT | Frida 작업 타임아웃 (ms) | 1000 |
PROJECT_DIR | 데이터/캐시/로그용 프로젝트 디렉터리 | 현재 작업 디렉터리의 .igf |
LLM_PROVIDER | AI 제공자 (anthropic, openai, gemini, openrouter) | |
LLM_API_KEY | LLM 제공자용 API 키 | |
LLM_MODEL | 모델 이름 (예: claude-sonnet-4-20250514) | |
LLM_BASE_URL | 사용자 지정 엔드포인트 (제공자 기본값을 재정의) |
명령줄 플래그와 환경 변수가 모두 설정된 경우 명령줄 플래그가 우선합니다.
이 프로젝트는 변조 방지 보호를 위한 내장 우회 기능을 포함하지 않습니다:
근거: RASP(Runtime Application Self-Protection) 솔루션은 계측 프레임워크를 탐지하기 위해 지속적으로 진화합니다. 효과적인 우회를 유지하려면 새로운 탐지 방법에 발맞추기 위한 지속적인 노력이 필요하며, 이는 상당한 유지보수 부담과 잠재적인 안정성 문제를 초래합니다. 또한 이러한 우회는 애플리케이션에 매우 특화되어 있어 범용 솔루션은 취약합니다.
취약한 내장 우회를 제공하는 대신, Grapefruit는 전용 우회 도구와 잘 조합되는 계측 및 검사 기능에 집중합니다.
RASP 우회가 필요한 승인된 평가를 위한 권장 접근 방식:
Frida Syscall Tracer — frida-strace(Frida 17.8.0+)를 사용하여 대상 프로세스의 시스템 호출을 추적합니다. 이는 탐지 아티팩트를 식별하고 Grapefruit를 연결하기 전에 어떤 패치가 필요한지 판단하는 데 도움이 됩니다:
frida-strace -U -f com.example.app
자세한 내용은 Frida 17.8.0 릴리스 노트를 참조하세요.
다중 세션 아키텍처 — Frida는 동일한 프로세스에 여러 세션을 연결하는 것을 지원합니다. 먼저 RASP 우회 스크립트로 별도의 세션을 생성한 다음 Grapefruit를 실행하세요. Grapefruit는 대상 앱이 이미 실행 중임을 감지하면 다시 생성하지 않고 기존 프로세스에 연결하므로, 이미 적용된 우회가 유지됩니다.
Grapefruit는 기본적으로 127.0.0.1에 바인드되며 내장 인증이 없습니다. 웹 UI와 API는 모든 로컬 프로세스에서 접근할 수 있습니다. 교차 출처 요청은 기본적으로 차단되지만(CORS 헤더 없음, Socket.IO는 교차 출처 연결 거부), 이것만으로는 공유 또는 원격 환경에 충분하지 않습니다.
원격 접근 또는 다중 사용자 보안이 필요한 경우, TLS, 접근 제어, 로깅을 위해 Caddy와 같은 인증된 리버스 프록시 뒤에 Grapefruit를 배치하세요. 인증 없이 Grapefruit를 네트워크에 직접 노출하지 마세요.