Gaia - Descubrimiento de superficie de ataque y triaje asistido por IA
Gaia es una herramienta de análisis de superficie de ataque centrada en la CLI que descubre endpoints y parámetros, reduce el ruido y resalta riesgos relevantes para la seguridad mediante heurísticas estáticas y razonamiento opcional de IA. Orquesta Katana, gau, arjun, linkfinder y uro para convertir colecciones de URLs sin procesar en una vista normalizada y consciente del riesgo, adecuada para flujos de trabajo de bug bounty, AppSec e ingeniería de seguridad.
Gaia no es un escáner de vulnerabilidades automatizado. Mapea la superficie de ataque, aplica heurísticas deterministas y puede usar LLM para generar sugerencias de pruebas. Los hallazgos son orientación, no vulnerabilidades confirmadas. Se requiere validación manual. La salida de la IA es orientativa y no autoritativa; úsala para decidir dónde enfocarse y cómo probar.

Qué hace Gaia
Gaia se centra en la señal frente al ruido. Permite:
- Rastrear aplicaciones en vivo
- Recopilar URLs históricas
- Extraer parámetros
- Normalizar y deduplicar endpoints
- Analizar JavaScript en busca de endpoints, URLs, secretos, correos electrónicos y archivos
- Aplicar heurísticas de seguridad deterministas
- Enriquecer opcionalmente los hallazgos con razonamiento basado en LLM (acotado y optimizado)
El resultado es un mapa rápido y legible de lo que importa en la superficie de ataque de una aplicación.
Para quién es
- Cazadores de bug bounty que hacen reconocimiento y triaje rápidos
- Ingenieros de AppSec que mapean superficies de ataque
- Ingenieros de seguridad que automatizan el análisis en etapas tempranas
- Desarrolladores que quieren visibilidad sobre endpoints y parámetros expuestos
Características principales
- Rastreo en vivo mediante Katana
- Descubrimiento de URLs históricas mediante gau
- Descubrimiento de parámetros mediante arjun + análisis de consultas
- Normalización y deduplicación de URLs con uro
- Analizador de JS para una extracción de JS con menos ruido
- Heurísticas de riesgo estáticas (IDOR, SSRF, auth, traversal, inyección, etc.)
- Análisis opcional asistido por LLM (acotado, minimizado, rápido)
- Reducción de ruido: filtrado de activos estáticos, filtrado de parámetros de seguimiento/basura
- Diseño centrado en el rendimiento: llamadas de IA acotadas, payloads compactos, instantáneas de respuesta ligeras
Cómo funciona (proceso)
- Resolver las herramientas externas
- Rastrear el objetivo (Katana)
- Recopilar URLs históricas (gau)
- Análisis de JS
- Extraer parámetros (arjun + análisis)
- Normalizar y deduplicar URLs (uro)
- Analizar (estático + IA opcional)
- Generar el informe
Cada etapa informa cuántas URLs o parámetros descubrió.
Uso
Escaneo básico
gaia -u https://example.com
Desactivar etapas específicas
gaia -u https://example.com --no-gau --no-ai
Leer URLs desde stdin
cat urls.txt | gaia --stdin
Ejemplo de ejecución en CLI
Demostración de la CLI de Gaia: rastreo, normalización y análisis asistido por IA
Instalación
Requisitos
- Python 3.10+
- (Opcional) virtualenv
- Cadena de herramientas de Go (para la autoinstalación de katana / gau)
Configuración
python3 -m venv venv
source venv/bin/activate
pip install -e .
Las herramientas externas (katana, gau, arjun, linkfinder, uro) se pueden autoinstalar si están habilitadas.
Banderas de CLI
- -u, --url URL objetivo
- --stdin Leer URLs desde stdin
- --no-gau Desactivar la recopilación de URLs históricas
- --no-arjun Desactivar el descubrimiento de parámetros de arjun
- --no-linkfinder Desactivar el descubrimiento de JS de linkfinder
- --no-uro Desactivar la normalización de URLs
- --no-js-analyzer Desactivar la etapa del analizador de JS
- --js-max-fetches N Máximo de archivos JS a obtener para el análisis
- --no-ai Desactivar el razonamiento de IA
- --show-assets Mostrar los activos estáticos en la salida
- --only-params Mostrar solo endpoints con parámetros
- --auto-install Autoinstalar las herramientas faltantes
- --max-urls N Limitar las URLs recopiladas
- --format console|md|json Formato de salida
- --output PATH Escribir el informe en un archivo
- -h, --help Mostrar ayuda
Variables de entorno
IA / LLM
- GAIA_LLM_MODEL Nombre del modelo para LiteLLM (necesario para habilitar la IA)
- GAIA_LLM_MAX_ENDPOINTS Máximo de endpoints enviados al LLM (predeterminado: 15)
- GAIA_LLM_INCLUDE_RESPONSES Incluir instantáneas de respuestas HTTP (predeterminado: true)
- GAIA_LLM_MAX_RESPONSES Máximo de instantáneas a obtener (predeterminado: 50)
- GAIA_LLM_MAX_BODY_CHARS Máximo de caracteres del cuerpo de la respuesta (predeterminado: 4000)
Conmutadores de funciones
- GAIA_DISABLE_AI
- GAIA_DISABLE_GAU
- GAIA_DISABLE_ARJUN
- GAIA_DISABLE_LINKFINDER
- GAIA_DISABLE_URO
- GAIA_DISABLE_JS_ANALYZER
Depuración
- GAIA_VERBOSE
- GAIA_DEBUG
- GAIA_LLM_DEBUG
- GAIA_JS_MAX_FETCHES
- GAIA_JS_MAX_CHARS
Notas y modos:
- Modo rápido: desactiva la IA y las herramientas históricas (--no-ai --no-gau) para un reconocimiento rápido.
- Modo profundo: habilita todas las herramientas y la IA con GAIA_LLM_MODEL configurada; aumenta GAIA_LLM_MAX_ENDPOINTS si necesitas una cobertura de IA más amplia.
- Modo de triaje: mantén la IA activada pero confía en los valores predeterminados (endpoints acotados, payloads minimizados) para un equilibrio entre velocidad y cobertura.
Configuración de LiteLLM / IA
La IA es opcional. Gaia funciona completamente sin ella.
Uso de OpenAI:
- GAIA_LLM_MODEL (ejemplo: gpt-4o-mini o gpt-4.1)
- OPENAI_API_KEY: LiteLLM enruta las solicitudes a OpenAI según estas variables.
Uso de Google Gemini
- GAIA_LLM_MODEL (ejemplo: gemini/gemini-1.5-pro)
- GOOGLE_API_KEY: LiteLLM enruta las solicitudes a Gemini según estas variables.
Uso de modelos locales (Ollama / LM Studio)
- GAIA_LLM_MODEL (ejemplo: ollama/llama3 u ollama/qwen2.5)
- LiteLLM se conecta al endpoint local; no se requiere clave de API para los modelos locales.
Salida
Salida en consola
- Tabla de endpoints (filtrada, legible)
- Etiquetas de riesgo por parámetro
- Estadísticas resumidas
- Indicador de progreso de la IA (en una sola línea)
Notas de parámetros
Al final del informe, Gaia imprime notas agregadas de parámetros:
- Por qué un parámetro parece arriesgado
- Dónde se observó
- Ideas prácticas de pruebas
Otros formatos
- JSON (legible por máquina)
- Markdown (listo para informes)
Notas de rendimiento
- Las llamadas de IA están estrictamente acotadas
- Los payloads se minimizan y se acortan sus claves
- Los activos estáticos y los parámetros basura se omiten
- Las respuestas 2xx envían solo content-type + un fragmento corto
- Diseñado para seguir siendo rápido incluso en superficies grandes
Contribución
Las contribuciones son bienvenidas. Mantén los PR enfocados y legibles. Se fomentan las mejoras en heurísticas, rendimiento, filtrado, prompts de IA y documentación. Para cambios más grandes, abre un issue para discutirlo primero.
Licencia
MIT
Aviso legal
Gaia es una herramienta de reconocimiento y análisis. Prueba siempre de forma responsable y únicamente contra sistemas que estés autorizado a evaluar.