Los ataques de texto cifrado escogido constituyen la principal amenaza al
sistema de
autenticación de Unix; a diferencia de lo que mucha gente cree, no es posible
descifrar una contraseña, pero es muy fácil cifrar una palabra junto a un
determinado salt, y comparar el resultado con la cadena almacenada en el
fichero de claves. De esta forma, un atacante leerá el fichero /etc/passwd (este fichero ha de tener permiso de lectura para todos los
usuarios si queremos que el sistema funcione correctamente), y mediante un
programa adivinador (o crackeador) como Crack o John the
Ripper cifrará todas
las palabras de un fichero denominado diccionario (un fichero ASCII con
un gran número de palabras de cualquier idioma o campo de la sociedad -
historia clásica, deporte, cantantes de rock...), comparando el
resultado obtenido en este proceso con la clave cifrada del fichero de
contraseñas; si ambos coinciden, ya ha obtenido una clave para acceder al
sistema de forma no autorizada. Este proceso se puede pero no se suele hacer en
la máquina local, ya que en este caso hay bastantes posibilidades de detectar
el ataque: desde modificar en código de la función crypt(3) para que
alerte al administrador cuando es invocada repetidamente (cada vez que el
adivinador cifra una palabra utiliza esta función) hasta simplemente darse
cuenta de una carga de CPU excesiva (los programas adivinadores suelen consumir
un tiempo de procesador considerable). Lo habitual es que el atacante transfiera
una copia del archivo a otro ordenador y realice el proceso en esta otra
máquina; ni siquiera se tiene que tratar de un servidor Unix con gran
capacidad de cómputo: existen muchos programas adivinadores que se ejecutan
en un PC normal, bajo MS-DOS o Windows. Obviamente, este segundo caso es mucho
más difícil de detectar, ya que se necesita una auditoría de los
programas que ejecuta cada usuario (y utilidades como cp o ftp no
suelen llamar la atención del administrador). Esta auditoría la ofrecen
muchos sistemas Unix (generalmente en los ficheros de log /var/adm/pacct o /var/adm/acct), pero no se suele utilizar por los
excesivos recursos que puede consumir, incluso en sistemas pequeños;
obviamente, no debemos fiarnos nunca de los archivos históricos de órdenes
del usuario (como $HOME/.sh_history o $HOME/.bash_history),
ya que el atacante los puede modificar para ocultar sus actividades, sin
necesidad de ningún privilegio especial.
© 2002 Antonio Villalón Huerta