La enumeración DNS es una técnica fundamental en las pruebas de penetración y auditoría de seguridad, ya que permite obtener información detallada sobre los dominios y subdominios, servidores de nombres, registros DNS y otros datos que pueden ser útiles para el reconocimiento inicial de un objetivo. Una de las herramientas más populares para llevar a cabo esta tarea es DNSenum, que está disponible en distribuciones como Kali Linux.
DNSenum es una herramienta de enumeración DNS escrita en Perl, que permite realizar búsquedas exhaustivas en los servidores DNS asociados a un dominio objetivo. La herramienta no solo resuelve los registros DNS básicos, como A, MX, y NS, sino que también es capaz de:
En la mayoría de las distribuciones de Kali Linux, DNSenum viene preinstalado. Sin embargo, si no está disponible o prefieres instalar la herramienta manualmente, puedes hacerlo desde los repositorios oficiales o desde el código fuente.
Para instalar DNSenum en Kali Linux, simplemente ejecuta el siguiente comando:
sudo apt install dnsenum
Una vez instalado, puedes verificar que la herramienta está lista para su uso ejecutando:
dnsenum --help
Este comando mostrará las diferentes opciones y parámetros disponibles.
La manera más sencilla de utilizar DNSenum es proporcionando un nombre de dominio objetivo. El siguiente comando realiza una búsqueda DNS básica para un dominio específico:
dnsenum ejemplo.com
Esta ejecución realizará lo siguiente:
1. Resolverá la IP asociada al dominio objetivo.
2. Buscará servidores de nombres (NS) y servidores de correo (MX).
3. Intentará realizar una transferencia de zona.
4. Recopilará posibles subdominios.
dnsenum ejemplo.com
Host's addresses:
-----------------
ejemplo.com. 93.184.216.34
Name Servers:
-------------
ns1.ejemplo.com. 93.184.216.34
ns2.ejemplo.com. 93.184.216.35
Mail (MX) Servers:
------------------
mail.ejemplo.com. 93.184.216.36
DNSenum intenta realizar una transferencia de zona para obtener todos los registros DNS de un dominio. Si un servidor DNS está mal configurado y permite transferencias de zona, se pueden obtener una lista completa de registros, lo cual puede proporcionar información sensible.
dnsenum ejemplo.com
Si la transferencia de zona es exitosa, DNSenum mostrará todos los registros del servidor DNS. Si no es posible realizarla, mostrará un mensaje indicando que no se pudo completar la transferencia.
DNSenum proporciona diversas opciones para personalizar y mejorar la enumeración DNS. A continuación, analizamos algunas de las más importantes.
Una de las funcionalidades más poderosas de DNSenum es la capacidad de realizar fuerza bruta de subdominios utilizando un diccionario. Esta técnica es útil para encontrar subdominios que no se han registrado en los servidores DNS públicos.
Para realizar esta tarea, puedes especificar un archivo de diccionario con el parámetro -f
:
dnsenum ejemplo.com -f /ruta/a/diccionario.txt
Además de la búsqueda básica de subdominios, DNSenum puede realizar una búsqueda recursiva en los subdominios encontrados para descubrir aún más subdominios. Esto es útil cuando hay una estructura jerárquica de subdominios.
Para habilitar la búsqueda recursiva, utiliza la opción -r
:
dnsenum ejemplo.com -r
Por defecto, DNSenum utilizará los servidores DNS configurados en tu sistema para resolver las consultas. Sin embargo, puedes especificar un servidor DNS personalizado utilizando la opción -s
:
dnsenum ejemplo.com -s 8.8.8.8
Esto hará que todas las consultas se resuelvan a través del servidor DNS de Google (8.8.8.8).
DNSenum también permite realizar búsquedas inversas (PTR) para un rango de direcciones IP, lo que puede ser útil para encontrar dominios o subdominios asociados con un rango IP específico. Para realizar una búsqueda inversa, utiliza la opción -i
seguida del rango de IP:
dnsenum -i 93.184.216.0/24
La herramienta puede interactuar con servidores WHOIS para obtener información adicional sobre el dominio, como datos de contacto del registrante y más. Esto se activa automáticamente, pero si deseas deshabilitar las consultas WHOIS, utiliza la opción --noreverse
:
dnsenum ejemplo.com --noreverse
Si, por el contrario, deseas ver más detalles sobre los registros WHOIS, puedes ejecutar:
dnsenum ejemplo.com --whois
Para guardar los resultados de la enumeración en un archivo de salida, utiliza la opción -o
seguida de la ruta y el nombre del archivo:
dnsenum ejemplo.com -o resultado_dnsenum.txt
Esto creará un archivo de texto con todos los detalles obtenidos durante la enumeración.
En algunos casos, cuando un dominio tiene muchos subdominios, puede ser útil limitar el número de subdominios descubiertos. Para esto, utiliza la opción --subfile
:
dnsenum ejemplo.com --subfile=100
Esto limitará la cantidad de subdominios descubiertos a 100.
Si el objetivo utiliza múltiples subredes y deseas enfocarte en un rango de IP específico, puedes utilizar la opción --ip
para definir el rango:
dnsenum ejemplo.com --ip 93.184.216.0/24
Esto solo enumerará los subdominios y registros DNS dentro de ese rango de subred.
A continuación, te mostramos un ejemplo de cómo combinar múltiples opciones para realizar una enumeración DNS avanzada:
dnsenum ejemplo.com -f /ruta/a/diccionario.txt -r -s 8.8.8.8 -o resultados_dns.txt
En este ejemplo, estamos realizando lo siguiente:
-f /ruta/a/diccionario.txt
).
-r
).
-s 8.8.8.8
).
-o resultados_dns.txt
).
DNSenum es una herramienta potente y versátil para la enumeración DNS avanzada. Desde la búsqueda de registros básicos hasta la fuerza bruta de subdominios y consultas recursivas, esta herramienta ofrece múltiples funciones que pueden ayudarte a obtener información crítica durante una auditoría de seguridad o pruebas de penetración. Aunque fácil de usar en su forma más básica, las opciones avanzadas de DNSenum lo convierten en un recurso invaluable para cualquier profesional de seguridad que necesite realizar un reconocimiento exhaustivo de un dominio.
Jorge García
Fullstack developer