GhostAcademy logo GhostAcademy

DNS Enumeration

Metodologías Reconocimiento Puerto 53 / TCP-UDP dnsenum · dnsrecon · Metasploit

🌐 ¿Qué es DNS y por qué lo enumeramos?

El Domain Name System (DNS) es el "directorio telefónico" de Internet: traduce nombres de dominio legibles (p. ej. example.com) en direcciones IP. Funciona principalmente sobre el puerto 53/UDP (consultas habituales) y 53/TCP (transferencias de zona y respuestas largas).

Durante un pentest, la enumeración DNS permite descubrir la infraestructura oculta de un objetivo: subdominios internos, servidores de correo, hosts de prueba, paneles de administración y cualquier activo que no aparezca en la web pública.

Regla de oro: la información que expone un servidor DNS mal configurado puede reducir semanas de reconocimiento a minutos. Una transferencia de zona exitosa (AXFR) entrega el mapa completo de la red interna.

Tipos de registros DNS relevantes en pentesting

Registro Significado Utilidad ofensiva
A IPv4 de un host Descubrir IPs de subdominios
AAAA IPv6 de un host Identificar activos en IPv6 (a veces menos protegidos)
MX Servidores de correo Objetivos para phishing o ataques a mail servers
NS Servidores de nombres autoritativos Punto de entrada para intentar AXFR
TXT Texto libre (SPF, DKIM, verificaciones) Filtrar servicios en uso (Google, AWS, etc.) y configuraciones SPF débiles
SRV Servicios con host y puerto Descubrir servicios internos (SIP, XMPP, LDAP…)
SOA Inicio de autoridad (admin, serial…) Identificar el DNS primario y posibles correos del admin
CAA CAs autorizadas a emitir certificados Enumerar CAs y detectar configuraciones permisivas
PTR Resolución inversa (IP → nombre) Mapear IPs de una red a nombres de host internos
CNAME Alias de un nombre a otro Detectar subdomain takeover si el destino está huérfano

⚠️ Transferencia de zona (AXFR): la joya de la corona

Una transferencia de zona es el mecanismo legítimo por el que un servidor DNS secundario replica todos los registros de un servidor primario. Cuando está mal configurada (sin restricción de IP), cualquiera puede solicitar una copia completa de la zona DNS.

Impacto: con una AXFR exitosa obtienes de golpe todos los registros del dominio: hosts internos, IPs privadas, nombres de servidores de prueba, VPNs, etc. Es el equivalente a robar el plano completo de la red.

Para probarla manualmente puedes usar dig:

bash
dig axfr @<ns-server> <dominio>

Si el servidor devuelve registros en lugar de Transfer failed, está vulnerable.

🛠️ Herramientas y comandos

1. Identificación de red

Antes de comenzar, identifica las interfaces y la IP de tu máquina atacante.

bash
ip a

2. Escaneo de puertos — confirmar servicio DNS activo

Verifica que el puerto 53/TCP (y/o UDP) está abierto en el objetivo. Nmap usará por defecto SYN scan si se ejecuta como root.

bash
nmap <IP>
bash — versión más detallada
# Escaneo de versión + scripts NSE de DNS
nmap -sV -sC -p 53 <IP>

3. Verificar nameserver configurado localmente

Comprueba qué servidor DNS está usando tu sistema. Puede ser el propio objetivo.

bash
cat /etc/resolv.conf

4. dnsenum — Enumeración completa automatizada

dnsenum es una herramienta todo-en-uno que realiza en un solo comando: consulta de todos los tipos de registro, intento de transferencia de zona, fuerza bruta de subdominios con diccionario y búsqueda inversa de rangos IP.

bash — enumeración básica
dnsenum <dominio>
bash — guardar resultado en XML
dnsenum <dominio> -o out.xml
bash — especificar nameserver objetivo
dnsenum --dnsserver <IP-NS> <dominio>
Tip: si el dominio tiene muchos subdominios, añade --threads 5 para acelerar la fuerza bruta sin sobrecargar el servidor.

5. dnsrecon — Enumeración flexible con múltiples técnicas

dnsrecon ofrece más control granular: puedes elegir qué tipos de enumeración ejecutar y en qué formato exportar los resultados.

bash — enumeración general
dnsrecon -d <dominio>
bash — incluir intento de transferencia de zona
dnsrecon -d <dominio> -a
bash — guardar resultado en JSON
dnsrecon -d <dominio> -a -j ~/out.json
bash — fuerza bruta de subdominios con diccionario
dnsrecon -d <dominio> -D /usr/share/wordlists/dnsmap.txt -t brt

6. Metasploit — módulo enum_dns

El módulo auxiliary/gather/enum_dns de Metasploit permite repetir la enumeración desde un framework centralizado, con posibilidad de guardar resultados en la base de datos y encadenarlos con otros módulos.

msfconsole
use auxiliary/gather/enum_dns

set DOMAIN <dominio>
setg NS <IP-nameserver>   # Define el NS objetivo globalmente

# Activa la fuerza bruta de subdominios
set ENUM_BRT true

run
msfconsole — ver opciones disponibles
show options

Puedes habilitar tipos de enumeración adicionales con set ENUM_RVL true (búsqueda inversa) o set ENUM_TLD true (TLDs alternativos).

🗺️ Flujo completo del laboratorio

1
Identificar la IP objetivo Usa ip a para confirmar tu IP y verifica conectividad con ping o nmap.
2
Confirmar servicio DNS activo (53/TCP) Un escaneo con nmap validará que el puerto está abierto y escuchando.
3
Verificar nameserver configurado Revisa /etc/resolv.conf para saber si ya apunta al objetivo.
4
Enumerar registros DNS con dnsenum Obtén A, AAAA, MX, NS, TXT, SRV, CAA, SOA y prueba AXFR automáticamente.
5
Profundizar con dnsrecon Valida los resultados y añade fuerza bruta con diccionarios específicos.
6
Confirmar y ampliar con Metasploit enum_dns Centraliza los hallazgos en la base de datos de Metasploit para usarlos en fases posteriores.
7
Documentar y exportar Guarda los resultados en XML/JSON para el informe final.

🎯 ¿Qué buscar? — Indicadores de éxito

📋 Resumen conceptual

La enumeración DNS es una fase crítica del reconocimiento. Combinando dnsenum, dnsrecon y el módulo enum_dns de Metasploit conseguimos:

Próximo paso: con la lista de subdominios e IPs obtenida, lanza un escaneo exhaustivo con nmap (-sV -sC -A) sobre cada host descubierto para identificar servicios y versiones vulnerables.