Wordlist Para Pentesting

Las wordlists son uno de los recursos más decisivos en pruebas de penetración: alimentan ataques de fuerza bruta, permiten descubrir directorios ocultos, sirven para probar inyecciones y constituyen la base para la mayoría de los ataques automatizados contra autenticaciones y contenidos web. Con una wordlist adecuada y la estrategia correcta, se maximiza la eficacia de la auditoría con el menor ruido posible sobre la infraestructura objetivo.

A continuación explico conceptos, estrategias y procedimientos concretos para extraer valor real de las wordlists, incluyendo ejemplos de comandos y workflows que puedes ejecutar en Kali Linux u otra distribución similar.


1) Concepto y por qué importa

Una wordlist es un archivo de texto (normalmente plano) con un conjunto de valores: contraseñas, rutas, payloads de fuzzing, nombres de usuarios, etc. Las herramientas consumen esas entradas y las prueban sistemáticamente contra un objetivo. Cuando se trata de cracking de hashes o de formularios web, la herramienta transforma cada palabra a la representación necesaria (por ejemplo, aplicando el hash) y verifica coincidencias. Por eso la calidad y el contexto de la lista afectan directamente la probabilidad de éxito.

2) Repositorios y listas clásicas (qué usar y cuándo)

  • Listas distribuidas con Kali: Kali incluye carpetas con múltiples wordlists (dirb, dirbuster, wfuzz, rockyou, etc.). Estas contienen diccionarios para directorios, extensiones, respuestas HTTP y contraseñas comunes. Son un buen punto de partida para pruebas generales.

    RockYou: archivo de contraseñas comprometidas históricamente; imprescindible para pruebas offline y ataques de credenciales realistas. Descomprime antes de usar (gzip -d /usr/share/wordlists/rockyou.txt.gz).

  • Seclists, Assetnote, PacketStorm y GitHub: repositorios actualizados y especializados (subdominios, payloads, fuzzers específicos). Buen recurso cuando necesitas listas recientes o dirigidas a un framework.


3) Limpieza y optimización (no siempre más es mejor)

En entornos reales no es deseable lanzar listas gigantescas sin criterio: puede causar impacto en el servicio y generar ruido excesivo. Es habitual limpiar y optimizar:

  • Eliminar entradas con caracteres ruidosos o muy largas.

  • Reducir duplicados y agrupar variaciones comunes.

  • Aplicar filtros por longitud y por probabilidad (priorizar entradas “humanas”).

Existen scripts y utilidades para esto (por ejemplo, clean_wordlists.sh) que remueven ruido y normalizan las listas. Limpiar una lista mejora la eficiencia y reduce la posibilidad de causar DoS accidental.


4) Generación de wordlists a la medida: herramientas y ejemplos

Cuando las listas genéricas no bastan, conviene crear wordlists contextualizadas. Aquí tienes herramientas esenciales y ejemplos de uso:

a) CeWL — extraer palabras desde un sitio web

CeWL rastrea un site y genera palabras a partir del contenido. Muy útil para crear diccionarios contextuales de empresa (nombres de productos, apellidos, tecnicismos).

Ejemplo:

# spider del dominio example.com a profundidad 2,
# extrae palabras y guarda en cewl.txt
cewl -d 2 -m 4 -w cewl.txt https://example.com
  • -d 2: profundidad de spidering.

  • -m 4: palabra mínima de 4 caracteres.
    Salida: cewl.txt lista para usar con John/Hashcat o como base de reglas.

b) Crunch — generar combinaciones

Crunch genera todas las combinaciones posibles según un set de caracteres y longitudes definidas. Útil cuando sospechas contraseñas muy cortas o con patrones simples.

Ejemplo:

# generar todas las combinaciones de min 4 y max 6 caracteres
# con letras minusculas y números, y guardar en crunch.txt
crunch 4 6 abcdefghijklmnopqrstuvwxyz0123456789 -o crunch.txt

Usa con cautela — el resultado crece exponencialmente.

c) CUPP / BEWGor / Bopscrk — basadas en información personal

Estas herramientas generan listas a partir de datos biográficos del objetivo (fechas, nombres, mascotas, hobbies). Muy potentes en engagement dirigido (targeted attacks). Ejemplo con CUPP (modo interactivo):

cupp.py -i
# respuesta interactiva: nombre, cumpleaños, mascotas...
# output -> cupp_out.txt

BEWGor ofrece variaciones extras (mayúsculas, reversos, límites de longitud) que aumentan la cobertura.

d) Pydictor / Mentalist — generación avanzada y reglas

  • Pydictor permite combinaciones y reglas complejas.

  • Mentalist es una GUI que construye cadenas por nodos y puede crear reglas compatibles con Hashcat/John para no generar físicamente listas enormes. Esto es clave cuando la lista potencial es enorme: generas reglas que Hashcat aplicará dinámicamente.


