John The Ripper

John the Ripper es una herramienta esencial para pentesting utilizada para comprobar la fortaleza de las contraseñas y descifrar contraseñas encriptadas (o hasheadas) utilizando ataques de fuerza bruta o 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 pilar entre los profesionales de la seguridad debido a sus diversas capacidades. Se recomienda la variante "Jumbo" para quienes trabajan en el campo de la seguridad, ya que tiene optimizaciones de rendimiento y funciones adicionales, como listas de palabras en varios idiomas y soporte para arquitecturas de 64 bits. Esta versión es mÔs efectiva al descifrar contraseñas con mayor precisión y velocidad.

Con esta herramienta, podemos utilizar varios mƩtodos para convertir diferentes tipos de archivos y hashes en un formato que sea utilizable por John. AdemƔs, el software se actualiza regularmente para mantenerse al dƭa con las tendencias y tecnologƭas de seguridad actuales, asegurando la seguridad de los usuarios.

Tecnologías de Encriptación

Tecnología de Encriptación
Descripción

UNIX crypt(3)

Crypt(3) es un sistema de encriptación tradicional de UNIX con una clave de 56 bits.

Encriptación tradicional basada en DES

La encriptación basada en DES utiliza el algoritmo Data Encryption Standard para cifrar datos.

bigcrypt

Bigcrypt es una extensión de la encriptación basada en DES tradicional. Utiliza una clave de 128 bits.

Encriptación extendida de DES en BSDI

Esta es una extensión de la encriptación basada en DES y utiliza una clave de 168 bits.

Encriptación basada en MD5 en FreeBSD (Linux y Cisco)

Utiliza el algoritmo MD5 para cifrar datos con una clave de 128 bits.

Encriptación basada en Blowfish de OpenBSD

Utiliza el algoritmo Blowfish para cifrar datos con una clave de 448 bits.

Kerberos/AFS

Kerberos y AFS son sistemas de autenticación que usan encriptación para garantizar la comunicación segura entre entidades.

Windows LM

La encriptación de Windows LM usa el algoritmo DES para cifrar datos con una clave de 56 bits.

Tripcodes basados en DES

Se utilizan para autenticar usuarios basados en el algoritmo DES.

Hashes 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.

Hashes SHA-crypt y SUNMD5 (Solaris)

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.

MƩtodos de Ataque

Ataques de Diccionario

Los ataques de diccionario implican el uso de una lista pre-generada de palabras y frases (conocida como diccionario) para intentar descifrar una contraseña. Esta lista de palabras y frases a menudo se adquiere de diversas fuentes, como diccionarios públicos, contraseñas filtradas o incluso compradas a empresas especializadas. El diccionario se utiliza para generar una serie de cadenas que luego se comparan con las contraseñas hasheadas. Si se encuentra una coincidencia, la contraseña se descifra, proporcionando acceso al atacante al sistema y a los datos almacenados en él. Este tipo de ataque es altamente efectivo. Por lo tanto, es esencial tomar las medidas necesarias para garantizar que las contraseñas se mantengan seguras, como utilizar contraseñas complejas y únicas, cambiarlas regularmente y utilizar autenticación de dos factores.

Ataques de Fuerza Bruta

Los ataques de fuerza bruta consisten en intentar todas las combinaciones posibles de caracteres que podrían formar una contraseña. Este es un proceso extremadamente lento, y solo se recomienda utilizar este método si no hay otras alternativas. También es importante destacar que, cuanto mÔs larga y compleja sea la contraseña, mÔs difícil serÔ de descifrar y mÔs tiempo llevarÔ agotar todas las combinaciones. Por esta razón, se recomienda encarecidamente que las contraseñas tengan al menos 8 caracteres de longitud, con una combinación de letras, números y símbolos.

Ataques con Tablas Rainbow

