Gaia - Descoberta de Superfície de Ataque e Triagem Assistida por IA
Gaia é uma ferramenta de análise de superfície de ataque baseada em CLI que descobre endpoints e parâmetros, reduz ruído e destaca riscos relevantes à segurança usando heurísticas estáticas e raciocínio opcional de IA. Ela orquestra Katana, gau, arjun, linkfinder e uro para transformar coleções brutas de URLs em uma visão normalizada e consciente de riscos, adequada para bug bounty, AppSec e fluxos de trabalho de engenharia de segurança.
Gaia não é um scanner automatizado de vulnerabilidades. Ela mapeia a superfície de ataque, aplica heurísticas determinísticas e pode usar LLMs para gerar dicas de teste. Os achados são orientações, não vulnerabilidades confirmadas. A validação manual é necessária. A saída da IA é consultiva e não autoritativa; use-a para decidir onde focar e como testar.

O que o Gaia Faz
Gaia foca no sinal em vez do ruído. Ele:
- Rastreia aplicações ativas
- Coleta URLs históricas
- Extrai parâmetros
- Normaliza e deduplica endpoints
- Analisa JavaScript em busca de endpoints, URLs, segredos, emails e arquivos
- Aplica heurísticas de segurança determinísticas
- Opcionalmente enriquece achados com raciocínio baseado em LLM (limitado e otimizado)
O resultado é um mapa rápido e legível do que importa na superfície de ataque de uma aplicação.
Para Quem é
- Caçadores de bug bounty fazendo recon e triagem rápidos
- Engenheiros de AppSec mapeando superfícies de ataque
- Engenheiros de segurança automatizando análises em estágio inicial
- Desenvolvedores que desejam visibilidade sobre endpoints e parâmetros expostos
Principais Recursos
- Rastreamento ao vivo via Katana
- Descoberta de URLs históricas via gau
- Descoberta de parâmetros via arjun + análise de consultas
- Normalização e deduplicação de URLs com uro
- Analisador JS para extração de JS com redução de ruído
- Heurísticas estáticas de risco (IDOR, SSRF, autenticação, travessia, injeção, etc.)
- Análise opcional assistida por LLM (limitada, minimizada, rápida)
- Redução de ruído: filtragem de ativos estáticos, filtragem de parâmetros de rastreamento/lixo
- Design focado em desempenho: chamadas de IA limitadas, payloads compactos, snapshots de resposta enxutos
Como Funciona (Pipeline)
- Resolver ferramentas externas
- Rastrear alvo (Katana)
- Coletar URLs históricas (gau)
- Análise de JS
- Extrair parâmetros (arjun + parsing)
- Normalizar e deduplicar URLs (uro)
- Analisar (estática + IA opcional)
- Renderizar relatório
Cada etapa informa quantas URLs ou parâmetros descobriu.
Uso
Escaneamento Básico
gaia -u https://example.com
Desabilitar Etapas Específicas
gaia -u https://example.com --no-gau --no-ai
Ler URLs do stdin
cat urls.txt | gaia --stdin
Exemplo de Execução CLI
Demonstração do Gaia CLI – crawling, normalização e análise assistida por IA
Instalação
Requisitos
- Python 3.10+
- (Opcional) virtualenv
- Toolchain Go (para auto-instalação do katana/gau)
Configuração
python3 -m venv venv
source venv/bin/activate
pip install -e .
Ferramentas externas (katana, gau, arjun, linkfinder, uro) podem ser instaladas automaticamente se habilitado.
Flags da CLI
- -u, --url URL alvo
- --stdin Ler URLs do stdin
- --no-gau Desabilitar coleta de URLs históricas
- --no-arjun Desabilitar descoberta de parâmetros do arjun
- --no-linkfinder Desabilitar descoberta de JS do linkfinder
- --no-uro Desabilitar normalização de URLs
- --no-js-analyzer Desabilitar estágio do analisador JS
- --js-max-fetches N Máx. de arquivos JS a buscar para análise
- --no-ai Desabilitar raciocínio de IA
- --show-assets Mostrar ativos estáticos na saída
- --only-params Mostrar apenas endpoints com parâmetros
- --auto-install Instalar automaticamente ferramentas faltantes
- --max-urls N Limitar URLs coletadas
- --format console|md|json Formato de saída
- --output PATH Escrever relatório em arquivo
- -h, --help Mostrar ajuda
Variáveis de Ambiente
IA / LLM
- GAIA_LLM_MODEL Nome do modelo para LiteLLM (necessário para habilitar IA)
- GAIA_LLM_MAX_ENDPOINTS Máximo de endpoints enviados ao LLM (padrão: 15)
- GAIA_LLM_INCLUDE_RESPONSES Incluir snapshots de resposta HTTP (padrão: true)
- GAIA_LLM_MAX_RESPONSES Máximo de snapshots a buscar (padrão: 50)
- GAIA_LLM_MAX_BODY_CHARS Máximo de caracteres do corpo da resposta (padrão: 4000)
Alternâncias de Recursos
- GAIA_DISABLE_AI
- GAIA_DISABLE_GAU
- GAIA_DISABLE_ARJUN
- GAIA_DISABLE_LINKFINDER
- GAIA_DISABLE_URO
- GAIA_DISABLE_JS_ANALYZER
Depuração
- GAIA_VERBOSE
- GAIA_DEBUG
- GAIA_LLM_DEBUG
- GAIA_JS_MAX_FETCHES
- GAIA_JS_MAX_CHARS
Notas e modos:
- Modo rápido: desabilite IA e ferramentas históricas (--no-ai --no-gau) para reconhecimento rápido.
- Modo profundo: habilite todas as ferramentas e IA com GAIA_LLM_MODEL configurado; aumente GAIA_LLM_MAX_ENDPOINTS se precisar de cobertura mais ampla de IA.
- Modo de triagem: mantenha IA ativa, mas confie nos padrões (endpoints limitados, payloads minimizados) para velocidade e cobertura equilibradas.
Configuração LiteLLM / IA
IA é opcional. Gaia funciona completamente sem ela.
Usando OpenAI:
- GAIA_LLM_MODEL (exemplo: gpt-4o-mini ou gpt-4.1)
- OPENAI_API_KEY: LiteLLM roteia requisições para OpenAI baseado nessas variáveis.
Usando Google Gemini
- GAIA_LLM_MODEL (exemplo: gemini/gemini-1.5-pro)
- GOOGLE_API_KEY: LiteLLM roteia requisições para Gemini baseado nessas variáveis.
Usando Modelos Locais (Ollama / LM Studio)
- GAIA_LLM_MODEL (exemplo: ollama/llama3 ou ollama/qwen2.5)
- LiteLLM conecta ao endpoint local; nenhuma chave de API é necessária para modelos locais.
Saída
Saída no Console
- Tabela de endpoints (filtrada, legível)
- Tags de risco por parâmetro
- Estatísticas resumidas
- Indicador de progresso da IA (linha única)
Notas de Parâmetros
Ao final do relatório, o Gaia imprime notas agregadas de parâmetros:
- Por que um parâmetro parece arriscado
- Onde foi visto
- Ideias práticas de teste
Outros Formatos
- JSON (legível por máquina)
- Markdown (pronto para relatório)
Notas de Desempenho
- Chamadas de IA são estritamente limitadas
- Payloads são minimizados e chaves encurtadas
- Ativos estáticos e parâmetros lixo são ignorados
- Respostas 2xx enviam apenas content-type + trecho curto
- Projetado para permanecer rápido mesmo em superfícies grandes
Contribuição
Contribuições são bem-vindas. Por favor, mantenha os PRs focados e legíveis. Melhorias em heurísticas, desempenho, filtragem, prompts de IA e documentação são incentivadas. Para mudanças maiores, abra uma issue para discutir primeiro.
Licença
MIT
Aviso Legal
Gaia é uma ferramenta de reconhecimento e análise. Sempre teste com responsabilidade e apenas contra sistemas que você está autorizado a avaliar.