Por que Subdomínios são Importantes
Subdomínios revelam serviços internos, ambientes de desenvolvimento, APIs, painéis admin e sistemas legados. Frequentemente têm menos controle de segurança que o domínio principal. Atacar api.empresa.com ou dev.empresa.com costuma ser muito mais fácil que empresa.com.
Subfinder — Reconhecimento Passivo
# Instalação
go install -v github.com/projectdiscovery/subfinder/v2/cmd/subfinder@latest
# Uso básico
subfinder -d alvo.com
# Saída silenciosa (apenas subdomínios)
subfinder -d alvo.com -silent
# Todas as fontes
subfinder -d alvo.com -all
# Recursivo (subdomínios de subdomínios)
subfinder -d alvo.com -recursive
# Salvar em arquivo
subfinder -d alvo.com -o subdomains.txt
# Múltiplos domínios
subfinder -dL dominios.txt -o resultados.txt
# Com resolução de DNS para filtrar ativos
subfinder -d alvo.com | dnsx -silent
# Configurar API keys para mais fontes
# ~/.config/subfinder/provider-config.yaml
# Sources: virustotal, shodan, censys, securitytrails, etc.Amass — O Mais Completo
# Instalação
go install -v github.com/owasp-amass/amass/v4/...@master
# Enumeração passiva
amass enum -passive -d alvo.com
# Enumeração ativa (brute force + permutações)
amass enum -d alvo.com -brute -w wordlist.txt
# Inteligência — descobrir ASN e CIDRs da empresa
amass intel -org "Nome da Empresa"
amass intel -asn 12345
amass intel -cidr 200.10.0.0/16 -whois
# Modo com banco de dados (para projetos longos)
amass enum -d alvo.com -dir ./amass_output
amass db -dir ./amass_output -list
# Visualização gráfica
amass viz -d3 -dir ./amass_output
# Configuração de API keys
# ~/.config/amass/config.yamlTécnicas de Enumeração
1. DNS Bruteforce
# Listas de palavras especializadas
git clone https://github.com/danielmiessler/SecLists
# Listas relevantes:
# SecLists/Discovery/DNS/subdomains-top1million-5000.txt
# SecLists/Discovery/DNS/bitquark-subdomains-top100000.txt
# puredns — bruteforce rápido com resolução
puredns bruteforce wordlist.txt alvo.com
# dnsx — resolver lista de subdomínios
cat subdomains.txt | dnsx -silent -a -resp
# shuffledns com wordlist
shuffledns -d alvo.com -w wordlist.txt -r resolvers.txt2. Permutações e Alterações
# gotator — gera permutações
gotator -sub subs.txt -perm permutations.txt -depth 1 -md | dnsx
# Exemplos de permutações automáticas:
# api.alvo.com → api-v2, api-old, api-dev, api-staging, api-prod
# mail.alvo.com → mail2, smtp, webmail, imap, exchange
# dev.alvo.com → dev2, dev-old, development, test, staging
# altdns
altdns -i subdomains.txt -o permutations.txt -w words.txt3. Fontes Passivas
# crt.sh — certificados SSL (melhor fonte gratuita)
curl -s "https://crt.sh/?q=%25.alvo.com&output=json" |
jq -r '.[].name_value' |
sed 's/\*\.//g' |
sort -u > crt_subs.txt
# VirusTotal
curl -s "https://www.virustotal.com/api/v3/domains/alvo.com/subdomains" \
-H "x-apikey: SUA_KEY" | jq -r '.data[].id'
# SecurityTrails (pago, mas muito completo)
# Histórico de DNS + subdomínios
# Wayback Machine
waybackurls alvo.com |
grep -oP 'https?://[a-z0-9.-]+\.alvo\.com' |
sort -u4. Resolução e Validação
# dnsx — resolução em massa
cat all_subs.txt | dnsx -silent -a -resp -o resolved.txt
# httpx — verificar quais têm serviço HTTP
cat resolved.txt | httpx -silent -title -status-code -tech-detect
# Exemplo de saída:
# dev.alvo.com [200] [Login - Admin Panel] [PHP, MySQL, Apache]
# api.alvo.com [200] [API v1] [Node.js]
# staging.alvo.com [200] [Staging - Sem autenticação] [React, Express]Pipeline Completo de Enumeração
#!/bin/bash
DOMINIO=$1
echo "[1] Coleta passiva..."
subfinder -d $DOMINIO -silent -all > passive.txt
curl -s "https://crt.sh/?q=%25.$DOMINIO&output=json" |
jq -r '.[].name_value' | sed 's/\*\.//g' >> passive.txt
waybackurls $DOMINIO | grep -oP '[a-z0-9-]+\.'$DOMINIO >> passive.txt
echo "[2] Deduplicar..."
sort -u passive.txt > unique.txt
echo "[3] Resolver DNS..."
cat unique.txt | dnsx -silent -a > resolved.txt
echo "[4] Verificar HTTP..."
cat resolved.txt | httpx -silent -title -status-code -o http_services.txt
echo "[5] Relatório:"
wc -l passive.txt unique.txt resolved.txt http_services.txt
echo "Subdomínios HTTP ativos:"
cat http_services.txtSubdomínio Takeover
Quando um subdomínio aponta via CNAME para um serviço externo que foi deletado, é possível registrar esse serviço e controlar o subdomínio.
# Verificar dangling CNAMEs
cat resolved.txt | httpx -silent -cname
# Exemplo de takeover:
# assets.alvo.com → CNAME → alvo.s3.amazonaws.com
# Se o bucket S3 não existe, qualquer um pode criá-lo
# Ao criar o bucket com o mesmo nome, passa a controlar assets.alvo.com
# Subzy — detecta automaticamente
subzy run --targets subs.txt
# Serviços vulneráveis a takeover:
# AWS S3, GitHub Pages, Heroku, Azure, Shopify,
# Fastly, Tumblr, Cargo, Zendesk, UserVoiceFerramentas Complementares
- ProjectDiscovery Suite — subfinder + dnsx + httpx + nuclei formam pipeline completo
- chaos.projectdiscovery.io — banco de subdomínios de programas de bug bounty
- rapiddns.io — busca reversa por IP/CNAME
- dnsdumpster.com — visualização de DNS com mapa