Los ataques con tablas rainbow utilizan una tabla precomputada de hashes y sus correspondientes contraseƱas en texto claro, lo 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 rainbow: cuanto mƔs grande sea la tabla, mƔs contraseƱas y hashes podrƔ almacenar. AdemƔs, debido a la naturaleza del ataque, no es posible utilizar tablas rainbow para determinar el texto claro de hashes que no estƩn ya incluidos en la tabla. Como resultado, los ataques con tablas rainbow solo son efectivos contra hashes ya presentes en la tabla; cuanto mƔs grande sea la tabla, mayor serƔ el Ʃxito del ataque.

Modos de Cracking

El Modo de Cracking Simple es uno de los modos mÔs comunes utilizados en John cuando se intenta descifrar contraseñas utilizando una lista de contraseñas única. Es un ataque de fuerza bruta, lo que significa que todas las contraseñas de la lista se prueban, una por una, hasta que se encuentra la correcta. Este método es el mÔs bÔsico y directo para descifrar contraseñas y, por lo tanto, es una opción popular para aquellos que desean acceder a un sistema seguro. Sin embargo, estÔ lejos de ser el método mÔs eficiente, ya que puede llevar un tiempo indefinido descifrar una contraseña, dependiendo de la longitud y complejidad de la misma. La sintaxis bÔsica para el comando es:

Por ejemplo, si tenemos un archivo llamado hashes_to_crack.txt que contiene hashes SHA-256, el comando para descifrarlos serĆ­a:

  • john es el comando para ejecutar el programa John the Ripper.

  • --format=sha256 especifica que el formato del hash es SHA-256.

  • hashes.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 de su lista de palabras incorporada y cualquier lista adicional especificada con la opción --wordlist. AdemÔs, utilizarÔ cualquier regla establecida con la opción --rules (si se han dado reglas) para generar posibles contraseñas.

El proceso de descifrar contraseñas puede ser muy lento, ya que la cantidad de tiempo necesaria 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. El descifrado de contraseñas es casi una cuestión de suerte. Porque aunque la contraseña sea simple, si usamos una lista incorrecta donde la palabra no estÔ presente o no puede ser generada por John, eventualmente fallaremos en descifrar la contraseña.

John enviarƔ las contraseƱas descifradas a la consola y al archivo "john.pot" (~/.john/john.pot) en el directorio del usuario actual. AdemƔs, continuarƔ descifrando los hashes restantes en segundo plano, y podemos verificar el progreso ejecutando el comando john --show. Para maximizar las posibilidades de Ʃxito, es importante asegurarse de que las listas de palabras y reglas utilizadas sean completas y estƩn actualizadas.

Cracking con John the Ripper

Formato de Hash

Comando de Ejemplo

Descripción

AFS

john --format=afs hashes_a_descifrar.txt

Hashes de contraseƱas del AFS (Sistema de Archivos de Andrew)

bfegg

john --format=bfegg hashes_a_descifrar.txt

Hashes bfegg utilizados en bots de Eggdrop en IRC

bf

john --format=bf hashes_a_descifrar.txt

Hashes basados en Blowfish (crypt(3))

bsdi

john --format=bsdi hashes_a_descifrar.txt

Hashes de BSDi (crypt(3))

crypt(3)

john --format=crypt hashes_a_descifrar.txt

Hashes tradicionales de Unix (crypt(3))

des

john --format=des hashes_a_descifrar.txt

Hashes tradicionales basados en DES (crypt(3))

dmd5

john --format=dmd5 hashes_a_descifrar.txt

Hashes DMD5 (MD5 de Dragonfly BSD)

dominosec

john --format=dominosec hashes_a_descifrar.txt

Hashes de contraseƱas de IBM Lotus Domino 6/7

Hashes de SID de EPiServer

john --format=episerver hashes_a_descifrar.txt

Hashes de contraseƱas de SID (Identificador de Seguridad) de EPiServer

hdaa

john --format=hdaa hashes_a_descifrar.txt

Hashes de contraseƱas hdaa utilizados en Openwall GNU/Linux

hmac-md5

john --format=hmac-md5 hashes_a_descifrar.txt

