Post4 n

John The Ripper: Crackeando Contraseñas Offline


Perfil
Samuel Esteban

Siguiendo con el top 10 de herramientas de Kali Linux, en esta oportunidad nos enfocaremos con la herramienta John The Ripper, esta herramienta permite realizar un cracking a un hash determinado.


¿Qué es un hash?

Un hash es un algoritmo el cual permite crear a través de una entrada (contraseña, texto, archivos) una salida alfanumérica de longitud fija. En el caso de las contraseñas la función principal del hash es proteger la confidencialidad de las mismas, ya que así es posible asegurar que no sean visibles en texto plano.


¿Por qué se utiliza?

La función de un hash es mantener en secreto el texto de entrada. Sólo se conoce el texto de salida, pero no se puede obtener el texto de entrada a partir de él. De esta forma es como se protegen las contraseñas al guardarlas en una base de datos o en un archivo del sistema, como se verá más adelante.

Matemáticamente, el hash se asemeja a una función inyectiva, tal como se ve en la siguiente imagen:


                  


Es por eso que se usa un método de fuerza bruta para intentar encontrar el texto de entrada. Se pruebas millones de palabras desde un diccionario hasta que alguna sea igual al hash que tenemos.


Tipos de Hash


Existen varios tipos de hash para cifrar contraseñas, algunos de estos hash son los siguientes:


MD5:Este algoritmo de reducción criptográfico de 128 bits el cual permite cifrar una contraseña (en este caso), MD5 hace que nuestra password sea cifrada con una longitud de 32 caracteres alfanuméricos. Un ejemplo del hash es el siguiente:


Texto Plano

Cifrado con MD5

admin

21232f297a57a5a743894a0e4a801fc3

SHA: SHA (Secure Hash Algorithm, Algoritmo de Hash Seguro) es un sistema de funciones hash criptográficas relacionadas de la Agencia de Seguridad Nacional de los Estados Unidos. El primer miembro de la familia fue publicado en 1993 es oficialmente llamado SHA. Sin embargo, hoy día, no oficialmente se le llama SHA-0 para evitar confusiones con sus sucesores. Dos años más tarde el primer sucesor de SHA fue publicado con el nombre de SHA-1. Existen cuatro variantes más que se han publicado desde entonces cuyas diferencias se basan en un diseño algo modificado y rangos de salida incrementados: SHA-224, SHA-256, SHA-384, y SHA-512 (llamándose SHA-2 a todos ellos).


Texto Plano

Cifrado con SHA-1

admin

d033e22ae348aeb5660fc2140aec35850c4da997 (longitud 40)

Texto Plano

       Cifrado con SHA-224

admin

       58acb7acccce58ffa8b953b12b5a7702bd42dae441c1ad85057fa70b (longitud 56)

Texto Plano

          Cifrado con SHA-256

admin

          8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918 (longitud 64)

Texto Plano

                    Cifrado con SHA-384

admin

9ca694a90285c034432c9550421b7b9dbd5c0f4b6673f05f6dbce58052ba20e4248041956ee8c9a2ec9f10290cdc0782 (longitud 96)

Texto Plano

Cifrado con SHA-512

admin

c7ad44cbad762a5da0a452f9e854fdc1e0e7a52a38015f23f3eab1d80b931dd472634dfac71cd34ebc35d16ab7fb8a90c81f975113d6c7538dc69dd8de9077ec (longitud 128)

LM:El hash LM (Lan man o Lan manager) fue utilizado para cifrar las contraseñas para Windows Xp, NT, 95, 98 y ME. El problema de este hash es que la implementación de la función hash por parte de Microsoft fue extremadamente deficiente, y acabaron con una función que no era puramente de sentido único. Por lo tanto en las versiones posteriores de Windows se decidió migrar a otro estilo de hash:


Texto Plano

Cifrado con LM

admin

F0D412BD764FFE81AAD3B435B51404EE (longitud 32)

NTLM: Supone el segundo "intento" de Microsoft por mejorar el protocolo de las contraseñas. Por fin diferencia entre mayúsculas y minúsculas e internamente es más simple y robusto: calcula el hash cifrando con el estándar MD4 tras una pequeña modificación del valor hexadecimal de la contraseña. Pero por muchas mejoras que introduzca, NTLM queda anulado. Porque por defecto las contraseñas son almacenadas y utilizadas en los dos formatos, el arcaico LM y NTLM, juntas en el mismo SAM.


F0D412BD764FFE81AAD3B435B51404EE:209C6174DA490CAEB422F3FA5A7AE634


Texto Plano

Cifrado con LM

admin

209C6174DA490CAEB422F3FA5A7AE634 (longitud 32)

Hash de Linux: El hash de Linux tiene una complejidad más alta que la de Windows, ya que utiliza una nomenclatura de cifrado añadido de un salt, el cual se añadirá dentro del hash de manera aleatoria, para comprender más sobre esto, tenemos el siguiente ejemplo:


$6$LJTtsJB7$Bl0aXQbYX4CLIY68VvgsnAIiODXmwShPT9KQ7XIl.Q1Mi19ujAhmOOuZRrQGJ5OodpgDOFfTwiAbiDtbU9OLr1


Texto Plano

Cifrado con MD5 +Salt

admin

$1$LJTtsJB7$b1L9zq51SwaTDo8BoDrc40

$1$LJTtsJB7$b1L9zq51SwaTDo8BoDrc40

1             2                          3


El hash de Linux está compuesto por 3 campos. Estos campos están separados por un signo $.

El primer campo representa el tipo de algoritmo que se utilizará para cifrar el hash. Los tipos de cifrado son solo siguientes:

1.   MD5

2.   blowfish

2a. eks blowfish

5.   SHA-256

6.   SHA-512


En este caso podemos detectar que el hash está cifrado con MD5. El segundo campo representa el salt , un salt  es un valor aleatorio que se utiliza para combinarlo con la contraseña origianal, de tal manera que la encriptación sea más robusta. Finalmente el tercer campo es el valor final del hash que se da de la suma del salt más la contraseña. Estos son solo algunos tipos de hash.

Posteriormente utilizaremos la herramienta John The Ripper para poder realizar el cracking de estas contraseñas.

Estructura de John The Ripper

A continuación se intentará realizar un cracking al hash MD5.

Hash MD5

Cracking exitoso (MD5)

Opciones Fundamentales

El diccionario rockyou.txt es muy potente para realizar cracking, ya que posee una gran cantidad de palabras en español, si deseas descargarlo, te lo compartimos a continuación:

http://scrapmaker.com/view/dictionaries/rockyou.txt

Posteriormente se procederá a realizar un cracking sobre un hash de tipo SHA-1.

Cracking exitoso (SHA-1)

A continuación se realizará el cracking al hash de tipo LM.

Cracking exitoso (LM)

Finalmente se realizará el cracking al hash de tipo Linux:

Hash Linux

Cracking exitoso (Hash de Linux)

Como pudimos observar, esta herramienta es muy potente para el cracking de contraseñas.



Artículos que te pueden interesar