Redes

DNS — Resolución y Enumeración

Cómo se resuelven los nombres, los tipos de registro que importan y cómo abusar del DNS en pentesting — transferencias de zona, enumeración de subdominios y PTR.

4 min de lectura
Índice

Qué problema resuelve el DNS

Las máquinas se hablan por IP, pero los humanos recordamos nombres. El DNS es la "guía telefónica" de Internet: traduce www.ejemplo.com93.184.216.34. Es una base de datos jerárquica y distribuida.

                    . (raíz)

          ┌─────────┼─────────┐
         com       org        es          ← TLD (Top-Level Domain)

       ejemplo                             ← dominio de 2º nivel

    ┌─────┴─────┐
   www         mail                        ← subdominios / hosts

Cómo se resuelve un nombre (recursivo vs iterativo)

Cuando tu equipo pregunta por www.ejemplo.com, el resolver (normalmente tu router/ISP) hace el trabajo pesado:

Tu PC → Resolver:  "¿www.ejemplo.com?"                 (consulta RECURSIVA: "resuélvelo tú")
Resolver → Raíz:   "¿y .com?"          → "pregunta al TLD .com"   (ITERATIVA)
Resolver → TLD:    "¿ejemplo.com?"     → "pregunta al NS de ejemplo.com"
Resolver → NS auth: "¿www.ejemplo.com?" → "93.184.216.34"  (respuesta AUTORITATIVA)
Resolver → Tu PC:  "93.184.216.34"     (y lo cachea según el TTL)
  • Recursiva: "dame la respuesta final" (tu PC al resolver).
  • Iterativa: "dame la siguiente pista" (el resolver preguntando por la jerarquía).

Tipos de registro que debes conocer

RegistroQué guardaPor qué importa en pentesting
ANombre → IPv4El mapeo básico
AAAANombre → IPv6A veces hay servicios solo en IPv6
CNAMEAlias → otro nombreRevela infraestructura (CDN, cloud)
MXServidor de correoSuperficie de correo (SMTP)
NSServidores de nombres del dominioObjetivos para intentar AXFR
PTRIP → Nombre (DNS inverso)Descubrir hostnames de un rango
TXTTexto libre (SPF, verificaciones)A veces filtra info interna
SOADatos de la zona (serial, etc.)Punto de partida de la zona

Herramientas de consulta

dig ejemplo.com A                 # registro A
dig ejemplo.com MX +short         # servidores de correo, salida limpia
dig ejemplo.com NS +short         # servidores de nombres
dig -x 93.184.216.34              # DNS inverso (PTR)
nslookup ejemplo.com              # alternativa clásica
host -t txt ejemplo.com           # registros TXT

Ataque estrella: transferencia de zona (AXFR)

Una transferencia de zona es cómo un servidor DNS secundario copia toda la base de datos del primario. Si un servidor está mal configurado y permite AXFR a cualquiera, te entrega en bandeja todos los registros del dominio: subdominios internos, IPs, hosts… un mapa completo.

# 1) averigua los servidores de nombres (NS)
dig ns zonevulnerable.htb +short
# 2) pide la zona completa a cada NS
dig axfr zonevulnerable.htb @ns1.zonevulnerable.htb

El AXFR es de las primeras cosas que se prueban contra un puerto 53 en OSCP/HTB. Si funciona, te ahorras horas de enumeración: obtienes subdominios y hosts internos directamente. Si falla (lo normal en producción), pasas a fuerza bruta de subdominios.

Enumeración de subdominios (cuando el AXFR falla)

# fuerza bruta de subdominios con diccionario
gobuster dns -d ejemplo.com -w /usr/share/seclists/Discovery/DNS/subdomains-top1million-5000.txt
# alternativas
dnsenum ejemplo.com
ffuf -w subdominios.txt -u http://FUZZ.ejemplo.com

En HTB/OSCP, cuando un servicio web redirige a un nombre como http://maquina.htb, añádelo a tu /etc/hosts apuntando a la IP de la máquina. Muchos vhosts solo responden si mandas el Host: correcto → prueba también fuzzing de vhosts con ffuf -H "Host: FUZZ.maquina.htb".

Práctica

Ejercicio 1. Solo con dig, averigua: (a) la IP de example.com, (b) sus servidores de nombres, (c) su servidor de correo.

Ver solución
dig example.com A +short        # (a) IP(s)
dig example.com NS +short       # (b) servidores de nombres
dig example.com MX +short       # (c) servidor de correo (con prioridad)

+short recorta la salida a lo esencial. Sin él, verás también las secciones ANSWER, AUTHORITY y ADDITIONAL, útiles para entender de dónde vino la respuesta.

Ejercicio 2. Tienes una máquina HTB en 10.10.11.55 con el puerto 53 abierto y sospechas del dominio friendzone.htb. ¿Qué comando intentarías primero y qué buscas?

Ver solución

Intentar una transferencia de zona:

dig axfr friendzone.htb @10.10.11.55

Buscas que el servidor te devuelva la zona completa: registros A de subdominios (admin.friendzone.htb, uploads.friendzone.htb, etc.). Cada subdominio nuevo es una superficie de ataque adicional; añádelos a /etc/hosts y enuméralos por web.

Recursos