Hashes de contraseƱas hmac-md5

hmailserver

john --format=hmailserver hashes_a_descifrar.txt

Hashes de contraseƱas de hmailserver

ipb2

john --format=ipb2 hashes_a_descifrar.txt

Hashes de contraseƱas de Invision Power Board 2

krb4

john --format=krb4 hashes_a_descifrar.txt

Hashes de contraseƱas Kerberos 4

krb5

john --format=krb5 hashes_a_descifrar.txt

Hashes de contraseƱas Kerberos 5

LM

john --format=LM hashes_a_descifrar.txt

Hashes de contraseƱas LM (Lan Manager)

lotus5

john --format=lotus5 hashes_a_descifrar.txt

Hashes de contraseƱas de Lotus Notes/Domino 5

mscash

john --format=mscash hashes_a_descifrar.txt

Hashes de contraseƱas de MS Cache

mscash2

john --format=mscash2 hashes_a_descifrar.txt

Hashes de contraseƱas de MS Cache v2

mschapv2

john --format=mschapv2 hashes_a_descifrar.txt

Hashes de contraseƱas de MS CHAP v2

mskrb5

john --format=mskrb5 hashes_a_descifrar.txt

Hashes de contraseƱas de MS Kerberos 5

mssql05

john --format=mssql05 hashes_a_descifrar.txt

Hashes de contraseƱas de MS SQL 2005

mssql

john --format=mssql hashes_a_descifrar.txt

Hashes de contraseƱas de MS SQL

mysql-fast

john --format=mysql-fast hashes_a_descifrar.txt

Hashes de contraseƱas rƔpidas de MySQL

mysql

john --format=mysql hashes_a_descifrar.txt

Hashes de contraseƱas de MySQL

mysql-sha1

john --format=mysql-sha1 hashes_a_descifrar.txt

Hashes de contraseƱas SHA1 de MySQL

NETLM

john --format=netlm hashes_a_descifrar.txt

Hashes de contraseƱas NETLM (NT LAN Manager)

NETLMv2

john --format=netlmv2 hashes_a_descifrar.txt

Hashes de contraseƱas NETLMv2

NETNTLM

john --format=netntlm hashes_a_descifrar.txt

Hashes de contraseƱas NETNTLM (NT LAN Manager)

NETNTLMv2

john --format=netntlmv2 hashes_a_descifrar.txt

Hashes de contraseƱas NETNTLMv2

NEThalfLM

john --format=nethalflm hashes_a_descifrar.txt

Hashes de contraseƱas NEThalfLM

md5ns

john --format=md5ns hashes_a_descifrar.txt

Hashes de contraseƱas md5ns (MD5 namespace)

nsldap

john --format=nsldap hashes_a_descifrar.txt

Hashes de contraseƱas nsldap (OpenLDAP SHA)

ssha

john --format=ssha hashes_a_descifrar.txt

Hashes de contraseƱas ssha (Salted SHA)

NT

john --format=nt hashes_a_descifrar.txt

Hashes de contraseƱas NT (Windows NT)

openssha

john --format=openssha hashes_a_descifrar.txt

Hashes de contraseƱas de clave privada OPENSSH

oracle11

john --format=oracle11 hashes_a_descifrar.txt

Hashes de contraseƱas de Oracle 11

oracle

john --format=oracle hashes_a_descifrar.txt

Hashes de contraseƱas de Oracle

pdf

john --format=pdf hashes_a_descifrar.txt

Hashes de contraseƱas PDF (Formato de Documento PortƔtil)

phpass-md5

john --format=phpass-md5 hashes_a_descifrar.txt

Hashes de PHPass-MD5 (framework de hashing de contraseƱas PHP)

phps

john --format=phps hashes_a_descifrar.txt

Hashes de contraseƱas PHPS

pix-md5

john --format=pix-md5 hashes_a_descifrar.txt

Hashes de contraseƱas MD5 de Cisco PIX

po

john --format=po hashes_a_descifrar.txt

