La enumeración de subdominios es el proceso de encontrar subdominios válidos para un dominio.

¿Cómo podemos hacer esto? Mediante:

  • Fuerza bruta.
  • OSINT.
  • Virtual host.

Iniciamos la máquina que hay en la habitación y empezamos a responder preguntas.

¿Cuál es el método de enumeración de subdominios que empieza por B?

Brute force

¿Y el que empieza por O?

OSINT

¿Y V?

Virtual host

OSINT - Certificados SSL/TLS

Cuando se crea un certificado SSL/TLS (Secure Sockets Layer/Transport Layer Security) para un dominio por una CA (Certificate Authority), la CA toma parte en lo que se llaman «Registros de transparencia de certificados» (CT logs).

El propósito de estos es detener el uso de certificados maliciosos o accidentales, pero podemos aprovechar este servicio para descubrir subdominios de un dominio.

Sitios como https://crt.sh y https://transparencyreport.google.com/https/certificates ofrecen una búsqueda en base de datos de certificados que muestra resultados actuales e históricos.

Vamos a crt.sh y buscamos el dominio tryhackme.com, debemos encontrar la entrada que fue registrada el 26-12-2020 e introducir el dominio como respuesta a la pregunta.

store.tryhackme.com

OSINT - Motores de búsqueda

Usando métodos avanzados, como el filtro site: podemos conseguir subdominios. Por ejemplo:

-site:www.domain.com site:*.domain.com

Contendría solamente resultados de domain.com excepto www.domain.com, mostrando los subdominios.

Nos vamos a Google y buscamos:

-site:www.tryhackme.com site:*.tryhackme.com

¿Cuál es el subdominio que empieza por B?

blog.tryhackme.com

Fuerza bruta DNS

La enumeración por fuerza bruta en DNS (Domain Name System) intenta decenas, cientos, miles e incluso millones de posibles subdominios diferentes.

Como este método requiere muchas peticiones, lo automatizamos.

En este caso lo haremos mediante una herramienta llamada dnsrecon. Hacemos clic en el botón de «View Site» de este apartado y pulsamos «Run DNSrecon Request» para empezar la simulación y responder.

¿Cuál es el primer subdominio encontrado con la herramienta dnsrecon?

api.acmeitsupport.thm

OSINT - Sublist3r

Para acelerar el proceso OSINT de descubrimiento de subdominios, podemos automatizar con Sublist3r.

Hacemos clic en el botón de «View Site» para abrir el sitio estático y simular Sublist3r.

¿Cuál es el primer subdominio descubierto?

web55.acmeitsupport.thm

Virtual Hosts

Algunos subdominios no están alojados en resultados DNS que son accesibles públicamente, como las versiones de desarrollo de una aplicación web o portales de administración.

En su lugar, el registro DNS puede mantenerse en un servidor DNS privado o grabado en las máquinas de los desarrolladores, dentro del archivo /etc/hosts o en c:\windows\system32\drivers\etc\hosts en el caso de Windows, que mapea nombres de dominio con direcciones IP.

Como los servidores web pueden alojar múltiples webs en una máquina cuando se pide una web por parte de un cliente, el servidor sabe qué web quiere el cliente desde el encabezado Host.

Pues bien, podemos usar ese encabezado para hacerle cambios y monitorizar la respuesta, para ver si descubrimos una nueva web.

Como en la fuerza bruta DNS, podemos automatizar ese proceso usando una lista de palabras con nombres de subdominio habituales.

Iniciamos la máquina de ataque de la habitación e intentamos el siguiente comando contra la máquina Acme IT Support, para tratar de descubrir un nuevo subdominio.

ffuf -w /usr/share/wordlists/SecLists/Discovery/DNS/namelist.txt -H "Host: FUZZ.acmeitsupport.thm" -u http://MACHINE_IP
  • -w sirve para escpecificar la lista de palabras.
  • -H sirve para añadir o editar un encabezado, en este caso, Host.
  • FUZZ es la palabra clave que ponemos en el sitio en el que iría el subdominio. Esa palabra clave quedará sustituida por el contenido de la lista de palabras.

Como el comando de arriba siempre producirá un resultado válido, necesitamos filtrar el resultado. Podemos hacerlo usando el resutado de tamaño de página, usando la opción -fs.

Así que editamos el comando anterior reemplazando {size} con el valor más común de nuestro primer intento de ataque.

Si nos fijamos en el resultado, 2395 es el valor que no para de repetirse en el resultado del primer comando. Así que…

ffuf -w /usr/share/wordlists/SecLists/Discovery/DNS/namelist.txt -H "Host: FUZZ.acmeitsupport.thm" -u http://MACHINE_IP -fs 2395

-fs le dice a ffuf que ignore los resultados de ese tamaño.

El comando debe arrojar dos resultados positivos.

¿Cuál es el primer subdominio descubierto?

delta

¿Cuál es el segundo?

yellow