jueves, 28 de mayo de 2015

Crackear contraseñas usando john the ripper


En este tutorial vamos a describir las principales opciones de john the ripper. Vamos a explicar el funcionamiento basico para el uso de JTR para romper contraseñas (LM, NTML, MD5) haciendo uso de una lista de palabras o ataque de fuerza bruta.

Acerca de John the ripper

John the ripper es un rapido rompedor de contraseñas, actualmente disponible para muchos sistemas tales como unix, windows, DOS, BeOS, y OpenVMS. Su objetivo principal es detectar contraseñas debiles de unix. Es uno de los programas rompedores de contraseñas mas famosos, ya que combina una serie de rompedores de contraseñas en un solo paquete, detecta automaticamente los tipos de contraseñas, e incluye un cracker personalizable.
Puedes ejecutar varios formatos de contraseñas encriptadas, incluso varios hash de contraseñas en sistemas unix(DES, MD5, Blowfish), Kerberos AFS, y Windows NT/2000/XP/2003 (LM hash). Los modulos adicionales han ampliado su capacidad de incluir hashes en MD4, contraseñas en LDAP, MySQL y otros.

Mas informacion: http://openwall.info/wiki/john/sample-hashes

Descargar - Instalar JTR

Descargar la ultima version gratis de JTR usando el sitio web oficial. Descargarlo dependiendo del sistema donde te encuentres. Lo ejecutamos desde consola o terminal y veremos lo siguiente:


>john
John the Ripper password cracker, version 1.7.9
Copyright (c) 1996-2011 by Solar Designer
Homepage: http://www.openwall.com/john/

Usage: john [OPTIONS] [PASSWORD-FILES]
--single                   "single crack" mode
--wordlist=FILE --stdin    wordlist mode, read words from FILE or stdin
--rules                    enable word mangling rules for wordlist mode
--incremental[=MODE]       "incremental" mode [using section MODE]
--external=MODE            external mode or word filter
--stdout[=LENGTH]          just output candidate passwords [cut at LENGTH]
--restore[=NAME]           restore an interrupted session [called NAME]
--session=NAME             give a new session the NAME
--status[=NAME]            print status of a session [called NAME]
--make-charset=FILE        make a charset, FILE will be overwritten
--show                     show cracked passwords
--test[=TIME]              run tests and benchmarks for TIME seconds each
--users=[-]LOGIN|UID[,..]  [do not] load this (these) user(s) only
--groups=[-]GID[,..]       load users [not] of this (these) group(s) only
--shells=[-]SHELL[,..]     load users with[out] this (these) shell(s) only
--salts=[-]COUNT           load salts with[out] at least COUNT passwords only
--save-memory=LEVEL        enable memory saving, at LEVEL 1..3
--format=NAME              force hash type NAME: des/bsdi/md5/bf/afs/lm/trip/
                           dummy


Explicacion de opciones

Las opciones pueden ser especificadas junto con los archivos de contraseñas o por su cuenta. Todas las opciones son case sensitive, puede ser abreviado de manera larga o corta, pueden prefijar dos guiones o con un solo guion y pueden utilizar "=" o ":" para indicar un argumento. Activa el modo "solo crack" usando las reglas de la seccion del archivo de configuracion.

--single

john --single archivo_a_crackear.txt

Activar el modo wordlist (ataque de diccionario) este es mas rapido que el ataque por defecto (fuerza bruta).

--wordlist=ARCHIVO

john --wordfile:password.lst archivo_a_crackear.txt

Le permite definir las reglas para el uso de wordlist.

--rules

Permite un modo incremental que le permite hacer un ataque de fuerza bruta bajo ciertos modos.

--incremental[=MODO]

john --incremental:alpha archivo_a_crackear.txt
john --incremental:digits archivo_a_crackear.txt


Sigue una sesion interrumpida de crackeo, leyendo informacion sobre el estado del archivo de sesion especificado o de $JOHN/john.rec por defecto.

--restore[=NOMBRE]

john --restore:restore

(Nota: Si ha utilizado la opcion de sesion, debe especificar el nombre de sesion para el proceso de restauracion).

Esta opcion puede utilizarse solo a partir de una nueva sesion de cracking y su proposito es dar a la nueva sesion un nombre (a la cual john le agregará el sufijo ".rec" para formar el nombre del archivo de sesion).

--session=NOMBRE

john --session:[archivo_a_guardar] archivo_a_crackear.txt

(Nota: Esta opcion crea y mantiene los datos de su sesion que permite restaurarla mas adelante).

Imprime el estado de una sesion interrumpida o corriendo.

--status[=NOMBRE]

john --status:[nombre_del_archivo]

Muestra las contraseñas crackeadas para los archivos dados. Usted puede utilizar esta opcion para ver que es lo que hizo john hasta el momento.

--show

john --show archivo_a_crackear.txt

Prueba todos los algoritmos hash compilados para verificar el correcto funcionamiento y sus puntos de referencia.

--test[=TIEMPO]

john --test

Le permite seleccionar unas cuentas para crackear o para otras operaciones. 

--users=[-]LOGIN|UID

john --users:Usuario archivo_a_crackear.txt

Esta opcion es util para cargar cuentas con una shell valida solamente o no cargar cuentas con una shell mala.