Hashes de contraseƱas Po (Sybase SQL Anywhere)

rar

john --format=rar hashes_a_descifrar.txt

Hashes de contraseƱas RAR (WinRAR)

raw-md4

john --format=raw-md4 hashes_a_descifrar.txt

Hashes de contraseƱas Raw MD4

raw-md5

john --format=raw-md5 hashes_a_descifrar.txt

Hashes de contraseƱas Raw MD5

raw-md5-unicode

john --format=raw-md5-unicode hashes_a_descifrar.txt

Hashes de contraseƱas Raw MD5 Unicode

raw-sha1

john --format=raw-sha1 hashes_a_descifrar.txt

Hashes de contraseƱas Raw SHA1

raw-sha224

john --format=raw-sha224 hashes_a_descifrar.txt

Hashes de contraseƱas Raw SHA224

raw-sha256

john --format=raw-sha256 hashes_a_descifrar.txt

Hashes de contraseƱas Raw SHA256

raw-sha384

john --format=raw-sha384 hashes_a_descifrar.txt

Hashes de contraseƱas Raw SHA384

raw-sha512

john --format=raw-sha512 hashes_a_descifrar.txt

Hashes de contraseƱas Raw SHA512

salted-sha

john --format=salted-sha hashes_a_descifrar.txt

Hashes de contraseƱas Salted SHA

sapb

john --format=sapb hashes_a_descifrar.txt

Hashes de contraseƱas SAP CODVN B (BCODE)

sapg

john --format=sapg hashes_a_descifrar.txt

Hashes de contraseƱas SAP CODVN G (PASSCODE)

sha1-gen

john --format=sha1-gen hashes_a_descifrar.txt

Hashes de contraseƱas SHA1 genƩrico

sha1-unix

john --format=sha1-unix hashes_a_descifrar.txt

Hashes de contraseƱas SHA1 de UNIX

sha1-ntlm

john --format=sha1-ntlm hashes_a_descifrar.txt

Hashes de contraseƱas SHA1 NTLM (NT LAN Manager)

sha256-unix

john --format=sha256-unix hashes_a_descifrar.txt

Hashes de contraseƱas SHA256 de UNIX

sha256-ntlm

john --format=sha256-ntlm hashes_a_descifrar.txt

Hashes de contraseƱas SHA256 NTLM (NT LAN Manager)

sha512-unix

john --format=sha512-unix hashes_a_descifrar.txt

Hashes de contraseƱas SHA512 de UNIX

xsha1

john --format=xsha1 hashes_a_descifrar.txt

Hashes de contraseƱas XSHA1

zip

john --format=zip hashes_a_descifrar.txt

Hashes de contraseƱas ZIP

Modo de Lista de Palabras

Este modo utiliza una lista de palabras para intentar descifrar las contraseƱas. La sintaxis bƔsica del comando es:

Modo Incremental

En este modo, John generarƔ combinaciones de caracteres en lugar de solo intentar coincidirlas. Este mƩtodo es mƔs costoso computacionalmente y mƔs lento que el Modo de Lista de Palabras. La sintaxis bƔsica del comando es:

Modo de Cracking Único

El Modo de Cracking Único estÔ diseñado para descifrar contraseñas basÔndose en las propiedades del hash de la contraseña. La sintaxis bÔsica del comando es:

Modo Externo

El Modo Externo es donde los usuarios pueden definir sus reglas para descifrar contraseƱas. Este modo es versƔtil y puede adaptarse a casos especƭficos donde se requiere un ataque particular. La sintaxis bƔsica del comando es:

Comandos de Ejemplo para Cracking

  1. Usando Modo de Lista de Palabras: Para descifrar un hash almacenado en hashes.txt usando una lista de palabras llamada mi_lista_de_palabras.txt, ejecutarĆ­as:

  1. Usando Modo Incremental: Para descifrar hashes usando el conjunto de caracteres predeterminado, ejecutarĆ­as:

  1. Usando Modo de Cracking Único: Para intentar un descifrado bÔsico en un hash, ejecutarías:

  1. Usando Modo Externo: Para utilizar un modo externo personalizado llamado mi_regla_externa, ejecutarĆ­as:

  1. Descifrado de Formato de Hash EspecĆ­fico: Si necesitas descifrar un formato de hash especĆ­fico como NTLM, especificarĆ­as el formato con:

John the Ripper guarda las contraseñas descifradas en un archivo llamado john.pot por defecto. Puedes especificar un archivo de salida diferente usando la opción --pot=<nombre_de_archivo>. Por ejemplo:

Para ver las contraseƱas descifradas, puedes usar:

  • Modo Verboso: Agrega -v para salida detallada.

  • Control de Sesión: Usa --session=<nombre_de_sesión> para guardar el progreso y reanudarlo mĆ”s tarde.

  • Verificación de Estado: Usa --status para verificar el estado actual de una sesión en ejecución.

Script de PowerShell para Crear Hashes

Este script de PowerShell genera diferentes tipos de hashes de contraseƱas, mostrando MD5, SHA1, SHA256 y BCrypt.

Cómo Usar

  1. Abrir PowerShell: Ejecuta PowerShell como administrador.

  2. Copiar y Pegar: Copia todo el script anterior y pƩgalo en la consola de PowerShell.

  3. Ejecutar: Presiona Enter para ejecutar el script.

  4. Ver Resultados: Los hashes de contraseƱas se mostrarƔn en la salida de la consola.

Funciones de Hash

  • MD5: Produce un valor hash de 128 bits, generalmente expresado como un nĆŗmero hexadecimal de 32 caracteres. Es rĆ”pido, pero no se recomienda para aplicaciones sensibles a la seguridad debido a vulnerabilidades.

  • SHA1: Produce un valor hash de 160 bits, tĆ­picamente representado como un nĆŗmero hexadecimal de 40 caracteres. TambiĆ©n se considera dĆ©bil frente a ataques.

  • SHA256: Parte de la familia SHA-2, produce un valor hash de 256 bits y se considera seguro para muchas aplicaciones.

  • BCrypt: Una función de hash de contraseƱas diseƱada para seguridad, es lenta y adaptable, lo que la hace mĆ”s resistente a ataques de fuerza bruta.

Cracking Archivos con John the Ripper

Es posible descifrar archivos protegidos por contraseƱa o cifrados utilizando John the Ripper. Para ello, se utilizan herramientas adicionales que procesan los archivos dados y producen hashes que John puede trabajar. John detecta automƔticamente los formatos y trata de descifrarlos. La sintaxis para esto puede verse asƭ:

Cracking Archivos con John

AdemƔs, podemos usar diferentes modos con nuestras listas de palabras personales y reglas. Hemos creado una lista que incluye muchas, pero no todas, las herramientas que se pueden usar para John:

Herramientas para John the Ripper

Herramienta

Descripción

pdf2john

Convierte documentos PDF para John

ssh2john

Convierte claves privadas SSH para John

mscash2john

Convierte hashes de MS Cash para John

keychain2john

Convierte archivos de llavero de OS X para John

rar2john

Convierte archivos RAR para John

pfx2john

Convierte archivos PKCS#12 para John

truecrypt_volume2john

Convierte volĆŗmenes de TrueCrypt para John

keepass2john

Convierte bases de datos de KeePass para John

vncpcap2john

Convierte archivos PCAP de VNC para John

putty2john

Convierte claves privadas de PuTTY para John

zip2john

Convierte archivos ZIP para John

hccap2john

Convierte capturas de handshake WPA/WPA2 para John

office2john

Convierte documentos de MS Office para John

wpa2john

Convierte handshakes WPA/WPA2 para John

MƔs de estas herramientas se pueden encontrar en Pwnbox de la siguiente manera:

Esto devolverÔ una lista de herramientas disponibles para la conversión de diversos formatos de archivos que John puede procesar:

Last updated

Was this helpful?