¿Cómo puedo enumerar TODOS los registros DNS? [cerrado]

Resuelto Ken asked hace 11 años • 10 respuestas

¿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?

Ken avatar Oct 11 '13 23:10 Ken
Aceptado

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.

denis phillips avatar Oct 11 '2013 18:10 denis phillips

He mejorado la respuesta de Josh . He notado que digsolo 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 -xargumento para la salida expandida y un -s NSargumento 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
dan3 avatar Apr 15 '2015 09:04 dan3