¿Qué es Hashcat y cómo funciona?

¿Cuántas veces hemos olvidado la contraseña de una aplicación en particular? Además, alguna vez te has preguntado por qué la mayoría de las aplicaciones insisten en tener mayúsculas, minúsculas, un carácter especial y un número. Es para reducir la vulnerabilidad de la contraseña a los piratas informáticos. El descifrado de contraseñas es una de las formas comunes de piratear ilegalmente la información segura de una persona. Por tanto, se necesita una herramienta para defender el mismo. Esa es la razón por la que se introdujo Hashcat. Es una aplicación para descifrar contraseñas para comprobar la seguridad de tu contraseña. Alternativamente, también se le llama herramienta de recuperación de contraseña.

Aquí tienes todo lo que debes saber sobre Hashcat, qué es, cómo funciona, cómo usarla y ejemplos.

¿Qué es Hashcat?

Hashcat es un descifrador de contraseñas popular y eficaz ampliamente utilizado tanto por probadores de penetración como por administradores de sistemas, así como por delincuentes y espías.

Descifrar contraseñas es diferente de adivinar una contraseña de inicio de sesión web, que generalmente solo permite una pequeña cantidad de conjeturas antes de bloquear su cuenta. En cambio, alguien que haya obtenido acceso a un sistema con contraseñas cifradas («hashes») a menudo intentará descifrar esos hashes para recuperar esas contraseñas.

Las contraseñas ya no se almacenan en texto plano. En cambio, las contraseñas se cifran mediante una función unidireccional llamada hash. Calcular una contraseña como «Password1» en un hash es muy rápido. Un ataque de fuerza bruta para revertir la función hash y recuperar la contraseña podría ser computacionalmente inviable.

Afortunada o desafortunadamente, dependiendo de tu punto de vista, es probable que ninguno de nosotros viva tanto tiempo, pero hay muchas formas de revertir un hash para recuperar la contraseña original sin recurrir a un ataque de fuerza bruta probablemente infructuoso.

Hashcat convierte los datos legibles en un estado confuso (esta es una cadena aleatoria de tamaño fijo). Los hash no permiten que alguien descifre datos con una clave específica, como lo permiten los protocolos de cifrado estándar. Hashcat utiliza diccionarios precalculados, tablas de arco iris e incluso métodos de fuerza bruta para encontrar una forma eficaz y eficiente de descifrar contraseñas.

Características

Hashcat se puede utilizar en Kali Linux y está preinstalado en el sistema. Posee las siguientes características:

  • Es multiproceso
  • Es multi-hash y multi-OS (binarios nativos de Linux, Windows y OSX).
  • Está basado en múltiples algoritmos (MD4, MD5, SHA1, DCC, NTLM, MySQL, etc.).
  • Todos los modos de ataque se pueden ampliar mediante reglas especializadas.
  • Es posible reanudar o limitar sesiones automáticamente. Reconocen los hash recuperados del archivo de salida al inicio.
  • Puede cargar la lista de sal desde el archivo externo. Esto se puede usar como una variante de ataque de fuerza bruta.
  • El número de subprocesos se puede configurar y ejecutar en función de la prioridad más baja.
  • Admite archivos hex-charset y hex-salt
  • Los más de 90 algoritmos se pueden implementar teniendo en cuenta el rendimiento y la optimización.

Usos

El descifrado de contraseñas tiene muchos usos legítimos, además de los obvios criminales y de espionaje. Un administrador de sistemas puede querer comprobar de forma preventiva la seguridad de las contraseñas de los usuarios. Si hashcat puede descifrarlos, también puede hacerlo un atacante.

Los probadores de penetración en la interacción con frecuencia se encontrarán descifrando hashes de contraseñas robadas para moverse lateralmente dentro de una red, o para escalar privilegios a un usuario administrador. Dado que los probadores de penetración trabajan para encontrar agujeros de seguridad a propósito, bajo contrato, para que sus clientes puedan mejorar su seguridad, este también es un caso de uso perfectamente legítimo.

La conclusión real es que tanto los atacantes ilegales como los defensores legítimos usan hashcat. La mejor manera de evitar que un atacante use hashcat en tu contra es probar tus propias defensas primero para asegurarte de que dicho ataque no tenga éxito.

Dentro de los usos de Hashcat están:

  • Fuerza de una contraseña: Esta herramienta ayuda a los usuarios a verificar la tenacidad de sus contraseñas para aplicaciones importantes y mantener su información segura de los piratas informáticos.
  • Espionaje para transacciones criminales: Si bien los delincuentes lo utilizan para realizar transacciones no autorizadas, puede usarse contra los delincuentes para controlar sus transacciones ilegales. Se puede usar para espiar a cualquier persona que esté bajo el escaneo de actividades delictivas.
  • Prueba y revisión de sistemas de control interno: Las empresas celebran un contrato con probadores de penetración que intentan piratear las contraseñas de las empresas de forma intencionada para comprobar su solidez. Dichos usuarios de penetración ingresan a la red de la empresa para recuperar contraseñas robadas o verificar cualquier agujero en el control interno de contraseñas.

