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
- Confirmar los dominios raíz y sus propietarios.
- Recopilar subdominios mediante fuentes pasivas y Certificate Transparency.
- Normalizar, deduplicar y resolver los candidatos.
- Extraer registros DNS, correo, nameservers y proveedores.
- Consultar DNS histórico y dominios relacionados.
- Buscar virtual hosts en las IP autorizadas.
- 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.txtRoot 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.comNo 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.txtSeparar 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 -uRevisar:
common_namey 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=expiredEl 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.comANY 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::10El 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:
- Obtener datos WHOIS históricos o no anonimizados de un dominio confirmado.
- Buscar coincidencias exactas del nombre legal y sus variantes.
- Extraer dominios candidatos.
- 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,MXyNS. - 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.netUna 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.comElementos a revisar:
- SPF: mecanismos
include,ip4,ip6,a,mxy política final. - DKIM: selectores conocidos, proveedor y clave publicada.
- DMARC: política
p, política de subdominiosspy 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 0Crear 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/ -skISubfinder
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 -csConfigurar 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 -namesEl 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.comUsar 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.txtControlar 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.txtPara 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 alcanceEstados recomendados: activo, no resuelve, wildcard, histórico, aparcado, tercero o pendiente de validar.