Enumerar DNS con dnsenum

NmapNmapBeginner
Practicar Ahora

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá cómo utilizar la herramienta dnsenum para la enumeración DNS y descubrir información crítica sobre la infraestructura de un dominio objetivo. Practicará la instalación de la herramienta, la selección de objetivos adecuados, la ejecución de escaneos y la interpretación de resultados como subdominios y registros DNS.

El laboratorio ofrece experiencia práctica en el reconocimiento DNS sistemático, cubriendo la configuración de la herramienta, la verificación de objetivos y la ejecución de comandos. Desarrollará habilidades esenciales para identificar vulnerabilidades de seguridad a través del análisis de datos DNS.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL wireshark(("Wireshark")) -.-> wireshark/WiresharkGroup(["Wireshark"]) nmap(("Nmap")) -.-> nmap/NmapGroup(["Nmap"]) hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) nmap/NmapGroup -.-> nmap/installation("Installation and Setup") nmap/NmapGroup -.-> nmap/output_formats("Output Formats") nmap/NmapGroup -.-> nmap/save_output("Save Output to File") nmap/NmapGroup -.-> nmap/host_discovery("Host Discovery Techniques") nmap/NmapGroup -.-> nmap/target_specification("Target Specification") nmap/NmapGroup -.-> nmap/service_detection("Service Detection") nmap/NmapGroup -.-> nmap/script_management("Script Categories and Updating") wireshark/WiresharkGroup -.-> wireshark/installation("Installation and Setup") hydra/HydraGroup -.-> hydra/installation("Installation and Setup") subgraph Lab Skills nmap/installation -.-> lab-549936{{"Enumerar DNS con dnsenum"}} nmap/output_formats -.-> lab-549936{{"Enumerar DNS con dnsenum"}} nmap/save_output -.-> lab-549936{{"Enumerar DNS con dnsenum"}} nmap/host_discovery -.-> lab-549936{{"Enumerar DNS con dnsenum"}} nmap/target_specification -.-> lab-549936{{"Enumerar DNS con dnsenum"}} nmap/service_detection -.-> lab-549936{{"Enumerar DNS con dnsenum"}} nmap/script_management -.-> lab-549936{{"Enumerar DNS con dnsenum"}} wireshark/installation -.-> lab-549936{{"Enumerar DNS con dnsenum"}} hydra/installation -.-> lab-549936{{"Enumerar DNS con dnsenum"}} end

Instalar dnsenum

En este paso, instalará la herramienta dnsenum, que es una utilidad de enumeración DNS utilizada para recopilar información sobre la infraestructura DNS de un dominio. La enumeración DNS es una técnica de reconocimiento fundamental en ciberseguridad que ayuda a identificar posibles superficies de ataque. La herramienta dnsenum automatiza el proceso de descubrimiento de subdominios, registros DNS (como registros A, MX, NS) y otra información valiosa sobre la configuración de red de un dominio objetivo.

Antes de comenzar, entendamos por qué estamos utilizando esta estructura de directorios específica. El directorio ~/project es un espacio de trabajo limpio que hemos preparado para que mantenga sus herramientas organizadas. Esta es una buena práctica también en las evaluaciones de seguridad del mundo real.

  1. Primero, asegúrese de estar en el directorio de trabajo predeterminado:

    cd ~/project

El siguiente comando instala Perl y varios módulos de Perl de los que depende dnsenum para funcionar correctamente. Perl es un lenguaje de scripting en el que está escrito dnsenum, mientras que los otros módulos proporcionan funcionalidad de red y DNS.

  1. Instale las dependencias necesarias para dnsenum:

    sudo apt-get update && sudo apt-get install -y perl libnet-dns-perl libnet-netmask-perl libnet-ip-perl

Ahora descargaremos la herramienta dnsenum real desde su repositorio oficial de GitHub. GitHub es donde los desarrolladores comparten proyectos de código abierto como este.

  1. Descargue dnsenum desde su repositorio oficial:

    git clone https://github.com/fwaeytens/dnsenum.git

Después de descargar, necesitamos entrar en el directorio dnsenum para acceder a los archivos de la herramienta. Aquí es donde se encuentra el script principal dnsenum.pl.

  1. Navegue hasta el directorio dnsenum:

    cd dnsenum

Finalmente, verificaremos que la instalación fue exitosa comprobando el menú de ayuda. Este es un paso importante con cualquier nueva herramienta: entender sus opciones antes de ejecutarla contra objetivos reales.

  1. Verifique la instalación comprobando el menú de ayuda:
    perl dnsenum.pl --help
    Debería ver la información de uso de la herramienta y las opciones disponibles. Esta salida le muestra todos los comandos y conmutadores que puede usar con dnsenum para diferentes tipos de tareas de enumeración DNS.

Seleccionar un Dominio Objetivo

