tutoriales.com

Crackeo de Contraseñas con Hashcat: Una Guía Esencial para Hacking Ético

Este tutorial profundiza en el arte del crackeo de contraseñas utilizando Hashcat, una herramienta líder en hacking ético. Exploraremos desde la configuración inicial hasta técnicas avanzadas como ataques de diccionario, fuerza bruta, reglas de máscara y optimización de rendimiento, proporcionando una guía práctica para auditar la robustez de las contraseñas.

Intermedio20 min de lectura13 views
Reportar error

El crackeo de contraseñas es una habilidad fundamental en el arsenal de cualquier hacker ético y profesional de la ciberseguridad. No se trata de actividades maliciosas, sino de identificar y evaluar la fortaleza de las contraseñas dentro de una organización para fortalecer sus defensas. En este tutorial, nos enfocaremos en Hashcat, la utilidad de recuperación de contraseñas más rápida y avanzada del mundo.

Hashcat es una herramienta de código abierto que soporta una amplia gama de algoritmos de hash y modos de ataque, aprovechando la potencia de las GPU para acelerar significativamente el proceso de crackeo. Su dominio es crucial para realizar auditorías de seguridad exhaustivas y penetrar sistemas de manera controlada para evaluar vulnerabilidades.

¿Qué es Hashcat y por qué es importante? 🎯

Hashcat es un cracker de contraseñas de propósito general que puede descifrar hashes de diferentes tipos utilizando una variedad de métodos de ataque. A diferencia de otras herramientas que solo utilizan la CPU, Hashcat está diseñado para maximizar el uso de GPU, lo que lo hace increíblemente rápido. Esto es vital en el hacking ético porque permite a los profesionales probar la resiliencia de las contraseñas de los usuarios ante ataques de fuerza bruta o diccionario en un tiempo razonable.

"Conocer a tu enemigo es el primer paso para derrotarlo." En ciberseguridad, esto significa entender cómo un atacante podría intentar comprometer tus sistemas, incluyendo el crackeo de contraseñas.

Modos de Ataque Soportados por Hashcat

Hashcat ofrece una flexibilidad impresionante con sus múltiples modos de ataque, cada uno diseñado para un escenario específico:

  • Ataque de Diccionario (Dictionary Attack): El más común, intenta contraseñas de una lista precompilada (diccionario).
  • Ataque de Fuerza Bruta (Brute-Force Attack): Prueba todas las combinaciones posibles de caracteres hasta encontrar la contraseña.
  • Ataque de Máscara (Mask Attack): Una forma optimizada de fuerza bruta, donde se especifican las posiciones de caracteres conocidos o tipos de caracteres.
  • Ataque Híbrido (Hybrid Attack): Combina ataques de diccionario con ataques de máscara, añadiendo prefijos/sufijos a las palabras del diccionario.
  • Ataque de Reglas (Rule-Based Attack): Aplica reglas de modificación (mayúsculas, números, símbolos) a las palabras de un diccionario.
  • Ataque de Toggle (Toggle-Case Attack): Alterna mayúsculas/minúsculas en palabras del diccionario.

Instalación y Configuración Inicial de Hashcat 🛠️

Hsashcat es multiplataforma y funciona en Linux, Windows y macOS. Para este tutorial, asumiremos un entorno Linux (como Kali Linux), que es el preferido en el ámbito del hacking ético.

Requisitos del Sistema

Antes de empezar, asegúrate de tener lo siguiente:

  • GPU compatible: NVIDIA (con controladores CUDA) o AMD (con controladores ROCm/OpenCL). Sin una GPU potente, Hashcat será significativamente más lento.
  • Controladores gráficos actualizados: Es crucial tener los últimos controladores para tu tarjeta gráfica.
  • Sistema operativo: Linux (recomendado), Windows o macOS.

Instalación en Linux (Kali Linux)

En Kali Linux, Hashcat suele venir preinstalado. Si no es así, o quieres actualizarlo, puedes usar los siguientes comandos:

sudo apt update
sudo apt install hashcat

Para verificar la instalación y los dispositivos compatibles, ejecuta:

hashcat -I

Este comando mostrará información sobre tus dispositivos de computación (CPU y GPU) que Hashcat puede utilizar.

💡 Consejo: Asegúrate de que tu GPU aparezca y esté marcada como 'OpenCL compatible' o 'CUDA compatible'. Si no, revisa la instalación de tus controladores gráficos.

Preparando tu Entorno

Necesitarás los siguientes recursos:

  1. Archivos de hash: Contraseñas hasheadas que quieres crackear. Por ejemplo, hashes de NTLM, SHA1, MD5, etc.
  2. Archivos de diccionario: Listas de palabras comunes. Puedes descargar diccionarios populares como rockyou.txt.
  3. Reglas de Hashcat (opcional): Archivos de reglas para modificar palabras de diccionario.

Entendiendo los Tipos de Hash y sus Identificadores 📖

Hashcat necesita saber el tipo de hash que estás intentando crackear. Cada tipo de hash tiene un identificador numérico único. Puedes encontrar una lista completa en la documentación oficial de Hashcat.

Algunos ejemplos comunes:

Tipo de HashIdentificadorDescripción
---------
MD50Algoritmo de hash criptográfico ampliamente obsoleto
SHA1100Otro algoritmo obsoleto, pero aún encontrado
---------
NTLM1000Hash de contraseña de Windows
oFTP1200Hash de contraseñas de servidor FTP
---------
SHA2561400Una de las funciones hash seguras
WPA/WPA22500Handshakes de Wi-Fi
---------
bcrypt3200Hash robusto para contraseñas
Kerberos 5 TGS7500Hashes de tickets de Kerberos
---------
Active Directory11000Hashes de usuarios de Active Directory
⚠️ Advertencia: El uso de hashes MD5 y SHA1 es altamente desaconsejable para nuevas implementaciones debido a sus debilidades criptográficas.

Para identificar un hash desconocido, puedes usar la herramienta hash-identifier o la propia función de auto-detección de Hashcat (hashcat -m <mode> --identify). Sin embargo, es mejor conocer el tipo de hash de antemano para una mayor precisión.


Ataques de Diccionario: El Primer Paso ✅

El ataque de diccionario es la forma más común y a menudo la más exitosa de crackear contraseñas, ya que muchas personas usan palabras comunes o predecibles.

Preparación del Archivo de Hash

Imaginemos que tenemos un archivo llamado hashes.txt con hashes NTLM (tipo de hash 1000):

user1:e99a18c428df1c03f500130541744158
user2:d3d9446802a44259755d38e6d1633e60

Ejecutando un Ataque de Diccionario Básico

Para lanzar un ataque de diccionario, usarás la opción -a 0 (modo de ataque de diccionario) y -m <hash_type>. Aquí un ejemplo con rockyou.txt:

hashcat -a 0 -m 1000 hashes.txt rockyou.txt
  • -a 0: Modo de ataque de diccionario.
  • -m 1000: Tipo de hash NTLM.
  • hashes.txt: Archivo que contiene los hashes a crackear.
  • rockyou.txt: El diccionario a utilizar.
📌 Nota: Los resultados de las contraseñas crackeadas se guardan automáticamente en un archivo de salida (`hashcat.potfile` por defecto) o pueden verse en la consola con la opción `--show` una vez finalizado el proceso.

Optimizando el Ataque de Diccionario con Reglas ✨

Las reglas de Hashcat permiten modificar dinámicamente las palabras del diccionario, aumentando significativamente las posibilidades de éxito sin aumentar masivamente el tamaño del diccionario. Las reglas se almacenan en archivos de texto, como best64.rule o rockyou-30000.rule.

hashcat -a 0 -m 1000 hashes.txt rockyou.txt -r rules/best64.rule
  • -r rules/best64.rule: Aplica las reglas definidas en best64.rule a cada palabra del diccionario.

Las reglas pueden hacer transformaciones como:

  • Convertir a mayúsculas (u)
  • Convertir a minúsculas (l)
  • Capitalizar la primera letra (c)
  • Añadir números o símbolos al final/principio ($1, ^!, etc.)
  • Sustituir caracteres (s$ @, s o 0)
Ejemplo de algunas reglas comunes
: # No rule (use word as is)
l # To lower
u # To upper
c # Capitalize
$1 # Append 1
$! # Append !
saA # Replace 'a' with 'A'
s $!

Ataques de Máscara y Fuerza Bruta: Cuando el Diccionario No es Suficiente 💥

Cuando los ataques de diccionario fallan, es hora de recurrir a los ataques de máscara o fuerza bruta. Estos son más lentos pero potencialmente más exhaustivos.

