Como encontrar subdomínios de um domínio: logs de certificados, DNS e seus limites
Para encontrar os subdomínios de um domínio sem acessar os servidores dele, consulte os logs de Certificate Transparency (CT). Todo certificado HTTPS publicamente confiável é registrado nesses logs abertos junto com os hostnames que ele cobre. Assim, uma consulta ao crt.sh ou ao Cert Spotter para example.com retorna nomes como mail., staging. ou old-shop.example.com. Depois, verifique cada nome no DNS para saber quais ainda existem e para onde apontam. Nosso localizador de subdomínios gratuito faz as duas etapas. Fique atento ao limite: nenhum método externo retorna uma lista garantidamente completa. Somente a zona DNS do domínio, visível para o proprietário, tem essa lista.
Formas de encontrar subdomínios, comparadas
| Método | Tipo | O que encontra | O que não encontra |
|---|---|---|---|
| Logs de Certificate Transparency (crt.sh, Cert Spotter) | Passivo | Todo nome que já teve um certificado público, inclusive os antigos | Nomes cobertos apenas por um certificado wildcard, nomes sem HTTPS, nomes internos |
| DNS passivo e agregadores (ex.: subfinder) | Passivo | Nomes vistos por resolvers, crawlers e muitas fontes públicas | A cobertura depende das fontes; muitas exigem chaves de API |
Mecanismos de busca (site:example.com -www) | Passivo | Hosts públicos com páginas indexadas | Tudo o que não está indexado |
| Força bruta com dicionário | Ativo | Nomes comuns, como dev, vpn, staging | Nomes incomuns; envia muitas consultas: use apenas em domínios seus |
| Transferência de zona (AXFR) | Ativo | A zona inteira, se o servidor estiver mal configurado | Quase sempre é recusada em um servidor configurado corretamente |
| Painel do seu provedor de DNS | Acesso do proprietário | A lista completa de registros | Disponível apenas para domínios que você controla |
Método 1: logs de Certificate Transparency
As autoridades certificadoras publicam os certificados que emitem em logs CT públicos e somente de acréscimo, e navegadores como Chrome e Safari só confiam em certificados emitidos publicamente que tenham sido registrados. Como um certificado lista os hostnames para os quais é válido, os logs funcionam, na prática, como um histórico de todos os nomes de um domínio em que alguém ativou o HTTPS.
- Abra o crt.sh e pesquise por
%.example.com(o%é um curinga, então você obtém todos os subdomínios). - Leia a coluna “Matching Identities”. Os nomes ficam nos logs para sempre, então muitos serão históricos.
- Para uma lista limpa, use a saída em JSON e remova as duplicatas:
curl -s 'https://crt.sh/?q=%25.example.com&output=json' \
| jq -r '.[].name_value' \
| tr 'A-Z' 'a-z' | sed 's/^\*\.//' | sort -u
%25 é o % codificado para URL. O campo name_value pode conter vários nomes separados por quebras de linha; o jq -r os imprime em linhas separadas. O crt.sh é um serviço comunitário gratuito e costuma responder com erros 502 ou timeouts quando está sobrecarregado: isso aconteceu repetidamente conosco enquanto escrevíamos este artigo, em 13 de outubro de 2026. Se isso acontecer, tente mais tarde ou use o Cert Spotter:
curl -s 'https://api.certspotter.com/v1/issuances?domain=example.com&include_subdomains=true&expand=dns_names' \
| jq -r '.[].dns_names[]' | sort -u
Segundo a documentação da API da SSLMate, o Cert Spotter retorna apenas certificados não expirados e permite um número limitado de consultas não autenticadas por hora para uso pessoal ou de avaliação. Ou seja, o crt.sh mostra o histórico, e o Cert Spotter mostra o que está em vigor.
Método 2: verifique quais subdomínios estão ativos no DNS
Um nome em um log de certificados só prova que um certificado foi emitido em algum momento. Para saber o que existe hoje, consulte o DNS:
# o nome resolve e para onde?
dig +short staging.example.com
# é um alias (CNAME) e para qual host?
dig +short CNAME staging.example.com
# resposta completa: veja o "status:", NOERROR ou NXDOMAIN
dig staging.example.com
# teste de DNS wildcard: um nome aleatório NÃO deve resolver
dig +short pp-test-8f3k2.example.com- NXDOMAIN: o nome não existe mais; só resta o certificado antigo. Isso é histórico, não um problema.
- NOERROR com um endereço: o subdomínio está ativo. Confirme se você ainda precisa dele e se ele recebe manutenção.
- NOERROR sem registro A/AAAA: o nome existe, mas não tem endereço (por exemplo, apenas MX ou TXT). Geralmente está tudo bem.
- Um CNAME que aponta para um nome que não existe: um registro pendente (dangling). Veja a seção sobre takeover abaixo.
Se o nome aleatório do último comando for resolvido, o domínio usa wildcard DNS: qualquer nome responde, então "ele resolve" não prova nada sobre um subdomínio específico.
Por que nenhuma ferramenta consegue mostrar todos os subdomínios
- Certificados wildcard. Se os serviços rodam em
*.example.com, os logs contêm apenas o asterisco, não os nomes individuais. - Nomes sem HTTPS público. Hosts que servem apenas HTTP simples, nomes usados só para e-mail e serviços internos com certificados de uma CA privada nunca chegam aos logs de CT.
- O DNS não tem uma consulta "listar tudo". Um resolvedor responde a perguntas sobre nomes que você já conhece. A única forma padrão de despejar uma zona é a transferência de zona, e os servidores a recusam para desconhecidos.
- Nomes antigos permanecem nos logs. A lista é sempre uma mistura de nomes atuais e nomes que já não existem há muito tempo, e é por isso que a verificação de DNS é importante.
Métodos ativos: força bruta e transferências de zona
Os métodos ativos enviam consultas à infraestrutura do alvo. São prática padrão em testes de segurança, em sistemas que você possui ou que você tem permissão explícita para testar.
- Força bruta com dicionário testa milhares de nomes prováveis (
dev,api,vpn,staging…) no DNS. O OWASP Amass combina coleta de informações de código aberto com reconhecimento ativo; o subfinder usa apenas fontes passivas. - Transferência de zona (AXFR) é o mecanismo que os servidores DNS secundários usam para copiar uma zona (RFC 5936). Teste seu próprio domínio assim:
dig NS example.com +short
dig AXFR example.com @ns1.example.com
Um servidor configurado corretamente responde "Transfer failed" ou recusa a solicitação. Se o seu servidor devolver a zona completa para qualquer pessoa na internet, restrinja o AXFR aos seus servidores secundários.
CNAMEs pendentes e subdomain takeover
Um caso típico: para uma campanha, alguém criou promo.example.com como um CNAME para example-promo.herokuapp.com. Depois o app foi excluído, mas o registro DNS ficou. Se a plataforma permite que qualquer pessoa crie um app (bucket, página) com o mesmo nome, um invasor pode reivindicá-lo e exibir o próprio conteúdo no seu subdomínio, com o seu domínio na barra de endereço. Isso se chama subdomain takeover.
Um CNAME pendente, por si só, não é prova de vulnerabilidade: algumas plataformas não permitem que um nome liberado seja reivindicado novamente, e confirmar isso exige verificar a própria plataforma. Mas a correção é barata: exclua o CNAME ou recrie o recurso no provedor se você ainda precisar do subdomínio.
O que fazer com os subdomínios encontrados
- Exporte a lista e marque todos os nomes que você não conhecia.
- Exclua CNAMEs pendentes e registros de ambientes de teste antigos e campanhas encerradas.
- Coloque painéis de administração, staging e ferramentas internas atrás de autenticação ou de uma lista de IPs permitidos, e não os deixe em versões desatualizadas de CMS.
- Verifique os subdomínios ativos importantes: a validade do certificado com o SSL checker, os registros com o DNS lookup e uma verificação passiva de código malicioso e software desatualizado com o website security scanner.
- Repita a busca periodicamente: cada novo certificado adiciona nomes aos logs.
Como encontrar subdomínios com o PromoPilot
Informe um domínio no localizador de subdomínios. Ele obtém os nomes do crt.sh (o histórico completo de certificados); se o crt.sh não responder, recorre ao Cert Spotter (somente certificados atuais) e avisa você. A lista de nomes fica em cache por 24 horas. Depois:
- normaliza os nomes (minúsculas, sem
*., apenas o domínio e seus subdomínios); - verifica até 300 nomes no DNS (primeiro os que têm os certificados mais recentes) pelo resolvedor público DNS-over-HTTPS da Cloudflare, com o Google como alternativa: registros A e, depois, AAAA para nomes sem A;
- mostra o status de cada nome (no DNS, fora do DNS, sem A/AAAA, CNAME pendente), a cadeia de CNAME e quando o certificado mais recente expira;
- testa a existência de DNS wildcard com um nome aleatório, marca as linhas afetadas e avisa quando certificados wildcard são encontrados;
- indica o serviço por trás de um CNAME pendente quando ele consta em uma lista de plataformas em que o takeover é possível (Amazon S3, Azure, Heroku, GitHub Pages, Netlify, Shopify e outras);
- permite filtrar a tabela e baixá-la em CSV.
Limites: 15 buscas por dia sem conta, 45 com conta gratuita, sem limite diário no Pro e no máximo 6 buscas por minuto.
O que a ferramenta não faz
- Sem força bruta com dicionário, sem varredura de portas e sem requisições HTTP aos hosts encontrados. Por isso ela consegue sinalizar um risco de takeover, mas não confirmá-lo.
- Ela vê apenas nomes que tiveram um certificado público. Nomes ocultos atrás de um certificado wildcard ou nunca servidos por HTTPS não aparecem.
- Em domínios com muitos certificados, a lista é limitada a 5.000 nomes únicos, e o DNS é verificado para 300 deles por execução.
Leitura relacionada
- Verificação de certificado SSL: validade, cadeia e protocolos.
- Como verificar registros DNS: A, CNAME, MX, TXT e o que significam.
- Como verificar se um site é seguro: o checklist de segurança completo.