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