En este paso, seleccionará un dominio objetivo adecuado para la enumeración DNS. La enumeración DNS es el proceso de descubrir todos los registros DNS asociados a un dominio, lo que ayuda a los profesionales de la seguridad a entender la infraestructura de un sitio web. Elegir el objetivo correcto es crucial para las pruebas de seguridad éticas: siempre utilizamos dominios autorizados o dominios de prueba especiales como example.com.

  1. Primero, asegúrese de estar en el directorio de trabajo correcto. Aquí es donde almacenaremos todos nuestros archivos de enumeración DNS:

    cd ~/project/dnsenum
  2. Para este laboratorio, usaremos example.com como nuestro dominio objetivo. Este dominio está específicamente reservado para documentación y pruebas por la IANA (Internet Assigned Numbers Authority), lo que lo hace perfecto para aprender técnicas de enumeración DNS. Recuerde: en evaluaciones de seguridad reales, siempre debe obtener la autorización adecuada antes de escanear cualquier dominio.

  3. Verifiquemos que el dominio sea alcanzable con una consulta DNS básica. Este comando comprueba si el nombre de dominio se puede resolver a una dirección IP:

    nslookup example.com

    Debería ver información de resolución DNS que muestre las direcciones IP del dominio. Si obtiene un error, verifique su conexión a Internet.

  4. Crearemos un archivo de texto para almacenar nuestro dominio objetivo. Este archivo se utilizará más adelante por dnsenum:

    echo "example.com" > target_domain.txt
  5. Vea el contenido de su archivo de objetivo para confirmar que se creó correctamente:

    cat target_domain.txt

    La salida debería mostrar: example.com. Este simple paso de verificación ayuda a prevenir errores en etapas posteriores del proceso de enumeración.

Ejecutar la Enumeración DNS

En este paso, realizará una enumeración DNS en su dominio objetivo utilizando la herramienta dnsenum instalada anteriormente. La enumeración DNS es una técnica de reconocimiento fundamental que ayuda a los profesionales de la seguridad a mapear la infraestructura digital de un dominio descubriendo subdominios, registros DNS y otra información de red.

  1. Primero, navegue hasta el directorio de dnsenum donde se encuentra la herramienta. Esto asegura que esté trabajando en la ubicación correcta con todos los archivos necesarios:

    cd ~/project/dnsenum
  2. Ejecute dnsenum contra su dominio objetivo (example.com) con una enumeración básica. La bandera --enum le dice a la herramienta que realice una enumeración DNS estándar:

    perl dnsenum.pl --enum example.com

    Esta exploración básica revelará información DNS importante, incluyendo:

    • Direcciones de host (registros A que mapean dominios a IPs)
    • Servidores de nombres (registros NS que muestran los servidores DNS autoritativos)
    • Servidores de correo (registros MX para la infraestructura de correo electrónico)
    • Subdominios comunes a través de conjeturas por fuerza bruta
  3. Para obtener resultados más completos, mejoraremos la exploración con parámetros adicionales. Esta exploración más profunda es útil cuando necesita información exhaustiva sobre un objetivo:

    perl dnsenum.pl --enum -f dns.txt --threads 5 example.com

    Este comando avanzado:

    • Utiliza una lista de palabras de subdominios (dns.txt) para probar patrones de nomenclatura comunes
    • Se ejecuta con 5 hilos en paralelo para acelerar el proceso de exploración
    • Realiza comprobaciones exhaustivas, incluyendo búsquedas inversas y intentos de transferencia de zona
  4. Examine detenidamente la salida, que mostrará:

    • Subdominios descubiertos (posibles puntos de entrada a los sistemas objetivo)
    • Direcciones IP (que muestran dónde se alojan los servicios)
    • Varios tipos de registros DNS (A, MX, NS, etc., que revelan las configuraciones de servicio)
    • Intentos de transferencia de zona (para probar servidores DNS mal configurados)

Revisar Subdominios y Registros

