Skip to main content
Enumeración de subdominios - técnicas y herramientas

Enumeración de subdominios – técnicas y herramientas

El arte de la búsqueda de subdominos ha ido mejorando con el paso de los años, ayudando a realizar en segundos una tarea que de forma manual podría llevar horas o incluso días.

Bienvenidos a un nuevo post en ByteMind, en el caso de hoy vamos a tratar el arte de encontrar subdominios sobre un dominio dado, una tarea que de forma manual podría llevar una eternidad pero que mediante el uso de una serie de herramientas puede realizar esta ardua tarea en cuestión de segundos.

En un post anterior vimos como realizar enumeración sobre nombres de dominio, pero dejamos para un futuro el realizar esta tarea sobre subdominios, así que vamos ahora con ello.

 

Cómo funcionan los escáneres de subdominios

Para ver que tareas se realizan con estas herramientas vamos a tratar primero los métodos más populares para obtener este tipo de información.

Consultas en los motores de búsqueda

Las técnicas de piratería de Google se utilizan a menudo para encontrar los subdominios de cualquier nombre de dominio, lo que implica un comando tan simple como:

El comando anterior puede devolver la lista de subdominios indexados en google. Si bien este tipo de consultas no son en tiempo real, ya que provienen de los últimos rastreos de logs Bot de Google, a menudo, es muy útil para encontrar todos aquellos subdominios que no están protegidos por configuraciones de robots.txt o aquellos que no utilizan metaetiquetas noindex.

Muchos de los motores de escáner de subdominios online y herramientas se basan en este tipo de consultas a motores de búsqueda como Google, Yahoo o Bing.

 

Enumeración por fuerza bruta

Algunas herramientas de enumeración de subdominios utilizan técnicas de fuerza bruta y fuerza bruta recursiva para la generación de lisas de subdominios, en la mayoría de ocasiones mediante la combinación con listas de palabras.

Aunque no es una de las formas más rápidas de realizar este tipo de búsquedas, sí que puede ser una de las más precisas.

En este caso se pueden utilizar herramientas (entre otras) como Amass, Fierce, SubBrute, etc.

 

Descubrimiento por medio de transferencia de zona DNS

Una transferencia de zona DNS es la forma de replicar completamente una zona DNS remota, y por lo tanto, es la más exacta que podemos utilizar. 

Cabe destacar que esta técnica funciona sólo cuando la zona DNS no está protegida o limitada para las solicitudes AXFR. Aunque la gran mayoría de servidores DNS están parcheados ante este tipo de solicitudes, merece la pena intentar combinarlo con la exploración basada en fuerza bruta ya que hay ocasiones en las que se protege alguno de los Name Server pero no todos ellos, haciendo posible la explotación de este tipo de ataque.

 

Obtención de información pública por certificados SSL / TLS

Los certificados SSL / TLS son útiles para cifrar los datos enviados y recibidos entre navegdores y servidores, pero también para investigar la seguridad de estos.

El nombre alternativo del sujeto (SAN) de los certificados puede utilizarse para extraer nombres de dominio y subdominio. En este caso, combinando con secuencias de comandos de Python o Bash (entre otros) puede ayudar en la búsquda rápida y sencilla de subdominios.

 

Herramientas para la enumeración de subdominios

SubBrute

SubBrute es una de las herramientas de enumeración de subdominios por fuerza bruta más rápidas. Además tiene la capacidad de ocultar el origen del escaneo mediante el uso de resolutores abiertos como proxy para los límites de velocidad DNS.

Otra opción es que puede funcionar como un spider de DNS que rastrea de forma recursiva registros enumerados lo que lo convierte en un conjunto de herramientas completo frente a este tipo de ataques.

La sintaxis del comando es sencilla como se aprecia en el siguiente ejemplo:

Y podemos ver un ejemplo en funcionamiento a continuación:

Al igual que la gran mayoría de tools dispone de una ayuda con el siguiente comando:

Pero además de esto nos permite la posibilidad de escanear un tipo concreto de registro DNS, por ejemplo TXT

Y también dispone de la posibilidad de integrar el mismo en nuestros propios scripts en Python para automatizar tareas más complejas. La forma de implementarlo podemos verla en el siguiente ejemplo:

 

Sublist3r

Sublist3r es una herramienta basada en Python que se puede utilizar como escáner de subdominios masivo.

Realiza búsquedas sobres motores como Bing, Google, Yahoo, etc y otras fuentes de terceros como Netcraft o VirusTotal por lo que puede ser una de las herramientas más efectivas y rápidas cuando se desea realizar este tipo de enumeración.

Además, esta herramienta permite también utilizar diccionarios de palabras para realizar ataques de fuerza bruta en la búsqueda de subdominios.

Para su instalación los requisitos mínimos son los siguientes:

  • Python 2.7.x
  • Python 3.4.x

Para realizar la instalación se deberá de descargar el repositorio en github:

Y la instalación de las librerías necesarias:

Una vez instalado se puede realizar un escaneo con el siguiente comando como ejemplo

Veamos un ejemplo de esta tool en funcionamiento:

Y podemos ver su amplia ayuda con la opción -h 

Además de ello también incluye una opción muy interesante para la búsqueda en ciertos puertos abiertos. Como vemos en el siguiente ejemplo, sólo realizará el escaneo contra aquellos host que tengan los puertos 80 y/o 443 abiertos al público

 

Knock

Knock es otra herramienta basada en Python que ayuda a los investigadores con el proceso de recopilación de información. 

Su funcionamiento se basa en realizar una transferencia de zona DNS completa y, en caso de fallar, puede ejecutar una consulta en la base de datos de VirusTotal.

Es un programa muy simple pero que es de gran ayuda en este tipo de búsqueda.

Antes de proceder a la instalación es necesario instalar la librería de python dnspython

Y después descargar la tool desde su repositorio en github

Posteriormente, y antes de su instalación, se requiere configurar la API de VirusTotal en el fichero config.json si se desea utilizar esta funcionalidad, e instalar la herramienta con el comando

Completados estos pasos ya se puede ejecutar la misma como en el siguiente ejemplo

Aunque veamos un ejemplo de su ejecución:

El mismo análisis también proporciona otros datos útiles como la dirección IP, el estado de la respuesta, nombre de dominio y host del servidor detectado de forma remota.

También es posible iniciar escaneos mediante listados de palabras personalizados con la opción -w:

 

Amass

Amass es una de las mejores herramientas cuando se trata de la enumeración de subdominios, escrito por Jeff Foley, es uno de los comandos basados en terminal más poderosos para la recopilación y acumulación de grandes cantidades de datos de subdominios.

Utiliza una variedad de técnicas de mapeo de subdominios que incluyen scrapping, fuerza bruta recursiva, barrido de DNS inverso y aprendizaje automático.

La instalación de Amass es sencilla utilizando los paquetes precompilados o mediante el uso de snap en Kali Linux y otras distribuciones simplemente escribiendo:

Una vez instalado o descargados los paquetes precompilados en go podemos ejecutarlo como vemos en el siguiente ejemplo:

 

Hemos visto una simple prueba pero las múltiples opciones disponibles pueden verse desde la ayuda de la tool con la opción -h

 

DNSRecon

DNSRecon es una herramienta también escrita en Python y es una de las más conocidas.

Funcina al realizar la verificación de todos los registros NS para transferencias de zona AXFR y puede ser muy útil en la enumeración DNS para casi cualquier tipo de registro.

Admite también la verificación de resolución de wildcards y el descubrimiento basado en fuerza bruta para registros de tipo A y AAAA con listas de palabras, además de poder consultar a los dorks de Google para la búsqueda de subdominios indexados por GoogleBot.

Para su instalación se deberá clonar el repositorio existente en github

Y realizar la instalación de las dependencias de la aplicación

Aunque para aquellos que utilicen Kali Linux esta herramienta ya viene instalada por defecto en el sistema.

Una vez instalado vemos un ejemplo de como se ejecutaría el mismo:

Como vemos en el anterior escaneo,  la herramienta pudo buscar todo tipo de registros e incluso trata de enumerar registros SRV.

Si bien, la opción -d puede ayudar con la búsqueda, también es posible specificar un diccionario propio con la opción -D

 

AltDNS

AltDNS es una herramienta de enumeración de subdominios basada en el trabajo con alteraciones y permutaciones.

En esta herramienta se configura una lista de palabras (por defecto ya incluye un diccionario predeterminado) así como el uso de una lista de subdominios confirmados por lo que se puede ejecutar esta tool para generar resultados tanto alterados como mutados que pueden estar presentes en el nombre del dominio.

Incluye además un conjunto de más de 200 subdominios de los más utilizados que pueden ser utilizados para generar subdominios válidos.

Para su instalación se deberá descargar el código de su repositorio en github:

E instalar posteriormente los requisitos del mismo

Aunque también es posible la instalación de la herramienta por medio de pip

Podemos ver un ejemplo de su ejecución en el siguiente comando:

Nota: subdomains.txt es la lista de subdominios real conocida, y words.txt es la lista de palabras de AltDNS.

 

 

Conclusión

Aunque el uso de herramientas para generar bases de datos en vivo siguen siendo útiles, existen formas más rápidas y eficientes de encontrar subdominios utilizando fuentes OSINT pasivas. Y estas, son actualmente, las más utilizadas (en la mayoría de casos) para realizar este tipo de escaneos y tareas de mapeo.

Espero les haya gustado y les sea de utilidad en su día a día y como siempre si tienen alguna duda o sugerencia o simplemente quieren exponer su opinión al respecto pueden hacerlo en la sección de comentarios.

 

Deja una respuesta

Tu dirección de correo electrónico no será publicada.