--shells=[-]SHELL

Permite sobreescribir la deteccion del tipo de Hash. Actualmente, los "nombres de formato" validos son DES, BSDI, MD5, BF, AFS, LM, y crypt.

--format=NOMBRE

john --format:DES archivo_a_crackear.txt
john --format:BSDI archivo_a_crackear.txt
john --format:MD5 archivo_a_crackear.txt
john --format:BF archivo_a_crackear.txt
john --format:AFS archivo_a_crackear.txt
john --format:LM archivo_a_crackear.txt


Ejemplos - fuerza bruta

En esta parte del tutorial crearemos un archivo .txt con los hash que incluiran contraseñas en formato (LM/NTLM/HASH).

Añadiremos los hashes el LM y NTLM como sigue:

Editor::A4A54C86C6E5B8D0D69E92D4A9360EB0:FC4CB75BCC71D23954F4C94AD31AF0B1:::

A continuacion vamos a escribir el siguiente comando para abrir el archivo .txt.

>john john.txt
Loaded 2 password hashes with no different salts (LM DES [128/128 BS SSE2
ATSIS            (Editor:2)
guesses: 1  time: 0:00:01:32 (3)  c/s: 10880K  trying: CR5PT24 - CR5PNHJ
FOTISLI          (Editor:1)
guesses: 2  time: 0:00:01:33 (3)  c/s: 10931K  trying: FOTILVY - FOTIBFA
Warning: passwords printed above might be partial
Use the "--show" option to display all of the cracked passwords reliably

 
Para previsualizar los resultados de esta operacion escribimos:

>john --show john.txt
Editor:FOTISLIATSIS::FC4CB75BCC71D23954F4C94AD31AF0B1:::
2 password hashes cracked, 0 left
 

(Nota: el archivo john.txt contiene solo caracteres alfa).

Ahora crearemos el archivo john2.txt que contendra caracteres alfanumericos.
 
Liatsis_Fotis#Post::C99FFEFFD8300629F500944B53168930:892A0EAA0CFE35F105138006D6415A2E:::
Liatsis_Fotis#About::5524ADDCF15F4B1EAAD3B435B51404EE:730F52CBC638F6ECD8E1F5D89600AA6A:::
Liatsis_Fotis#ID::686A307B45A7EC144207FD0DF35A59A8:C7DE72EBBFF0979175DF38D63294FFA9:::

 
A continuacion vamos a escribir el siguiente comando, agregando --format como opcion y podremos especificar el formato de LM.

>john --format=LM john2.tx
Loaded 5 password hashes with no different salts (LM DES [128/128 BS SSE2]
L                (Liatsis_Fotis#Post:2)
12               (Liatsis_Fotis#ID:2)
JTR              (Liatsis_Fotis#About)
TUTORIA          (Liatsis_Fotis#Post:1)
guesses: 4  time: 0:00:00:06 (3)  c/s: 6613K  trying: MYKHRT2 - MYKHNTH
PRIVACY          (Liatsis_Fotis#ID:1)
guesses: 5  time: 0:00:00:09 (3)  c/s: 7749K  trying: PRIVAI! - PRIVSM2
Warning: passwords printed above might be partial
Use the "--show" option to display all of the cracked passwords reliably

 
Para previsualizar los resultados de esta operacion escribimos:

>john --show john2.txt
Liatsis_Fotis#Post:TUTORIAL::892A0EAA0CFE35F105138006D6415A2E:::
Liatsis_Fotis#About:JTR::730F52CBC638F6ECD8E1F5D89600AA6A:::
Liatsis_Fotis#ID:PRIVACY12::C7DE72EBBFF0979175DF38D63294FFA9:::
5 password hashes cracked, 0 left


Ejemplos - Ataque por diccionario

En esta parte vamos a escribir el siguiente comando añadiendo la opcion --wordlist y especificar la ubicacion del archivo de lista de palabras. 

>john --wordlist=mi_wordlist.txt john3.txt
Loaded 1 password hash (LM DES [128/128 BS SSE2-16])
PR1V@CY          (Security)
guesses: 1  time: 0:00:00:00 100%  c/s: 248533  trying: PR1VYPV - PR1V@YC
Use the "--show" option to display all of the cracked passwords reliably


Para previsualizar los resultados de esta operacion escribimos:

>john --show john3.txt
Security:PR1V@CY::A8C6E71DC39003852ACC407CFA612363:::

1 password hash cracked, 0 left 

 
(Nota: como hemos observado, el metodo de ataque wordlist llevo menos tiempo para decifrar el codigo hash).

(Nota: use onlinehashcrack.com para generar mis contraseñas en formato LM/NTLM)

Conclusion

Son muchas maneras en las que podemos pasar un hash a un archivo. Este tutorial describe las cosas basicas para generar, crear/abrir un archivo .txt con algoritmos simples como LM/NTLM, la mejor manera es intentar usar todos los parametros en un entorno virtual, creando nuestros hash y wordlist para lo que la opcion puede realizar antes de proceder al archivo real .txt.


Traduccion: arthusu
Post original: http://www.liatsisfotis.com/2012/12/crack-passwords-using-john-ripper.html 

No hay comentarios:

Publicar un comentario