¿Cómo se almacenan
las claves?
Normalmente cuando se trata de almacenar una contraseñas se
almacena en una base de datos cómo MySQL o SQLite, y digo normalmente porque no
es raro encontrar programas que almacenen contraseñas en texto plano y lo más
importante, sin guardar el hash de la clave en lugar de la misma clave.
¿Qué es un hash?
Un hash es el resultado de aplicarle una operación
matemática irreversible a unos datos de entrada (en este caso una contraseña) dando
como resultado una cadena de longitud fija.
Por ejemplo:
El resultado de realizar una función hash a la cadena “1234”
sería “81dc9bdb52d04dc20036dbd8313ed055”
y el resultado de realizar la misma función a la cadena “pepito” sería “c482af336ae81e4634dc84f94e67eed8”.
Como podemos observar las cadenas entrantes son de diferente
longitud y como resultado se consiguen cadenas totalmente diferentes salvo por
su longitud que es la misma.
Tipos de hash
Existen muchos tipos de hash y cada uno realiza de forma
diferente la función matemática que genera la cadena de salida, para una misma
cadena de entrada.
Por ejemplo:
El hash MD5 de “Admin” sería “21232f297a57a5a743894a0e4a801fc3”
mientras que el hash SHA-256 de
“Admin” sería “8c6976e5b5410415bde908bd4dee15dfb167a9c873fc4bb8a81f6f2ab448a918”
Hay tipos de hash más antiguos como el MD5 que ya han sido
vulnerados y por lo cual no son seguros, y otros más nuevos como SHA-3 que por
el momento son más seguros. Pero en este artículo nos centraremos en dos tipos
de hash en concreto, LM y NTLM, que son los que utiliza Microsoft para
almacenar las contraseñas de los usuarios de Windows.
LM (LAN Manager)
Es el primer hash que utilizaron los sistemas Windows, sus
características y método para realizar el hash son ya muy conocidas, esto
sumado a que los métodos que utiliza no son muy buenos lo convierten en carne
de cañón vulnerable. Ha sido utilizado por Windows desde el Windows 3.1
hasta el famoso XP, pero a partir de Windows Vista, las contraseñas dejaron de
almacenarse con LM como medida de
seguridad y fue sustituida por su sucesor NTLM,
aunque, esta medida se puede revertir mediante configuración y volverse a
activar ya que Windows no la quitó por completo por motivos de retro
compatibilidad.
Estas son sus características y los patrones que seguiría
si le hiciésemos la función hash a la cadena “Admin1234":