Skip to content

dnsmap - Enumeração de Subdomínios via DNS

O dnsmap é uma ferramenta de enumeração de subdomínios baseada em força bruta de DNS. Lançada originalmente em 2006 por Gonzalo N-Baron (pagvac), ela recebe um domínio como alvo e, a partir de uma lista de nomes possíveis (wordlist), tenta resolver cada combinação via DNS para descobrir quais subdomínios realmente existem.

A enumeração de subdomínios é uma etapa central na fase de reconhecimento, pois expande o mapa da infraestrutura de um alvo. Um único domínio como example.com pode esconder dezenas de subdomínios — mail.example.com, vpn.example.com, dev.example.com, admin.example.com — e cada um deles pode representar um serviço, um servidor ou uma aplicação diferente. Descobrir esses nomes revela pontos de entrada que não estão visíveis a partir do site principal.

Ao contrário de técnicas passivas que apenas consultam registros públicos, o dnsmap trabalha de forma ativa: ele gera nomes de subdomínios e verifica, um a um, se resolvem para um endereço IP válido.

Em distribuições baseadas em Debian, o dnsmap está disponível diretamente nos repositórios oficiais:

Terminal window
sudo apt update
sudo apt install dnsmap

O dnsmap é escrito em C e distribuído como um único arquivo-fonte, o que torna a compilação bastante simples. Após obter o código-fonte de um repositório mantido (como forks disponíveis no GitHub):

Terminal window
# Instalar as ferramentas de compilação (Debian/Ubuntu)
sudo apt install build-essential
# Dentro do diretório do código-fonte
make
# Ou compilando diretamente com o gcc
gcc -O3 -o dnsmap dnsmap.c

Executar o dnsmap sem argumentos exibe a versão e a sintaxe de uso:

Terminal window
dnsmap

O desempenho e a abrangência da enumeração dependem diretamente da wordlist utilizada. O dnsmap já inclui uma lista interna de subdomínios comuns, o que permite executá-lo sem nenhuma lista externa. No entanto, para resultados mais completos, é recomendável fornecer uma wordlist própria e mais robusta.

A ferramenta também costuma acompanhar arquivos auxiliares, como listas de combinações de três letras (TLAs — Three-Letter Acronyms), úteis para descobrir subdomínios curtos e não óbvios.

A sintaxe fundamental do dnsmap é:

Terminal window
dnsmap <domínio-alvo> [opções]

A forma mais simples utiliza a wordlist interna da ferramenta:

Terminal window
dnsmap example.com

Durante a execução, o dnsmap exibe cada subdomínio encontrado junto com o endereço IP para o qual ele resolve:

[+] searching (sub)domains for example.com using built-in wordlist
mail.example.com
IP address #1: 93.184.216.34
www.example.com
IP address #1: 93.184.216.34
[+] 2 (sub)domains and 2 IP address(es) found

O dnsmap possui um conjunto enxuto e direto de opções:

OpçãoDescrição
-w <wordlist>Utiliza uma wordlist personalizada em vez da lista interna
-r <arquivo>Salva os resultados em um arquivo de texto comum
-c <arquivo>Salva os resultados em formato CSV (útil para planilhas e processamento)
-d <milissegundos>Define um atraso entre as requisições, em milissegundos
-i <ips>Ignora os IPs informados (útil para eliminar falsos positivos)
Terminal window
dnsmap example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
Terminal window
# Salvar em arquivo de texto
dnsmap example.com -r resultados.txt
# Salvar em formato CSV
dnsmap example.com -c resultados.csv

Um atraso reduz a intensidade da varredura, tornando-a mais discreta e menos propensa a sobrecarregar servidores DNS:

Terminal window
# Atraso de 3000 ms (3 segundos) entre as consultas
dnsmap example.com -d 3000

Lidando com Falsos Positivos (Wildcard DNS)

Section titled “Lidando com Falsos Positivos (Wildcard DNS)”

Alguns domínios utilizam wildcard DNS, uma configuração em que qualquer subdomínio — mesmo inexistente — resolve para um mesmo endereço IP. Nesses casos, o dnsmap pode reportar dezenas de subdomínios “encontrados” que, na verdade, não existem de forma independente.

A opção -i permite instruir o dnsmap a ignorar determinados IPs, eliminando esses falsos positivos. Se você perceber que muitos subdomínios apontam para o mesmo IP genérico, basta informá-lo:

Terminal window
# Ignorar o IP associado ao wildcard
dnsmap example.com -i 93.184.216.34

Um fluxo típico de enumeração combina uma boa wordlist, atraso entre consultas e registro dos resultados. Suponha que você precise mapear os subdomínios de um domínio autorizado e documentar os achados:

Terminal window
# 1. Enumeração completa com wordlist externa, atraso e saída em CSV
dnsmap example.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt -d 1000 -c subdominios.csv
# 2. Enumeração rápida com a wordlist interna, salvando em texto
dnsmap example.com -r resultado_rapido.txt
# 3. Nova varredura filtrando o IP de wildcard identificado
dnsmap example.com -i 93.184.216.34 -r resultado_filtrado.txt

Com a lista de subdomínios e seus respectivos IPs em mãos, você terá um mapa da infraestrutura pública do alvo. Esse mapa serve de base para as etapas seguintes — como identificar quais serviços rodam em cada host e investigar as tecnologias de cada aplicação (por exemplo, com o WhatWeb, abordado anteriormente nesta seção).

O dnsmap é uma ferramenta leve, simples e eficaz para a enumeração de subdomínios por força bruta. Por depender apenas de consultas DNS, é rápido e de baixo custo computacional. Sua principal limitação é justamente a natureza de força bruta: ele só encontra subdomínios que estejam na wordlist utilizada — daí a importância de escolher listas bem elaboradas.

Como sempre, a enumeração de subdomínios deve ser conduzida de forma ética e autorizada. Do ponto de vista defensivo, executar essa análise sobre a própria infraestrutura é extremamente útil: revela subdomínios esquecidos, ambientes de teste expostos e serviços que talvez não devessem estar publicamente acessíveis.