Ataque de Máscara (Mask Attack)

El ataque de máscara (-a 3) es ideal cuando tienes alguna pista sobre la estructura de la contraseña. Utiliza conjuntos de caracteres para definir la máscara:

  • ?l: Letras minúsculas (a-z)
  • ?u: Letras mayúsculas (A-Z)
  • ?d: Dígitos (0-9)
  • ?s: Símbolos (!@#$%^&*()...)
  • ?a: Todos los caracteres imprimibles (?l?u?d?s)
  • ?h: Caracteres hexadecimales minúsculas (0-9a-f)
  • ?H: Caracteres hexadecimales mayúsculas (0-9A-F)

También puedes definir conjuntos de caracteres personalizados usando --custom-charset1, --custom-charset2, etc. (?1, ?2).

Ejemplo: Crackear una contraseña de 8 caracteres que sabemos que empieza con 'P' y termina con 'ss' y el resto son 5 letras minúsculas:

hashcat -a 3 -m 1000 hashes.txt P?l?l?l?l?lss

Ejemplo: Una contraseña de 6 dígitos numéricos:

hashcat -a 3 -m 1000 hashes.txt ?d?d?d?d?d?d
🔥 Importante: Los ataques de máscara son computacionalmente intensivos. Una máscara demasiado amplia puede llevar años o décadas para completarse, incluso con GPU potentes. Sé lo más específico posible.

Ataque de Fuerza Bruta Pura (Full Brute-Force)

Aunque Hashcat ofrece el modo de ataque de máscara, un ataque de fuerza bruta pura (probar absolutamente todas las combinaciones) es raramente práctico debido al inmenso espacio de claves. Hashcat no tiene un modo -a específico para 'fuerza bruta pura' en el sentido clásico, ya que el ataque de máscara es su implementación optimizada de fuerza bruta.

Si quisieras simular una fuerza bruta 'pura' de 8 caracteres alfanuméricos y símbolos, tendrías que usar una máscara como ?a?a?a?a?a?a?a?a. Esto ilustra por qué la fuerza bruta es solo teóricamente posible para contraseñas cortas y simples.

Inicio ¿Contraseña en Diccionario? Ataque Diccionario No ¿Pistas de la estructura? Ataque de Máscara No Fuerza Bruta (muy lento)

Ataques Híbridos: Combinando Estrategias 🤝

Los ataques híbridos son una forma poderosa de combinar la velocidad del diccionario con la flexibilidad de la máscara.

Híbrido Diccionario + Máscara (-a 6)

Este modo toma palabras de un diccionario y les añade una máscara al final.

Ejemplo: nombre?d?d?d (ej: nombre123)

hashcat -a 6 -m 1000 hashes.txt rockyou.txt ?d?d?d
  • -a 6: Modo de ataque híbrido de diccionario + máscara.
  • rockyou.txt: El diccionario.
  • ?d?d?d: La máscara que se añadirá a cada palabra del diccionario.

Híbrido Máscara + Diccionario (-a 7)

Este modo toma una máscara y le añade palabras de un diccionario al final.

Ejemplo: ?l?l?lverano (ej: abcverano)

hashcat -a 7 -m 1000 hashes.txt ?l?l?l rockyou.txt
  • -a 7: Modo de ataque híbrido de máscara + diccionario.
  • ?l?l?l: La máscara que se formará.
  • rockyou.txt: El diccionario que se añadirá a la máscara.

Los ataques híbridos son muy efectivos para contraseñas que combinan palabras comunes con números o símbolos, como contraseña2023 o Invierno!.


Optimización del Rendimiento y Consideraciones Adicionales 🚀

El rendimiento es clave en el crackeo de contraseñas. Aquí hay algunos consejos para optimizar Hashcat:

Parámetros Esenciales para el Rendimiento

  • -w <level> (Workload Profile): Controla el uso de recursos de la GPU. Valores de 1 a 4. 3 es el predeterminado, 4 para máxima potencia (puede hacer el sistema menos reactivo), 1 para uso ligero.
hashcat -a 0 -m 1000 hashes.txt rockyou.txt -w 4
  • --opencl-device-types <types>: Selecciona qué tipos de dispositivos usar (1=CPU, 2=GPU, 3=GPU+CPU). Por defecto usa GPU.
hashcat -a 0 -m 1000 hashes.txt rockyou.txt --opencl-device-types 2
  • --opencl-vector-width <vec>: Puede impactar el rendimiento en algunas GPU. Experimenta si no estás obteniendo el rendimiento esperado.
  • --session <name>: Permite pausar y reanudar sesiones de crackeo. Es extremadamente importante para ataques largos.
hashcat -a 0 -m 1000 hashes.txt rockyou.txt --session my_crack_session
# Para pausar: Presiona 's'
# Para reanudar: hashcat --session my_crack_session --restore

Gestión de Diccionarios y Reglas

  • Combinar diccionarios: Fusiona varios diccionarios pequeños en uno grande para un ataque más exhaustivo.
cat dictionary1.txt dictionary2.txt | sort -u > combined.txt
  • Crear diccionarios personalizados: Genera diccionarios basados en información de la organización objetivo (nombres de empleados, productos, fechas, etc.).
  • Reglas de permutación: Explora el directorio rules/ de Hashcat para reglas avanzadas. Puedes incluso crear las tuyas.

Monitorización y Control

Durante un ataque, Hashcat muestra información en tiempo real sobre el progreso, la velocidad y las contraseñas crackeadas. Puedes usar las siguientes teclas para interactuar:

  • s: Muestra el estado y la velocidad actual.
  • p: Pausa la sesión.
  • r: Reanuda la sesión.
  • q: Termina la sesión y guarda el estado.
90% Optimización

Salted Hashes vs. Unsalted Hashes

Algunos tipos de hash (como MD5 o SHA1 sin salt) son muy vulnerables a ataques de diccionario y Rainbow Tables porque el mismo texto plano siempre produce el mismo hash. Los salted hashes (hashes salados), donde se añade un valor aleatorio (salt) a la contraseña antes de hashearla, hacen que cada hash sea único, incluso para la misma contraseña. Esto dificulta enormemente los ataques de Rainbow Table y requiere que Hashcat crackee cada hash individualmente. Hashcat gestiona los salts automáticamente si el tipo de hash lo soporta.


Ética y Legalidad en el Crackeo de Contraseñas ⚖️

Es crucial recordar que el crackeo de contraseñas, si se realiza sin autorización explícita, es una actividad ilegal y poco ética. Este tutorial se proporciona con fines educativos para profesionales de la ciberseguridad que buscan:

  • Auditar la seguridad: Evaluar la fortaleza de las políticas de contraseñas de una organización.
  • Recuperar contraseñas perdidas: Ayudar a usuarios legítimos a recuperar el acceso a sus cuentas (con la debida autorización).
  • Educación e investigación: Entender las metodologías de ataque para desarrollar mejores defensas.
⚠️ Advertencia: Nunca utilices Hashcat o cualquier otra herramienta de hacking en sistemas, redes o datos para los que no tengas permiso explícito y por escrito. Las consecuencias legales pueden ser graves.

Conclusión y Próximos Pasos 🎉

Dominar Hashcat es una habilidad poderosa que te permitirá evaluar la robustez de las contraseñas y, por extensión, la seguridad general de los sistemas. Hemos cubierto los fundamentos, desde la instalación y configuración hasta los diferentes modos de ataque y técnicas de optimización.

El crackeo de contraseñas es una carrera de armamentos constante. Mantente actualizado con las últimas técnicas, herramientas y diccionarios. Practica en entornos controlados y con los permisos adecuados.

Próximos Pasos Sugeridos:

  1. Explorar más tipos de hash: Experimenta con otros tipos de hash que Hashcat soporta.
  2. Crear tus propias reglas: Desarrolla reglas personalizadas para ataques de diccionario y prueba su efectividad.
  3. Investigar ataques avanzados: Profundiza en ataques de prince (probabilistic context-free grammar) o combinator.
  4. Estudiar la seguridad de las contraseñas: Aprende sobre almacenamiento seguro de contraseñas, hashing adecuado y salting.
Paso 1: Revisa la documentación oficial de Hashcat para más detalles sobre modos de ataque y opciones.
Paso 2: Descarga diccionarios más grandes y actualizados como `crackstation-human-only.txt`.
Paso 3: Configura un laboratorio virtual (como una VM con hashes de prueba) para practicar de forma segura.

¡Sigue practicando y mejorando tus habilidades en ciberseguridad! El mundo digital te espera.

Tutoriales relacionados

Comentarios (0)

Aún no hay comentarios. ¡Sé el primero!