miércoles, 1 de noviembre de 2017

¿Por qué se aconseja utilizar contraseñas tan largas y con tantos caracteres?

Como bien saben los que me conocen, a mí me gusta explicar el por qué de cada cosa y hay algo de lo que todavía no he hablado mucho y me gustaría dejar claras una serie de aspectos en los que mucha gente está un poco confusa, incluso gente que se dedica a la seguridad. Esa cuestión de la que quiero hablar es el por qué se aconseja utilizar las contraseñas que normalmente se aconsejan utilizar.


Normalmente, se aconseja a los usuarios utilizar contraseñas que cumplan una serie de requisitos, los cuales suelen ser:

  • Utilizar letras en minúscula
  • Letras en mayúsculas
  • Números
  • Signos de puntuación como puntos, signos de exclamación, interrogación,etc.
  • Caracteres especiales como @, €, $ o #.
  • Y con una extensión de 6 caracteres y superior, recomendando muchas personas entre 6-8 ó 6-10 caracteres.
Pero al fin y al cabo, todo esto es complicar la tarea al usuario, aunque si es complicarle un poco la vida para mejorar su seguridad, no lo vería tan malo, ya que a corto plazo le complican la vida pero para a largo plazo mejorar su seguridad. No obstante, la pregunta es ¿Mejora la vida del usuario? Para esto, vamos a realizar una serie de pruebas de concepto.

PoC 1: Ataque a las contraseñas utilizando un diccionario

Vamos a preparar un archivo .zip con contraseña.


Este archivo tiene de contraseña "manu" y vamos a intentar sacar la contraseña haciendo un ataque de fuerza bruta con un diccionario que crearemos. En esta primera PoC, veremos el problema que puede suponer el utilizar contraseñas que solamente incluyan letras en minúsculas.


Podemos ayudarnos para crear el diccionario utilizando la herramienta crunch, que está disponible en todos los sistemas Linux -no estoy seguro de que se pueda utilizar en sistemas Windows-. Todos esas posibles contraseñas, las almacenaremos en un archivo de texto para utilizarlo posteriormente, aunque podremos utilizarlo igualmente con el operador | y, en nuestro caso al utilizar un zip, la herramienta fcrackzip tal y como os mostré en una de las soluciones de los retos hacking que os subí. La variante será que esta vez que para esta primera PoC, dispondremos de un diccionario.


Como podéis ver, en el diccionario tenemos dentro la palabra manu, que es la contraseña del zip. Decir también que en este caso estamos haciéndolo sobre un zip, pero que igualmente es aplicable a cualquier servicio que requiera un inicio de sesión y no tienen regulado un mecanismo para bloquear posibles ataques de fuerza bruta. En esta PoC con diccionario, no se tardó ni un minuto en sacar la contraseña.

Hasta el momento, parece evidente que no es buena idea, dada esta PoC, utilizar una contraseña que contenta caracteres en minúscula, ya que con un diccionario, se ha sacado esta contraseña de 4 caracteres en unos 30 segundos aproximadamente con un Kali Linux que es una máquina virtual en un equipo con 4GB de RAM y un i5, algo que no está nada mal, pero que con equipos profesionales, se podría reducir a 10 segundos o menos.

PoC 2: "Complicando" la contraseña

Para esta PoC utilizaremos otro archivo .zip, pero esta vez, con una contraseña un poco más compleja, una contraseña que está en el siguiente nivel de las contraseñas.


Se suele recomendar también que se utilicen contraseñas con letras y número porque están son "más seguras" que la contraseña mostrada en la PoC1. Veamos cómo de cierto es esto.


En este caso la contraseña se encuentra en un diccionario de los muchos que tiene Kali Linux por defecto en su sistema, nos obstante, hubiese ocurrido igual si lo hacemos a lo bestia.


Haciéndolo a lo bestia, sería utilizando crunch y escribiendo toda esa línea donde le decimos que pruebe con letras y números. Hacer lo que he puesto en la captura anterior es muy bestia, pero con esto empieza a probar con minúsculas, mayúsculas, números e incluso con símbolos, por lo que solamente tendríamos que sentarnos y esperar a que saque la contraseña. De esta forma, con la contraseña que ya he dicho, tardó en sacar la contraseña 2 horas y media o 3 horas, aunque también fue porque buscó con mayúsculas y minúsculas, en lugar de especificar con solamente quería minúsculas, aunque de esta forma, disponemos de un resultado más realista, pues tú al principio no sabes si ha usado solamente mayúsculas, minúsculas, número y/o símbolos.

