Poesía Binaria

Comprueba si los usuarios de tu sistema están seguros y su e-mail no figura en filtraciones

A raíz del post de la semana pasada (Tus datos en Internet, ¿están realmente seguros?) surge esta idea. Nosotros como administradores de un sistema al que se conectan varios usuarios tenemos que cuidar de ellos. Y puede que nuestros usuarios no utilicen siempre las mejores contraseñas, no siempre utilicen conexiones seguras para acceder a ciertos servicios, que descarguen e instalen programas de dudosa reputación… y todo eso puede llevarnos a que sus contraseñas se vean expuestas.

Es indudable que las acciones preventivas son indispensables. Realizar campañas de concienciación en seguridad, cursos para enseñar a tus usuarios cómo funcionan los sistemas, y qué medidas se pueden tomar, o incluso configurar políticas de seguridad estrictas en los ordenadores de tus usuarios para que no puedan hacer ciertas cosas (aunque esto es un arma de doble filo). Aunque, al final, no todo depende de tus sistemas y tus usuarios, sino también de aquellos servicios a los que se conectan y puede que alguno de estos haya sido objetivo de una filtración de datos o contraseñas.

Y, por supuesto, nos viene muy bien conocer si nuestros usuarios han sido víctimas de estas filtraciones, verificando si sus direcciones de correo figuran en ellas. Claro que una de las formas de realizar esto es descargarse los archivos de estas filtraciones (que suelen estar en texto plano), y con ellos podemos hacer una búsqueda de los correos electrónicos. Conseguir dichos archivos no es difícil, puede haber muchos sitios donde descargarlos, y en muchas ocasiones es gratis (en ocasiones dichas filtraciones salen a la luz varios años después de producirse), podemos realizar una búsqueda en torrents, redes ed2k, etc. Lo malo de esto es que los archivos de las filtraciones son enormes (del orden de varios Gb a varios Tb). Por lo que manejar archivos tan grandes es inviable.

Sitios donde verificar nuestros correos

Afortunadamente existen sitios, de personas o empresas que tratan estos archivos y proporcionan un acceso fácil a la información. Es decir, introducimos nuestro correo electrónico y nos dice si ha sido filtrado o no… por suerte, no proporcionan la información que ha sido filtrada, podría ser terrible tener un acceso tan fácil a esa información por parte de un tercero. Algunos de esos sitios son:

El funcionamiento es sencillo, introducimos nuestro correo electrónico y vemos si nuestra información está en algún lado. Podemos ver tanto sitios donde la información ha sido filtrada como sitios en internet que mencionan el correo, al menos para saber dónde estamos y qué información nuestra hay.

Una pequeña idea

Estas páginas suelen proporcionar una API para verificar si estamos en dichas bases de datos. Por ejemplo, una API muy sencilla es la de Have I Been Pwned, a la que podemos acceder desde un navegador desde la siguiente URL:

https://haveibeenpwned.com/api/v2/breachedaccount/[EMAIL]

o

https://haveibeenpwned.com/api/v2/breachedaccount/[EMAIL]?truncateresponse=true

(nos dará menos información, pero a veces, es justo lo que necesitamos)

No es bueno abusar de estas APIs (de las que se ofrecen gratis), porque si pagamos por una API es precisamente para abusar. No debemos hacer miles de peticiones por segundo para no saturar los servicios, pero podemos automatizar nuestras comprobaciones comprobando con cURL todos los correos que están en nuestros sistemas. Podemos, por ejemplo, crear un fichero de texto con todos los correos del sistema (de nuestros usuarios) y pasárselos a esta API, a ver qué nos dice:

1
2
3
4
5
6
for email in $(cat todos_los correos); do
  echo $email;
  curl "https://haveibeenpwned.com/api/v2/breachedaccount/$email?truncateresponse=true";
  sleep 1;  # Para no saturar el servicio a peticiones
  echo -e "\n";
done

Esta API nos va a dar información sobre los servicios donde se ha filtrado el correo, aunque es bueno verificar el e-mail en varios servicios de este tipo, porque no todos nos dan la misma información sobre las mismas filtraciones, y podemos conseguir una respuesta más completa.

Una idea es poder sacar el listado de usuarios de nuestro servicio de correo, por ejemplo, muchos postfix tienen /etc/postfix/vmailbox y /etc/postfix/valias (o en formato db, aunque siempre recomiendo guardar una copia en texto plano, con acceso sólo para root, por si las moscas). Estos archivos tienen un formato en el que asocian un usuario del sistema a su dirección de correo y una dirección de correo con su alias, por lo que sería fácil pasar todos los correos de nuestro servidor por la API de HaveIBeenPwned:

1
2
3
4
5
6
7
8
9
10
11
OLDIFS=$IFS
IFS="
"

for email in $(cat /etc/postfix/vmailbox); do
  _email="$(echo "$email" | cut -d' ' -f1)"
  echo $_email;
  curl "https://haveibeenpwned.com/api/v2/breachedaccount/$_email?truncateresponse=true";
  sleep 1;  # Para no saturar el servicio a peticiones
  echo -e "\n";
done
IFS=$OLDIFS

El objetivo

Como objetivo de todo esto, tendremos un listado de los correos de los usuarios que hayan sido filtrados y esto nos puede servir para:

Más trabajo… y juego para nosotros

El script de arriba es muy sencillo y parece que tiene poco donde rascar, aunque veremos un problema, no tiene la capacidad de descargar servicios, es decir, si un usuario ha sido filtrado en un servicio externo, siempre que pidamos ese listado, va a salir, y si tenemos muchos usuarios y han salido varias veces, nuestra memoria no va a dar para recordar todos los usuarios y todos los servicios, por lo que estaría bien que almacenáramos en algún lado, usuarios y servicios donde han sido filtrados, con el fin de que nuestro sistema sólo nos avise de la nueva información y tal vez nos notifique por e-mail…

También podría interesarte....