lunes, 25 de enero de 2016

Crackeando Contraseñas con John The Ripper

Ya hemos visto en artículos anteriores algo de historia sobre la criptografía y los métodos de cifrado más utilizados en la actualidad, el día de hoy lo dedicaremos a ver como podemos descifrar contraseñas con una herramienta que nos ayudará a entender mejor el tema, y que nos automatizará todo el trabajo.

Imagen 1 : Crackeando Contraseñas con la ayuda de John The Ripper
En concreto utilizaremos John The Ripper, una herramienta de crackeo de contraseñas escrita en C y muy utilizada por los analistas de seguridad para comprobar la robustez de una clave frente a los ataques de fuerza bruta.

En primer lugar debemos tener claro, a que hacemos referencia cuando nos referímos a un "hash". La función principal que cumple el "hash" es proteger la confidencialidad de una contraseña, asegurándonos que no sea visible en texto plano. En concreto, es un algoritmo que nos permite crear a través de una entrada (contraseña, texto, archivos) una salida alfanumérica con una longitud fija.

La función que cumple un "hash", es mantener en oculto el texto de entrada. Sólo conocemos el texto de salida, pero no podemos obtener el texto de entrada a partir de él. De esta manera se protegen las contraseñas cuando las guardamos en una base de datos o en cualquier tipo de archivo del sistema. Matemáticamente, el "hash" se asemeja a una función de inyección, por este motivo utilizamos los ataques de fuerza bruta para intentar descubrir el texto de entrada. Se prueban millones de palabras desde un diccionario hasta que alguna sea igual al "hash" que tenemos.


Imagen 2 : El "hash" se asemeja a una función de inyección

Existen diferentes tipos de hash para cifrar contraseñas, los que pasaremos a ver a continuación son sólo dos, de los métodos más utilizados y con los que seguro, te encontrarás en alguna ocasión.


MD5 

Es un algoritmo de reducción criptográfico de 128 bits que nos permite cifrar una contraseña (en este caso), con una longitud de 32 caracteres alfanuméricos. Un ejemplo sería el siguiente:

Texto Plano: admin
Cifrado con MD5: 21232f297a57a5a743894a0e4a801fc3

Para descifrar la clave anterior solo nos tenemos que posicionarnos en el directorio donde tengamos el archivo con la clave guardada. Seguidamente ejecutamos john the ripper y le pasamos el siguiente parámetro:

john --wordlist=Diccionario.txt --format=raw-md5 MD5.txt


Imagen 3 : Ejemplo de password con "hash" en formato MD5
Imagen 4 : Proceso de descifrado de "hash" en MD5 

Opciones Fundamentales:


--wordlist -> con este parámetro indicamos el diccionario a utilizar

--format -> Con esta opción indicamos el formato del hash


SHA

Secure Hash Algorithm, Algoritmo de Hash Seguro (SHA), se trata de un sistema de funciones hash criptográficas, relacionadas con la Agencia de Seguridad Nacional de los Estados Unidos (NSA).

El primer miembro de la familia vió la luz en 1993, oficialmente llamado SHA. Sin embargo, hoy día, coloquialmente lo denominamos SHA-0, para evitar confundirlo con sus sucesores. Dos años más tarde el primer sucesor de SHA fué publicado con el nombre de SHA-1.

En la actualidad tenemos otras cuatro variantes más que se han publicado desde entonces, cuyas diferencias se basan principalmente en un diseño modificado ligeramente y en el incremento de los rangos de salida : SHA-224, SHA-256, SHA-384, y SHA-512 (llamándose SHA-2, todos ellos).

Un ejemplo del hash es el siguiente:

Texto Plano: admin
Cifrado con SHA1: d033e22ae348aeb5660fc2140aec35850c4da997

Para descifrar la clave hacemos lo mismo que con el ejemplo anterior pero esta vez cambiando el formato del "hash":

john --wordlist=Diccionario.txt --format=raw-sha1 SHA1.txt




Imagen 5 : Ejemplo de password con "hash" en formato SHA1
Imagen 6 : Proceso de descifrado de "hash" en SHA1 


Por último decir que hoy en día también existen otros tipos de hash para cifrar contraseñas, como por ejemplo podrían ser:

LM (Lan man o Lan manager), utilizado para cifrar las contraseñas para Windows Xp, NT, 95, 98 y ME.

NTLM (NT LAN Manager), segundo "intento" de Microsoft por mejorar el protocolo de contraseñas.

Hash de Linux , algo más complejo que los anteriores, ya que utiliza una nomenclatura de cifrado añadido de un salt, el cual se añadirá dentro del hash de manera aleatoria.


Fuente: backtrackacademy, Genbetadev


No hay comentarios:

Publicar un comentario