← Volver al inicio
DNS DNSSEC DNS Spoofing Reconocimiento Enumeración

Seguridad DNS y DNSSEC

30/03/2022

Ataques sobre el protocolo DNS, enumeración de registros, ataques de spoofing y cache poisoning, y cómo protegerse con DNSSEC.

1. Reconocimiento DNS (enumeración)

# Consultas básicas:
nslookup target.com
dig target.com
dig target.com ANY      # Todos los tipos de registro
dig target.com MX       # Servidores de correo
dig target.com NS       # Servidores de nombres
dig target.com TXT      # Registros TXT (SPF, DKIM, DMARC)

# Transferencia de zona (si está mal configurada):
dig axfr @ns1.target.com target.com
# Una transferencia exitosa revela TODOS los registros DNS

# Fuerza bruta de subdominios:
dnsenum --dnsserver 8.8.8.8 target.com
fierce --domain target.com
dnsrecon -d target.com -t brt -D /usr/share/wordlists/dnsmap.txt

2. DNS Spoofing y Cache Poisoning

El atacante inyecta respuestas DNS falsas en la caché de un servidor DNS para redirigir tráfico a servidores maliciosos.

# Demostración con Ettercap (entorno de laboratorio):
# Editar /etc/ettercap/etter.dns:
# *.target.com  A  192.168.1.100   (IP del servidor malicioso)

ettercap -T -q -P dns_spoof -M arp /192.168.1.1// /192.168.1.10//

3. DNSSEC — DNS Security Extensions

DNSSEC añade firmas criptográficas a los registros DNS, permitiendo verificar su autenticidad e integridad.

# Verificar si un dominio tiene DNSSEC activo:
dig +dnssec target.com
dig DS target.com @8.8.8.8

# Comprobar la cadena de confianza:
delv target.com

# Si la respuesta incluye "ad" (authenticated data), DNSSEC está activo

4. Configurar DNSSEC en BIND

# Generar par de claves ZSK (Zone Signing Key):
dnssec-keygen -a RSASHA256 -b 2048 -n ZONE target.com

# Generar par de claves KSK (Key Signing Key):
dnssec-keygen -a RSASHA256 -b 4096 -f KSK -n ZONE target.com

# Firmar la zona:
dnssec-signzone -A -3 $(head -c 1000 /dev/random | sha1sum | cut -b 1-16) \
  -N INCREMENT -o target.com -t target.com.zone

# En /etc/bind/named.conf.local:
zone "target.com" {
    type master;
    file "/etc/bind/zones/target.com.zone.signed";
    auto-dnssec maintain;
    key-directory "/etc/bind/keys";
    inline-signing yes;
};

5. Protecciones adicionales

# Deshabilitar transferencia de zona (solo a servidores secundarios):
# En named.conf:
zone "target.com" {
    allow-transfer { 192.168.1.2; };  # Solo NS secundario
};

# Usar DNS sobre HTTPS (DoH) o DNS sobre TLS (DoT):
# - Cloudflare: 1.1.1.1
# - Google: 8.8.8.8
# Configurar en /etc/systemd/resolved.conf:
DNS=1.1.1.1 1.0.0.1
DNSOverTLS=yes

Registros DNS de seguridad

RegistroPropósitoEjemplo
SPFDefine qué servidores pueden enviar email como el dominiov=spf1 include:_spf.google.com ~all
DKIMFirma criptográfica de emails salientesClave pública en registro TXT
DMARCPolítica de alineación SPF+DKIM y reportingv=DMARC1; p=reject; rua=mailto:dmarc@domain.com
CAALimita qué CAs pueden emitir certificados para el dominio0 issue "letsencrypt.org"