Cómo descifrar hashes

La forma más sencilla de descifrar un hash es intentar primero adivinar la contraseña. Cada intento tiene un hash y luego se compara con el valor hash real para ver si son iguales, pero el proceso puede llevar mucho tiempo.

Los ataques de diccionario y de fuerza bruta son las formas más comunes de adivinar contraseñas. Estas técnicas utilizan un archivo que contiene palabras, frases, contraseñas comunes y otras cadenas que probablemente se utilizarán como una contraseña viable.

Cabe señalar que no existe una forma garantizada de prevenir ataques de diccionario o ataques de fuerza bruta.

Otros enfoques utilizados para descifrar contraseñas son:

  • Tablas de búsqueda: los hash se calculan previamente a partir de un diccionario y luego se almacenan con su contraseña correspondiente en una estructura de tabla de búsqueda.
  • Tablas de búsqueda inversa: este ataque permite que un atacante cibernético aplique un diccionario o un ataque de fuerza bruta a muchos hash al mismo tiempo sin tener que calcular previamente una tabla de búsqueda.
  • Mesas de arco iris: las tablas de arco iris son una técnica de memoria del tiempo. Son similares a las tablas de búsqueda, excepto que sacrifican la velocidad de descifrado de hash para hacer que las tablas de búsqueda sean más pequeñas.
  • Hashing con sal: con esta técnica, los hashes se asignan al azar agregando o anteponiendo una cadena aleatoria, llamada «salt». Esto se aplica a la contraseña antes del hash.

Cómo descifrar una contraseña mediante un ataque de diccionario

En la siguiente sección se presenta una pequeña configuración de laboratorio sobre cómo descifrar una contraseña. Se simulará un ataque de diccionario para un conjunto de hash MD5 inicialmente creado y almacenado en un archivo de destino. Se utilizó la lista de palabras «rockyou» que se encuentra en Kali Linux.

Crea un diccionario con hashes MBD5

Para comenzar esta demostración, crearemos múltiples entradas hash que contienen varias contraseñas.

En detalle, luego se enviarán a un archivo llamado «target_hashes». Cada comando debe ejecutarse en la terminal.

Verifica los valores hash de las contraseñas

Para hacer esto, necesitamos escribir la siguiente línea de comando en la terminal: cat target_hashes.txt.

Inicia Hashcat en Kali Linux

Hashcat se puede iniciar en la consola Kali con la siguiente línea de comando: hashcat -h.

Algunas de las opciones de hashcat más importantes son -m (el tipo de hash) y -a (modo de ataque). En general, necesitamos usar ambas opciones en la mayoría de los intentos de descifrar contraseñas cuando usamos Hashcat.

Hashcat también ha diseñado reglas específicamente para usar en un archivo de lista de palabras. La lista de caracteres se puede personalizar para descifrar las contraseñas.

Finalmente, Hashcat ofrece numerosas opciones para hashes de contraseñas que se pueden descifrar.

Elige la lista de palabras

Kali Linux tiene numerosas listas de palabras integradas. Para encontrarlas, usa la siguiente línea de comando: busca listas de palabras.

Ahora se utiliza la lista de palabras «rockyou», como se ilustra a continuación: root @ kali: ~ / Desktop # ubicar rockyou.txt /usr/share/wordlists/rockyou.txt.

Romper los hashes

En el paso final, ahora podemos comenzar a descifrar los hash contenidos en el archivo target_hashes.txt . Usaremos la siguiente línea de comando: root @ kali: ~ / Escritorio # hashcat -m 0 -a 0 -o cracked.txt target_hashes.txt /usr/share/wordlists/rockyou.txt.

  • -m 0 designa el tipo de hash que estamos descifrando (MD5)
  • -a 0 designa un ataque de diccionario
  • -o cracked.txt es el archivo de salida para las contraseñas descifradas
  • target_hashes.txt es nuestro archivo de entrada de hashes
  • /usr/share/wordlists/rockyou.txt es la ruta absoluta al archivo de lista de palabras para este ataque de diccionario.

Resultados

Finalmente, hemos descifrado cinco de los siete hashes de destino que se propusieron inicialmente. Estos se pueden ver a continuación:

root @ kali: ~ / Desktop # cat cracked.txt
dc647eb65e6711e155375218212b3964: Contraseña eb61eead90e3b899c6bcbe27ac581660: HOLA 75b71aa6842e450f12aca00fdf54c51d: P455w0rd 2c9341ca4cf3d87b9e4eb905d6a3ec45: test1234 958152288f2d2303ae045cffc43a02cd: MySecret

Estas contraseñas son débiles y no se necesita mucho esfuerzo ni tiempo para descifrarlas. Es importante tener en cuenta que cuanto más simple sea la contraseña, más fácil será detectarla.

Por lo tanto, convierte tu contraseña en una larga y compleja. Evita el uso de información personal obvia; nunca reutilices las contraseñas y cámbialas con regularidad.

Otras opciones

Existen otros ejemplos de cómo descifrar una contraseña usando Hashcat.

Ataque de combinador Hashcat

Los seres humanos a menudo crean contraseñas que son dos palabras juntas. Hashcat explota esto usando un ataque combinador que toma listas de dos palabras (también conocidas como «diccionarios») y crea una nueva lista de palabras de cada palabra combinada con cualquier otra palabra.

La documentación de hashcat da el siguiente ejemplo de dos diccionarios: yellow, green, black, blue y car y bike.

Hashcat luego mezcla cada palabra con cada otra palabra, y luego prueba las siguientes contraseñas:

yellowcar
greencar
blackcar
bluecar
yellowbike
greenbike
blackbike
bluebike

También se pueden agregar signos de puntuación como guiones (-), signos de exclamación (!) Y otros caracteres especiales para crear una lista final de palabras que tenga contraseñas como «¡yellowcar!» y «¡bluebike!», etc.

Ataque de máscara Hashcat

Muchos usuarios tienden a usar contraseñas en un formato determinado. Una letra mayúscula seguida de seis letras más un dígito al final es común para las contraseñas más antiguas. En lugar de intentar forzar todas las contraseñas posibles, puedes usar hashcat para buscar todas las contraseñas en ese formato, lo que reduce drásticamente la cantidad de posibles conjeturas necesarias, si, de hecho, la contraseña en cuestión está en ese formato.

La documentación de hashcat explica por qué un ataque de máscara es a menudo más rápido que un ataque de fuerza bruta.

En el ataque de fuerza bruta tradicional, necesitamos un juego de caracteres que contenga todas las letras mayúsculas, minúsculas y todos los dígitos. La longitud de la contraseña es 9, por lo que tenemos que iterar a través de 62 ^ 9 (13.537.086.546.263.552) combinaciones. Digamos que rompemos con una tasa de 100M / s, esto requiere más de cuatro años para completarse.

En el ataque de máscara sabemos sobre los humanos y cómo diseñan contraseñas. La contraseña anterior coincide con un patrón simple pero común. Se le adjunta un nombre y un año. También podemos configurar el ataque para probar las letras mayúsculas solo en la primera posición. Es muy poco común ver una letra mayúscula solo en la segunda o tercera posición. Para abreviar, con el ataque de máscara podemos reducir el espacio de teclas a 52 * 26 * 26 * 26 * 26 * 10 * 10 * 10 * 10 (237.627.520.000) combinaciones. Con la misma velocidad de agrietamiento de 100 M / s, esto requiere solo 40 minutos para completarse.

Ataque basado en reglas Hashcat

Si otras opciones más sencillas fallan y tienes una idea específica de cómo tu objetivo construye una contraseña, hashcat ofrece una sintaxis similar a un lenguaje de programación para un ataque basado en reglas, en el que puede especificar qué tipo de contraseñas para probar.

El ataque basado en reglas es uno de los más complicados de todos los modos de ataque. Es como un lenguaje de programación diseñado para la generación de candidatos a contraseñas. Tiene funciones para modificar, cortar o extender palabras y tiene operadores condicionales para omitir algunas, etc. Eso lo convierte en el ataque más flexible, preciso y eficiente.

La curva de aprendizaje para comenzar con hashcat es muy baja, pero aprender la sintaxis de la regla hashcat aumentará drásticamente esa curva de aprendizaje.

Conclusión

Los ciberataques ocurrirán de una forma u otra. Dado que Hashcat generalmente trabaja en psicología humana, la conclusión es tratar de evitar el uso de tu información personal y restablecer tu contraseña con regularidad. Alternativamente, siempre se puede prevenir mediante la implementación del software hashcat para verificar la seguridad de tu contraseña.

Hashcat tiene más de 200 opciones de hash optimizadas, y esa es la razón por la que no solo es una de las más rápidas del mundo, sino también una de las herramientas de recuperación de contraseñas más avanzadas y actualizadas. Dado que es compatible con múltiples sistemas operativos como Windows, Linux, binarios nativos de OSX y algoritmos múltiples, Hashcat se ha vuelto muy popular para desglosar contraseñas complejas.