Ataques a contrasinais
De interese
Substitúe sempre <TARGET>, <USER>, <USERLIST>, <WORDLIST>, <COMBOFILE>, <HASHFILE> polos valores do teu laboratorio.
Exemplos por tipo de ataque
- Password spraying (baixa taxa por usuario, poucos contrasinais, moitos usuarios)
- Diccionario (usuario individual)
- Forza bruta / Mask (formato coñecido) — offline
- Credential stuffing (pares filtrados)
- Form-based web brute (formularios non estándar)
- LDAP / Active Directory (bind attempts)
Índice
- Tipos de ataques comúns
- Taxonomía e vectores
- Ferramentas e exemplos por tipo/protocolo
- Hydra, Medusa, Patator (ataques online)
- John, Hashcat (ataques offline)
- Wordlists recomendadas
- xeración de wordlists
- Créditos e bibliografía
Tipos de ataques comúns
Nesta sección introdúcese a taxonomía dos ataques a contrasinais que se usarán ao longo das prácticas. Para cada tipo indícanse as características principais e os vectores máis comúns.
1. Ataques online (autenticación remota)
Ataques que interactúan directamente co servizo de autenticación (SSH, RDP, FTP, IMAP, SMTP, HTTP forms, LDAP, etc.). Exemplos: forza bruta, diccionario, password spraying, credential stuffing.
Detectables mediante mecanismos de limitación de intentos (limitación de frecuencia de login) e logs de autenticación do sistema.
2. Ataques offline (sobre hashes)
Ataques que operan sobre ficheiros de hashes (obtidos legalmente no laboratorio): dictionary + rules, mask attacks, GPU‑accelerated cracking, rainbow tables.
Non implican interacción co servizo en produción.
3. Ataques por formulación / parsing avanzado
Ataques sobre formularios web non estándar que requiren parseo de respostas (HTML/JSON) e xestión de tokens (CSRF).
Usan ferramentas con capacidades flexibles de extracción de patróns de fallo.
4. Password spraying
Probar poucos contrasinais comúns contra moitos usuarios para evitar bloqueo por conta. Baixa taxa por usuario; útil en entornos con bloqueo agresivo.
Password spraying vs forza bruta
O password spraying consiste en probar poucos contrasinais contra moitos usuarios para evitar bloqueos por intentos fallidos. Se se proban moitos contrasinais contra un só usuario (ou moi poucos), iso xa non é password spraying, senón forza bruta dirixida por usuario.
5. Credential stuffing
Empregar listas de parellas user:pass obtidas doutras exposicións de credenciais para probar acceso en novos servizos. A chave é a reutilización das contrasinais polos usuarios.
6. Ataques específicos de vectores
- Wi-Fi PSK cracking: captura de handshake + cracking offline.
- APIs/Token guessing: comprobación de endpoints REST (JWTs, Bearer tokens).
- IoT / telnet / HTTP embebido: comprobación de credenciais por defecto.
Taxonomía e vectores
| Tipo de ataque | Vector(s) comúns | Ferramentas exemplificativas |
|---|---|---|
| Password spraying | SSH, RDP, HTTP form, LDAP | hydra |
| Diccionario (online) | SSH, FTP, SMTP, HTTP form | hydra |
| Forza bruta (mask) | Hashes offline, servizos en liña limitados | hashcat, john, hydra |
| Credential stuffing | HTTP, FTP, SSH, APIs | hydra, scripts |
| Offline cracking | Ficheiros de hashes | john, hashcat, CrackStation |
| Form-based brute | HTTP POST/JSON endpoints | hydra |
CrackStation
Aínda que CrackStation funciona a través dunha páxina web, segue sendo un método de ataque offline no contexto do pentesting. Isto débese a que o hash se procesa fóra do sistema obxectivo e non se realizan intentos de autenticación contra o servizo real, evitando bloqueos de contas e rexistros sospeitosos.
Ferramentas e exemplos por tipo/protocolo
Convencións:
<TARGET>: IP/hostname da VM de laboratorio (ex.:192.168.56.120)<USER>: usuario individual (ex.:xurxo)<USERLIST>: ficheiro con usuarios (un por liña)<WORDLIST>: ficheiro de contrasinais (ex.:rockyou.txt)<COMBOFILE>: ficheirouser:pass(credential stuffing)<HASHFILE>: ficheiro con hashes para cracking offline
Ataques online — multi-protocolo
SSH (diccionario contra un usuario ou varios usuarios):
- Hydra:
hydra -l <USER> -P /labs/wordlists/<WORDLIST> -t 4 -s 22 ssh://<TARGET>
hydra -L <USERLIST> -P /labs/wordlists/<WORDLIST> -t 4 -s 22 ssh://<TARGET>
FTP (credential stuffing con combo file user:pass):
- Hydra:
HTTP form (login via POST; especificar string de erro):
- Hydra:
hydra -L /labs/users.txt -P /labs/wordlists/common.txt \
http-post-form://<TARGET>/login:"username=^USER^&password=^PASS^:Login failed"
LDAP bind attempts (diccionario):
Que son os LDAP bind attempts?
En LDAP, un bind é unha operación de autenticación utilizada para establecer unha sesión válida co servidor. Polo tanto, un LDAP bind attempt é simplemente un intento de login LDAP. Ferramentas como Hydra realizan ataques de diccionario mediante múltiples bind attempts, probando parellas usuario-contrasinal ata atopar unha válida.
- Hydra:
Password spraying (exemplo SSH con baixa taxa — mesmo enfoque en varias ferramentas):
- Hydra:
John the Ripper (offline — diccionario + regras / incremental)
Detección de formatos e listaxe:
Diccionario + regras para ficheiro de hashes:
Modo incremental (forza bruta controlada):
Mostrar contrasinais recuperados:
Hashcat (offline GPU/CPU — dictionary, mask, hybrid)
Dictionary attack (NTLM, -m 1000):
Mask attack (exemplo: 2 maiúsculas + 4 letras + 2 díxitos):
Hybrid (wordlist + mask):
Wordlists recomendadas
De interese
Nesta sección recóllense algúns dos dicionarios máis empregados en tarefas de pentesting, auditoría de contrasinais e probas de autenticación. Estas wordlists son útiles tanto para forza bruta como para ataques híbridos, password spraying ou análises máis avanzadas.
1. rockyou
O famoso dicionario rockyou.txt procede dunha das maiores exposicións de contrasinais reais. É un dos máis utilizados debido á variedade e alta prevalencia de patróns que contén.
Ven preinstalada en Kali Linux (comprimida en /usr/share/wordlists/).
Recomendación importante sobre o uso de rockyou.txt
Moitas plataformas de prácticas, como VulnYx, establecen límites para evitar ataques excesivos.
Segundo as súas normas oficiais:
“If brute force is required, do not use a password that exceeds the first 5000 lines of rockyou.txt.”
Fonte: VulnYx Rules
Isto significa que para desafíos educativos ou laboratorios similares, é recomendable empregar as primeiras 5000 liñas ou unha versión filtrada de rockyou.txt para evitar tempos de espera longos e manter prácticas controladas.
Ligazóns oficiais
- RockYou wordlist en Kali Linux: https://www.kali.org/tools/wordlists/
- Paquete "wordlists": https://gitlab.com/kalilinux/packages/wordlists
2. Kaonashi
Kaonashi é unha colección masiva e estruturada de wordlists xeradas e compiladas a partir de múltiples fontes públicas. Inclúe listas específicas por idioma, patrón, categoría e uso.
Ligazón oficial
- Kaonashi Passwords: https://github.com/kaonashi-passwords/Kaonashi
3. SecLists
SecLists é un dos repositorios máis completos para probas de seguridade. Inclúe listas para:
- Usuarios e contrasinais
- Directorios e rutas web
- Payloads
- Nombres de hosts
- Fuzzing
- Ataques comúns
É un estándar de facto en pentesting e forma parte da instalación por defecto de moitas distros orientadas a seguridade.
Ligazón oficial
- SecLists Repository: https://github.com/danielmiessler/SecLists
4. Wordlists de Kali Linux (/usr/share/wordlists)
Kali Linux inclúe unha colección ampla de wordlists preinstaladas no directorio:
Aquí atoparás:
- rockyou.txt (comprimido por defecto)
- SecLists (opcional mediante
apt install seclists) - Listas para WFuzz, Dirbuster e máis ferramentas
- Dicionarios temáticos para IEEE, ciberseguridade, linguas, etc.
Ligazón oficial
| Wordlist | Tamaño aproximado | Uso recomendado | Vantaxes | Inconvenientes |
|---|---|---|---|---|
| rockyou.txt | ~14M entradas | Ataques rápidos, probas comúns | Alto éxito en contrasinais reais | Moitas entradas redundantes |
| Kaonashi | moi grande (centos de MB/GB) | Ataques máis profundos, auditorías profesionais | Estruturado por categorías | Pode ser excesivo para prácticas |
| SecLists | variable | Web, redes, fuzzing, AD | Colección máis completa | Require saber que lista usar |
| /usr/share/wordlists | variable | Ataques rápidos en Kali | Wordlists dispoñibles de inmediato | Pode faltar variedade avanzada |
Boas prácticas ao empregar wordlists
- Usa versións curtas cando esteas probando servizos sensibles a bloqueo (SSH, RDP, VPN).
- Comeza sempre con rockyou filtrado, xa que adoita ofrecer un bo equilibrio entre velocidade e efectividade.
- Para auditorías completas, combina SecLists + Kaonashi para cubrir máis casos reais.
- Lembra que wordlists enormes poden ser lentas en ferramentas como Hydra ou Medusa; para Hashcat e John adoitan rendir mellor.
Xeración de Wordlists
De interese
En moitas ocasións, as wordlists xenéricas non son suficientes para comprometer contrasinais específicas dun obxectivo. A xeración de wordlists personalizadas permite crear dicionarios adaptados ao contexto da vítima, aumentando significativamente as probabilidades de éxito.
1. CeWL (Custom Word List generator)
Instalación e execución en Kali Linux
CeWL ven preinstalado en Kali Linux e pode executarse directamente desde a terminal:
CeWL é unha ferramenta que extrae palabras de sitios web para crear wordlists personalizadas. É especialmente útil cando se busca información específica do obxectivo (nomes de produtos, terminoloxía da empresa, etc.).
Características principais:
- Extrae palabras de páxinas web mediante spidering
- Admite configuración de profundidade de rastrexo
- Pode seguir ligazóns externas
- Permite establecer lonxitude mínima/máxima de palabras
- Admite autenticación básica e digest
Exemplos de uso:
Extracción básica dunha web:
Extracción con profundidade e lonxitude mínima:
cewl http://<TARGET> -d 3 -m 6 -w /labs/wordlists/custom_deep.txt
# -d 3: profundidade de 3 niveis
# -m 6: palabras de mínimo 6 caracteres
Extracción con autenticación:
Extraer emails ademais de palabras:
cewl http://<TARGET> -e -w /labs/wordlists/words.txt -n /labs/wordlists/emails.txt
# -e: activa extracción de emails
# -n: ficheiro para gardar emails
Seguir ligazóns externas:
Boas prácticas con CeWL
- Combina CeWL con regras de John the Ripper ou Hashcat para xerar variantes
- Usa
-m 8para filtrar palabras curtas e reducir o tamaño da wordlist - Para sitios grandes, limita a profundidade (
-d 2ou-d 3) para evitar listas excesivamente longas
2. Crunch (Pattern-based wordlist generator)
Instalación e execución en Kali Linux
Crunch ven preinstalado en Kali Linux e pode executarse directamente desde a terminal:
Crunch é unha ferramenta para xerar wordlists baseadas en patróns específicos. É ideal cando coñeces a estrutura ou formato do contrasinal obxectivo.
Características principais:
- Xera wordlists con lonxitude específica
- Admite patróns personalizados con caracteres especiais
- Permite especificar conxuntos de caracteres (maiúsculas, minúsculas, números, símbolos)
- Pode xerar listas enormes (varios GB) directamente ou mediante pipe
Sintaxe básica:
Exemplos de uso:
Xerar wordlist de 4 a 6 caracteres (minúsculas):
Xerar wordlist só con números (PINs de 4 díxitos):
Usar patrón específico (2 letras + 4 números):
crunch 6 6 -t @@%%%% -o /labs/wordlists/pattern.txt
# @: minúscula
# ,: maiúscula
# %: número
# ^: símbolo
Xerar variantes dunha palabra base:
crunch 8 8 -t Password@% -o /labs/wordlists/password_variants.txt
# Xerará: Password@0, Password@1, ..., Password@9
Usar charset personalizado:
Xerar e enviar directamente a unha ferramenta (sen crear ficheiro):
Limitar o tamaño do ficheiro de saída:
Avisos importantes sobre Crunch
- As wordlists poden ser ENORMES. Por exemplo,
crunch 8 8con alfanuméricos xera centos de GB. - Sempre estima o tamaño antes usando a opción
-c(count) sen-o: - Considera usar pipes para evitar crear ficheiros masivos no disco.
3. CUPP (Common User Passwords Profiler)
Instalación e execución en Kali Linux
CUPP require instalación manual mediante git:
Para crear alias permanente e facilitar o uso:
CUPP é unha ferramenta interactiva que xera wordlists personalizadas baseándose en información persoal da vítima (nome, data de nacemento, mascota, etc.). É moi efectiva en ataques de enxeñería social e contextos onde os usuarios empregan información persoal nas súas contrasinais.
Características principais:
- Modo interactivo con preguntas guiadas
- Xera variantes automáticas (maiúsculas, números ao final, etc.)
- Admite modo non interactivo con ficheiros de configuración
- Pode descargar wordlists comúns desde internet
Exemplos de uso:
Modo interactivo (recomendado para principiantes):
cupp -i
# Responde as preguntas sobre a vítima:
# - Nome, apelidos
# - Mascota
# - Data de nacemento
# - Palabras clave
# - Etc.
Descargar wordlists comúns de referencia:
Xerar wordlist desde ficheiro de configuración:
Exemplo de perfil persoal (información recollida):
Supoñamos que sabemos o seguinte dunha vítima:
- Nome: María
- Apelidos: González López
- Mascota: Luna
- Data de nacemento: 15/03/1985
- Hobby: tenis
CUPP xerará variantes como:
Información útil para CUPP
Recollendo información de OSINT (redes sociais, LinkedIn, blogs persoais) pódese obter datos moi útiles:
- Nomes de familiares e mascotas
- Datas relevantes (aniversarios, graduacións)
- Equipos deportivos favoritos
- Lugares visitados
- Hobbies e intereses
Táboa comparativa de ferramentas
| Ferramenta | Tipo de xeración | Mellor uso | Vantaxes | Inconvenientes |
|---|---|---|---|---|
| CeWL | Extracción web | Recoller vocabulario do obxectivo | Personalización alta | Dependente da calidade do sitio |
| Crunch | Patróns e combinacións | Contrasinais con estrutura coñecida | Flexible, rápida | Pode xerar ficheiros masivos |
| CUPP | Perfil de vítima | Enxeñería social | Moi efectiva con OSINT | Require información previa |
Workflow recomendado para xeración de wordlists
- OSINT e recopilación: Identifica información sobre o obxectivo (nomes, datas, intereses, páxinas web).
- Extracción con CeWL: Xera unha wordlist base desde o sitio web do obxectivo.
- Perfilado con CUPP: Crea variantes baseadas en información persoal (se dispoñible).
- Patróns con Crunch: Se coñeces a estrutura do contrasinal (ex: 2 letras + 4 números), xera combinacións específicas.
- Combinacións con Pydictor: Combina palabras base con regras avanzadas, datas, sufixos comúns, etc.
- Optimización final: Elimina duplicados e ordea por probabilidade:
Exemplo práctico completo
Supoñamos que estamos auditando unha empresa chamada TechCorp e identificamos un usuario chamado xan.perez cunha mascota chamada Max e data de nacemento 1990.
# Paso 1: Extraer palabras da web da empresa
cewl https://techcorp.com -d 2 -m 6 -w /tmp/techcorp_words.txt
# Paso 2: Xerar perfil con CUPP (saída: xan.txt)
cupp -i
# Nome: Xan
# Apelidos: Perez
# Mascota: Max
# Ano nacemento: 1990
# (saída: xan.txt)
# Paso 3: Xerar sufixos numéricos con Crunch
crunch 1 4 0123456789 -o /tmp/numbers.txt
# Paso 4: Combinar palabras base (CeWL + CUPP) con sufixos numéricos (Crunch)
while read word; do
while read suf; do
echo "${word}${suf}"
done < /tmp/numbers.txt
done < <(cat /tmp/techcorp_words.txt xan.txt) > /tmp/final_wordlist.txt
# Paso 5: Eliminar duplicados e xerar o dicionario final
sort -u /tmp/final_wordlist.txt -o /labs/wordlists/techcorp_audit.txt
# Paso 6: Probar o dicionario contra SSH con Hydra
hydra -l xan.perez -P /labs/wordlists/techcorp_audit.txt ssh://<TARGET>
Créditos e bibliografía
-
Documentación oficial ferramentas: