john es una herramienta que permite verificar el estado de las claves de los usuarios de nuestro sistema. En CentOS lamentablemente no viene por defecto, así que tenemos que bajarle de un repositorio de terceros, instalarle y usarle.
En mi ejemplo utilizaré CentOS-6 de 64bits (el6, x86_64). Ustedes pueden ver qué versión de CentOS tienen instalada haciendo:
cat /etc/redhat-release
Y pueden ver si usan 32bits (i386, i686) o 64bits (x86_64) haciendo:
uname -a
Podemos llegar al repositorio repoforge:
http://pkgs.repoforge.org/john/
Y buscar la versión más moderna que tengamos para nuestro sistema, en mi caso repito es el6, x86_64. En mi caso sería:
john-1.7.9-1.el6.rf.x86_64.rpm
Procedemos a bajarle e instalarle:
wget http://pkgs.repoforge.org/john/john-1.7.9-1.el6.rf.x86_64.rpm
rpm -Uvh john*rpm
Este paquete tiene un problemita, falla algo al final del archivo de configuración. Para ello sugiero editemos /etc/john.conf y vamos a la última línea y la comentamos de forma que quede así:
#.include <dynamic.conf>
Y listo, podemos proceder a usarle.
Cómo usarle?
Fácil, para probar creemos varios usuarios con claves débiles (por ejemplo el mismo nombre de usuario de clave o el nombre123, etc). Se crean usuarios con:
useradd usuario
passwd usuario
Creemos varios, 5 ó 6.
Ahora procedemos a unir el archivo de usuarios y el de claves, con el comando unshadow:
unshadow /etc/passwd /etc/shadow > claves.txt
Y procedemos a ejecutar:
john claves.txt
Luego de varios minutos u horas, veremos una salida así:
Loaded 5 password hashes with 5 different salts (crypt, generic crypt(3) [?/64])
Press ‘q’ or Ctrl-C to abort, almost any other key for status
0g 0:00:00:14 6% 1/3 0g/s 47.76p/s 47.76c/s 47.76C/s estop..ernestoestévez4
0g 0:00:00:35 10% 1/3 0g/s 48.85p/s 48.85c/s 48.85C/s eestévez+..eeperez/
usuario (usuario)
prueba (prueba)
Como pueden ver, ha descubierto ya dos claves de usuario. Lógicamente depende de la cantidad de usuarios y capacidad del procesador para que descubra más o menos rápido todo el listado de usuarios.