David Fernández
2 min readMay 30, 2020

--

Hace un tiempo, tuve la necesidad de realizar varias búsquedas de registros DNS desde una lista de registros. Realizar una búsqueda de un dominio o dos, es relativamente fácil utilizando nslookup o dig, es verdad que podría realizar una consulta de registros utilizando un shell script, pero al agregar complejidad se vuelve engorroso o poco escalable.

cómo trabaja un dns, via Julia Evans

¿Cómo podía automatizar la búsqueda? . La respuesta en este caso no es 42, sino dnspython, esta herramienta de DNS en python nos permite consultar todo tipo de registro, entre otras opciones a la hora de operar con registros dns. Está soportado por Python 3.4 o superior, y se instala de la siguiente manera :

pip install dnspython

Ahora a utilizarlo :)

import dns.resolveranswers = dns.resolver.query(‘google.com’, ‘MX’)for rdata in answers:
print (‘Host’, rdata.exchange, ‘has preference’, rdata.preference)

Acá obtendremos la lista del registro tipo MX del dominio google.com. Podríamos realizar una lectura de un archivo o de una lista en python y sustituir el valor del dominio por el valor de cada índice, de esta forma obtendremos dinámicamente el registro MX de varios dominios. ¿Pero qué sucede si necesito también un registro A y CNAME?. Esta problemática la tuve en un pentest, tenía una lista de subdominios que escanear y necesitaba recolectar información para comenzar. No encontré una solución que cumpliera el requerimiento, así que armé mi propia solución, aquí Kobra.

Esta herramienta simple, que desarrolle en Python3 utilizando dnspython, permitiendo realizar búsquedas de registros de DNS a partir de archivo de texto plano. Soporta diferentes argumentos, como tipo de registro que consultar y elegir el servidor DNS para realizar la consulta, por ejemplo el famoso 8.8.8.8 de Google.

Espero que les haya servido la información.

Por más información puede consultar el sitio del proyecto http://www.dnspython.org/, para saber más sobre DNS, puede ver el siguiente video (Ingles) .

--

--