John The Ripper
John the Ripper (JTR o john) es una herramienta de pentesting esencial que se utiliza para comprobar la fortaleza de las contraseñas y descifrar contraseñas cifradas (o con hash) mediante ataques de fuerza bruta o de diccionario. . La variante «Jumbo» se recomienda a los profesionales de la seguridad, ya que cuenta con optimizaciones de rendimiento y funciones adicionales como listas de palabras multilingües y compatibilidad con arquitecturas de 64 bits. Esta versión es más eficaz a la hora de descifrar contraseñas con mayor precisión y rapidez.
Con ella, podemos utilizar varias herramientas para convertir distintos tipos de archivos y hashes a un formato utilizable por John. 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.
Attack Methods
Dictionary Attacks
En este método se utiliza una lista predefinida de palabras y frases—lo que llamamos "diccionario"—para descifrar contraseñas. Esta lista puede provenir de diccionarios públicos, contraseñas filtradas o incluso comprarse a proveedores especializados. El proceso consiste en generar cadenas a partir del diccionario y compararlas con los hashes de las contraseñas; si se encuentra coincidencia, la contraseña se revela, permitiendo al atacante acceder al sistema y sus datos. Por eso, es crucial emplear contraseñas complejas, cambiarlas con regularidad y aplicar autenticación de dos factores.
Brute Force Attacks
Este método consiste en probar todas las combinaciones posibles de caracteres para encontrar la contraseña correcta. Aunque es muy exhaustivo y lento, se recurre a él cuando no hay otras alternativas. Cuanto mayor y más compleja sea la contraseña, más tiempo llevará descifrarla, por lo que se recomienda que tenga al menos 8 caracteres, combinando letras, números y símbolos.
Rainbow Table Attacks
Este enfoque utiliza tablas pre-calculadas que relacionan hashes con sus contraseñas en texto claro, lo que acelera el proceso en comparación con la fuerza bruta. Sin embargo, su efectividad depende del tamaño de la tabla: una tabla más grande abarca más contraseñas, pero solo sirve para descifrar aquellos hashes que ya estén incluidos. Si el hash no figura en la tabla, el método no será útil.
Cracking Modes
Single Crack Mode
El Single Crack Mode
de John the Ripper es un método popular que utiliza una única lista de contraseñas para realizar un ataque de fuerza bruta. En esencia, el programa recorre cada palabra de la lista de manera secuencial hasta encontrar la que coincida con el hash de la contraseña. Aunque es un método muy directo y fácil de implementar, su eficiencia depende de la complejidad de la contraseña y del contenido de la lista, lo que puede hacer que el proceso se prolongue considerablemente.
La sintaxis básica es:
Por ejemplo, para un archivo llamado hashes_to_crack.txt
con hashes SHA-256, el comando sería:
Al iniciar el proceso, John compara cada hash con las palabras de su lista incorporada o con las adicionales que se especifiquen mediante la opción --wordlist
, y puede usar reglas (--rules
) para generar candidatos adicionales. Aunque este método es sencillo, su éxito depende de que la contraseña se encuentre o se pueda generar a partir de la lista; de lo contrario, el ataque podría no dar resultado.
Los hashes descifrados se muestran en la consola y se guardan en el archivo john.pot
(usualmente en ~/.john/john.pot
), y el proceso continúa en segundo plano, permitiendo verificar el progreso con john --show
. Para aumentar las probabilidades de éxito, es crucial emplear wordlists y reglas lo más completas y actualizadas posible.
Wordlist Mode
El Wordlist Mode
se emplea para descifrar contraseñas utilizando varias listas de palabras. Funciona como un ataque de diccionario, donde se prueban, una tras otra, todas las palabras de las listas hasta hallar la que coincida. Este método resulta ideal para atacar múltiples hashes de contraseñas con una o varias wordlists, siendo más efectivo que el Modo de Crackeo Simple gracias a su mayor cantidad de palabras, aunque sigue siendo una técnica bastante básica.
La sintaxis básica es:
Primero, se indica el archivo (o archivos) que contiene la lista de palabras, en formato de texto plano (una palabra por línea), pudiendo especificarse varias separándolas con comas. Después, se puede aplicar un conjunto de reglas o las transformaciones predefinidas para modificar las palabras de la lista—por ejemplo, agregando números, cambiando mayúsculas o añadiendo caracteres especiales—para generar candidatos adicionales.
Incremental Mode
El modo incremental en John the Ripper es una opción avanzada que genera sobre la marcha todas las combinaciones posibles a partir de un conjunto de caracteres. Este método, que parte de contraseñas de un solo carácter e incrementa la longitud progresivamente, es muy eficaz pero también puede ser muy exigente en recursos y tiempo, dependiendo de la complejidad de la contraseña, la configuración de la máquina y el tamaño del conjunto de caracteres.
A diferencia del modo wordlist, que utiliza listas predefinidas, el modo incremental crea las conjeturas al instante, lo que lo hace ideal para probar contraseñas débiles o cuando se tiene una idea aproximada de su estructura. Por otro lado, el modo single crack se centra en comparar una única contraseña contra un hash.
La sintaxis para usar este modo es:
Este comando lee los hashes del archivo especificado y empieza a probar todas las combinaciones posibles, comenzando por las de menor longitud. Cabe destacar que, por defecto, el conjunto de caracteres se limita a a-z, A-Z y 0-9, por lo que para contraseñas más complejas que incluyan caracteres especiales, será necesario configurar un conjunto personalizado.
Cracking Files
También se puede descifrar archivos protegidos o encriptados utilizando John. Para ello, se emplean herramientas auxiliares que procesan el archivo y extraen los hashes en un formato que John puede utilizar. Estas herramientas detectan automáticamente el formato del archivo y generan el hash correspondiente. Un ejemplo de cómo hacerlo es el siguiente:
Además, podemos utilizar diferentes modos para ello 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. Modules
Format Hash
afs
john --format=afs hashes_to_crack.txt
AFS (Andrew File System) password hashes
bfegg
john --format=bfegg hashes_to_crack.txt
bfegg hashes used in Eggdrop IRC bots
bf
john --format=bf hashes_to_crack.txt
Blowfish-based crypt(3) hashes
bsdi
john --format=bsdi hashes_to_crack.txt
BSDi crypt(3) hashes
crypt(3)
john --format=crypt hashes_to_crack.txt
Traditional Unix crypt(3) hashes
des
john --format=des hashes_to_crack.txt
Traditional DES-based crypt(3) hashes
dmd5
john --format=dmd5 hashes_to_crack.txt
DMD5 (Dragonfly BSD MD5) password hashes
dominosec
john --format=dominosec hashes_to_crack.txt
IBM Lotus Domino 6/7 password hashes
EPiServer SID hashes
john --format=episerver hashes_to_crack.txt
EPiServer SID (Security Identifier) password hashes
hdaa
john --format=hdaa hashes_to_crack.txt
hdaa password hashes used in Openwall GNU/Linux
hmac-md5
john --format=hmac-md5 hashes_to_crack.txt
hmac-md5 password hashes
hmailserver
john --format=hmailserver hashes_to_crack.txt
hmailserver password hashes
ipb2
john --format=ipb2 hashes_to_crack.txt
Invision Power Board 2 password hashes
krb4
john --format=krb4 hashes_to_crack.txt
Kerberos 4 password hashes
krb5
john --format=krb5 hashes_to_crack.txt
Kerberos 5 password hashes
LM
john --format=LM hashes_to_crack.txt
LM (Lan Manager) password hashes
lotus5
john --format=lotus5 hashes_to_crack.txt
Lotus Notes/Domino 5 password hashes
mscash
john --format=mscash hashes_to_crack.txt
MS Cache password hashes
mscash2
john --format=mscash2 hashes_to_crack.txt
MS Cache v2 password hashes
mschapv2
john --format=mschapv2 hashes_to_crack.txt
MS CHAP v2 password hashes
mskrb5
john --format=mskrb5 hashes_to_crack.txt
MS Kerberos 5 password hashes
mssql05
john --format=mssql05 hashes_to_crack.txt
MS SQL 2005 password hashes
mssql
john --format=mssql hashes_to_crack.txt
MS SQL password hashes
mysql-fast
john --format=mysql-fast hashes_to_crack.txt
MySQL fast password hashes
mysql
john --format=mysql hashes_to_crack.txt
MySQL password hashes
mysql-sha1
john --format=mysql-sha1 hashes_to_crack.txt
MySQL SHA1 password hashes
NETLM
john --format=netlm hashes_to_crack.txt
NETLM (NT LAN Manager) password hashes
NETLMv2
john --format=netlmv2 hashes_to_crack.txt
NETLMv2 (NT LAN Manager version 2) password hashes
NETNTLM
john --format=netntlm hashes_to_crack.txt
NETNTLM (NT LAN Manager) password hashes
NETNTLMv2
john --format=netntlmv2 hashes_to_crack.txt
NETNTLMv2 (NT LAN Manager version 2) password hashes
NEThalfLM
john --format=nethalflm hashes_to_crack.txt
NEThalfLM (NT LAN Manager) password hashes
md5ns
john --format=md5ns hashes_to_crack.txt
md5ns (MD5 namespace) password hashes
nsldap
john --format=nsldap hashes_to_crack.txt
nsldap (OpenLDAP SHA) password hashes
ssha
john --format=ssha hashes_to_crack.txt
ssha (Salted SHA) password hashes
NT
john --format=nt hashes_to_crack.txt
NT (Windows NT) password hashes
openssha
john --format=openssha hashes_to_crack.txt
OPENSSH private key password hashes
oracle11
john --format=oracle11 hashes_to_crack.txt
Oracle 11 password hashes
oracle
john --format=oracle hashes_to_crack.txt
Oracle password hashes
john --format=pdf hashes_to_crack.txt
PDF (Portable Document Format) password hashes
phpass-md5
john --format=phpass-md5 hashes_to_crack.txt
PHPass-MD5 (Portable PHP password hashing framework) password hashes
phps
john --format=phps hashes_to_crack.txt
PHPS password hashes
pix-md5
john --format=pix-md5 hashes_to_crack.txt
Cisco PIX MD5 password hashes
po
john --format=po hashes_to_crack.txt
Po (Sybase SQL Anywhere) password hashes
rar
john --format=rar hashes_to_crack.txt
RAR (WinRAR) password hashes
raw-md4
john --format=raw-md4 hashes_to_crack.txt
Raw MD4 password hashes
raw-md5
john --format=raw-md5 hashes_to_crack.txt
Raw MD5 password hashes
raw-md5-unicode
john --format=raw-md5-unicode hashes_to_crack.txt
Raw MD5 Unicode password hashes
raw-sha1
john --format=raw-sha1 hashes_to_crack.txt
Raw SHA1 password hashes
raw-sha224
john --format=raw-sha224 hashes_to_crack.txt
Raw SHA224 password hashes
raw-sha256
john --format=raw-sha256 hashes_to_crack.txt
Raw SHA256 password hashes
raw-sha384
john --format=raw-sha384 hashes_to_crack.txt
Raw SHA384 password hashes
raw-sha512
john --format=raw-sha512 hashes_to_crack.txt
Raw SHA512 password hashes
salted-sha
john --format=salted-sha hashes_to_crack.txt
Salted SHA password hashes
sapb
john --format=sapb hashes_to_crack.txt
SAP CODVN B (BCODE) password hashes
sapg
john --format=sapg hashes_to_crack.txt
SAP CODVN G (PASSCODE) password hashes
sha1-gen
john --format=sha1-gen hashes_to_crack.txt
Generic SHA1 password hashes
skey
john --format=skey hashes_to_crack.txt
S/Key (One-time password) hashes
ssh
john --format=ssh hashes_to_crack.txt
SSH (Secure Shell) password hashes
sybasease
john --format=sybasease hashes_to_crack.txt
Sybase ASE password hashes
xsha
john --format=xsha hashes_to_crack.txt
xsha (Extended SHA) password hashes
zip
john --format=zip hashes_to_crack.txt
ZIP (WinZip) password hashes
Modules
pdf2john
Converts PDF documents for John
ssh2john
Converts SSH private keys for John
mscash2john
Converts MS Cash hashes for John
keychain2john
Converts OS X keychain files for John
rar2john
Converts RAR archives for John
pfx2john
Converts PKCS#12 files for John
truecrypt_volume2john
Converts TrueCrypt volumes for John
keepass2john
Converts KeePass databases for John
vncpcap2john
Converts VNC PCAP files for John
putty2john
Converts PuTTY private keys for John
zip2john
Converts ZIP archives for John
hccap2john
Converts WPA/WPA2 handshake captures for John
office2john
Converts MS Office documents for John
wpa2john
Converts WPA/WPA2 handshakes for John
Última actualización