jueves, mayo 27, 2021

Password HashCheck: Comprueba si tu password es (aún) segura (o ya no)

Desde hace ya muchos años, se escucha de forma casi semanal que se ha producido una filtración de datos. No es nada nuevo y lo hemos leído por aquí en muchas ocasiones. Cada mes o cada semana tenemos algún bombazo, y la mas sonada del pasado ha sido la detectada a principios de Abril, que contiene información de más de 500 millones de usuarios. Entre la información filtrada se encuentran datos tan personales y sensibles como las direcciones de e-mail, fechas de nacimiento, nombres y apellidos, números de teléfono, etcétera.

Figura 1: Password HashCheck. Comprueba si tu password
es (aún) segura (o ya no).

Este tipo de problemas de seguridad ocurre con plataformas tan grandes como Facebook, grandes empresas, y muchas otras mas pequeñas. Por ejemplo, al momento de escribir este párrafo algunas de las últimas filtraciones de empresas “menos conocidas” para el gran público que podemos ver en Have I Been Pwnd son: SuperVPN/GeckoVPN, TickerCounter, Oxfam, Travel Oklahoma


Todo esto supone un gran problema para la seguridad de todas las empresas y todos los usuarios. Lo normal sería que cuando esto ocurre se reiniciarán las cuentas, para poder modificar los datos filtrados como, por ejemplo, las contraseñas o los correos electrónicos. El problema viene cuando al usuario no se le dice que su información ha sido filtrada, o que simplemente la propia empresa no sabe lo que ha ocurrido pero la información de sus usuarios ya esta circulando por Internet. Y por eso hemos hecho una herramienta con nuestro querido Python, el lenguaje de los pentesters :).


Si nos vemos afectados como usuarios en este tipo de ataques, los cibercriminales pueden utilizar nuestros correos electrónicos para meternos en listas de objetivos de SPAM, o listas a los que intentar infectar con Ransomware - por eso evitamos utilizar correos electrónicos publicados en la web - o pueden atacarnos por nuestro número de teléfono, o abrirnos cuentas en servicios con los datos personales filtrados. Ninguna de estas cosas positiva.  

¿Cómo podemos evitarlo, o al menos minimizar los riesgos?

Es una gran pregunta, con una respuesta muy sencilla si se trata de la identidad, y consiste en utilizar una contraseña única para cada servicio que nos registremos y tener todas nuestras identidades protegidas por un 2FA. Para ello, sería lo ideal, si además de esto utilizamos cuentas de correo electrónico distintas en cada servicio cuando las utilicemos como identidad (usuario del servicio), y distinta a nuestro buzón de correo electrónico personal. 


Figura 4: Configurar 2FA con Latch Cloud TOTP en Amazon

En este blog Chema Alonso ha hablado largo y tendido de esto, especialmente en el artículo de "El e-mail ha muerto ¡Larga vida al e-mail!" y en el artículo del lanzamiento de MyPublicInbox en el Día Internacional de Correo. Y para la gestión de los 2FA, lo mejor es utilizar una solución como Latch Cloud TOTP que te permite tener ordenados todos los 2FA TOTP de plataformas y servicios como Facebook, Microsoft, Google, Paypal, WordPress, etcétera.


Si por protección has creado identidades independientes en tus servicios de Internet. Es decir, has puesto diferentes usuarios y contraseñas como debe ser, gestionarlas no es fácil. Pero hay que crear, guardar y acordarse de todas las identidades que tenemos, y para ello existen aplicaciones que nos permiten esto. Las tienes tanto de pago como gratuitas. Entre las mas famosas de código abierto se encuentra Bitwarden, la cual tiene un plan individual muy bueno que te permite tener tus identidades ordenadas y seguras.

Password HashCheck

Lamentablemente de nada te sirve tener tus contraseñas ordenadas y protegidas por ti mismo si ya se han filtrado, por ello hemos decidido crear una prueba de concepto de una herramienta “universal" llamada Password HashCheck para poder buscar de forma segura si nuestra contraseña ha sido filtrada en Internet en alguna de estas grandes filtraciones de datos que ocurren casi continuamente, al estilo de cómo lo hace Apple ahora en su gestor de contraseñas en iOS. En el caso de iPhone, si entras en Passwords y luego en Security Recomendations, podrás ver el selector para comprobar si las cuentas que tienes en tu terminal han sido filtradas y, además, si alguna de tus contraseñas son fáciles de detectar.

Figura 6: Security Recomendations para Passwords en iPhone

Para nuestra prueba de concepto se utilizan distintos servicios como, por ejemplo, “Have I Been Pwned”, para comprobar gracias a su extensa base de datos de filtraciones de identidades si nuestra contraseña se ha filtrado o no, pero ¿qué seguridad voy a tener si os doy la contraseña a vosotros? Buena pregunta. Para ello hemos utilizado el método de k-anonimity, que se resume en, obtener la información necesaria para realizar “algo”, evitando que esa información pueda identificar a un individuo.

Figura 7: Ejemplo de K-anonimity

En nuestro caso, cuando se introduce una contraseña, esta se hashea inmediatamente para no tenerla en texto plano y que cualquiera pueda acceder a ella. Después se obtienen los 5 primeros caracteres de el hash, los cuales son los que se van a enviar a los distintos servicios. Estos responderán con todas las coincidencias que hayan encontrado. Es decir, se devolverán todos los hashes que comiencen por los 5 caracteres que se han enviado.

Una vez se tienen los hash coincidentes, se comprueba de forma local si el hash de la contraseña introducida coincide con alguno de los devueltos, si es así se avisa al usuario de que su contraseña esta filtrada y que debe cambiarla, o por el contrario, se le avisa de que no esta filtrada y de que por el momento esta a salvo. En este vídeo tienes un ejemplo de funcionamiento.

Figura 9: Demo de Password HashCheck

De esta forma podemos comprobar de la forma mas segura posible, y revisable debido a que es una herramienta Open Source, nuestra contraseña para saber si ha sido filtrada o si tenemos que cambiarla debido a que se nos ha filtrado, ya sea a nosotros o porque alguien usa la misma que nosotros y también se ha filtrado. Podéis acceder al código fuente y descargar la herramienta desde el repositorio de GitHub de Password HashCheck en el que se encuentra.

Saludos,

Autor: Guillermo Peñarando Sánchez, Developer en Ideas Locas CDCO de Telefónica.

No hay comentarios:

Entrada destacada

10 maneras de sacarle el jugo a tu cuenta de @MyPublicInbox si eres un Perfil Público

Cuando doy una charla a algún amigo, conocido, o a un grupo de personas que quieren conocer MyPublicInbox , siempre se acaban sorprendiendo ...

Entradas populares