Contraseñas Seguras

  • Autor de la entrada:
  • Categoría de la entrada:Pentesting
  • Comentarios de la entrada:1 comentario

Hoy vamos a hablar sobre por qué en los últimos años se nos repite constantemente que debemos establecer contraseñas seguras si queremos proteger nuestras cuentas.

He decidido escribir este post porque hace poco realizando un pentesting a un cliente exploté una vulnerabilidad SQL Injection (puedes leer más sobre esta vulnerabilidad aquí) y conseguí bajarme toda su base de datos. Cuando abrí la tabla de usuarios, no solo me impactó ver que guardaban las contraseñas en claro, sino que los usuarios habían puesto contraseñas como “carmen01”, “david93”, “Password” o “qwerty”. Y el usuario administrador había decidido que “admin2018” era una contraseña segura. Spoiler: no lo es.

Así que empecemos estableciendo qué es una contraseña segura. Una contraseña segura es una contraseña que nadie pueda adivinar u obtener mediante un programa automático. Si lees cualquier post de seguridad o cualquier recomendación oficial, puedes observar que en todos los sitios se relaciona contraseña segura con contraseña que contenga minúsculas, mayúsculas, números y caracteres especiales.

Pero ¿es esto realmente cierto? No. Por ejemplo, “zaq1ZAQ!” no es una contraseña segura.

Y, por el otro lado, una contraseña que no contenga mayúsculas, números y caracteres especiales, no tiene por qué ser insegura. Vamos a analizar esto mediante una viñeta publicada por XKCD. Supongamos que tenemos la siguiente contraseña: “Tr0ub4dor&3”. Podríamos hacer una estimación de la entropía de esta contraseña de esta forma:

En total, 28 bits de entropía. Para obtener esta contraseña mediante un programa informático, necesitaríamos hacer como máximo 228  intentos. A unos 1000 intentos por segundo, algo que es sencillo de conseguir en un ataque remoto a una página web, necesitaríamos solo tres días para romper esta contraseña: es fácil de romper. Y sin embargo, esta no es una contraseña sencilla de recordar.

Por otro lado, veamos que pasa si escogemos como contraseña cuatro palabras aleatorias de un diccionario, como “correctocaballobateríagrapa”, o en inglés, “correcthorsebatterystaple”.

La entropía de cada palabra aleatoria es de 11 bits, por lo que al combinar 4, obtenemos 44 bits de entropía. Esto implica que necesitaríamos 244 intentos para obtener esta contraseña. A 1000 intentos por segundo, unos 550 años. Es una contraseña muy dificil de obtener, pero muy fácil de recordar:

 

Obviamente, si elegimos 4 palabras aleatorias y después realizamos sustituciones por números y símbolos y alteramos mayúsculas y minúsculas, obtendremos una contraseña mucho más segura. Pero con este post he querido mostrar como es perfectamente viable establecer una contraseña segura apta para todos los usuarios.

Si no se te ocurre una contraseña lo suficientemente segura, puedes generarla mediante páginas como correcthorsebatterystaple.net:

 

Respecto al tema de guardar las contraseñas en claro en una base de datos, es algo que sigue ocurriendo a día de hoy. ¿Cómo guardar las contraseñas de manera segura? Mediante un hash. Un hash es una operación matemática unidireccional, esto es, a partir de A puedes obtener B, pero desde B no puedes llegar a A.

En la próxima entrada hablaré de los hashes y de cómo romperlos mediante la herramienta HashCat.

Lethani.

Esta entrada tiene un comentario

Deja una respuesta