Publicaremos de forma sencilla, una serie de artículos aclarando detalles que consideramos interesantes sobre las contraseñas locales en Windows, sus puntos fuertes y débiles.
Cuando nos presentamos en una máquina Windows, la contraseña que proporcionamos debe estar almacenada en algún lugar para que el sistema operativo la reconozca y bien nos deje pasar, bien rechace el acceso. Almacenar la contraseña y compararla sin más con la que proporciona el usuario, sería una muy mala política de seguridad. Cualquiera con acceso al disco duro podría robar la contraseña en texto plano. Lo que se almacena en realidad es el resultado de aplicar un algoritmo a la clave introducida. Esto da como resultado una "firma" (o tradicionalmente llamado "hash"), un valor que en teoría sólo es producido por una contraseña en concreto. Son firmas lo que siempre se comparará entre sí, nunca contraseñas. En Windows, ese hash se encuentra físicamente en el archivo de nombre SAM (Security Account Manager) para contraseñas locales y en el archivo ntds.dit del controlador de dominio para los usuarios que se validan contra controladores de dominio. Nos centraremos en las contraseñas locales.
Para calcular los hashes que se almacenan en la SAM, Windows XP y anteriores utilizan por defecto dos algoritmos para cifrar cada clave: LM (por compatibilidad hacia atrás) y NTLM, más avanzado y estándar. Vista usa (por fin) sólo NTLM y no calcula ni almacena el inseguro LM por defecto. Un atacante necesitaría tener acceso a estos hashes (uno, otro, o los dos) para intentar calcular a partir de ellos las contraseñas en texto claro (aplicándoles fuerza bruta, o métodos más sofisticados como las tablas rainbow).
Windows no añade 'sal' a las contraseñas
Uno de los problemas históricos del almacenamiento de claves en Windows es que no 'saltea' las contraseñas. No añade, como UNIX por ejemplo, un trozo aleatorio de caracteres a la hora de calcular el hash. Con esto se evitaría que una misma contraseña de dos usuarios distintos, produjese una misma firma. Esto supone un problema de seguridad, porque si un atacante de Windows tiene acceso a estos hashes y dos son iguales, puede tener la certeza de que esos dos usuarios tienen la misma contraseña, incluso si no sabe cuál.
No hay comentarios.:
Publicar un comentario