martes, 18 de diciembre de 2007

Crackear contraseñas de Linux con John the Ripper

John the Ripper (Juan el destripador) es el programa de cracking de contraseñas por excelencia, en esta entrada veremos como averiguar las contraseñas de Linux mediante dos métodos disitintos, a través de diccionarios y por fuerza bruta.
No es tan fácil como parece, las contraseñas de Linux están encriptadas bajo MD5 en el archivo /etc/shadow, el cual no puede ser leído por los usuarios normales, asique tendremos que ingeniárnoslas, para conseguir ese archivo como sea; con exploits o con escalada de privilegios es lo más común.
Una vez tenemos el archivo en nuestro poder, lo primero que haremos será instalar el paquete john:
sudo apt-get install john
Una vez instalado podemos empezar con el primer método.

El ataque por diccionarios se basa en un archivo, que contendrá todas las palabras que probaremos para adivinar el password. John leerá ese archivo e irá probando de una en una hasta dar con la acertada. Ejemplo:
$ john -w=spanish.txt /etc/shadow
Loaded 2 passwords with 2 different salts (FreeBSD MD5 [32/32])
guesses: 0 time: 0:00:00:05 6% c/s: 2404 trying: amiento
Session aborted
En este caso estoy utilizando el diccionario spanish.txt porque pienso que la clave puede estar compuesta sólo con letras, si supiéramos que la clave es numérica usaríamos un diccionario numérico.
En los siguientes enlaces podéis descargar un ejemplo de cada uno:
¿Qué ventajas o inconvenientes tiene este método?
Pues la principal ventaja es la velocidad, es un método muy rápido pero a su vez tiene un gran inconveniente, si el password que queremos descifrar no se encuentra en el diccionario, nunca lo hallaremos. Este método lo usaremos sobre todo cuando queramos una cuenta de usuario en un sistema en el que hay muchos, porque al haber muchos usuarios, la probabilidad de tener algún password en nuestro diccionario es muy alta.
El segundo método es más agresivo, usaremos la fuerza bruta cuando queramos la clave de un usuario concreto, por ejemplo root. Los administradores de sistemas son más cuidadosos con sus claves y es muy raro que usen claves fáciles asique la única forma de conseguirlo será probar todas las posibles combinaciones. Ejemplo:
john -i /etc/shadow
Esto probará todas las combinaciones posibles, pero si sabemos el tipo de password que puede ser podemos indicarle que sólo use letras o números. Si queremos que los password que pruebe sean numéricos escribimos esto:
john -i:Digits /etc/shadow
Por el contrario si queremos que sólo pruebe con letras:
john -i:Alpha /etc/shadow
Hasta aquí ya sabemos como conseguir las contraseñas, ahora sólo queda saber cómo visualizarlas,y se hace con el siguiente comando:
john -show /etc/shadow
El hecho de averiguar mediante fuerza bruta una clave puede no ser cuestión de minutos u horas, sino de semanas, meses o incluso años si es lo suficientemente compleja, por eso si en algún momento queremos parar el proceso pulsamos CTRL+C y cuando queramos continuar escribimos el comando:
john -restore /etc/shadow
Como dije anteriormente este programa es el mejor(en mi opinión) y por lo tanto aquí no se acaban sus posibilidades, tiene muchos parámetros, configuraciones, parches, formatos… aquí os hago una pequeña introducción, si queréis profundizar, en la sección de manuales podréis encontrar lo que buscáis.
Para protegernos de estos ataques, sólo tenemos que hacer dos cosas muy sencillas, hacer una clave compleja compuesta de números, letras mayúsculas y minúsculas y carácteres raros como @ , . + - y de una logitud considerable, unos 10 carácteres está bien. Además de eso, como el john también es capaz de descifrar claves complejas, debemos de cambiar nuestra contraseña periódicamente.

No hay comentarios: