Fundamentos de reconnaissance
Mapeando a superfície de ataque para encontrar o que outros perdem
O que você vai descobrir
🎯 Por que isso importa
Os melhores bugs se escondem em ativos que outros não sabem que existem. Um subdomínio esquecido, uma versão antiga de API, um servidor de staging - é onde você encontra vulnerabilidades críticas. Enquanto centenas de caçadores competem no site principal, reconnaissance minucioso permite encontrar alvos só para você. Bom recon é frequentemente a diferença entre duplicatas constantes e bounties consistentes.
🔍 O que você vai aprender
- Enumeração de subdomínios (passiva e ativa) e por que funciona
- Técnicas de descoberta de conteúdo e endpoints
- Fingerprinting de tecnologia para guiar seus testes
- Análise de dados históricos (Wayback Machine e outras fontes)
- Construir um workflow de recon completo com exemplos práticos
🚀 Sua primeira vitória
Ao final deste capítulo, você terá uma metodologia completa de reconnaissance que descobre superfície de ataque escondida - e entenderá POR QUE cada técnica funciona.
🔧 Tente isso agora
Execute um recon básico em qualquer alvo no escopo (use example.com para praticar):
# PASSO 1: Encontrar subdomínios (passivo - usa fontes de dados públicas)
subfinder -d <target> -o subdomains.txt
# Esperado: Lista de subdomínios salva em subdomains.txt
# Exemplo de saída: api.target.com, staging.target.com, dev.target.com
# PASSO 2: Verificar quais subdomínios estão ativos (têm servidores web)
cat subdomains.txt | httpx -o live.txt
# Esperado: Apenas hosts que respondem salvos em live.txt
# Esses são seus alvos reais
# PASSO 3: Encontrar diretórios e arquivos ocultos
ffuf -u https://<target>/FUZZ -w /usr/share/seclists/Discovery/Web-Content/common.txt
# Esperado: Lista de caminhos descobertos como /admin, /api, /backup
# PASSO 4: Verificar URLs históricos (o que existia no passado)
echo "<target>" | waybackurls | tee wayback.txt
# Esperado: URLs arquivados pela Wayback Machine ao longo dos anos
Indicador de sucesso: Você verá subdomínios, hosts ativos, caminhos ocultos e URLs históricos - ativos que você nunca encontraria clicando pelo site.
Habilidades que você vai dominar
Enumeração de subdomínios
Encontrar todos os subdomínios usando técnicas passivas e ativas
Descoberta de conteúdo
Descobrir diretórios, arquivos e endpoints de API ocultos
Análise histórica
Encontrar endpoints esquecidos usando dados arquivados
Construção de workflow
Combinar ferramentas em um processo eficiente e repetível
Entendendo reconnaissance
"Você não pode hackear o que não sabe que existe. Recon é onde bug bounty é ganho ou perdido."
Reconnaissance passivo vs ativo
Existem duas abordagens fundamentalmente diferentes para reconnaissance:
Recon passivo — Coletar informações sem tocar diretamente o alvo. Você consulta bancos de dados de terceiros, motores de busca e registros públicos. O alvo não sabe que você está pesquisando porque você nunca envia tráfego para ele.
Recon ativo — Interagir diretamente com o alvo para descobrir informações. Isso inclui scan de portas, brute-force de diretórios e brute-force de subdomínios. O alvo pode ver esse tráfego em seus logs.
Por que importa: Recon passivo é sempre seguro e dentro do escopo. Recon ativo pode ser restrito por regras do programa (alguns proíbem scan automatizado). Sempre verifique a política do programa, e em caso de dúvida, comece passivo.
Por que enumeração de subdomínios funciona
Você pode se perguntar: como ferramentas podem encontrar subdomínios sem perguntar ao alvo? A internet deixa rastros em todo lugar:
- Logs de Certificate Transparency: Quando uma empresa obtém um certificado SSL para api.company.com, é registrado publicamente. Ferramentas consultam esses logs.
- Registros DNS: Alguns provedores DNS permitem transferências de zona ou têm bancos de dados consultáveis.
- Motores de busca: Google indexa páginas, e essas páginas frequentemente linkam para subdomínios.
- Arquivos web: A Wayback Machine crawla a internet e registra URLs que encontra, incluindo subdomínios.
- Pesquisa de segurança: Serviços como Shodan e Censys ativamente escaneiam a internet e registram o que encontram.
Ferramentas como subfinder consultam todas essas fontes simultaneamente, te dando subdomínios que levariam horas para encontrar manualmente - em segundos.
Por que URLs históricos importam
A Wayback Machine (archive.org) tem crawlado a internet desde 1996, salvando snapshots de sites. Quando desenvolvedores removem uma funcionalidade de um site, eles frequentemente:
- Removem o link do frontend
- Esquecem de remover o código backend
O endpoint ainda existe e ainda funciona - eles assumem que está seguro porque ninguém pode encontrá-lo. Mas a Wayback Machine lembra. Ferramentas como waybackurls permitem ver cada URL que já existiu em um domínio, revelando endpoints "escondidos" que ainda podem ser vulneráveis.
Workflow de reconnaissance
Passo 1: Enumeração de subdomínios
Encontre todos os subdomínios pertencentes ao seu alvo. Comece passivo, depois vá para ativo se o escopo permitir.
# ENUMERAÇÃO PASSIVA (segura, sem contato direto com o alvo)
# Essas ferramentas consultam bancos de dados públicos, não o alvo
# Subfinder - rápido, consulta muitas fontes
subfinder -d <target> -o subs_subfinder.txt
# O que faz: Consulta logs de certificados, bancos DNS, motores de busca
# Saída esperada: 50-500+ subdomínios dependendo do tamanho do alvo
# Amass - minucioso, leva mais tempo mas encontra mais
amass enum -passive -d <target> -o subs_amass.txt
# O que faz: Consulta ainda mais fontes que subfinder
# Saída esperada: Frequentemente encontra subdomínios adicionais que subfinder perde
# Nota: Pode levar 5-15 minutos para alvos grandes
# Assetfinder - rápido e simples
assetfinder <target> >> subs_assetfinder.txt
# O que faz: Busca rápida de fontes comuns
# Saída esperada: Sobrepõe com acima mas ocasionalmente encontra únicos
# Combinar todos os resultados e remover duplicatas
cat subs_*.txt | sort -u > all_subdomains.txt
# O que faz: Mescla todos os arquivos, ordena alfabeticamente, remove duplicatas
# Saída esperada: Lista limpa de subdomínios únicos
# ─────────────────────────────────────────────────────────
# ENUMERAÇÃO ATIVA (verifique o escopo primeiro!)
# Isso envia tráfego ao alvo - só faça se o programa permitir
# Brute-force de adivinhação de subdomínios
ffuf -u https://FUZZ.<target> \
-w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt \
-mc 200,301,302,403
# O que faz: Tenta nomes comuns de subdomínios (admin, api, dev, staging...)
# -mc: Mostrar apenas esses códigos de status (filtrar respostas "not found")
# Saída esperada: Subdomínios que existem mas não estavam em bancos públicos
# IMPORTANTE: Brute-forcing ativo pode disparar rate limiting ou alertas
# Seja respeitoso, use contagens de threads razoáveis, verifique as regras
Passo 2: Descoberta de hosts ativos
Nem todos os subdomínios têm servidores web ativos. Filtre para hosts que realmente respondem.
# Sondar servidores web ativos
cat all_subdomains.txt | httpx -o live_hosts.txt
# O que faz: Envia requisições HTTP para cada subdomínio, mantém apenas os que respondem
# Saída esperada: Subconjunto de subdomínios com servidores web ativos
# Esta é sua lista real de alvos
# Obter mais detalhes sobre cada host ativo
cat all_subdomains.txt | httpx -status-code -title -tech-detect -o detailed_hosts.txt
# Info adicional:
# -status-code: Mostra status HTTP (200, 301, 403, etc.)
# -title: Mostra título da página (revela o que é a app)
# -tech-detect: Identifica tecnologias (WordPress, React, nginx, etc.)
# Isso ajuda a priorizar - títulos interessantes como "Admin Panel" ou "API Docs" se destacam
# Verificar portas não-padrão (muitas apps não rodam em 80/443)
cat all_subdomains.txt | httpx -ports 80,443,8080,8443,8000,3000,9000 -o all_ports.txt
# O que faz: Verifica portas web comuns além das padrão
# Por que: Servidores de desenvolvimento frequentemente rodam na porta 3000, 8080, etc.
# Encontrar um servidor dev na porta 8080 é frequentemente mais valioso que o site principal
Passo 3: Descoberta de conteúdo
Encontre diretórios, arquivos e endpoints ocultos que não estão linkados das páginas principais.
# FUZZING DE DIRETÓRIOS
# "Fuzzing" significa tentar muitas entradas para ver o que existe
# Encontrar diretórios ocultos
ffuf -u https://<target>/FUZZ \
-w /usr/share/seclists/Discovery/Web-Content/raft-medium-directories.txt \
-fc 404
# O que faz: Substitui FUZZ por cada palavra da wordlist
# Exemplo: tenta /admin, /backup, /config, /api, etc.
# -fc 404: Filtrar (esconder) respostas 404 "Not Found"
# Saída esperada: Diretórios que existem mas não estão linkados em lugar nenhum
# Encontrar arquivos ocultos
ffuf -u https://<target>/FUZZ \
-w /usr/share/seclists/Discovery/Web-Content/raft-medium-files.txt \
-fc 404
# Procura arquivos como: config.php, .htaccess, backup.sql, .git/config
# Estes podem conter informações sensíveis
# DESCOBERTA DE ENDPOINTS DE API
ffuf -u https://<target>/api/FUZZ \
-w /usr/share/seclists/Discovery/Web-Content/api/api-endpoints.txt
# Padrões comuns de API: /api/users, /api/v1/accounts, /api/admin
# APIs são frequentemente menos protegidas que interfaces web
# DESCOBERTA DE PARÂMETROS
# Uma vez que encontra um endpoint, descubra quais parâmetros ele aceita
arjun -u https://<target>/endpoint
# O que faz: Tenta nomes de parâmetros comuns para ver quais o endpoint aceita
# Exemplo: Descobre que /search aceita ?q=, ?page=, ?debug=
# Encontrar parâmetros ocultos como ?debug=true pode revelar vulnerabilidades
# NOTA SOBRE WORDLISTS:
# SecLists é a coleção padrão da indústria de wordlists
# Instalação: git clone https://github.com/danielmiessler/SecLists.git /usr/share/seclists
# Ou: apt install seclists (no Kali/Debian)
Passo 4: Análise histórica
Encontre URLs que existiram no passado - endpoints esquecidos que ainda podem funcionar.
# URLs DA WAYBACK MACHINE
echo "<target>" | waybackurls | tee wayback_urls.txt
# O que faz: Consulta a Wayback Machine por todos os URLs arquivados para este domínio
# Saída esperada: Centenas a milhares de URLs históricos
# Estes são URLs que existiram em algum momento - muitos ainda podem funcionar
# GAU - Get All URLs (consulta múltiplas fontes)
gau <target> | tee gau_urls.txt
# O que faz: Consulta Wayback Machine + Common Crawl + outros arquivos
# Frequentemente encontra mais URLs que waybackurls sozinho
# FILTRAR ENDPOINTS INTERESSANTES
# Encontrar tipos de arquivo potencialmente vulneráveis
cat wayback_urls.txt | grep -E '\.(php|asp|aspx|jsp|json|xml|txt|log|bak|old)' | sort -u
# Por que: Esses tipos de arquivo frequentemente processam entrada (vuln a injeção) ou contêm dados
# Encontrar URLs com parâmetros (pontos de injeção potenciais)
cat wayback_urls.txt | grep '=' | sort -u
# Por que: Parâmetros são onde entrada do usuário vai - alvos principais para XSS, SQLi, IDOR
# Exemplo encontra: /search?q=, /user?id=, /download?file=
# Encontrar endpoints de API
cat wayback_urls.txt | grep -E '/api/|/v1/|/v2/|/graphql' | sort -u
# Por que: APIs frequentemente têm problemas de autorização, especialmente versões antigas
# Encontrar caminhos admin/sensíveis
cat wayback_urls.txt | grep -iE 'admin|backup|config|debug|test|staging' | sort -u
# Por que: Esses caminhos frequentemente têm segurança mais fraca ou expõem info sensível
# IMPORTANTE: Uma URL no arquivo não garante que ainda funciona
# Teste cada URL interessante para ver se ainda responde
Vitórias reais de recon
🏆 O servidor de staging esquecido
Um caçador rodou subfinder e encontrou staging.company.com nos resultados. O site principal estava hardened, mas o servidor de staging tinha modo debug habilitado. Mensagens de erro expunham credenciais de banco de dados, levando a uma recompensa de $5.000 por divulgação de informação.
Lição: Ambientes não-produção (staging, dev, test, uat) frequentemente têm segurança mais fraca porque desenvolvedores assumem que estão escondidos. Não estão. Sempre enumere subdomínios.
🏆 A mina de ouro Wayback Machine
URLs históricos revelaram um endpoint de API antigo /api/v1/users/export que foi removido do frontend dois anos atrás. O caçador tentou - o endpoint ainda funcionava e não tinha autenticação. Ele despejou todo o banco de dados de usuários. Recompensa de $15.000.
Lição: Desenvolvedores removem links da UI mas esquecem de remover código backend. A Wayback Machine lembra o que eles esqueceram. Sempre verifique URLs históricos.
🏆 A descoberta da porta não-padrão
Depois de não encontrar nada no site principal, um caçador rodou httpx com scan de portas. A porta 8443 tinha um painel admin para ferramentas internas da aplicação - com credenciais padrão. Capacidade de takeover de conta completo, classificado Crítico.
Lição: Não assuma que todas as apps web rodam nas portas 80/443. Ferramentas de desenvolvimento, painéis admin e apps internas frequentemente rodam em portas não-padrão. Verifique 8080, 8443, 3000 e outras.
Perguntas frequentes
Quanto tempo o recon deve levar?
Recon inicial: 1-2 horas para um novo alvo é razoável. Rode suas ferramentas, revise resultados, identifique ativos interessantes.
Recon contínuo: Configure monitoramento automatizado para pegar novos subdomínios e mudanças (coberto no capítulo de Automação).
Equilíbrio: Não passe semanas em recon antes de testar. O objetivo é encontrar vulnerabilidades, não construir um inventário perfeito de ativos. Itere entre recon e testes.
Brute forcing de subdomínio é permitido?
Enumeração passiva (subfinder, amass modo passivo): Sempre segura. Você está consultando bancos de dados de terceiros, não o alvo.
Brute forcing ativo: Verifique as regras do programa. Maioria dos programas com escopo wildcard (*.target.com) permitem, mas alguns proíbem explicitamente scan automatizado. Em caso de dúvida, pergunte ou fique com métodos passivos.
Rate limiting: Mesmo quando permitido, seja respeitoso. Use contagens de threads razoáveis, adicione delays se necessário. Se bloquear não ajuda ninguém.
E se eu não conseguir instalar essas ferramentas?
Alternativas online existem:
- Subdomínios: crt.sh (busca de certificate transparency), dnsdumpster.com
- URLs históricos: web.archive.org (site da Wayback Machine)
- Detecção de tecnologia: extensão de navegador Wappalyzer
Ferramentas são mais rápidas e abrangentes, mas você pode fazer recon útil com nada além de um navegador web se necessário.
Como sei o que está realmente no escopo?
Leia a política do programa cuidadosamente. Padrões comuns de escopo:
*.company.com - Qualquer subdomínio está no escopo
www.company.com apenas - Apenas o site principal, nada mais
URLs específicos listados - Apenas esses alvos exatos
Quando um subdomínio que você encontra não está explicitamente mencionado, verifique se corresponde ao wildcard ou pergunte ao programa. Testar ativos fora do escopo remove sua proteção legal.
Onde consigo wordlists?
SecLists é o padrão ouro - uma coleção curada de wordlists para todas as necessidades de testes de segurança:
git clone https://github.com/danielmiessler/SecLists.git
Inclui wordlists para enumeração de subdomínios, fuzzing de diretórios, nomes de parâmetros, senhas comuns e muito mais. Maioria dos exemplos neste curso assume que você tem SecLists instalado.
🎯 Você domina recon!
Você agora tem um workflow de reconnaissance completo e entende por que cada técnica funciona. Enumeração de subdomínios, descoberta de hosts ativos, fuzzing de conteúdo, análise histórica - você encontrará superfície de ataque que outros caçadores perdem.
Pronto para construir sua metodologia de teste →