WIKI / FIELD NOTE

Dominios y DNS

Enumeración de dominios, subdominios y registros DNS vinculados a la superficie de exposición.

Guía rápida para descubrir dominios, subdominios e infraestructura DNS asociados a una organización. Comienza con fuentes pasivas y valida activamente solo los activos incluidos en el alcance autorizado.

Flujo rápido

  1. Confirmar los dominios raíz y sus propietarios.
  2. Recopilar subdominios mediante fuentes pasivas y Certificate Transparency.
  3. Normalizar, deduplicar y resolver los candidatos.
  4. Extraer registros DNS, correo, nameservers y proveedores.
  5. Consultar DNS histórico y dominios relacionados.
  6. Buscar virtual hosts en las IP autorizadas.
  7. Clasificar activos actuales, históricos, compartidos y de terceros.
# Pipeline mínimo
subfinder -d example.com -silent > passive.txt
amass enum -passive -d example.com -o amass.txt
cat passive.txt amass.txt | sort -u > candidates.txt
dnsx -l candidates.txt -silent -a -aaaa -cname -resp > resolved.txt

Root domains

Los dominios raíz o registrables son el punto de partida para ampliar la superficie.

Buscar en:

  • Web corporativa y perfiles oficiales.
  • Registros WHOIS/RDAP y reverse WHOIS.
  • Marcas, filiales, adquisiciones y países.
  • Certificate Transparency y certificados TLS.
  • Aplicaciones móviles, repositorios y documentación.
# Datos registrales y delegación DNS
whois example.com
dig +short NS example.com
dig +short SOA example.com

No asumir que todos los dominios con una marca están controlados por la misma entidad. Validar titular, nameservers, certificados y enlaces desde fuentes oficiales.

Subdominios

Combinar varias fuentes pasivas: cada una tiene cobertura y antigüedad diferentes.

# Subfinder
subfinder -d example.com -all -recursive -silent -o subfinder.txt
 
# Amass en modo pasivo
amass enum -passive -d example.com -o amass.txt
 
# Deduplicar
cat subfinder.txt amass.txt | sort -u > subdomains.txt
 
# Resolver candidatos
dnsx -l subdomains.txt -silent -a -aaaa -cname -resp -o resolved.txt

Separar los nombres que resuelven, los históricos, los wildcard y los que apuntan a servicios de terceros.

Certificate Transparency

Los logs de Certificate Transparency permiten descubrir nombres incluidos en certificados públicos.

# Consulta rápida a crt.sh en JSON
curl -s "https://crt.sh/?q=%25.example.com&output=json" \
  | jq -r '.[].name_value' \
  | tr '\\r' '\\n' \
  | sed 's/^\*\.//' \
  | sort -u

Revisar:

  • common_name y Subject Alternative Names.
  • Fecha de emisión y caducidad.
  • Emisor del certificado.
  • Wildcards y nombres antiguos.
  • Dominios externos incluidos en certificados compartidos.

Un nombre observado en CT puede ser histórico o no resolver actualmente.

crt.sh

crt.sh proporciona una interfaz web y salida JSON sobre los logs de CT.

Consultas útiles:

https://crt.sh/?q=%25.example.com
https://crt.sh/?q=%25.example.com&output=json
https://crt.sh/?q=example.com&exclude=expired

El carácter % actúa como comodín en la consulta; en una URL de shell se representa como %25.

DNS records

Consultar como mínimo A, AAAA, CNAME, NS, MX, TXT, SOA y CAA.

dig example.com A +short
dig example.com AAAA +short
dig www.example.com CNAME +short
dig example.com NS +short
dig example.com MX +short
dig example.com TXT +short
dig example.com SOA +short
dig example.com CAA +short
 
# Respuesta completa y trazado de delegación
dig example.com ANY
dig +trace example.com

ANY no siempre devuelve todos los registros. Realizar consultas explícitas por tipo.

Reverse DNS

Los registros PTR pueden aportar convenciones de nombres, ubicaciones y funciones de sistemas.

# Una dirección
dig +short -x 203.0.113.10
 
