Automação & escalonamento
Deixe ferramentas fazerem o trabalho repetitivo enquanto você foca em encontrar bugs
O que você vai descobrir
🎯 Por que isso importa
Os caçadores mais bem-sucedidos trabalham de forma eficiente, não exaustiva. Recon automatizada roda enquanto você dorme. Monitoramento contínuo captura novos assets antes dos competidores verem. Scripting lida com testes repetitivos em centenas de endpoints. Automação permite escalar seus esforços além do que testes manuais permitem.
🔍 O que você vai aprender
- Pipelines de reconhecimento automatizados (e como cada parte funciona)
- Monitoramento contínuo de subdomínios para capturar novos assets primeiro
- Sistemas de notificação que alertam sobre descobertas
- Conceitos fundamentais de scripting para testes
- Nuclei para scanning de vulnerabilidades em escala
- Práticas de automação responsável
🚀 Sua primeira vitória
Ao final deste capítulo, você terá um pipeline de recon automatizado que descobre assets enquanto você foca em testes reais - e vai entender cada linha de código nele.
🔧 Seu primeiro pipeline automatizado
Encadeie ferramentas para descoberta automatizada. Crie este script e execute:
#!/bin/bash
# recon.sh - Pipeline de reconhecimento automatizado
# Uso: ./recon.sh target.com
# --- O QUE ESTE SCRIPT FAZ ---
# 1. Recebe um domínio como entrada
# 2. Encontra todos os subdomínios
# 3. Verifica quais estão ativos
# 4. Obtém URLs históricas
# 5. Salva tudo em arquivos organizados
# --- O CÓDIGO ---
TARGET=$1 # $1 significa "primeiro argumento passado ao script"
# Verificação de segurança: Certifique-se de que um alvo foi fornecido
if [ -z "$TARGET" ]; then
echo "Uso: ./recon.sh target.com"
exit 1 # Sair com código de erro
fi
# Criar diretório de saída para este alvo
OUTPUT_DIR="./recon/$TARGET"
mkdir -p $OUTPUT_DIR # -p cria diretórios pais se necessário
echo "[*] Iniciando recon para $TARGET"
echo "[*] Resultados serão salvos em $OUTPUT_DIR"
# Passo 1: Enumeração de subdomínios
echo "[+] Encontrando subdomínios..."
subfinder -d $TARGET -silent -o $OUTPUT_DIR/subdomains.txt
SUBDOMAIN_COUNT=$(wc -l < $OUTPUT_DIR/subdomains.txt)
echo " Encontrados $SUBDOMAIN_COUNT subdomínios"
# Passo 2: Sondar hosts ativos
echo "[+] Verificando quais hosts estão ativos..."
cat $OUTPUT_DIR/subdomains.txt | httpx -silent -o $OUTPUT_DIR/live_hosts.txt
LIVE_COUNT=$(wc -l < $OUTPUT_DIR/live_hosts.txt)
echo " Encontrados $LIVE_COUNT hosts ativos"
# Passo 3: Obter URLs históricas do Wayback Machine
echo "[+] Buscando URLs históricas..."
echo $TARGET | waybackurls > $OUTPUT_DIR/wayback_urls.txt
WAYBACK_COUNT=$(wc -l < $OUTPUT_DIR/wayback_urls.txt)
echo " Encontradas $WAYBACK_COUNT URLs históricas"
# Passo 4: Resumo
echo ""
echo "=== RECON COMPLETA ==="
echo "Alvo: $TARGET"
echo "Subdomínios: $SUBDOMAIN_COUNT"
echo "Hosts ativos: $LIVE_COUNT"
echo "Wayback: $WAYBACK_COUNT URLs"
echo "Saída: $OUTPUT_DIR/"
Para usar este script:
# 1. Salve o script como recon.sh
# 2. Torne-o executável:
chmod +x recon.sh
# 3. Execute:
./recon.sh target.com
# Resultados aparecem em ./recon/target.com/
Habilidades que você vai dominar
Scripting shell
Escreva scripts bash que automatizam tarefas repetitivas
Design de pipeline
Encadeie ferramentas para workflows eficientes
Monitoramento contínuo
Configure scans automatizados que rodam em agenda
Integração de alertas
Receba notificações quando automação encontrar algo
Entendendo automação em bug bounty
"Automação lida com quantidade. Você lida com qualidade."
Por que automação dá vantagem
Considere este cenário: Uma empresa adiciona um novo subdomínio às 2h da manhã. Um caçador com monitoramento contínuo captura às 2h05 e começa a testar. Um caçador sem automação pode não descobrir por dias - até lá, outros caçadores já encontraram os bugs fáceis.
Vantagens da automação:
- Velocidade: Seja o primeiro a testar novos assets
- Cobertura: Teste centenas de subdomínios enquanto você dorme
- Consistência: Nunca esqueça de verificar algo
- Economia de tempo: Gaste tempo testando, não executando comandos repetitivos
O que automatizar vs o que fazer manualmente
Automatize isso (repetitivo, escalável):
- Enumeração e monitoramento de subdomínios
- Detecção de hosts ativos
- Coleta de screenshots
- Fingerprinting de tecnologia
- Scanning de vulnerabilidades conhecidas (templates Nuclei)
- Coleta de URLs históricas
Mantenha manual (requer julgamento humano):
- Testes de lógica de negócio - automação não consegue entender propósito da aplicação
- Fluxos de autenticação complexos - requerem entendimento de gerenciamento de sessão
- Vulnerabilidades encadeadas - precisam de pensamento criativo para conectar bugs
- Escrita de relatórios - relatórios de qualidade requerem explicação humana
- Avaliação de impacto - determinar consequências do mundo real
Técnicas de automação
Monitoramento contínuo de subdomínios
Este script roda diariamente, compara subdomínios de hoje com os de ontem e alerta sobre novas descobertas:
#!/bin/bash
# monitor.sh - Alertar sobre novos subdomínios
# Executar diariamente via cron job
TARGET=$1
DATA_DIR="./monitor/$TARGET"
mkdir -p $DATA_DIR
# Caminhos dos arquivos
OLD_SUBS="$DATA_DIR/subs_previous.txt"
NEW_SUBS="$DATA_DIR/subs_current.txt"
DIFF_FILE="$DATA_DIR/subs_new.txt"
# Obter subdomínios atuais
echo "[*] Escaneando $TARGET por subdomínios..."
subfinder -d $TARGET -silent -o $NEW_SUBS
# Primeira execução? Salvar baseline
if [ ! -f "$OLD_SUBS" ]; then
cp $NEW_SUBS $OLD_SUBS
echo "[*] Primeira execução - baseline salva"
exit 0
fi
# Comparar: Encontrar subdomínios em NEW que não estão em OLD
# comm -13 mostra linhas únicas ao arquivo 2 (novos subdomínios)
comm -13 <(sort $OLD_SUBS) <(sort $NEW_SUBS) > $DIFF_FILE
# Verificar se encontramos algo novo
if [ -s "$DIFF_FILE" ]; then # -s verifica se arquivo tem conteúdo
NEW_COUNT=$(wc -l < $DIFF_FILE)
echo "[!] Encontrados $NEW_COUNT NOVOS subdomínios!"
echo ""
cat $DIFF_FILE
echo ""
# Opcional: Enviar notificação (descomente e configure)
# notify_discord "Novos subdomínios para $TARGET: $(cat $DIFF_FILE)"
else
echo "[*] Nenhum novo subdomínio encontrado"
fi
# Atualizar baseline para próxima execução
cp $NEW_SUBS $OLD_SUBS
# --- PARA EXECUTAR DIARIAMENTE ---
# Adicionar ao crontab (executar: crontab -e)
# 0 6 * * * /caminho/para/monitor.sh target.com >> /caminho/para/monitor.log 2>&1
#
# Isso executa às 6h da manhã todo dia
# Formato cron: minuto hora dia mês dia_semana comando
Scanning de vulnerabilidades com Nuclei
Nuclei usa templates para escanear vulnerabilidades conhecidas. É como ter milhares de verificações de segurança automatizadas:
# INSTALAÇÃO
go install -v github.com/projectdiscovery/nuclei/v3/cmd/nuclei@latest
# Atualizar templates (execute regularmente - novas vulnerabilidades adicionadas frequentemente)
nuclei -update-templates
# O que faz: Baixa os templates mais recentes de detecção de vulnerabilidades
# Templates cobrem: CVEs, misconfigs, painéis expostos, takeovers, etc.
# ─────────────────────────────────────────────────────────
# EXEMPLOS DE SCANNING
# Escanear todos os hosts ativos com todos os templates
nuclei -l live_hosts.txt -o all_findings.txt
# Aviso: Isso pode levar horas em listas grandes. Comece direcionado.
# Escanear apenas subdomain takeovers
nuclei -l live_hosts.txt -t takeovers/ -o takeovers.txt
# O que faz: Verifica takeovers de GitHub Pages, Heroku, S3, etc.
# Scan rápido, descobertas de alto valor
# Escanear painéis admin expostos
nuclei -l live_hosts.txt -t exposed-panels/ -o panels.txt
# O que faz: Encontra páginas de login, interfaces admin, dashboards
# Bom para encontrar painéis admin esquecidos
# Escanear apenas severidades críticas e altas
nuclei -l live_hosts.txt -severity critical,high -o critical_findings.txt
# Use quando quiser focar em problemas de impacto
# Escanear CVEs específicos
nuclei -l live_hosts.txt -t cves/2024/ -o cve_findings.txt
# Testa vulnerabilidades conhecidas de 2024
# ─────────────────────────────────────────────────────────
# INTERPRETANDO RESULTADOS
# Formato de saída do Nuclei:
# [template-id] [severity] [protocol] [matched-url] [extracted-info]
#
# Exemplo:
# [git-config-exposure] [medium] [http] [https://target.com/.git/config]
#
# Isso te diz:
# - O que foi encontrado (template git-config-exposure deu match)
# - Severidade (medium)
# - Onde (https://target.com/.git/config)
#
# IMPORTANTE: Nuclei encontra problemas POTENCIAIS
# Sempre verifique descobertas manualmente antes de reportar
Integração de notificações
Receba alertas quando automação encontrar algo interessante:
# Notificação Webhook Discord
# 1. Criar webhook: Configurações do Servidor → Integrações → Webhooks → Novo Webhook
# 2. Copiar a URL do webhook
notify_discord() {
local MESSAGE="$1"
local WEBHOOK_URL="https://discord.com/api/webhooks/SEU_WEBHOOK_ID/SEU_TOKEN"
# Enviar requisição POST para Discord
curl -s -X POST "$WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d "{\"content\": \"$MESSAGE\"}"
}
# Uso nos seus scripts:
if [ -s "$DIFF_FILE" ]; then
notify_discord "🔔 Novos subdomínios encontrados para $TARGET: $(cat $DIFF_FILE | tr '\n' ' ')"
fi
# ─────────────────────────────────────────────────────────
# Webhook Slack (abordagem similar)
notify_slack() {
local MESSAGE="$1"
local WEBHOOK_URL="https://hooks.slack.com/services/SEU/SLACK/WEBHOOK"
curl -s -X POST "$WEBHOOK_URL" \
-H "Content-Type: application/json" \
-d "{\"text\": \"$MESSAGE\"}"
}
# ─────────────────────────────────────────────────────────
# Notificação Bot Telegram
notify_telegram() {
local MESSAGE="$1"
local BOT_TOKEN="SEU_TOKEN_BOT"
local CHAT_ID="SEU_CHAT_ID"
curl -s "https://api.telegram.org/bot${BOT_TOKEN}/sendMessage" \
-d "chat_id=${CHAT_ID}" \
-d "text=${MESSAGE}"
}
# Dica: Mantenha URLs de webhook em arquivo de config separado, não nos scripts
# source ~/.config/notify_config.sh
Histórias de sucesso de automação
🏆 Primeiro em um novo subdomínio
O script de monitoramento de um caçador detectou um novo subdomínio (staging-api.target.com) às 3h da manhã. Às 3h15, scans Nuclei automatizados encontraram modo debug habilitado. Às 4h, o caçador tinha escrito e submetido um relatório de credenciais de banco de dados expostas. Recompensa de $5.000 - tudo porque automação rodou enquanto ele dormia.
Lição: Monitoramento contínuo + scanning automatizado = vantagem de primeiro a chegar em novos assets.
🏆 Escalando para 50 programas
Um caçador em tempo parcial não conseguia competir com pesquisadores em tempo integral manualmente. Ele construiu um pipeline que monitorava 50 programas, executava recon toda noite e alertava sobre novos subdomínios ou descobertas Nuclei. Em 6 meses, ele ganhou mais de $30.000 - tudo de descobertas automatizadas que ele verificou manualmente e reportou.
Lição: Automação permite monitorar programas em escala. Você se torna sua própria equipe de segurança.
Práticas de automação responsável
⚠️ Regras para testes automatizados
1. Respeite limites de taxa. Não sobrecarregue alvos com requisições. Use contagens de threads razoáveis (10-50, não 1000). Adicione delays se necessário. Ser bloqueado não ajuda ninguém.
2. Verifique políticas dos programas. Alguns programas proíbem scanning automatizado completamente. Outros têm regras específicas sobre intensidade de scan. Leia antes de executar.
3. Não escaneie fora do escopo. Certifique-se de que sua automação toca apenas assets em escopo. Um wildcard (*.target.com) não significa que você pode escanear fornecedores deles.
4. Verifique antes de reportar. Descobertas Nuclei são problemas potenciais, não vulnerabilidades confirmadas. Sempre verifique manualmente que o problema existe e é explorável antes de submeter um relatório.
Perguntas frequentes
Preciso saber programar para automatizar?
Scripting bash fundamental é suficiente para começar - os exemplos neste capítulo funcionam como estão. Você pode copiar, modificar e combinar esses scripts sem conhecimento profundo de programação. Conforme você progride, aprender Python abre mais possibilidades para ferramentas customizadas. Comece com bash, aprenda modificando scripts existentes e cresça a partir daí.
Onde devo executar minha automação?
VPS (recomendado): Um servidor de $5-10/mês da DigitalOcean, Linode ou Vultr roda 24/7, tem bandwidth estável e mantém seu IP residencial separado dos testes. Ótimo para monitoramento contínuo.
Máquina local: Bom para scans sob demanda. Use cron jobs para tarefas agendadas. Lembre que seu computador precisa estar ligado e conectado.
Funções cloud: AWS Lambda, Google Cloud Functions para tarefas periódicas leves. Mais complexo de configurar mas escala bem.
Automação não vai me fazer ser bloqueado?
Pode se você for agressivo. Boas práticas para evitar bloqueios:
- Use contagens de threads razoáveis (comece com 10-20)
- Adicione delays entre requisições (flag -delay em muitas ferramentas)
- Use um VPS com IP limpo (IPs residenciais são bloqueados mais rápido)
- Rode entre múltiplos programas em vez de martelar um só
- Recon passiva (subfinder) não toca o alvo, então não pode causar bloqueios
Posso reportar descobertas Nuclei diretamente?
Não - sempre verifique primeiro. Templates Nuclei podem ter falsos positivos. Antes de reportar:
1. Visite manualmente a URL e confirme o problema
2. Entenda o que você está vendo (não reporte "Nuclei disse")
3. Avalie o impacto real (algumas descobertas têm impacto baixo/nenhum)
4. Escreva um relatório adequado explicando a vulnerabilidade
Programas perdem paciência rapidamente com caçadores que spamam saída de scanner não verificada.
O que é um cron job?
Cron é um agendador Linux que roda comandos em horários especificados. Para editar sua agenda cron:
crontab -e
Formato: minuto hora dia mês dia_semana comando
Exemplos:
0 6 * * * /caminho/para/script.sh - Roda diariamente às 6h
0 */4 * * * /caminho/para/script.sh - Roda a cada 4 horas
0 0 * * 0 /caminho/para/script.sh - Roda semanalmente no domingo
🎯 Você pode automatizar sua caça!
Pipelines de recon, monitoramento contínuo, scanning Nuclei, notificações - você agora tem as ferramentas para escalar seus esforços de bug bounty. Sua automação roda enquanto você dorme, capturando novos assets antes dos competidores.
Pronto para construir sua carreira de bug bounty →