Interrogar Servidores DNS utilizando Dig

  • Posted on: 16 September 2019
  • By: ReYDeS

Dig es esencialmente una cuchilla suiza para consultas DNS, y facilita todo lo necesario conocer sobre un dominio o dominios relacionados hacia una dirección IP. Utilizando “Dig” se puede emular y realizar, los tipos de consultas realizadas por los navegadores web y otras aplicaciones de red, al interactuar con todos los servidores DNS a través del mundo. Algunas consultas pueden incluso emular el comportamiento de otros servidores DNS. Es importante entonces conocer como funciona “Dig” y como se puede obtener le mejor para una prueba de penetración.

La manera más simple de utilizar “Dig” es definir un nombre de dominio a consultar. El siguiente comando muestra esto.

# dig facebook.com

Estos resultados muestran cuales son las direcciones IP a la cual resuelve el dominio facebook.com

Se puede también definir cuales tipos de registros se requiere consultar utilizando la opción “type”.

Por ejemplo para consultar los registros para el intercambio de correo electrónico (registros MX) para facebook.com, se utiliza el siguiente comando. La opción “-t” puede también ser obviada.

# dig facebook.com MX
# dig facebook.com -t MX

Los siguientes son los tipos de registros los cuales son factibles de consultar utilizando “Dig”.

  • A: Este es el registro de dirección, y gestiona la dirección IP asociada con el dominio consultado.
  • AAAA: Este es el registro de dirección IP versión 6.
  • CNAME: Este es el registro de nombre canónico, el cual devuelve los nombres de dominio para el cual el dominio especificado es un registro canónico. Esto es como consultar con “Dig” si el dominio definido es un apodo de otro, o más precisamente, si el nombre de dominio definido utiliza la dirección IP de otro dominio, y “Dig” devuelve estos dominios.
  • MX: Este es el registro para intercambio de correo, y lista las direcciones IP asociadas con el dominio especificado, como agentes para la transferencia de correoss. Se podría utilizar esto para encontrar dominios de correo electrónico de un dominio.
  • PTR: Este es para los registros puntero, lo cual son frecuentemente utilizado en consultas reversas DNS.
  • SOA: Este es el inicio del registro de autoridad / zona, el cual devolverá registros relacionados hacia el servidor de dominio primario “autorizado” para el dominio definido.
  • AXFR: Este es para la transferencia de zona, el cual consulta a un servidor de nombres para devolver todos los registros relacionados hacia un dominio definido. Los servidores DNS modernos no tienen esta opción habilitada remotamente, pues presenta considerable información sobre vulnerabilidades expuestas, exposición de direcciones internas primarias, y permite efectivamente realizar ataques de negación de servicio.

Existen otros interesantes tipos de registros. Únicamente se han listado los más comunes. Se sugiere investigar más sobre los otros registros en el RFC correspondiente.

El siguiente comando es un ejemplo de consulta al registro AAAA.

# dig facebook.com -t AAAA

También se puede consultar los dominios para el cual www. facebook. com es el nombre canónico. Esto se realiza utilizando el siguiente comando.

# dig www. facebook. com -t CNAME

Algunas veces se requiere acortar todos los detalles devueltos por una consulta DNS, e indicar a “Dig” devuelva únicamente los datos importantes. La opción “+short” permite hacer esto. El siguiente comando lo realiza.

# dig facebook.com +short

Esta opción permite “Dig” sea más manejable, pues es factible unirla con la shell bash para realizar bucles u otros scripts, pues esto mitiga el deber filtrar las otras salidas.

# for ip in $(dig facebook.com +short); do whois $ip; done

“Dig” también permite una resolución IP inversa utilizando la opción “-x”. Por ejemplo, si se requiere encontrar cual nombre de dominio esta asociado hacia una dirección IP, se utiliza el siguiente comando.

# dig -x 157.240.197.35

Frecuentemente se tiene un largo listado de direcciones IPs o una listas la cual se ha logrado enumerar a través de otros medios como Whois, y se requiere conocer cuales están mapeadas. Ahora se puede realizar manualmente consultas con “Dig” para cada dirección IP. Sin embargo utilizando un pequeño script con “Dig”, se puede automatizar el proceso completo muy fácilmente. Por ejemplo, si se tienen las direcciones IP en un archivo, uno en cada linea, es factible utilizar el siguiente comando.

# for IP in $(cat /tmp/lista_ip.txt); do echo "[*] $IP -> "$(dig -x $IP +short); done

En el anterior comando “lista_ip.txt” contiene un listado de direcciones IP. Siendo exitoso el proceso de encontrar los nombres de dominio hacia las cuales resuelven estas direcciones IP.

Fuentes:

https://linux.die.net/man/1/dig
https://en.wikipedia.org/wiki/List_of_DNS_record_types
http://linuxcommand.org/lc3_man_pages/forh.html
https://www.ietf.org/rfc/rfc1035.txt

Sobre el Autor


Alonso Eduardo Caballero Quezada - ReYDeS
Instructor y Consultor en Hacking Ético, Forense Digital & GNU/Linux
Correo Electrónico: ReYDeS@gmail.com
Twitter: @Alonso_ReYDeS
LinkedIn: pe.linkedin.com/in/alonsocaballeroquezada
Facebook: https://www.facebook.com/alonsoreydes
Youtube: http://www.youtube.com/c/AlonsoCaballero
Resumen de mi CV: http://www.reydes.com/d/?q=node/1