Recuperando passwords cifrados

Passwords El cifrado de datos se usa en múltiples ocasiones, pero siempre con el fin de asegurar una confidencialidad, de no permitir que alguien que acceda a los datos pueda leerlos, ya que únicamente tendrá acceso al cifrado de los mismos.

Por ejemplo, los ficheros de password de Windows suelen guardar estas contraseñas cifradas, como ya vimos , en LM o NTLM según estemos usando Windows Vista o una versión anterior.

Un algorismo de cifrado muy común, por ejemplo en algunas bases de datos, es el famoso md5 , que genera cifrados de 128 bits, o 32 carácteres hexadecimales. Este es un tipo de cifrado unidireccional, es decir, nunca se podrá "descifrar" un cifrado, sino que se suele usar para comparar los cifrados de password, y no los password originales.

Pues bien, ayer me topé con que existen múltiples webs del estilo "password recovery" que mantienen grandes bases de datos con la palabra y su cifrado, permitiéndo buscar por cifrado y devolviéndo la palabra que lo generó. Un ejemplo es passcracking.com .

También podemos descargárnos directamente las rainbow tables correspondientes al algorismo de cifrado, para posteriormente usar algún programa como Rainbow Crack que busque en cuestión de segundos la relación entre el cifrado y texto plano que queramos recuperar. Hay muchas rainbow tables cada una con toda la relación cifrado-texto plano para un número y tipo de carácteres concreto. Más información aquí .

Flickr! Foto por Richard Parmiter

Contraseñas de Windows

Mirando los feeds de «una al día» de Hispasec, he ido a parar a un fantástico artículo sobre la seguridad en las contraseñas locales en sistemas Windows dividido en varias entradas. Concretamente está en los siguientes enlaces:

Básicamente comentan la existencia de un fichero donde se almacenan las contraseñas (SAM), que como ya sabemos únicamente se guardan cifradas. Así pues, siempre que se realiza una comprobación de contraseñas realmente se realiza una comprobación del cifrado de las mismas (esta es la razón por la cual en los sistemas «seguros» un administrador nunca podrá recordarte tu contraseña si la has perdido, únicamente podrá crearte una de nuevo, ya que no será capaz de recuperarla a partir del cifrado).

Security

Por lo que nos comentan los amigos de Hispasec, inicialmente Windows usaba el algoritmo LM para el cifrado de las contraseñas (permitiendo contraseñas de hasta 14 carácteres), que introducía numerosos fallos de diseño y facilitaba la vida a los atacantes que buscaban mediante programas de fuerza bruta crear una contraseña que generase el mismo cifrado. Posteriormente Windows sacó el nuevo algoritmo NTLM, mucho más robusto, pero que no añadía seguridad, debido a que hasta la aparición de Windows Vista, se almacenaban los resultados de aplicar ambos algoritmos (LM y NTLM) en el mismo fichero de passwords (SAM), con lo que un atacante únicamente tenía que ignorar la clave NTLM y centrarse, como hasta ahora en el LM.

Como punto a favor, diremos que se puede anular el almacenamiento en cifrado LM usando passwords de 15 o más caracteres, o incluso forzando al sistema a no usarlo

Como último apunte, me quedo con el intento de añadir seguridad por parte de Microsoft, añadiendo un cifrado del cifrado con el uso de Syskey, que da las opciones (que nadie, que conozca, usa o ha usado) de tener que introducir manualmente el cifrado al iniciar el PC, o mediante el uso de un disquette, imposibilitando así que un atacante pueda conseguir este segundo cifrado (ya que está en tu cabeza o en un medio físico externo).

Flickr! Foto por Brad & Sabrina