← Todas las Herramientas

unwaf

Descubre la IP de origen real detrás de un WAF/CDN usando técnicas pasivas.
GitHub ★ 180
go install github.com/mmarting/unwaf@latest
unwaf flow diagram

unwaf automatiza el proceso de encontrar IPs de origen que evitan la protección WAF/CDN. Combina 15 métodos de descubrimiento pasivo (la mayoría con tier gratuito) y verifica candidatos mediante un sistema de puntuación multi-señal: similitud HTML (60%), coincidencia de certificados SSL (25%) y comparación de cabeceras HTTP (15%). Incluye fingerprinting uTLS de Chrome para evadir detección TLS del WAF, soporte HTTP/2, escaneo de vecinos CIDR, consulta ASN, soporte proxy, procesamiento por lotes y salida JSON. Sin escaneo activo, sin fuerza bruta, solo reconocimiento pasivo inteligente.

Cómo funciona

Detección WAF
Valida la resolución DNS actual contra rangos IP conocidos de WAF/CDN e identifica mediante cabeceras HTTP
Hashing de Favicon
Descarga favicon.ico y genera hashes MD5/SHA256/MMH3 para búsqueda externa
Descubrimiento de IPs
Ejecuta todos los métodos habilitados (hasta 15 fuentes) para recopilar IPs candidatas
Filtrado
Elimina IPs de WAF/CDN (CIDRs descargados dinámicamente) y registros DNS actuales
Escaneo de Puertos
Comprueba candidatos en 8 puertos web comunes en paralelo
Verificación
Puntúa candidatos usando similitud HTML (60%), certificados SSL (25%) y cabeceras HTTP (15%)
Escaneo de Vecinos
Opcionalmente escanea vecinos CIDR /24 de IPs confirmadas
Consulta ASN
Identifica ASN y organización para IPs de origen confirmadas
Resultados
Muestra coincidencias con desglose de puntuación, info ASN y comandos de verificación

Características

  • 15 métodos de descubrimiento (6 gratuitos, 8 con tier gratuito, 1 de pago)
  • Verificación multi-señal: similitud HTML (60%), certificados SSL (25%), cabeceras HTTP (15%)
  • Confirmación de WAF: comprueba si el dominio está realmente detrás de un WAF antes de escanear
  • Fingerprinting de WAF: identifica Cloudflare, Akamai, AWS CloudFront, Fastly, Sucuri, Imperva, FortiWeb, Radware, Azure Front Door, Google Cloud Armor, Vercel, Netlify y más
  • Fingerprinting uTLS de Chrome para evadir WAFs que detectan el stack TLS de Go
  • Soporte HTTP/2 con fallback a h1 y cabeceras realistas de navegador
  • Hashing de favicon (MD5, SHA256, MMH3) para búsquedas en Shodan/Censys
  • Escaneo de vecinos CIDR /24 para IPs de origen cercanas
  • Consulta ASN/organización para IPs confirmadas
  • Descarga dinámica de CIDRs de Cloudflare con soporte IPv6
  • Soporte proxy (HTTP, SOCKS5)
  • Rate limiting y lógica de reintentos con backoff exponencial
  • Procesamiento por lotes con lista de dominios
  • Salida en formato JSON para automatización
  • Modo silencioso (-q): muestra solo IPs para encadenar con otras herramientas
  • Entrada inteligente: acepta tanto example.com como https://example.com/path
  • Escaneo concurrente con workers configurables

Métodos de Descubrimiento

MétodoTipoDescripción
SPF recordsIncluidoExtrae IPs de mecanismos SPF ip4:/ip6:
MX recordsIncluidoResuelve hostnames de servidores de correo (omite Google/Microsoft/etc.)
Subdomain probingIncluidoResuelve 30+ subdominios comunes (mail, dev, staging, origin...)
Certificate TransparencyIncluidoConsulta crt.sh para todos los subdominios, resuelve a IPs sin WAF
WAF detectionIncluidoIdentifica el WAF mediante cabeceras HTTP
Favicon hashingIncluidoGenera hashes MD5/SHA256/MMH3 para búsqueda de favicon en Shodan/Censys
AlienVault OTXAPI gratuitaRegistros DNS pasivos (API key opcional mejora los límites)
RapidDNSAPI gratuitaEnumeración de subdominios mediante scraping HTML
HackerTargetAPI gratuitaAPI de búsqueda de hosts (límite de 50 req/día)
Wayback MachineAPI gratuitaExtrae hostnames de snapshots archivados vía CDX API
ShodanAPI gratuitaBúsqueda de hosts por SSL CN, hostname, hash de favicon (tier gratuito disponible)
DNSDB / FarsightAPI gratuitaRegistros DNS históricos (Community Edition: 500 consultas/mes)
SecurityTrails historyAPI gratuitaRegistros DNS A históricos (50 req/mes en tier gratuito)
ViewDNS historyAPI gratuitaRegistros DNS A históricos (250 peticiones gratis, sin tarjeta)
Censys SSL searchAPI de pagoEncuentra hosts con certificados SSL que coinciden con el dominio

Puntuación de Verificación

SeñalPesoDescripción
Similitud HTML60%Comparación de texto basada en diff entre candidato y referencia
Certificados SSL25%Coincidencia de serial (50%), CN (25%), solapamiento SAN (25%)
Cabeceras HTTP15%Comparación de Server, X-Powered-By, Set-Cookie
Códigos de estadoajuste+/-5-20% bonus/penalización según alineación de código de estado

Ejemplos de Uso

unwaf -d example.com
Escaneo básico solo con métodos gratuitos
unwaf -d https://example.com/path
Las URLs completas también funcionan
unwaf -d example.com -s original.html
Usar un archivo HTML guardado manualmente como referencia
unwaf -d example.com -t 40
Umbral más bajo para detectar coincidencias parciales
unwaf -d example.com -w 100
Aumentar la concurrencia para escaneo más rápido
unwaf -d example.com -v
Modo detallado
unwaf -d example.com --json
Formato de salida JSON
unwaf -d example.com --scan-neighbors
Escanear vecinos CIDR /24 de IPs descubiertas
unwaf -d example.com --proxy socks5://127.0.0.1:9050
Enrutar a través de un proxy
unwaf -d example.com --rate-limit 2 --timeout 5
Rate limiting con timeout personalizado
unwaf -l domains.txt --json -o results.json
Procesamiento por lotes con salida JSON a archivo
unwaf -q -d target.com | nuclei -l -
Encadenar con nuclei para testing automatizado
unwaf -q -d target.com | httpx -silent
Encadenar con httpx para sondeo
unwaf -d target.com --json | jq '.bypasses[].ip'
Extraer IPs de la salida JSON con jq

Opciones

FlagDescripción
-d, --domainTarget domain or full URL (required)
-l, --listFile with domains, one per line (batch mode)
-s, --sourceLocal HTML file for comparison (optional)
-o, --outputWrite results to file
-c, --configConfig file path (default: $HOME/.unwaf.conf)
-t, --thresholdSimilarity threshold percentage (default: 60)
-w, --workersNumber of concurrent workers (default: 50)
--timeoutHTTP timeout in seconds (default: 10)
--rate-limitMax requests per second, 0 = unlimited (default: 0)
--proxyProxy URL (http:// or socks5://)
--scan-neighborsScan /24 CIDR neighbors of discovered IPs
--jsonJSON output format
-v, --verboseEnable verbose output
-q, --quietSilent mode: only output bypass IPs (for piping/automation)
--versionPrint version
-h, --helpDisplay help information