
Suite de pruebas de seguridad móvil de código abierto para iOS y Android. Anteriormente Passionfruit
Kit de instrumentación de aplicaciones móviles en tiempo de ejecución impulsado por Frida. Inspecciona, engancha y modifica aplicaciones móviles mediante una interfaz web.
¡Ahora es compatible con iOS y Android!
Requiere que el servidor de Frida se esté ejecutando en tu dispositivo. Sigue primero las guías oficiales de configuración(Android).
npm (recomendado, requiere Node.js 22.18+)
npm install -g igf
igf
O ejecútalo sin instalarlo (requiere Node.js 22.18+)
npx igf
Binarios precompilados para macOS, Linux y Windows están disponibles en GitHub Releases. Tanto el desarrollo desde el código fuente como los ejecutables precompilados usan Node.js; consulta la guía de desarrollo para el flujo de trabajo con npm.
igf [options] Inicia el servidor (predeterminado)
Options:
--frida <16 | 17> Versión de Frida a usar (predeterminado: 17)
--host <host> Host al que vincularse (predeterminado: 127.0.0.1)
--port <port> Puerto al que vincularse (predeterminado: 31337)
--project <path> Directorio del proyecto para datos/caché/registros (predeterminado: .igf en cwd)
--no-open No abrir el navegador al iniciar
--help, -h Mostrar mensaje de ayuda
Los indicadores de línea de comandos tienen prioridad sobre las variables de entorno cuando ambos están configurados.
Este proyecto no incluye omisiones integradas para protecciones anti-manipulación:
Justificación: Las soluciones RASP (protección automática de aplicaciones en tiempo de ejecución) evolucionan continuamente para detectar marcos de instrumentación. Mantener omisiones efectivas requiere un esfuerzo constante para seguir el ritmo de los nuevos métodos de detección, lo que introduce una carga de mantenimiento significativa y posibles problemas de estabilidad. Estas omisiones también son muy específicas de cada aplicación, lo que hace que las soluciones de propósito general sean frágiles.
En lugar de incluir omisiones integradas frágiles, Grapefruit se centra en capacidades de instrumentación e inspección que se combinan bien con herramientas de omisión dedicadas.
Enfoques recomendados para evaluaciones autorizadas donde se requiere omitir RASP:
Rastreador de syscalls de Frida — Usa frida-strace (Frida 17.8.0+) para rastrear las llamadas al sistema en el proceso objetivo. Esto ayuda a identificar artefactos de detección y determinar qué parches se necesitan antes de adjuntar Grapefruit:
frida-strace -U -f com.example.app
Consulta las notas de la versión de Frida 17.8.0 para más detalles.
Arquitectura de múltiples sesiones — Frida admite varias sesiones adjuntas al mismo proceso. Inicia primero una sesión separada con tus scripts de omisión de RASP y luego lanza Grapefruit. Cuando Grapefruit detecta que la aplicación objetivo ya se está ejecutando, se adjunta al proceso existente en lugar de reiniciarlo, conservando las omisiones que ya estén activas.
Grapefruit se vincula a 127.0.0.1 de forma predeterminada y no tiene autenticación integrada. La interfaz web y la API son accesibles para cualquier proceso local. Aunque las solicitudes de origen cruzado están bloqueadas de forma predeterminada (sin cabeceras CORS, Socket.IO rechaza conexiones de origen cruzado), esto por sí solo no es suficiente para un entorno compartido o remoto.
Si necesitas acceso remoto o seguridad multiusuario, coloca Grapefruit detrás de un proxy inverso autenticado como Caddy para TLS, control de acceso y registro. No expongas Grapefruit directamente a la red sin autenticación.
| Variable | Descripción | Predeterminado |
|---|
HOST | Dirección de enlace del servidor | 127.0.0.1 |
PORT | Puerto del servidor | 31337 |
FRIDA_VERSION | Versión principal de Frida (16 o 17) | 17 |
FRIDA_TIMEOUT | Tiempo de espera de las operaciones de Frida (ms) | 1000 |
PROJECT_DIR | Directorio del proyecto para datos/caché/registros | .igf en cwd |
LLM_PROVIDER | Proveedor de IA (anthropic, openai, gemini, openrouter) | |
LLM_API_KEY | Clave de API para el proveedor de LLM | |
LLM_MODEL | Nombre del modelo (p. ej. claude-sonnet-4-20250514) | |
LLM_BASE_URL | Endpoint personalizado (reemplaza el predeterminado del proveedor) |