Crack, desarrollado por el experto en seguridad Alec Muffet, es el
`adivinador' de contraseñas más utilizado en entornos Unix; actualmente
se encuentra en su versión 522.5, que
funciona correctamente en la mayoría de clones del sistema operativo
(Linux, Solaris, OSF...). Ejecutar periódicamente Crack sobre el
fichero de contraseñas de sus sistemas es algo muy recomendable para
cualquier administrador mínimamente preocupado por la seguridad, sin
importar que se utilicen mecanismos para obligar a los usuarios a elegir
passwords aceptables.
Este adivinador realiza una primera pasada sobre el fichero de claves
intentando romper contraseñas en base a la información de cada usuario
almacenada en el archivo; se trata de unas comprobaciones rápidas pero
efectivas, ya que aunque la cantidad de datos del fichero no es muy grande, se
trata de información frecuentemente utilizada como password. Tras
esta pasada, entran en juego los diccionarios para seguir adivinando
contraseñas (un diccionario no es más que un fichero con posibles passwords en él, generalmente uno por línea). El propio programa se
distribuye con algunos de estos ficheros, pero es recomendable que se
complementen con más diccionarios (existen multitud de ellos disponibles a
través de Internet), especialmente con aquellos que contengan palabras
que por las características del sistema sean susceptibles de ser usadas
como claves; por ejemplo, si estamos en España seguramente nos convendrá
utilizar un diccionario con palabras en castellano; si administramos una
máquina de un departamento de biología, otro con términos de esta
ciencia...incluso si sospechamos que nuestros usuarios son aficionados al
deporte, o a la literatura griega antigua, podemos encontrar diccionarios
adecuados a estos campos.
Con todos estos diccionarios - los propios y los que cada administrador puede
añadir - Crack construye una base de datos con la que empieza a
trabajar; la primera pasada utilizando diccionarios consiste simplemente en
probar palabras con todas las letras en minúsculas. Posteriormente, se
mezclan mayúsculas y minúsculas, y de esta forma se van combinando
caracteres hasta añadir números y caracteres alfanuméricos a cada palabra
de los diccionarios para comprobar que dicha combinación no es utilizada
como contraseña en el sistema. Habitualmente las primeras pasadas son las
que más claves son capaces de romper, pero una vez adivinados los passwords más débiles quizás nos interese seguir ejecutando Crack
para obtener contraseñas más elaboradas: recordemos que un atacante
puede aprovechar la potencia de servidores en los que ha penetrado para ejecutar
Crack sobre nuestro fichero de contraseñas durante mucho tiempo, por lo
que es posible que `adivine' claves que a priori no son débiles.
Tal y como se explica en su documentación, la forma en que Crack
trata de adivinar contraseñas es seguramente la que consigue mayor velocidad;
en primer lugar se ordenan y se agrupan las entradas del fichero de passwords en base a su salt (ya comentamos el mecanismo de cifrado a la
hora de hablar de autenticación de usuarios). Una vez clasificadas, para
cada grupo de salts diferente se selecciona una entrada de diccionario
convenientemente tratada (mayúsculas, números...), se cifra utilizando
el salt (esto es lo que consume mayor tiempo de CPU) y se compara con
la contraseña cifrada de cada miembro del grupo; si coinciden, se ha
adivinado un nuevo password.
Para invocar a Crack utilizamos como argumento el fichero de claves a
atacar; por ejemplo, imaginemos que en lugar de nuestro /etc/passwd vamos
a romper las contraseñas de otra de las máquinas, guardadas en el fichero
`maquina':
luisa:/usr/local/c50a# ./Crack maquina
Crack 5.0a: The Password Cracker.
(c) Alec Muffett, 1991, 1992, 1993, 1994, 1995, 1996
System: Linux luisa 2.2.13 #6 Tue Apr 25 03:58:00 CEST 2000 i686 unknown
Home: /usr/local/c50a
Invoked: ./Crack maquina
Stamp: linux-2-unknown
Crack: making utilities in run/bin/linux-2-unknown
find . -name "*~" -print | xargs -n50 rm -f
( cd src; for dir in * ; do ( cd $dir ; make clean ) ; done )
make[1]: Entering directory `/usr/local/c50a/src/lib'
rm -f dawglib.o debug.o rules.o stringlib.o *~
make[1]: Leaving directory `/usr/local/c50a/src/lib'
make[1]: Entering directory `/usr/local/c50a/src/libdes'
/bin/rm -f *.o tags core rpw destest des speed libdes.a .nfs* *.old \
*.bak destest rpw des speed
make[1]: Leaving directory `/usr/local/c50a/src/libdes'
make[1]: Entering directory `/usr/local/c50a/src/util'
rm -f *.o *~
make[1]: Leaving directory `/usr/local/c50a/src/util'
make[1]: Entering directory `/usr/local/c50a/src/lib'
make[1]: `../../run/bin/linux-2-unknown/libc5.a' is up to date.
make[1]: Leaving directory `/usr/local/c50a/src/lib'
make[1]: Entering directory `/usr/local/c50a/src/util'
all made in util
make[1]: Leaving directory `/usr/local/c50a/src/util'
Crack: The dictionaries seem up to date...
Crack: Sorting out and merging feedback, please be patient...
Crack: Merging password files...
Crack: Creating gecos-derived dictionaries
mkgecosd: making non-permuted words dictionary
mkgecosd: making permuted words dictionary
Crack: launching: cracker -kill run/Kluisa.11110
Done
luisa:/usr/local/c50a#
Tras devolver el control al shell el adivinador estará trabajando en
segundo plano:
luisa:/usr/local/c50a# ps
PID TTY TIME CMD
10809 ttyp3 00:00:00 bash
11327 ttyp3 00:00:07 cracker
11330 ttyp3 00:00:00 kickdict <defunct>
11333 ttyp3 00:00:00 ps
luisa:/usr/local/c50a#
Podemos comprobar el estado del ataque en todo momento utilizando la utilidad
Reporter:
luisa:/usr/local/c50a# ./Reporter
---- passwords cracked as of Thu May 4 08:05:35 CEST 2000 ----
Guessed josel [beatriz] Jose Luis,,0, [maquina /bin/ksh]
---- done ----
luisa:/usr/local/c50a#
Y para finalizar la ejecución del adivinador utilizaremos el shellscript
plaster:
luisa:/usr/local/c50a# ./scripts/plaster
+ kill -TERM 11327
+ rm -f run/Kluisa.11110
+ exit 0
luisa:/usr/local/c50a#
Para finalizar el punto, hay que volver a insistir sobre el uso regular de
Crack en cada una de las máquinas bajo nuestra responsabilidad; aunque
muchos administradores consideran el utilizar este tipo de programas equipararse
a un pirata, hemos de pensar siempre que es mejor que las contraseñas
débiles las encuentre el root antes que un atacante. Y si el
administrador no utiliza un adivinador de este estilo, puede dar por seguro que
un pirata no dudará en hacerlo.
© 2002 Antonio Villalón Huerta