🌐 DNS — Domain Name System

DNS es como la "agenda telefónica" de Internet: traduce nombres de dominio en direcciones IP.

Por ejemplo: www.google.com8.8.8.8

📚 Conceptos clave

🏗️ Tipos de servidores DNS

Tipo Descripción
🌍 Root Server Gestiona los dominios de nivel superior (TLD). Solo hay 13 globales.
Authoritative NS Tiene autoridad sobre su zona. Su respuesta es final.
Non-authoritative NS Devuelve info desde otros servidores, no tiene autoridad directa.
💾 Caching Server Guarda temporalmente respuestas para acelerar futuras consultas.
🔁 Forwarding Server Solo reenvía consultas a otro servidor DNS.
💻 Resolver Local, realiza la resolución (e.g., tu PC o router).

🛡️ Seguridad y privacidad

🔓 El DNS tradicional es no cifrado, permitiendo ataques como:

🔐 Soluciones modernas:

Protocolo Descripción
🧪 DoT DNS over TLS
🌐 DoH DNS over HTTPS
🛡️ DNSCrypt Cifra entre cliente y servidor

🧾 Tipos de registros DNS

Registro Función
🅰️ A Devuelve dirección IPv4
🧪 AAAA Devuelve dirección IPv6
📬 MX Servidores de correo
🧭 NS Nameservers del dominio
🧾 TXT Textos libres: SPF, DMARC, verificación
🔁 CNAME Alias de otro dominio
🔄 PTR Reverse DNS: IP → Nombre
🗂️ SOA Información de zona y admin del dominio

🔧 Configuración DNS con BIND9

🐧 BIND9 es el servidor DNS más usado en Linux. Administra zonas DNS a través de varios archivos.

🔹 Archivos principales

Archivo Función
/etc/bind/named.conf 📦 Configuración global del servidor BIND
/etc/bind/named.conf.local 📍 Define las zonas (archivos que representan dominios)
/etc/bind/db.domain.com 🌐 Zona directa → Asocia nombres a IPs (A, MX, CNAME, etc.)
/etc/bind/db.10.129.14 🔁 Zona inversa → Asocia IPs a nombres (PTR)

📍 ¿Qué es una zona DNS?

Una zona representa un dominio (por ejemplo, miempresa.com) y sus subdominios (como www.miempresa.com o ftp.miempresa.com).

Hay 2 tipos:

🗃️ 1. Archivo named.conf.local

Aquí se le dice a BIND qué dominios debe manejar y qué archivos de zona usar.

zone "domain.com" {
    type master;                             # Este servidor es el "master"
    file "/etc/bind/db.domain.com";         # Archivo con registros de zona directa
    allow-update { key rndc-key; };         # Permite actualizaciones con clave
};

📌 Esto le dice a BIND: “Ey, soy responsable del dominio domain.com, y los registros están en ese archivo de zona”

📄 2. Archivo de zona directa: db.domain.com

Este archivo contiene los registros DNS del dominio. Es decir, a qué IP apunta cada nombre.

$ORIGIN domain.com.                     ; Dominio base
@   IN  SOA  dns1.domain.com. hostmaster.domain.com. (
        2001062501 ; Serial (fecha)
        21600      ; Refresh (6h)
        3600       ; Retry (1h)
        604800     ; Expire (1 semana)
        86400 )    ; TTL (1 día)

    IN  NS    ns1.domain.com.          ; Nameserver
    IN  MX 10 mx.domain.com.          ; Servidor de correo

server1   IN A    10.129.14.5          ; server1.domain.com → 10.129.14.5
ftp       IN CNAME server1             ; ftp.domain.com → alias a server1

🔁 3. Archivo de zona inversa: db.10.129.14

Este archivo permite hacer una búsqueda inversa: saber qué nombre de host corresponde a una IP.

$ORIGIN 14.129.10.in-addr.arpa.      ; Dominio invertido para reverse DNS
@   IN  SOA dns1.domain.com. hostmaster.domain.com. (
        2001062501
        21600
        3600
        604800
        86400 )

    IN  NS   ns1.domain.com.

5   IN  PTR  server1.domain.com.     ; 10.129.14.5 → server1.domain.com

📌 El nombre del archivo y dominio están al revés para representar IPs (10.129.14.55.14.129.10.in-addr.arpa)

✅ Resumen visual

Tarea Archivo Qué hace
🔧 Configurar zonas named.conf.local Define dominios y archivos de zona
🌐 Zona directa db.domain.com Nombres → IP
🔙 Zona inversa db.10.129.14 IPs → Nombres

🧭 DNS — Footprinting en ofensiva

El fingerprinting DNS revela información crítica del objetivo, incluyendo hosts internos, servidores de correo, subdominios y más.

📌 ¿Qué podemos obtener?

📡 Consultas con dig

🔎 Obtener NS (Name Server)

dig ns inlanefreight.htb @10.129.29.218

{9055232E-EA85-4DCE-A535-2360EFC5F598}.png

📚 Consultar todos los registros visibles (ANY)

dig any inlanefreight.htb @10.129.29.218

⚠️ No siempre devuelve todo, depende de la configuración del servidor DNS.
{1C9EEC78-DECB-4E42-AC55-821379E9D106}.png

💣 Transferencia de zona (AXFR) — Jackpot total

dig axfr inlanefreight.htb @10.129.29.218

Una transferencia de zona (AXFR) es un mecanismo del protocolo DNS que permite copiar todos los registros de una zona DNS desde un servidor primario a uno secundario.
👉 Está pensada para sincronizar datos entre servidores autorizados... pero si no está protegida, tú también puedes pedirle esa info. 😈
{0263E81B-85A7-4644-AC68-F6A6B56E6D0E}.png
🔍 También prueba con subzonas:

dig axfr internal.inlanefreight.htb @10.129.29.218

{705AD2CC-210F-45BF-A4C6-B967C4EA4129}.png

🛠️ Enumeración avanzada con dnsenum

Una de las herramientas más completas para la enumeración DNS automática es dnsenum.
Hace fuerza bruta, intenta AXFR, consulta versión de BIND y más — todo en un solo comando.

dnsenum --dnsserver 10.129.14.128 --enum -p 0 -s 0 \
  -o subdomains.txt \
  -f /opt/useful/seclists/Discovery/DNS/subdomains-top1million-110000.txt \
  inlanefreight.htb

⚠️ Consideraciones ofensivas