
iOS 및 Android용 오픈소스 모바일 보안 테스트 제품군. 이전 명칭은 Passionfruit
Frida로 구동되는 런타임 모바일 애플리케이션 계측(instrumentation) 도구 키트입니다. 웹 기반 인터페이스를 통해 모바일 앱을 검사하고, 후킹하고, 수정할 수 있습니다.
이제 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
명령줄 플래그는 둘 다 설정된 경우 환경 변수보다 우선합니다.
이 프로젝트는 위변조 방지(안티 태머링) 보호 기능을 위한 내장 우회 기능을 포함하지 않습니다:
근거: 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는 모든 로컬 프로세스가 접근할 수 있습니다. 기본적으로 교차 출처(cross-origin) 요청이 차단되지만(CORS 헤더 없음, Socket.IO가 교차 출처 연결 거부), 이 자체만으로는 공유 또는 원격 환경에서 충분하지 않습니다.
원격 접근 또는 다중 사용자 보안이 필요한 경우 TLS, 접근 제어 및 로깅을 위해 Caddy와 같은 인증된 리버스 프록시 뒤에 Grapefruit를 배치하세요. 인증 없이 Grapefruit를 네트워크에 직접 노출하지 마십시오.
| 변수 | 설명 | 기본값 |
|---|
HOST | 서버 바인딩 주소 | 127.0.0.1 |
PORT | 서버 포트 | 31337 |
FRIDA_VERSION | Frida 메이저 버전 (16 또는 17) | 17 |
FRIDA_TIMEOUT | Frida 작업 제한 시간 (ms) | 1000 |
PROJECT_DIR | 데이터/캐시/로그 저장용 프로젝트 디렉터리 | cwd의 .igf |
LLM_PROVIDER | AI 제공자 (anthropic, openai, gemini, openrouter) | |
LLM_API_KEY | LLM 제공자의 API 키 | |
LLM_MODEL | 모델 이름 (예: claude-sonnet-4-20250514) | |
LLM_BASE_URL | 사용자 지정 엔드포인트 (제공자 기본값을 재정의) |