En este paso, analizará los resultados de la enumeración DNS para identificar subdominios y varios registros DNS. La enumeración DNS es una técnica de reconocimiento crucial que revela la estructura de la red de un dominio. Al examinar estos resultados, puede entender cómo el dominio objetivo organiza sus servicios e identificar posibles puntos de entrada para una investigación adicional.

  1. Primero, navegue hasta el directorio de resultados de dnsenum donde se almacenan los datos de su exploración:

    cd ~/project/dnsenum

    Este directorio contiene los archivos de salida de su exploración de enumeración DNS anterior. Trabajaremos con la salida en formato XML que contiene datos estructurados sobre el dominio.

  2. Vea el archivo de salida XML de su exploración anterior:

    cat dnsenum_example.com.xml

    Este comando muestra los datos XML sin procesar que contienen toda la información DNS recopilada. El archivo incluye varios tipos de registros DNS importantes:

    • Direcciones de host (registros A) - Estos mapean nombres de dominio a direcciones IP
    • Servidores de nombres (registros NS) - Los servidores DNS autoritativos para el dominio
    • Servidores de correo (registros MX) - Servidores responsables de la entrega de correo electrónico
    • Subdominios descubiertos - Dominios adicionales bajo el dominio principal
  3. Para una mejor legibilidad cuando se trabaja con conjuntos de resultados grandes, puede filtrar tipos de registros específicos:

    grep -E "<host>|<a>" dnsenum_example.com.xml

    Este comando grep extrae solo las entradas de host y sus direcciones IP correspondientes, lo que facilita ver qué nombres de dominio se resuelven a qué IPs.

  4. Para ver solo los subdominios encontrados durante la enumeración:

    grep "<host>" dnsenum_example.com.xml | cut -d'>' -f2 | cut -d'<' -f1

    Esta tubería primero encuentra todas las entradas de host y luego utiliza cut para extraer solo los nombres de dominio entre las etiquetas XML. Los subdominios pueden revelar servicios adicionales o sistemas potencialmente vulnerables.

  5. Examine los servidores de nombres, que son críticos para la infraestructura DNS del dominio:

    grep -A1 "<nameserver>" dnsenum_example.com.xml

    La bandera -A1 muestra cada entrada de servidor de nombres más una línea después de ella, lo que le da tanto la etiqueta como el nombre real del servidor.

  6. Verifique los servidores de correo que manejan la entrega de correo electrónico para el dominio:

    grep -A1 "<mx>" dnsenum_example.com.xml

    Los registros MX muestran la prioridad y el nombre de host de los servidores de correo. Estos a menudo son objetivos en las evaluaciones de seguridad ya que manejan comunicaciones sensibles.

Guardar Datos de Enumeración

En este paso, guardará y organizará adecuadamente los resultados de la enumeración DNS para su consulta y generación de informes futuros. La documentación adecuada es esencial en las evaluaciones de ciberseguridad, ya que ayuda a mantener registros, hacer un seguimiento de los hallazgos y compartir los resultados con los miembros del equipo.

  1. Primero, asegúrese de estar en el directorio correcto donde se encuentran los archivos de salida de dnsenum. Esto es importante porque todos los comandos posteriores trabajarán con los archivos de este directorio:

    cd ~/project/dnsenum
  2. Cree un directorio con marca de tiempo para sus resultados. El uso de fechas en los nombres de los directorios ayuda a organizar múltiples exploraciones cronológicamente. La bandera -p crea los directorios padre si no existen:

    mkdir -p results/$(date +%Y-%m-%d)
  3. Copie todos los archivos relevantes al directorio de resultados. Aquí, específicamente, estamos moviendo el archivo de salida XML de dnsenum a nuestra ubicación de almacenamiento organizada:

    cp dnsenum_example.com.xml results/$(date +%Y-%m-%d)/
  4. Cree un informe de resumen legible por humanos. Este script extrae información clave del archivo XML y la formatea en un informe de texto simple. Los comandos grep filtran datos específicos, mientras que los comandos cut extraen solo las partes relevantes entre las etiquetas XML:

    {
      echo "DNS Enumeration Report - $(date)"
      echo "=============================="
      echo -e "\nSubdomains Found:"
      grep "<host>" dnsenum_example.com.xml | cut -d'>' -f2 | cut -d'<' -f1
      echo -e "\nName Servers:"
      grep -A1 "<nameserver>" dnsenum_example.com.xml | grep "<host>" | cut -d'>' -f2 | cut -d'<' -f1
    } > results/$(date +%Y-%m-%d)/report.txt
  5. Verifique los archivos guardados para confirmar que se copiaron correctamente. El comando ls -l muestra información detallada de los archivos, incluyendo permisos y marcas de tiempo:

    ls -l results/$(date +%Y-%m-%d)/
  6. Comprima los resultados para facilitar el intercambio. El comando tar agrupa los archivos, mientras que la compresión gzip (la opción z) reduce el tamaño del archivo para la transferencia:

    tar -czvf example.com_enum_results.tar.gz results/$(date +%Y-%m-%d)/

Resumen

En este laboratorio, has aprendido cómo realizar una enumeración DNS utilizando la herramienta dnsenum con fines de ciberseguridad. El proceso cubrió la instalación de la herramienta, la verificación de la accesibilidad del dominio y la realización de consultas DNS básicas, mientras se enfatizaban las consideraciones éticas.

Has practicado pasos esenciales, como la clonación de repositorios, la navegación por directorios y la verificación de la instalación a través del menú de ayuda. El laboratorio demostró la configuración adecuada de la herramienta y las técnicas de validación de objetivos utilizando example.com como un dominio de práctica seguro.