# Varias direcciones
dnsx -l ips.txt -silent -ptr -resp
 
# IPv6
dig +short -x 2001:db8::10

El PTR lo controla normalmente el propietario del bloque IP y puede estar desactualizado. No usarlo como única prueba de atribución.

Reverse WHOIS

Buscar dominios que compartan nombre legal, correo registrante, teléfono, dirección o identificador de entidad.

Proceso recomendado:

  1. Obtener datos WHOIS históricos o no anonimizados de un dominio confirmado.
  2. Buscar coincidencias exactas del nombre legal y sus variantes.
  3. Extraer dominios candidatos.
  4. Validar contenido, DNS, certificados, fechas y relación corporativa.

La privacidad WHOIS y los registradores intermediarios generan falsos positivos. Tratar cada coincidencia como hipótesis.

Historical DNS

El DNS histórico ayuda a localizar IP anteriores, proveedores, subdominios eliminados y cambios de infraestructura.

Revisar:

  • Historial de A, AAAA, CNAME, MX y NS.
  • Primera y última fecha observada.
  • Cambios de CDN, hosting o correo.
  • Registros asociados antes y después de una adquisición.
  • Dominios que compartieron una misma IP.

Fuentes habituales: SecurityTrails, DNSDB, VirusTotal, Netcraft y servicios de passive DNS.

Un registro histórico no demuestra control actual ni autoriza a interactuar con la IP antigua.

Name servers

Los NS permiten identificar el proveedor DNS y, ocasionalmente, dominios relacionados.

dig +short NS example.com
dig +short SOA example.com
 
# Consultar directamente a un nameserver autoritativo
dig @ns1.example.net example.com SOA
 
# Comprobar transferencia de zona; solo en alcance autorizado
dig AXFR example.com @ns1.example.net

Una transferencia AXFR solo tendrá éxito si el servidor está mal configurado. No automatizarla contra dominios fuera del alcance.

Mail infrastructure

Los registros MX y TXT revelan proveedores de correo, gateways, servicios de marketing y controles de autenticación.

dig +short MX example.com
dig +short TXT example.com
dig +short TXT _dmarc.example.com
 
# Resolver los hosts MX
dig +short MX example.com | sort -n | awk '{print $2}' | sed 's/\.$//'

Identificar:

  • Proveedor principal de correo.
  • Gateways de seguridad y filtrado.
  • Servicios de envío autorizados por SPF.
  • Plataformas de marketing y soporte.
  • Dominios de rebote y tracking.

No confundir la infraestructura compartida del proveedor con activos propios del objetivo.

SPF, DKIM y DMARC

# SPF
dig +short TXT example.com | grep 'v=spf1'
 
# DMARC
dig +short TXT _dmarc.example.com
 
# DKIM requiere conocer o descubrir el selector
dig +short TXT selector1._domainkey.example.com

Elementos a revisar:

  • SPF: mecanismos include, ip4, ip6, a, mx y política final.
  • DKIM: selectores conocidos, proveedor y clave publicada.
  • DMARC: política p, política de subdominios sp y destinos de informes.

Expandir los include de SPF con cuidado: suelen apuntar a rangos compartidos y no implican propiedad.

Virtual hosts

Varios sitios pueden compartir una IP y responder según la cabecera Host o el SNI de TLS.

# Comparar respuesta por IP y Host
curl -skI https://203.0.113.10/ -H 'Host: app.example.com'
 
# Fuzzing de vhosts sobre un activo autorizado
ffuf -u https://203.0.113.10/ \
  -H 'Host: FUZZ.example.com' \
  -w subdomains.txt \
  -fs 0

Crear primero una respuesta base con un hostname inexistente y filtrar por tamaño, palabras, líneas o código. En HTTPS puede ser necesario resolver el nombre hacia la IP:

curl --resolve app.example.com:443:203.0.113.10 https://app.example.com/ -skI

Subfinder

Subfinder consulta múltiples fuentes pasivas.

# Enumeración simple
subfinder -d example.com -silent
 