5) Merging: combinar listas sin ruido

Combinar varias fuentes es frecuente. Herramientas como DyMerge fusionan diccionarios eliminando duplicados y creando una lista compacta.

Ejemplo:

python dymerge.py -o merged.txt list1.txt list2.txt
# merged.txt contendrá entradas únicas en orden optimizado

Así obtienes una lista con mejores probabilidades sin la carga de duplicados.


6) Reglas vs listas físicas: cuándo usar cada enfoque

  • Listas físicas: útiles para pruebas simples, cuando el espacio/tiempo no es un problema.

  • Reglas (Hashcat/John): si la expansión de una lista base genera millones de variantes, es más eficiente definir reglas (mayúsculas, sustituciones, sufijos) que Hashcat puede aplicar on-the-fly. Esto reduce el almacenamiento y acelera el proceso offline. Mentalist puede exportar reglas directamente para Hashcat/John.


7) Ejemplos prácticos: escenarios y comandos reales

A continuación ejemplos concretos que puedes replicar en un laboratorio.

Escenario A — Búsqueda de directorios con wfuzz usando wordlists / extensiones

Objetivo: enumerar URIs y extensiones comunes sin saturar el servidor.

# usar wfuzz con wordlist básica y lista de extensiones
wfuzz -c -w /usr/share/wordlists/wfuzz/general/big.txt -w /usr/share/wordlists/wfuzz/general/extensions_common.txt \
-u https://target/FUZZ -b "session=abcd" --hc 404
  • --hc 404 oculta respuestas 404.

  • Combina big.txt y extensions_common.txt para cubrir nombres + extensiones. Las wordlists de wfuzz están categorizadas (injections, stress, spanish, etc.).

Escenario B — Prueba de credenciales contra un servicio SSH en laboratorio (offline: Hashcat)

  1. Extraer hash (ejemplo: /etc/shadow en lab controlado).

  2. Preparar lista base (rockyou + palabras personalizadas).

  3. Ejecutar Hashcat con regla:

# regla simple: apply rockyou + rule
hashcat -m 1800 -a 0 -r rules/best64.rule hashes.txt /usr/share/wordlists/rockyou.txt

Para grandes transformaciones, exporta reglas desde Mentalist y utilízalas con Hashcat en modo -r.

Escenario C — Contraseñas dirigidas usando CeWL + CUPP

Flujo:

  1. cewl -d 2 -m 4 -w site_words.txt https://empresa.internal

  2. cupp.py -i (recoge detalles públicos) -> cupp_out.txt

  3. Mezclar: cat site_words.txt cupp_out.txt > target_dic.txt

  4. Limpiar: sort -u target_dic.txt > target_dic_clean.txt

  5. Usar con hydra para probar login web (si autorizado):

hydra -L users.txt -P target_dic_clean.txt https-post-form://target/login "username=^USER^&password=^PASS^:F=incorrect"

Este flujo genera listas con alto valor predictivo para usuarios específicos.


8) Buenas prácticas operativas y éticas

  • Respeta el alcance: nunca ejecutes ataques fuera del alcance acordado.

  • Minimiza impacto: usa delays, límites de tasa y listas reducidas en entornos productivos.

  • Registro y documentación: guarda logs y resultados para reproducibilidad.

  • Preferir ataques offline (hashes) cuando sea posible para no afectar servicios.

  • Prioriza MFA y detección: cuando documentes hallazgos, prioriza recomendaciones prácticas (MFA, bloqueo por IP, políticas robustas de contraseña).


9) Checklist rápido para un pentest con wordlists

  1. Recolecta información: web scraping (CeWL), OSINT, perfiles públicos.

  2. Selecciona repositorios: Kali, Seclists, Assetnote, GitHub.

  3. Genera wordlists personalizadas: Crunch, CUPP, Pydictor, Bopscrk.

  4. Limpia y reduce: elimina ruido y duplicados.

  5. Fusiona reglas: DyMerge o reglas dinámicas con Hashcat/John.

  6. Ejecuta en modo seguro: control de tasa y validación de impacto.


10) Práctica

Dominar el uso de wordlists no es solo saber dónde descargarlas: implica saber cómo crearlas, limpiarlas, fusionarlas y aplicarlas con criterio operativo. El uso responsable de estas técnicas permite simular ataques realistas, evaluar la resistencia de sistemas frente a credenciales débiles y demostrar riesgos reales que justifican controles como MFA, políticas de bloqueo y gestores de contraseñas.

Cargando siguiente publicación...
Síguenos
Sidebar Buscar
Loading

Signing-in 3 seconds...

Signing-up 3 seconds...