
iOSおよびAndroid向けのオープンソースモバイルセキュリティテストスイート。旧称はPassionfruit。
Frida を利用したランタイムモバイルアプリケーションインストルメンテーションツールキット。 Webベースのインターフェースを通じて、モバイルアプリの検査、フック、変更を行えます。
現在、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] サーバーを起動 (デフォルト)
Options:
--frida <16 | 17> 使用するFridaバージョン (デフォルト: 17)
--host <host> バインドするホスト (デフォルト: 127.0.0.1)
--port <port> バインドするポート (デフォルト: 31337)
--project <path> data/cache/logs用のプロジェクトディレクトリ (デフォルト: カレントディレクトリの.igf)
--no-open 起動時にブラウザを開かない
--help, -h ヘルプメッセージを表示
| 変数 | 説明 | デフォルト |
|---|---|---|
HOST | サーバーのバインドアドレス | 127.0.0.1 |
PORT | サーバーポート | 31337 |
FRIDA_VERSION | Fridaメジャーバージョン (16 または 17) | 17 |
FRIDA_TIMEOUT | Frida操作のタイムアウト (ms) | 1000 |
PROJECT_DIR | data/cache/logs用のプロジェクトディレクトリ | カレントディレクトリの.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 にバインドされ、組み込みの認証はありません。Web UIとAPIは任意のローカルプロセスからアクセス可能です。クロスオリジンリクエストはデフォルトでブロックされますが (CORSヘッダーなし、Socket.IOはクロスオリジン接続を拒否)、これだけでは共有環境やリモート環境には十分ではありません。
リモートアクセスやマルチユーザーセキュリティが必要な場合は、TLS、アクセス制御、ログ記録のために Caddy などの認証付きリバースプロキシの背後にGrapefruitを配置してください。認証なしでGrapefruitを直接ネットワークに公開しないでください。