# Todas las fuentes disponibles y subdominios recursivos
subfinder -d example.com -all -recursive -silent
 
# Lista de dominios raíz
subfinder -dL roots.txt -all -silent -o subdomains.txt
 
# Ver fuentes utilizadas
subfinder -d example.com -silent -cs

Configurar las API keys disponibles para mejorar cobertura y respetar sus límites de uso.

Amass

OWASP Amass relaciona nombres, dominios, direcciones y ASN.

# Enumeración pasiva
amass enum -passive -d example.com -o amass.txt
 
# Varios dominios
amass enum -passive -df roots.txt -o amass.txt
 
# Mostrar las fuentes
amass enum -passive -src -d example.com
 
# Consultar la base local de Amass
amass db -d example.com -names

El modo activo genera tráfico hacia la infraestructura; utilizarlo solo cuando esté autorizado.

dnsx

dnsx resuelve y filtra grandes listas de nombres.

# Resolver A y AAAA
dnsx -l subdomains.txt -silent -a -aaaa -resp
 
# Obtener CNAME, NS y MX
dnsx -l subdomains.txt -silent -cname -ns -mx -resp
 
# Filtrar respuestas válidas
dnsx -l subdomains.txt -silent -rcode noerror
 
# Detectar wildcard
dnsx -l subdomains.txt -silent -wd example.com

Usar resolvers fiables y guardar tanto el nombre como la respuesta para mantener trazabilidad.

shuffledns

shuffledns combina resolución masiva, fuerza bruta y filtrado de wildcard mediante MassDNS.

# Resolver una lista existente
shuffledns -d example.com -list candidates.txt \
  -r resolvers.txt -o resolved.txt
 
# Fuerza bruta con diccionario en un dominio autorizado
shuffledns -d example.com -w words.txt \
  -r resolvers.txt -o brute-force.txt

Controlar concurrencia y límites. La fuerza bruta produce tráfico DNS activo y puede afectar a resolvers o servidores autoritativos.

SecurityTrails

SecurityTrails ofrece datos actuales e históricos de DNS, WHOIS, subdominios e IP relacionadas.

Úsalo para:

  • Enumerar subdominios observados.
  • Consultar históricos de registros DNS.
  • Pivotar entre IP, dominio, nameserver y organización.
  • Revisar cambios de proveedor o propiedad.

Validar los resultados históricos antes de añadirlos al alcance actual.

Netcraft

Netcraft Site Report aporta información de hosting, tecnologías, red y evolución de un sitio.

Revisar:

  • IP, netblock y hosting actual.
  • Nameservers y registrador.
  • Tecnologías y cabeceras observadas.
  • Cambios históricos de red o proveedor.
  • Sitios relacionados por infraestructura.

Las relaciones por hosting compartido requieren validación adicional.

Dominios expirados

ExpiredDomains.net permite revisar dominios expirados o eliminados relacionados con marcas y nombres históricos.

Buscar:

  • Dominios corporativos abandonados.
  • Nombres anteriores tras fusiones o rebranding.
  • Variantes regionales y dominios de campañas.
  • Dominios todavía enlazados desde documentación o aplicaciones.

No registrar ni tomar control de un dominio sin autorización expresa. Documentar el riesgo, las referencias existentes y el estado registral.

Normalización y validación

# Normalizar y limitar al dominio objetivo
sed 's/^\*\.//' candidates.txt \
  | tr '[:upper:]' '[:lower:]' \
  | grep -E '(^|\.)example\.com$' \
  | sort -u > normalized.txt
 
# Resolver y conservar solo nombres activos
dnsx -l normalized.txt -silent -a -aaaa -cname -resp -o active-dns.txt

Para cada resultado registrar la fuente, primera y última observación, respuestas DNS, proveedor, confianza y estado dentro del alcance.

Plantilla de inventario

FQDN | Root domain | A/AAAA | CNAME | MX/NS | Fuente | Primera fecha | Última fecha | Estado | Proveedor | Confianza | En alcance

Estados recomendados: activo, no resuelve, wildcard, histórico, aparcado, tercero o pendiente de validar.