¿Cómo puedo enumerar TODOS los registros DNS? [cerrado]
¿Hay alguna forma de enumerar TODOS los registros DNS de un dominio?
Conozco cosas como excavar y nslookup, pero solo llegan hasta cierto punto. Por ejemplo, si tengo un registro de subdominio A como
test A somedomain.co.uk
entonces, a menos que lo solicite específicamente, por ejemplo.
dig any test.somedomain.co.uk
No puedo verlo.
¿Hay alguna forma (aparte de mirar los registros yendo al administrador de DNS) de ver exactamente cuáles son todos los registros DNS?
La respuesta corta es que normalmente no es posible, a menos que usted controle el dominio.
Opción 1: CUALQUIER consulta
Cuando consulte CUALQUIER, obtendrá una lista de todos los registros en ese nivel, pero no debajo.
# try this
dig google.com any
Esto puede devolver registros A, registros TXT, registros NS, registros MX, etc. si el nombre de dominio es exactamente "google.com". Sin embargo, no devolverá registros infantiles (por ejemplo, www.google.com ). Más precisamente, PUEDE obtener estos registros si existen.
El servidor de nombres no tiene que devolver estos registros si decide no hacerlo (por ejemplo, para reducir el tamaño de la respuesta). La mayoría de los servidores DNS rechazan CUALQUIER consulta.
Opción 2: consulta AXFR
Un AXFR es una transferencia de zona y probablemente sea lo que desea. Sin embargo, estos normalmente están restringidos y no están disponibles a menos que usted controle la zona. Por lo general, realizará una transferencia de zona directamente desde el servidor autorizado (el @ns1.google.com a continuación) y, a menudo, desde un servidor de nombres que puede no publicarse (un servidor de nombres oculto).
# This will return "Transfer failed"
dig @ns1.google.com google.com axfr
Si tiene control de la zona, puede configurarla para recibir transferencias protegidas con una clave TSIG. Este es un secreto compartido que el cliente puede enviar al servidor para autorizar la transferencia.
Opción 3: raspar con un script
Otra opción es eliminar todos los registros DNS con un script. Tendría que recorrer todos los tipos de registros DNS y también los subdominios comunes, según sus necesidades.
Opción 4: utilizar herramientas especializadas
Existen algunas herramientas en línea que enumeran subdominios y herramientas en línea que enumeran todos los registros DNS para un nombre DNS. Tenga en cuenta que la enumeración de subdominios no suele ser exhaustiva.
He mejorado la respuesta de Josh . He notado que dig
solo muestra las entradas que ya están presentes en la caché del servidor de nombres consultado, por lo que es mejor extraer un servidor de nombres autorizado de SOA (en lugar de confiar en el servidor de nombres predeterminado). También deshabilité el filtrado de IP comodín porque normalmente estoy más interesado en la corrección de la configuración.
El nuevo script toma un -x
argumento para la salida expandida y un -s NS
argumento para elegir un servidor de nombres específico:dig -x example.com
#!/bin/bash
set -e; set -u
COMMON_SUBDOMAINS="www mail mx a.mx smtp pop imap blog en ftp ssh login"
EXTENDED=""
while :; do case "$1" in
--) shift; break ;;
-x) EXTENDED=y; shift ;;
-s) NS="$2"; shift 2 ;;
*) break ;;
esac; done
DOM="$1"; shift
TYPE="${1:-any}"
test "${NS:-}" || NS=$(dig +short SOA "$DOM" | awk '{print $1}')
test "$NS" && NS="@$NS"
if test "$EXTENDED"; then
dig +nocmd $NS "$DOM" +noall +answer "$TYPE"
wild_ips=$(dig +short "$NS" "*.$DOM" "$TYPE" | tr '\n' '|')
wild_ips="${wild_ips%|}"
for sub in $COMMON_SUBDOMAINS; do
dig +nocmd $NS "$sub.$DOM" +noall +answer "$TYPE"
done | cat #grep -vE "${wild_ips}"
dig +nocmd $NS "*.$DOM" +noall +answer "$TYPE"
else
dig +nocmd $NS "$DOM" +noall +answer "$TYPE"
fi