Enumeracion de Subdominios
Enumeracion de Subdominios
1. Introduccion
La enumeracion de subdominios es una fase critica en cualquier penetration test o vulnerability assessment. Permite expandir significativamente la superficie de ataque al descubrir servicios, aplicaciones y recursos que podrian no ser evidentes en el dominio principal.
Esta guia cubre las herramientas principales, tecnicas y pipelines para una enumeracion efectiva.
2. Herramientas de Enumeracion
2.1. assetfinder
Descripcion: Herramienta ligera escrita en Go que encuentra subdominios mediante fuentes pasivas.
Instalacion:
go install github.com/tomnomnom/assetfinder@latest
Uso basico:
# Encontrar subdominios
assetfinder example.com
# Solo subdominios (sin dominio principal)
assetfinder --subs-only example.com
# Con verificacion de estado
assetfinder example.com | grep -v "*"
| Parametro | Descripcion |
|---|---|
| Sin parametro | Muestra todos los dominios |
--subs-only |
Solo subdominios |
2.2. subfinder
Descripcion: Herramienta de enumeracion rapida con multiples fuentes pasivas integradas.
Instalacion:
go install github.com/projectdiscovery/subfinder/cmd/subfinder@latest
Uso basico:
# Enumeracion basica
subfinder -d example.com
# Todas las fuentes
subfinder -d example.com -all
# Modo silencioso
subfinder -silent -d example.com
# Guardar en archivo
subfinder -d example.com -o subdomains.txt
| Parametro | Descripcion |
|---|---|
-d |
Dominio objetivo |
-all |
Usar todas las fuentes |
-silent |
Minimizar salida |
-o |
Archivo de salida |
2.3. amass
Descripcion: Herramienta de enumeracion completaOWASP con multiples modos.
Instalacion:
sudo pacman -S amass
# o
go install github.com/owasp/amass/v3/...@latest
Modos de uso:
# Enumeracion pasiva
amass enum -passive -d example.com
# Enumeracion activa
amass enum -active -d example.com
# Enumeracion completa
amass enum -d example.com
# Modo inteligencia
amass intel -whois -d example.com
# Enumeracion inversa
amass intel -reverse -d 192.168.1.1
| Parametro | Descripcion |
|---|---|
-passive |
Solo fuentes pasivas |
-active |
Fuerza bruta activa |
-whois |
Datos WHOIS |
-reverse |
Resolucion inversa |
2.4. findomain
Descripcion: Herramienta multiplataforma con integracion a multiples APIs.
Instalacion:
go install github.com/Edu4rdSHL/findomain@latest
Uso:
# Basic
findomain -t example.com
# Con todos los servicios
findomain -t example.com -u output.txt
# Monitor
findomain -t example.com -m
3. Fuentes de Enumeracion
3.1. Pasivas
| Fuente | Descripcion |
|---|---|
| Certificate Transparency | Certificados SSL |
| DNS Aggregators | Agregadores DNS |
| Search Engines | Google, Bing, Yahoo |
| ASN Lookups | Numero AS |
| WHOIS | Registros WHOIS |
3.2. Activas
| Fuente | Descripcion |
|---|---|
| DNS Brute | Fuerza bruta de DNS |
| DNS Zone Transfer | Transferencia de zona |
| Alteration | alteracion de subdominios |
4. Wordlists Recomendadas
4.1. Archivos de Wordlists
| Wordlist | Ubicacion |
|---|---|
| Top subdomains | /usr/share/wordlists/seclists/Discovery/DNS/top-subdomains.txt |
| Subdomains | /usr/share/wordlists/seclists/Discovery/DNS/subdomains.txt |
| Namelist | /usr/share/wordlists/seclists/Discovery/DNS/namelist.txt |
| CC TLD | /usr/share/wordlists/seclists/Discovery/DNS/clean-jh-cctld.txt |
4.2. Generacion con crunch
# Generar wordlist personalizada
crunch 3 3 abcdefghijklmnopqrstuvwxyz -o custom.txt
5. Servicios Online
5.1. Certificate Transparency
| Servicio | URL | Descripcion |
|---|---|---|
| crt.sh | crt.sh | Busqueda de certificados |
| Certstream | certstream.calidog.stream | Stream de certificados |
| CTFR | github.com/mitre/CertificateTransparency | Logs CT |
5.2. Busqueda de Dominios
| Servicio | URL |
|---|---|
| VirusTotal | virustotal.com |
| Censys | censys.io |
| Shodan | shodan.io |
| SecurityTrails | securitytrails.com |
| DNSgrep | dnsgrep.org |
| RapidDNS | rapiddns.io |
6. Pipelines de Enumeracion
6.1. Pipeline Basico
#!/bin/bash
# Enumeracion basica de subdominios
DOMAIN=$1
# 1. Recolectar con assetfinder
assetfinder --subs-only $DOMAIN > ${DOMAIN}_assetfinder.txt
# 2. Recolectar con subfinder
subfinder -silent -d $DOMAIN > ${DOMAIN}_subfinder.txt
# 3. Combinar resultados
cat ${DOMAIN}_assetfinder.txt ${DOMAIN}_subfinder.txt | anew ${DOMAIN}_subs.txt
echo "[+] Subdominios encontrados: $(wc -l < ${DOMAIN}_subs.txt)"
6.2. Pipeline Completo (con HTTP Probe)
#!/bin/bash
# Enumeracion completa con verificacion HTTP
DOMAIN=$1
# 1. Enumerar subdominios
echo "[*] Enumerando subdominios..."
assetfinder --subs-only $DOMAIN | anew > tmp_subs.txt
subfinder -silent -d $DOMAIN | anew >> tmp_subs.txt
# 2. Filtrar unicos
cat tmp_subs.txt | anew > ${DOMAIN}_all_subs.txt
rm tmp_subs.txt
# 3. Verificar HTTP (alive)
echo "[*] Verificando HTTP..."
cat ${DOMAIN}_all_subs.txt | httprobe -c 50 > ${DOMAIN}_alive.txt
# 4. Resultados
echo "[+] Total subdominios: $(wc -l < ${DOMAIN}_all_subs.txt)"
echo "[+] alive (HTTP): $(wc -l < ${DOMAIN}_alive.txt)"
6.3. Pipeline para Bug Bounty
#!/bin/bash
# Enumeracion completa para bug bounty
DOMAIN=$1
OUTPUT_DIR="enum_${DOMAIN}"
mkdir -p $OUTPUT_DIR
echo "[*] Iniciando enumeracion completa..."
#Assetfinder
echo "[-] assetfinder..."
assetfinder --subs-only $DOMAIN | anew > $OUTPUT_DIR/assetfinder.txt
#Subfinder
echo "[-] subfinder..."
subfinder -all -silent -d $DOMAIN | anew >> $OUTPUT_DIR/assetfinder.txt
#Amass (pasivo)
echo "[-] amass..."
amass enum -passive -d $DOMAIN | anew >> $OUTPUT_DIR/assetfinder.txt
# crt.sh
echo "[-] crt.sh..."
curl -s "https://crt.sh/?q=%25.${DOMAIN}" | grep -oE "([a-zA-Z0-9_-]+\.[a-zA-Z0-9_-]+\.${DOMAIN})" | anew >> $OUTPUT_DIR/assetfinder.txt
# Filtrar y deduplicar
cat $OUTPUT_DIR/assetfinder.txt | anew > $OUTPUT_DIR/subs.txt
# HTTP Probe
echo "[-] httprobe..."
cat $OUTPUT_DIR/subs.txt | httprobe -c 50 > $OUTPUT_DIR/alive.txt
echo "[+] Completado"
echo " Subdominios: $(wc -l < $OUTPUT_DIR/subs.txt)"
echo " Alive: $(wc -l < $OUTPUT_DIR/alive.txt)"
7. Verificacion de HTTP
7.1. httprobe
# Instalar
go install github.com/tomnomnom/httprobe@latest
# Uso basico
cat subdomains.txt | httprobe
# Con multiples puertos
cat subdomains.txt | httprobe -c 50 -p http:8080,https:8443
# Solo https
cat subdomains.txt | httprobe -p https
7.2. httpx
# Instalar
go install github.com/projectdiscovery/httpx/cmd/httpx@latest
# Uso
cat subdomains.txt | httpx
# Con tecnologias
cat subdomains.txt | httpx -tech-detect
# Con screenshot (requires gowitness)
cat subdomains.txt | httpx -screenshot
8. Ejemplos Practicos
8.1. Enumeracion Rapida
#assetfinder + subfinder
assetfinder --subs-only target.com > subs.txt
subfinder -silent -d target.com | anew >> subs.txt
# Filtrar unicos
cat subs.txt | anew subs_unique.txt
8.2. Enumeracion Completa
# Usar amass + subfinder + assetfinder
amass enum -passive -d target.com > amass.txt
subfinder -all -d target.com > subfinder.txt
assetfinder --subs-only target.com > assetfinder.txt
# Combinar
cat amass.txt subfinder.txt assetfinder.txt | sort -u > all_subs.txt
8.3. Enumeracion con Fuerza Bruta
# DNS brute con amass
amass enum -active -d target.com -brute
# Con wordlist personalizada
amass enum -active -d target.com -brute -whois -df wordlist.txt
9. Feedback
9.1. Lo Que Esta Bien
- Multiple herramientas bien integradas
- Wordlists completas disponibles
- Servicios online utiles
- Pipelines funcionales
9.2. Lo Que Falta
- Documentacion de cada fuente
- parametros detallados
- Casos de uso para cada herramienta
9.3. Mejoras Recomendadas
- Combinar siempre multiples herramientas
- Usar httprobe para filtrar activos
- Documentar hallazgos