massdns
Después de usar herramientas como subfinder
, amass
o crt.sh
para obtener una lista masiva de posibles subdominios, el siguiente paso crucial es la resolución DNS. Este proceso consiste en verificar qué subdominios de esa lista están "vivos", es decir, tienen registros DNS válidos y resuelven a una dirección IP.
Este paso nos permite filtrar el ruido (subdominios que ya no existen o nunca existieron) y quedarnos con una lista de objetivos reales sobre los que continuar nuestro análisis.
Interpretando Códigos de Respuesta DNS
Cuando intentas resolver un dominio, el servidor DNS te devuelve un código de estado. Entender los más comunes es útil:
NOERROR
:Significado: La consulta se procesó correctamente. Esto no significa que se encontró un registro, sino que el servidor pudo confirmar con autoridad que el registro existe o no existe. Si hay una respuesta (una IP), el dominio está vivo. Si no hay respuesta pero el código es
NOERROR
, significa que el dominio existe pero no tiene un registro del tipo que pediste (e.g., pediste un registroA
y solo tieneCNAME
oMX
).Acción: ¡Objetivo válido! Incluir en la lista de activos a investigar.
NXDOMAIN
(Non-Existent Domain):Significado: El dominio o subdominio que has consultado no existe en el sistema DNS. Es una respuesta definitiva.
Acción: Descartar este subdominio de tu lista de objetivos activos. Es ruido.
SERVFAIL
(Server Failure):Significado: El servidor DNS tuvo un problema interno y no pudo procesar tu petición. No es un "no" definitivo como
NXDOMAIN
.Acción: Puede ser un fallo temporal del resolvedor o un problema con el servidor de nombres del dominio. Podrías intentar resolverlo de nuevo más tarde o con un conjunto de resolvedores DNS diferente. A veces puede ser un indicio de algo interesante (o simplemente de una infraestructura mal mantenida).
REFUSED
:Significado: El servidor DNS recibió tu petición pero se negó a responder.
Acción: Esto suele ocurrir por políticas de seguridad. Puede que estés consultando un servidor DNS interno que no responde a peticiones externas, o que tu IP haya sido bloqueada por un firewall o un sistema de reputación.
El Flujo de Trabajo: Enumeración -> Resolución
El proceso lógico siempre es en dos pasos:
Enumeración: Generar la lista de posibles subdominios.
Resolución: Filtrar esa lista para encontrar los que están vivos.
Paso 1: Enumerar Subdominios con subfinder
El objetivo aquí es crear nuestro listado inicial. El comando que pusiste estaba un poco mezclado, la forma correcta de usar subfinder
para generar la lista es así:
# El dominio raíz es el único input necesario para -d
# Guardamos la salida en un archivo de texto para el siguiente paso.
subfinder -d spotify.com -all -silent -o spotify_subs_encontrados.txt
-d spotify.com
: Especificamos el dominio raíz a investigar.-all
: Usamos todas las fuentes, incluyendo las que necesitan API keys (que deberías tener configuradas para mejores resultados).-silent
: Para una salida limpia, solo los subdominios.-o spotify_subs_encontrados.txt
: Guardamos la lista en un archivo.
Ahora tenemos un archivo spotify_subs_encontrados.txt
lleno de posibles subdominios.
Paso 2: Resolver la Lista de Subdominios Aquí es donde entran herramientas como massdns
o httpx
.
Herramientas para la Resolución Masiva
massdns
(Para Resolución DNS Pura y Rápida)
massdns
(Para Resolución DNS Pura y Rápida)massdns
es una herramienta extremadamente rápida diseñada para hacer un gran número de consultas DNS de forma paralela. Es ideal si solo te interesa saber qué subdominios resuelven a una IP, sin importar si tienen un servidor web o no.
Requisitos: Necesitas una lista de resolvedores DNS públicos y fiables. Puedes encontrar listas actualizadas en repositorios de GitHub (busca "fresh dns resolvers"). Guárdala en un archivo, por ejemplo, resolvers.txt
.
Comando de Ejemplo:
massdns -r resolvers.txt -t A -o J -w resultados_massdns.json lista_de_subdominios.txt
-r resolvers.txt
: Especifica el archivo con la lista de resolvedores DNS a usar.-t A
: Pide los registros de tipoA
(direcciones IPv4). También puedes usarAAAA
(IPv6),CNAME
,MX
, etc.-o J
: Formatea la salida en JSON (líneas de objetos JSON). Muy útil para procesar después.-w resultados_massdns.json
: Guarda la salida en el archivo especificado.lista_de_subdominios.txt
: El archivo de entrada que generamos consubfinder
.
Procesando la Salida de massdns
: Si usaste -o J
, tendrás un archivo JSON. Puedes usar jq
para parsearlo y limpiarlo.
# Extraer solo los nombres de dominio que resolvieron correctamente
cat resultados_massdns.json | jq -r '.name' | sed 's/\.$//' | sort -u > subs_resueltos.txt
# Extraer el dominio y su IP
cat resultados_massdns.json | jq -r '"\(.name) \(.data.answers[0].data)"' 2>/dev/null | sed 's/\.$//' > subs_con_ip.txt
jq -r '.name'
: Extrae el valor del campo "name" de cada objeto JSON.sed 's/\.$//'
:massdns
a veces añade un punto al final del dominio, esto lo quita.sort -u
: Ordena y elimina duplicados.
httpx
(Para Resolución y Comprobación de Servidores Web)
httpx
(Para Resolución y Comprobación de Servidores Web)Si tu objetivo final es atacar aplicaciones web, httpx
es a menudo más práctico porque combina la resolución DNS con una comprobación (probe) de si hay un servidor HTTP/HTTPS escuchando.
Comando de Ejemplo:
cat lista_de_subdominios.txt | httpx -silent -o hosts_web_vivos.txt
Este simple comando hace lo siguiente:
Lee la lista de subdominios.
Para cada uno, intenta resolver su IP.
Si resuelve, intenta conectarse a los puertos web comunes (80, 443, 8080, etc.).
Si un servidor web responde, guarda la URL viva (con
http://
ohttps://
) en el archivo de salida.
httpx
es una forma increíblemente eficiente de pasar de una lista enorme de posibles subdominios a una lista manejable de aplicaciones web activas listas para un análisis más profundo.
Última actualización