🔑Cracking de Contraseñas
El cracking de contraseñas es una técnica utilizada para descifrar contraseñas de usuario o de sistema que están protegidas mediante cifrado o hashing de menor o mayor complejidad.
Se utiliza para probar la seguridad de las contraseñas, aumentando la dificultad de su crackeo. Se suelen utilizar caracteres especiales y mezcla de números y letras mayúsculas y minúsculas para aumentar su seguridad.
John the Ripper
John the Ripper ( JTR
o john
) es una herramienta de pentesting esencial que se utiliza para comprobar la seguridad de las contraseñas y descifrar contraseñas cifradas (o hash) mediante fuerza bruta o ataques de diccionario. Es un software de código abierto desarrollado inicialmente para sistemas basados en UNIX y lanzado por primera vez en 1996. Se ha convertido en un elemento básico para los profesionales de la seguridad debido a sus diversas capacidades. La variante "Jumbo" se recomienda para quienes trabajan en el campo de la seguridad, ya que tiene optimizaciones de rendimiento y características adicionales como listas de palabras multilingües y soporte para arquitecturas de 64 bits. Esta versión es más efectiva para descifrar contraseñas con mayor precisión y velocidad.
Con esto, podemos usar varias herramientas para convertir diferentes tipos de archivos y hashes a un formato que John pueda utilizar. Además, el software se actualiza periódicamente para mantenerse al día con las tendencias y tecnologías de seguridad actuales, garantizando la seguridad del usuario.
Tecnologías de cifrado
Tecnología de cifrado | Descripción |
| Crypt(3) es un sistema de cifrado UNIX tradicional con una clave de 56 bits. |
| El cifrado basado en DES utiliza el algoritmo del estándar de cifrado de datos para cifrar los datos. |
| Bigcrypt es una extensión del cifrado tradicional basado en DES. Utiliza una clave de 128 bits. |
| El cifrado extendido basado en DES BSDI es una extensión del cifrado tradicional basado en DES y utiliza una clave de 168 bits. |
| El cifrado basado en FreeBSD MD5 utiliza el algoritmo MD5 para cifrar datos con una clave de 128 bits. |
| El cifrado basado en OpenBSD Blowfish utiliza el algoritmo Blowfish para cifrar datos con una clave de 448 bits. |
| Kerberos y AFS son sistemas de autenticación que utilizan cifrado para garantizar una comunicación segura entre entidades. |
| El cifrado de Windows LM utiliza el algoritmo estándar de cifrado de datos para cifrar datos con una clave de 56 bits. |
| Los códigos de viaje basados en DES se utilizan para autenticar a los usuarios según el algoritmo del estándar de cifrado de datos. |
| Los hash SHA-crypt se utilizan para cifrar datos con una clave de 256 bits y están disponibles en versiones más recientes de Fedora y Ubuntu. |
| Los hashes SHA-crypt y SUNMD5 utilizan los algoritmos SHA-crypt y MD5 para cifrar datos con una clave de 256 bits y están disponibles en Solaris. |
| y muchos más. |
John - Métodos de ataque
Ataques de diccionario
Los ataques de diccionario implican el uso de una lista pregenerada de palabras y frases (conocida como diccionario) para intentar descifrar una contraseña. Esta lista de palabras y frases suele obtenerse de diversas fuentes, como diccionarios disponibles públicamente, contraseñas filtradas o incluso adquiridas en empresas especializadas. Luego, el diccionario se usa para generar una serie de cadenas que luego se usan para comparar con las contraseñas hash. Si se encuentra una coincidencia, la contraseña se descifra, proporcionando al atacante acceso al sistema y a los datos almacenados en él. Este tipo de ataque es muy eficaz. Por lo tanto, es esencial tomar las medidas necesarias para garantizar que las contraseñas se mantengan seguras, como usar contraseñas complejas y únicas, cambiarlas periódicamente y utilizar autenticación de dos factores.
Ataques de fuerza bruta
Los ataques de fuerza bruta implican intentar todas las combinaciones imaginables de caracteres que podrían formar una contraseña. Este es un proceso extremadamente lento y, por lo general, solo se recomienda utilizar este método si no hay otras alternativas. También es importante tener en cuenta que cuanto más larga y compleja sea la contraseña, más difícil será descifrarla y más tiempo llevará agotar todas las combinaciones. Por este motivo, es muy recomendable que las contraseñas tengan al menos 8 caracteres de longitud, con una combinación de letras, números y símbolos.
Ataques de Rainbow Table
Los ataques de Rainbow Table implican el uso de una tabla precalculada de hashes y sus correspondientes contraseñas de texto sin formato, que es un método mucho más rápido que un ataque de fuerza bruta. Sin embargo, este método está limitado por el tamaño de la tabla del arco iris: cuanto más grande sea la tabla, más contraseñas y hashes podrá almacenar. Además, debido a la naturaleza del ataque, es imposible utilizar tablas de arcoíris para determinar el texto sin formato de los hashes que aún no están incluidos en la tabla. Como resultado, los ataques a la rainbow table solo son efectivos contra los hashes que ya están presentes en la tabla, por lo que cuanto más grande sea la tabla, más exitoso será el ataque.
John - Modos de craqueo
Single Crack Mode
es uno de los modos John más comunes que se utilizan al intentar descifrar contraseñas utilizando una lista de contraseñas única. Es un ataque de fuerza bruta, lo que significa que se prueban todas las contraseñas de la lista, una por una, hasta encontrar la correcta. Este método es la forma más básica y sencilla de descifrar contraseñas y, por lo tanto, es una opción popular para quienes desean obtener acceso a un sistema seguro. Sin embargo, está lejos de ser el método más eficaz, ya que puede llevar un tiempo indefinido descifrar una contraseña, dependiendo de la longitud y complejidad de la contraseña en cuestión. La sintaxis básica del comando es:
Single Crack Mode
Por ejemplo, si tenemos un archivo hashes_to_crack.txt
cuyo nombre contiene SHA-256
hashes, el comando para descifrarlos sería:
john
es el comando para ejecutar el programa John the Ripper--format=sha256
especifica que el formato hash es SHA-256hashes.txt
es el nombre del archivo que contiene los hashes que se van a descifrar
Cuando ejecutamos el comando, John leerá los hashes del archivo especificado y luego intentará descifrarlos comparándolos con las palabras en su lista de palabras incorporada y cualquier lista de palabras adicional especificada con la --wordlist
opción. Además, utilizará cualquier regla establecida con la --rules
opción (si se proporciona alguna regla) para generar más contraseñas candidatas.
El proceso de descifrar contraseñas puede ser complicado very time-consuming
, ya que la cantidad de tiempo necesaria para descifrar una contraseña depende de múltiples factores, como la complejidad de la contraseña, la configuración de la máquina y el tamaño de la lista de palabras. Descifrar contraseñas es casi una cuestión de suerte. Porque la contraseña en sí puede ser elemental, pero si usamos una lista incorrecta donde la palabra no está presente o John no puede generarla, eventualmente no lograremos descifrar la contraseña.
John enviará las contraseñas descifradas a la consola y el archivo "john.pot" ( ~/.john/john.pot
) al directorio de inicio del usuario actual. Además, continuará descifrando los hashes restantes en segundo plano y podemos comprobar el progreso ejecutando el john --show
comando. Para maximizar las posibilidades de éxito, es importante asegurarse de que las listas de palabras y las reglas utilizadas sean completas y estén actualizadas.
Cracking con John
Hash Format | Example Command | Description |
afs |
| AFS (Andrew File System) password hashes |
bfegg |
| bfegg hashes used in Eggdrop IRC bots |
bf |
| Blowfish-based crypt(3) hashes |
bsdi |
| BSDi crypt(3) hashes |
crypt(3) |
| Traditional Unix crypt(3) hashes |
des |
| Traditional DES-based crypt(3) hashes |
dmd5 |
| DMD5 (Dragonfly BSD MD5) password hashes |
dominosec |
| IBM Lotus Domino 6/7 password hashes |
EPiServer SID hashes |
| EPiServer SID (Security Identifier) password hashes |
hdaa |
| hdaa password hashes used in Openwall GNU/Linux |
hmac-md5 |
| hmac-md5 password hashes |
hmailserver |
| hmailserver password hashes |
ipb2 |
| Invision Power Board 2 password hashes |
krb4 |
| Kerberos 4 password hashes |
krb5 |
| Kerberos 5 password hashes |
LM |
| LM (Lan Manager) password hashes |
lotus5 |
| Lotus Notes/Domino 5 password hashes |
mscash |
| MS Cache password hashes |
mscash2 |
| MS Cache v2 password hashes |
mschapv2 |
| MS CHAP v2 password hashes |
mskrb5 |
| MS Kerberos 5 password hashes |
mssql05 |
| MS SQL 2005 password hashes |
mssql |
| MS SQL password hashes |
mysql-fast |
| MySQL fast password hashes |
mysql |
| MySQL password hashes |
mysql-sha1 |
| MySQL SHA1 password hashes |
NETLM |
| NETLM (NT LAN Manager) password hashes |
NETLMv2 |
| NETLMv2 (NT LAN Manager version 2) password hashes |
NETNTLM |
| NETNTLM (NT LAN Manager) password hashes |
NETNTLMv2 |
| NETNTLMv2 (NT LAN Manager version 2) password hashes |
NEThalfLM |
| NEThalfLM (NT LAN Manager) password hashes |
md5ns |
| md5ns (MD5 namespace) password hashes |
nsldap |
| nsldap (OpenLDAP SHA) password hashes |
ssha |
| ssha (Salted SHA) password hashes |
NT |
| NT (Windows NT) password hashes |
openssha |
| OPENSSH private key password hashes |
oracle11 |
| Oracle 11 password hashes |
oracle |
| Oracle password hashes |
| PDF (Portable Document Format) password hashes | |
phpass-md5 |
| PHPass-MD5 (Portable PHP password hashing framework) password hashes |
phps |
| PHPS password hashes |
pix-md5 |
| Cisco PIX MD5 password hashes |
po |
| Po (Sybase SQL Anywhere) password hashes |
rar |
| RAR (WinRAR) password hashes |
raw-md4 |
| Raw MD4 password hashes |
raw-md5 |
| Raw MD5 password hashes |
raw-md5-unicode |
| Raw MD5 Unicode password hashes |
raw-sha1 |
| Raw SHA1 password hashes |
raw-sha224 |
| Raw SHA224 password hashes |
raw-sha256 |
| Raw SHA256 password hashes |
raw-sha384 |
| Raw SHA384 password hashes |
raw-sha512 |
| Raw SHA512 password hashes |
salted-sha |
| Salted SHA password hashes |
sapb |
| SAP CODVN B (BCODE) password hashes |
sapg |
| SAP CODVN G (PASSCODE) password hashes |
sha1-gen |
| Generic SHA1 password hashes |
skey |
| S/Key (One-time password) hashes |
ssh |
| SSH (Secure Shell) password hashes |
sybasease |
| Sybase ASE password hashes |
xsha |
| xsha (Extended SHA) password hashes |
zip |
| ZIP (WinZip) password hashes |
Modo de lista de palabras (wordlist)
Se utiliza para descifrar contraseñas utilizando múltiples listas de palabras. Es un ataque de diccionario, lo que significa que probará todas las palabras de las listas una por una hasta encontrar la correcta. Generalmente se usa para descifrar múltiples hashes de contraseñas usando una lista de palabras o una combinación de listas de palabras. Es más efectivo que el modo Single Crack porque utiliza más palabras pero sigue siendo relativamente básico. La sintaxis básica del comando es:
Primero, especificamos el archivo o archivos de lista de palabras que se utilizarán para descifrar los hash de contraseña. La lista de palabras puede estar en formato de texto plano, con una palabra por línea. Se pueden especificar varias listas de palabras separándolas con una coma. Luego podemos especificar un conjunto de reglas o aplicar las reglas de manipulación integradas a las palabras de la lista de palabras. Estas reglas generan contraseñas candidatas mediante transformaciones como agregar números, poner letras en mayúscula y agregar caracteres especiales.
Modo incremental
Incremental Mode
es un modo avanzado que se utiliza para descifrar contraseñas utilizando un conjunto de caracteres. Es un ataque híbrido, lo que significa que intentará hacer coincidir la contraseña probando todas las combinaciones posibles de caracteres del conjunto de caracteres. Este modo es el más eficaz y, al mismo tiempo, el que consume más tiempo de todos los modos John. Este modo funciona mejor cuando sabemos cuál podría ser la contraseña, ya que probará todas las combinaciones posibles en secuencia, comenzando por la más corta.
Esto lo hace mucho más rápido que el ataque de fuerza bruta, donde todas las combinaciones se prueban al azar. Además, el modo incremental también se puede utilizar para descifrar contraseñas débiles, que pueden resultar difíciles de descifrar con los modos estándar de John. La principal diferencia entre el modo incremental y el modo de lista de palabras es la fuente de las adivinanzas de contraseña. El modo incremental genera conjeturas sobre la marcha, mientras que el modo de lista de palabras utiliza una lista predefinida de palabras. Al mismo tiempo, el modo de descifrado único se utiliza para comparar una única contraseña con un hash.
La sintaxis para ejecutar John the Ripper en modo incremental es la siguiente:
Modo incremental en John
Usando este comando leeremos los hashes en el archivo hash especificado y luego generaremos todas las combinaciones posibles de caracteres, comenzando con un solo carácter e incrementando con cada iteración. Es importante tener en cuenta que este modo es highly resource intensive
y puede tardar mucho en completarse, dependiendo de la complejidad de las contraseñas, la configuración de la máquina y la cantidad de caracteres establecidos. Además, es importante tener en cuenta que el juego de caracteres predeterminado está limitado a a-zA-Z0-9
. Por lo tanto, si intentamos descifrar contraseñas complejas con caracteres especiales, necesitamos utilizar un juego de caracteres personalizado.
John - Descifrar archivos
También es posible descifrar incluso archivos cifrados o protegidos con contraseña con John. Usamos herramientas adicionales que procesan los archivos proporcionados y producen hashes con los que John puede trabajar. Detecta automáticamente los formatos e intenta descifrarlos. La sintaxis para esto puede verse así:
Descifrando archivos con John
Además, podemos usar diferentes modos para esto con nuestras listas de palabras y reglas personales. Hemos creado una lista que incluye muchas, pero no todas, las herramientas que se pueden utilizar para John:
Herramienta | Descripción |
| Convierte documentos PDF para John |
| Convierte claves privadas SSH para John |
| Convierte hashes de MS Cash para John |
| Convierte archivos de llavero de OS X para John |
| Convierte archivos RAR para John |
| Convierte archivos PKCS#12 para John |
| Convierte volúmenes TrueCrypt para John |
| Convierte bases de datos KeePass para John |
| Convierte archivos VNC PCAP para John |
| Convierte claves privadas PuTTY para John |
| Convierte archivos ZIP para John |
| Convierte capturas de protocolo de enlace WPA/WPA2 para John |
| Convierte documentos de MS Office para John |
| Convierte protocolos de enlace WPA/WPA2 para John |
Se pueden encontrar más de estas herramientas de la siguiente manera:
En este módulo, trabajaremos mucho con John y, por lo tanto, deberíamos saber de qué es capaz esta herramienta.
Hashcat
Hashcat es una herramienta de cracking de contraseñas de código abierto que se utiliza para realizar ataques de fuerza bruta y diccionario contra hashes de contraseñas. Hashcat es capaz de utilizar la potencia de procesamiento de la CPU y la GPU para acelerar el proceso de cracking de contraseñas y puede descifrar hashes de contraseñas en muchos formatos diferentes.
Viene instalado por defecto en Kali Linux.
Instalación
Uso
-a
Attack mode
-m
Tipo de hash (en este caso 1400 se corresponde con SHA-256)
CrackStation
Es un servicio online que nos permite crackear hashes de contraseñas. Utiliza un diccionario con más de 190GB, y más de 1.5 billones de contraseñas.
Changeme
Herramienta que busca contraseñas por defecto en una infraestructura de red. Changeme trabaja específicamente para detectar contraseñas débiles, comunes o predecibles en diferentes servicios, como LDAP, MySQL, PostgreSQL, FTP, SSH, SNMP y otros. La herramienta utiliza una base de datos de contraseñas comunes y diccionarios de fuerza bruta para verificar la fortaleza de las contraseñas.
Instalación y uso
Generador de contraseñas seguras
Este generador de contraseñas online de Avast nos permite crear contraseñas super seguras, mezclando mayúsculas, minúsculas, números y carácteres especiales, pudiendo controlar la longitud de la contraseña.
Si utilizamos un gestor de contraseñas como One Password o Bitwarden podemos elegir la contraseña más larga, ya que nos la almacenará y recordará automáticamente.
Última actualización