John the Ripper es una conocida herramienta de auditorías de seguridad, muy utilizada para (ejem ejem) comprobar si nuestras claves son robustas. Para ello se le proporciona un fichero de entrada con los hashes de las claves que queremos obtener comprobar, y opcionalmente un diccionario o juego de caracteres con los que realizar las pruebas.
John the Ripper no soporta de serie el tratamiento de passwords en formato MD5 simple. Es decir, no soporta un archivo de claves con formato «nombre:clave» como el utilizado en passwd. Un ejemplo:
pepe:7ef0b3c0aa6339c701ff370795873628
juan:5fc6c5c2aecd3a419109cb34ccb7da70
jorge:b662c2e331741ada2770cb885b3f696a
Para que John the Ripper funcione con este formato necesitamos parchear su código fuente con Raw-MD5, y después compilar.
Descargar lo necesario
Vamos a utilizar John the Ripper 1.7.2 y el parche Raw-MD5 para 1.7:
$ wget http://www.openwall.com/john/f/john-1.7.2.tar.gz
$ wget ftp://ftp.openwall.com/pub/projects/john/contrib/john-1.7-rawmd5-ipb2-4.diff.gz
Parchear
Descomprimimos ambos archivos y parcheamos el código fuente:
$ tar zxvf john-1.7.2.tar.gz
$ gunzip john-1.7-rawmd5-ipb2-4.diff.gz
$ cd john-1.7.2
$ patch -p1 < ../john-1.7-rawmd5-ipb2-4.diff
Compilar
A continuación compilamos el código fuente ya modificado. Con la primera llamada a «make» visualizaremos un listado de plataformas, donde deberemos elegir la que mejor se ajuste a nuestro sistema para la segunda llamada. En mi caso, la mejor es «linux-x86-sse2»:
$ cd src
$ make
$ make clean linux-x86-sse2
El código fuente no tiene una orden «make install» para copiar los binarios a nuestro sistema. En su lugar, se crea un directorio «run» al mismo nivel que «src» que contiene el resultado de la compilación. Podemos mover este directorio libremente a una ubicación mejor y borrar el código fuente si no lo vamos a necesitar más.
Ejecutar
Vamos a suponer que tenemos un archivo «/home/usuario/claves.txt» con el contenido que aparece en el párrafo introductorio del artículo. Para procesar sus claves haríamos la siguiente llamada:
$ ./john –format=raw-MD5 /home/usuario/claves.txt