martes, 13 de diciembre de 2016

Dame tu email y te diré …


Autor: @RaulRenales

Es conocido desde hace tiempo que es posible el trackeo de emails de tal manera que podamos obtener información de que ocurre con cada uno de los emails que mandamos, el concepto de tracking en emails está muy ligado al marketing, donde prácticamente no hay sistema de envíos masivos que no incluya un “pixel” que obtiene información jugosa sobre los receptores de los emails.

Dentro de los correos tradicionales que casi todo el mundo usa (Gmail por ejemplo) es posible añadir herramientas que nos permiten realizar ese mismo trackeo comercial pero para el seguimiento de nuestros correos personales.


Algunas alternativas son:


  • MailTrack (https://mailtrack.io/es/)
  • YesWeAre (http://www.yesware.com/)
  • BananaTag (http://bananatag.com/)


La verdad es que todas ellas ofrecen información relevante como:


  • Horarios de apertura de los emails
  • Sistema operativo de la persona que abre los emails
  • Navegador
  • Localización de la apertura del email.


Como se puede ver, es información relevante de cara a parametrizar a una persona, entendiendo que podemos forzar los envíos para generar una serie de patrones de hábitos relativos a los sitios, dispositivos, horarios, etc donde contesta los correos que le mandamos. Y de esta forma el perfil podría ser utilizado para ataques dirigidos sobre esta persona.

La mala noticia:

Cuando comencé a utilizar estos servicios los datos eran más sabrosos, dado que algunos de ellos te entregaban las ips de salida de los dispositivos con los que se abrían los correos lo cual le daba un plus de interés al asunto.

Compañías como Google se dieron cuenta del problema que estos temas podrían acarrear, y comenzaron a limitar el acceso a esta información, de tal manera que se han ido añadiendo restricciones a estas prácticas, hasta llegar a ofrecer retrasos en la entrega de la información por parte de las aplicaciones para proteger al destinatario del email.

La buena noticia:

La buena noticia es que el sistema es tan simple que nos lo podemos montar solos y evitar las restricciones que los softwares de trackeo aplican en estos casos.

Básicamente, el sistema funciona porque se incluye una imagen dentro del email, esto supone que cada vez que el email sea abierto se produce una llamada a la imagen que quedara fehacientemente guardada en los logs de apache, donde obtendremos la información.

Lo único que nos queda es un poquito de organización para llamar a las imágenes con un código que identifique claramente a que hilo de emails pertenece y combinarlo con un poquito de Python para depurar los datos y que queden presentables por pantalla.

Supongamos que queremos marcar nuestro correo con una imagen (Pixel) llamada C0001.jpg, la cual generalmente tendrá unas dimensiones de 1x1 pixels, pero nosotros para ver claro el ejemplo la hemos dejado de esta guisa:


Lo primero es subir la imagen a cualquier servidor al que tengamos acceso a los logs, y crear una url para poder incluirla en los correos, algo como esto:

http://s16XXX443.online-XXXX.info/C0001.jpg

Con dicha url la incrustamos en un email y para esta prueba el mail será enviado a tres destinatarios distintos, Gmail, Outlook y ProtonMail.

Una vez abierto el mail en cada uno de estos sistemas, procedemos a revisar los logs y allí nos encontramos con algo parecido a esto:

Caso Gmail:


66.XXX.93.61 - - [10/Dec/2016:20:26:24 +0100] "GET /C0001.jpg HTTP/1.1" 200 2809 "-" "Mozilla/5.0 (Windows NT 5.1; rv:11.0) Gecko Firefox/11.0 (via ggpht.com GoogleImageProxy)"

Información entregada:
  • Hora de visita
  • Abierto desde Gmail 

Y poco más debido a que Gmail se toma muy enserio este tema y utiliza un proxy para evitar emitir más información de la necesaria.


Caso Protonmail:


84.124.XXX.57 - - [10/Dec/2016:20:26:44 +0100] "GET /C0001.jpg HTTP/1.1" 200 2809 "-" "Mozilla/5.0 (Linux; Android 6.0; LG-D855 Build/MRA58K; wv) AppleWebKit/537.36 (KHTML, like Gecko) Version/4.0 Chrome/54.0.2840.85 Mobile Safari/537.36"

Información entregada:
  • Ip de apertura: 84.124.XXX.57
  • Operador (al analizar la ip): ONO
  • Hora de apertura
  • Teléfono con el que se abrió el email (LG-D855)
  • Navegador Chrome 54.0.2840.85
  • Wifi o Datos (tras análisis de la ip): conexión por Wifi
  • Localización aproximada: Guadalajara 
  • Latitude: 40.628601074219
  • Longitude: -3.1617999076843
  • Layout Engine: AppleWebKit 537.36

Caso Outlook:


84.124.XXX.57 - - [10/Dec/2016:22:09:44 +0100] "GET /C0001.jpg HTTP/1.1" 304 136 "https://outlook.live.com/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/54.0.2840.99 Safari/537.36"

Información entregada:
  • Ip de apertura: 84.124.XXX.57
  • Operador (al analizar la ip): ONO
  • Hora de apertura
  • Sistema operativo Windows 10 (64-bit) 
  • Navegador Chrome 54.0.2840.99
  • Localización aproximada: Guadalajara 
  • Latitude: 40.628601074219
  • Longitude: -3.1617999076843
  • Layout Engine: AppleWebKit 537.36

Como podéis ver en los tres casos analizados se pueden extraer datos, siendo Gmail el que más protege esta fuga de datos. En los casos de Outlook y ProtonMail se pueden obtener sin problema, como ocurre con la mayoría de los correos de empresa y otras plataformas online.

Con todos estos datos y si vamos almacenándolos de manera sistemática en una base de datos, agrupando a cada individuo por su pixel (C0001.jpg) el resultado sería algo parecido a esto:


Acabando …

Llevaba tiempo con ganas de escribir este post dado que forma parte de un pequeño proyecto personal orientado a la obtención de datos y parametrización de los mismos con el objetivo de generar perfiles. Espero en unos meses, si otros quehaceres  no lo impiden, poder presentar el proyecto formalmente.