Como vemos, este "segundo nivel de las contraseñas" no parece ser lo suficientemente seguro, pues en 3 horas, con una máquina virtual sobre un equipo normalito. Esta misma PoC la probé con un compañero con un equipo más potente y tardó menos.

Está claro, tal y como hemos ido demostrando, que todo depende del diccionario que creamos y crunch nos da muchas opciones para hacer esta tarea, por lo que el tiempo que nos tiremos, dependerá de la complejidad de la contraseña y en cómo de cerca estemos a la hora de elaborar el diccionario. Por supuesto, esto depende también de que el servicio sobre el que lanzamos la fuerza bruta, limite el número de intentos o no; pero como apreciáis, en este caso zip no tenía la opción de limitar el número de intentos, por lo que nos da total libertad para dejar corriendo, por ejemplo, un fin de semana entero un ataque de fuerza bruta hasta que de con la contraseña.

PoC 3: La contraseña más compleja en base a los requisitos, owned también

En esta PoC, vamos a crear una contraseña con todos los requerimientos. Vamos a crear un servicio con una contraseña con mayúscula, minúsculas, números y signos de puntuación o símbolos. No obstante, con la PoC 2, ya hemos hecho un diccionario con mayúsculas, minúsculas, números y símbolos, por lo que automáticamente, ya sabremos que esta PoC va a sacar la misma conclusión.

Aunque para esta PoC, me voy a apoyar de la entrada que ya publiqué sobre Cómo comprometer un FTP para acceder a datos privados donde la contraseña era Carlos86+ , analicemos esta contraseña.

  1. ¿Tiene minúsculas?--> Sí
  2. ¿Tiene mayúsculas?-->Sí
  3. ¿Tiene números?-->Sí
  4. ¿Tiene símbolos como +,/,*,-,$,@,etc.?-->Sí
Pues estos son los requisitos que se les suele dar a los usuarios a la hora de escoger una contraseña, y como hemos visto, no es un trabajo demasiado complicado si medio aciertas con el diccionario, o sino, tiramos a los bestia y esperamos a que no tenga un límite de intentos.

Conclusión

Creo que queda claro que las contraseñas no sirven para nada, pues son fácilmente hackeables. Ya sea por fuerza bruta, con un keylogger o un ataque de hombre en medio, podemos robar las contraseñas con relativa facilidad, por lo que utilizar contraseñas largas y con mayúsculas, minúsculas, números y símbolos es una tontería. La extensión porque nos bastaría cambiar en crunch por ejemplo, de 6 a 8 caracteres [quedando crunch 8 8 ]. Las posibles combinaciones, da igual también, pues lo haces a lo bestia y dices que lo incluya todo y listo, tendrás que esperar un rato, pero lo sacas al cabo de las horas o días.

Es por eso, que es mucho más segura una contraseña sencilla más un 2 Factor de Autenticación como lo pueden ser Google Authenticatos o Latch, que una contraseña larga, con muchos caracteres y además cumpliendo todos esos requisitos. También existe la posibilidad de utilizar la autenticación vía sms, pero eso ya vimos que también era sencillo de obtener el código de verificación, por eso que es preferible utiliza Google Authenticator o Latch en lugar del SMS, y Latch mejor que Google Authenticator.  Por supuesto, es mucho mejor, utilizar una contraseña como en la PoC 3 [aunque se podría cambiar a C4r10$86+ y darle un poco más de seguridad] más un segundo factor de autenticación, ya que el tiempo que tendrá que esperar será mayor, ya que el tiempo crece de forma exponencial conforme más compleja sea la contraseña, y si la sacase, encima tendría que lidiar con un 2FA de autenticación. Poquito a poquitos, segu segurito, nos vamos haciendo, cada más seguros...pero sin contraseñas, por favor, que alguien mate a las contraseñas.

¿Hackeamos el Mundo?

No hay comentarios:

Publicar un comentario

Related Posts Plugin for WordPress, Blogger...

Entrada destacada

El server me sabe a poco.

Soy un fanático del Rock y de Debian . (Creo que voy a inventar Rockbian, que suena bien y todo xD) Llevaba tiempo queriendo unir estos 2 c...