Hace unos días, leí un artículo que mencionaba el resultado de un estudio sobre la seguridad de TI, concretamente, en el sector de la salud. En el mismo, se explicaba cómo los médicos alemanes tratan de forma negligente las contraseñas en sus prácticas, lo que pone en peligro la seguridad de la información de los pacientes. A continuación, enumero los datos más importantes del estudio:
· En 22 de 25 consultorios médicos, se usan contraseñas muy fáciles de adivinar o no usan contraseñas.
· En 22 de 25 consultorios médicos, varios usuarios comparten el mismo código de acceso.
· En 20 de 25 consultorios médicos, todos los usuarios tienen privilegios de administrador.
· Ninguno de los consultorios verifica si antiguos privilegios de administración todavía existen.
Como profesional de ciberseguridad, conozco demasiado bien estas malas prácticas en el manejo de credenciales. Y no es un caso aislado, ya que, estos datos, coincide, en menor o mayor medida, con los de otros países y sectores.
En este contexto, me pregunto si ya se ha dicho todo acerca de este tema tan machacado, y, haciendo un barrido documental rápido, me temo que lo más importante aún está por decir: ¡La idea de la contraseña segura tiene que morir!.Me explico.
Contraseñas “seguras”; de la teoría a la práctica
Se han escrito miles de artículos de buenas prácticas a la hora de elegir una contraseña, y todas recomiendan una longitud mínima de la misma, un valor que se ha tenido que ajustar año tras año. Incluso, en este mismo blog, hemos dado consejos sobre cómo crear y tratar “contraseñas seguras”. En esa entrada, explicábamos que es de vital importancia “una longitud mínima de 8 caracteres” (igual que CCN-STIC 821, Febrero 2018) y recomendábamos que se incluyesen “minúsculas, mayúsculas, números y símbolos especiales”. Pero, ¿esto realmente sirve de algo?
Me atrevo a decir que, hoy en día, el concepto de contraseñas “seguras” es una equivocación que empieza a causar más daños que alegrías. En este articulo voy a explicar por qué.
Password vs. User
Cualquier Administrador de sistemas que gestione más de 3 usuarios, se habrá encontrado con, al menos, uno de los siguientes problemas:
· Contraseñas débiles o cortas “por miedo a olvidar” una contraseña larga.
· Contraseñas reusadas o compartidas entre compañeros “por facilidad”.
· Bloqueos de cuentas por demasiados intentos frustrados de login, después de olvidar contraseñas complejas.
En muchos artículos sobre el tema de las contraseñas, suele aparecer este famoso cómic de XK:
Se sugiere que puedes elegir 4 palabras aleatorias para crear una contraseña increíblemente fuerte, pero, esto es realmente engañoso, porque el crackeo de contraseñas ha evolucionado más de lo esperado:
La herramienta hashcat, por ejemplo, incluye excelentes funciones de concatenación y mutilación que hacen que las contraseñas compuestas de múltiples palabras del diccionario, parezcan bastante débiles. Puedes comenzar por cotejar una lista de palabras, empezando con las inglesas de uso común: una lista de las 5.000 más comunes incluirá todas las palabras del ejemplo. El efecto de usar palabras combinadas del diccionario, es casi lo mismo que extender tu conjunto de caracteres. En lugar de 26 caracteres (o 52 al incluir mayúsculas), ahora estás usando 5.000 palabras de la lista de palabras común anterior. Con máquinas modernas y cálculo por GPU la contraseña, podría ser crackeada en cuestión de minutos. Por supuesto, esto depende, en gran medida, de las palabras que se elijan. Si usas palabras comunes para tu contraseña, estás perdiendo el tiempo.
Lo cierto es que el cómic, ha creado un debate interesante alrededor de la usabilidad y de seguridad de contraseñas.
Nadie puede negar que, durante años, hemos dejado mucha responsabilidad en manos del eslabón más débil de la cadena de seguridad: los usuarios. Todo dependía de la combinación usuario/contraseña. El usuario tenía que cargar con que sus contraseñas:
• Fuesen suficientemente largas y complejas
• No las olvide
• No las pierda en una brecha de seguridad
• No las comparta
• No las reusara en diferentes servicios, etc., y que, además, de sus contraseñas recuerde una o dos respuestas secretas para reestablecer la misma en caso de pérdida…
Todos los intentos de concienciación y recordatorios del mundo no van a asegurar que alguno de estos puntos falle tarde o temprano. Además, se ha comprobado que, los indicadores que "supuestamente" calculan la fuerza de la contraseña, tienden a provocar el efecto contrario: usuarios frustrados no eligen “buenas contraseñas”, sino contraseñas que pasen la prueba del indicador:
If we don't solve the password problem for users in my lifetime I am gonna haunt you from beyond the grave as a ghost pic.twitter.com/Tf9EnwgoZv
— Jeff Atwood (@codinghorror) August 11, 2015
El hecho es, que la cantidad de contraseñas que se debe memorizar es bastante pequeña, y no hay necesidad de enseñar a los usuarios cómo elegir buenas contraseñas. Todo el mundo sabe cómo construir una buena contraseña, simplemente, el problema radica en que no podemos memorizar contraseñas sólidas y únicas para cada servicio en línea que existe.
Cuando creamos una política de contraseña tenemos que pensar en nuestra superficie de ataque. ¿Cómo puede un adversario hacerse con nuestra contraseña?
TFW you spend 50k on firewalls and policy audits and then an attacker sprays and finds an admin account with Summer2019! as the password pic.twitter.com/f13BRa9zTc
— DrakeOnSecurity (@DrakeOnSecurity) June 30, 2019
Password vs. Adversario
· Interceptación: La contraseña es interceptada cuando viaja por la red. Por ejemplo, por protocolos inseguros como FTP, Telnet o HTTP sin TLS.
· Fuerza bruta: Prueba de miles o millones de contraseñas hasta encontrar la correcta.
· Key logging: Se registra la contraseña de manera encubierta cuando es introducida por el usuario.
· Shoulder surfing: Alguien observa al usuario a la hora de introducir la contraseña.
· Phishing: El usuario es engañado a revelar sus credenciales ante atacantes que suplantan una entidad de confianza.
· Adivinanza: Algunas contraseñas, o parte de ellas, son susceptibles de ser adivinadas por atacantes (nombre de la pareja o de la mascota, fecha de nacimiento, lugar de nacimiento o comida favorita, etc.)
· Robo de contraseña: La sustracción de credenciales mal guardadas (pe. postit, notas, etc.)
· Password Spraying: Probar un pequeño número de contraseñas contra un gran número de cuentas.
· Brechas/Leaks: Uso de credenciales filtrados en brechas.
· Credential Stuffing: Consiste en un ciberataque, cuyo protagonista consigue acceder, gracias a una brecha de datos, a las cuentas de usuarios en una plataforma mediante el ‘bombardeo’ de credenciales hasta que concuerden con las exactas.
Autenticación multifactorial, ¿al rescate?
Lo primero que se nos puede ocurrir implementar para evitar estos escenarios, es la autenticación multifactorial. Añadimos otro factor para poder acceder a nuestras cuentas. Bien. La idea es siempre la misma: añadir una verificación más de que eres tú, y no otra persona, quien está accediendo con tus credenciales. Para ello, el servicio comprueba que realmente tienes algo (móvil, token) que sólo tú deberías tener.
Sin embargo, los expertos en seguridad han demostrado que un ataque de phishing automatizado puede atravesar esa capa de seguridad adicional y engañar a los usuarios confiados para que compartan sus credenciales privadas. De hecho, en la pasada edición del congreso de seguridad Euskalhack (junio 2019), asistimos a una impresionante demostración de la herramienta Muraena, desarrollada por Michele Orru y Guiseppe Trotta. Muraena intercepta el tráfico entre el usuario y el sitio web de destino, actuando como un proxy entre la víctima y un sitio web legítimo. Una vez que Muraena tenga a la víctima en un sitio falso que parece una página de inicio de sesión real, se les pedirá a los usuarios que ingresen sus credenciales de inicio de sesión y el código 2FA, como de costumbre. Cuando Muraena autentica la cookie de la sesión, se pasa a NecroBrowser, que puede crear ventanas para realizar un seguimiento de las cuentas privadas de decenas de miles de víctimas.
A pesar de este ataque, la autenticación multifactorial, aún se considera una buena práctica de seguridad, mucho mejor que la alternativa de simplemente confiar en un nombre de usuario y una contraseña segura. Por supuesto, esto no significa que no debamos preocuparnos, sino que debemos ser aún más diligentes en la detección de intentos de phishing.
¿Ahora qué?
Hay casos, en que las credenciales son la única barrera que se interpone entre los adversarios y nuestros datos de valor, y a día de hoy, eso no es decir demasiado: recursos de computación casi ilimitados en la nube, tarjetas gráficas cada vez más poderosas, listas de diccionarios optimizadas y herramientas como hashcat que han madurado durante años y tienen una fuerte comunidad detrás que las mejoran cada día. Las infraestructuras cada vez, más complejas y llenas de elementos obsoletos, dificultan la protección de credenciales.
Rig moderno para el crackeo de contraseñas. Fuente: Terahash
Para evitar la mayoría de los escenarios arriba mencionados, no podemos depender de los usuarios y de su (in)capacidad de elegir “buenas contraseñas”. Por un lado, tenemos que quitar peso al usuario y ayudarle a proteger sus credenciales; por otro lado, proteger nuestros sistemas detectando y mitigando posibles ataques. Véase:
1. Reducir la dependencia de contraseñas.
- Solo se deben usar contraseñas dónde y cuándo tenga sentido.
- Se debe impulsar el uso de SSO (Single-SignOn) y la autenticación multifactorial para cuentas importantes y sistemas conectados a Internet.
2. Implementar soluciones técnicas de prevención de ataques.
- La regulación o el bloqueo de la cuenta puede defendernos ante ataques de fuerza bruta.
- La monitorización de logins, puede ayudar en la detección de este tipo de ataques.
- El blacklisting de contraseñas comunes (password1234, junio2019, …), obliga al usuario a elegir contraseñas más complejas.
3. Proteger las contraseñas.
- Hay que asegurar que toda la comunicación vaya por canales cifrados.
- Elegir productos que soporten estándares como SHA-256.
- Priorizar las cuentas de administradores, de servicios cloud y de usuarios que trabajan en remoto.
4. Ayudar a los usuarios a elegir mejores contraseñas.
- No exigir complejidad al usuario.
- Imposibilitar la creación de contraseñas demasiado cortas. No imponer longitud máxima.
5. Ayuda a los usuarios a lidiar con la sobrecarga de contraseñas.
- Impulsar el uso de gestores de contraseñas.
- No dejar expirar las contraseñas automáticamente, pero avisar a los usuarios de que cambien sus contraseñas al mínimo indicio de compromiso.
- Usar herramientas de delegación para evitar que se compartan contraseñas entre usuarios.
6. Implementar autenticación multifactorial donde sea posible.
- No nos podemos fiar de una contraseña únicamente, es cada vez más necesario este tipo de sistemas para autenticar identidades, y nos tendremos que adaptar.
- Al combinarse factores independientes, lo que se busca es reducir el riesgo de los demás factores, cuando uno de ellos sea comprometido.
Cuenta con nosotros
Desde Derten, te podemos ayudar a incorporar estas estrategias en tus procesos. Ofrecemos programas de Concienciación de Usuarios, Monitorización de Brechas y Exposición de Credenciales. Asimismo, llevamos a cabo Auditorias de Seguridad para encontrar los puntos débiles en tus redes y equipos. Finalmente, gestionamos la fortificación de servidores e implementación soluciones de autenticación multifactorial.