Saltar al contenido principal

% 16k.es

Enumerando subdominios DNS

Table of Contents

Ya sea para CTFs, real life™ pentests, threat intel, etc., la enumeración de subdominios siempre es importante. Hay muchas técnicas distintas que nos ayudan.

it was dns

# Por si acaso, ¡preguntar primero!

dig domain.com axfr

No, debería funcionar, pero nunca se sabe… 😂

# Pasivo

Usar Google: buscar site:*.domain.com

Hay más sitios donde buscar: motores de búsqueda, Netcraft, DNSdumpster, VirusTotal, certificados SSL…

Bing permitía búsquedas del tipo ip:1.1.1.1 devolviendo dominios para una IP dada. Por desgracia, ya no funciona :(

Pero queda https://api.hackertarget.com/:

% curl 'https://api.hackertarget.com/reverseiplookup/?q=40.113.200.201'
blogmicrosofteducacao.com.br
ccmjconsulting.com
chasenbell.com
chasinggoogle.com
customvision.ai
e.microsoft.com
gamepass.com
interngame.com
lobe.ai
microsoftsale.net
movere.io
odata.org
opensource.ms
powerplatform.co
reroute443.trafficmanager.net
surface.com
swrepository.com
xboxlive.com
zootycoon.biz
zune.ne

# Bruteforcing

Hay un montón de herramientas para hacer fuerza bruta:

  • altdns. Descubrimiento por alteraciones y permutaciones.
  • OWASP amass. El proyecto OWASP Amass realiza el mapeo de redes de superficies de ataque y el descubrimiento de activos externos utilizando técnicas de recopilación de información de código abierto y reconocimiento activo, incluyendo DNS, Scraping, Certificados, APIs y archivos web..
  • dnstwist. Puede detectar typosquatters, ataques de phishing, fraude y suplantación de marca. Útil como fuente adicional de información sobre amenazas específicas.
  • sublist3r. Sublist3r es una herramienta python diseñada para enumerar subdominios de sitios web utilizando OSINT. Ayuda a los pentesters y bug hunters a recopilar y reunir subdominios para el dominio al que se dirigen. Sublist3r enumera subdominios utilizando muchos motores de búsqueda como Google, Yahoo, Bing, Baidu y Ask además de Netcraft, Virustotal, ThreatCrowd, DNSdumpster y ReverseDNS.

amass es muy completa. Hay un buen tutorial aquí: https://github.com/OWASP/Amass/blob/master/doc/tutorial.md que merece su propio post (algún día…).

# Fuzzing

En un contexto en el que no se dispone de un DNS real, la mejor opción puede ser el fuzzing. Pero no sólo eso; esta técnica permite descubrir subdominios no indexados (por la razón que sea), subdominios que funcionan detrás de un comodín (*.dominio.com), etc.

Por cierto, ¿es diferente del «bruteforcing»? Diría que, en realidad, no.

## ffuf

ffuf es un fuzzer multihilo muy rápidoi escrito en go, así que se puede instalar con go get github.com/ffuf/ffuf o buen desde su proyecto en github.

Ejemplo:

$ ffuf -w subdomains-top1million-5000.txt -H "Host: FUZZ.forge.htb" -u http://forge.htb -fc 302

Este código recorrerá la wordlist facilitada por el argumento -w, modificará la cabecera host y excluirá los resultados con un Error 302. Se puede filtrar (incluir/excluir) por status, tamaño de la respuesta, palabras, líneas… configurar la velocidad y el número de hilos, etc.

## wfuzz

Muy parecido a ffuf, esta sería la sintaxis equivalente:

wfuzz -u http://forge.htb -w subdomains-top1million-5000.txt -H "Host: FUZZ.forge.htb" --hc 302

## ffuf vs wfuzz

ffuf es 4 veces más rápido (con la configuración por defecto puesta más arriba)!

Program Time
ffuf 0m7,045s
wfuzz 0m28,253s

# Referencias