Enumerando subdominios DNS
- EN
- ES
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.
#
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 |