Whatsapp & Facebook ¿Crees en las Casualidades?

Hace ya unos días que al cerdito de barro que utilizo de hucha no le entran mas monedas. Tengo la costumbre de que cuando tomo un café, pago con una moneda de dos euros o con una moneda de un euro y otra de cincuenta céntimos de euro, lo que suelo llevar en los bolsillos, normalmente los cafés me cuestan entre 1,1€ y 1,4€, así que me suelen dar la vuelta en monedas de 20 y 10 céntimos. Luego esas monedas (las de 20 y 10 céntimos) siempre las echo a mi cerdito hucha, nunca las gasto en otras cosas, así cada día que tomo café, así durante muchos meses y muchos cafés. ¿Para qué hago esto?, os estaréis preguntando, muy sencillo, cada vez que se llena la hucha, la vacío y dono todo ese dinero a la causa que mejor me parezca, al día no me supone mucho dinero, pero con el paso de los meses al final se llega a juntar dinero, casi 4 kilogramos de monedas en esa ocasión.

Fig. Babe, el cerdito de barro.

El problema está en que por muy buena que sea mi intención, si voy con cuatro kilos de monedas a cualquier organización para donárselas, las van a recibir gustosamente, pero les vas a suponer un trabajo contarlas e introducirlas en blísteres para poder ingresarlas en el banco, trabajo y tiempo que es mejor que dediquen a realizar otros menesteres. Por eso, normalmente lo que hago es meter las monedas en blíster y entregárselas ya contadas y empaquetadas para ahorrarles trabajo. Problema: yo no dispongo de blísters, por eso le envié un mensaje por Whatsapp a un amigo para que me consiguiera unos cuantos blisteres, para ser exactos necesitaba: 15 blísteres de monedas de 20 céntimos de Euro y 10 blísteres de monedas de 10 céntimos.

Fig. Mensaje reenviado desde Whatsapp

Si os estáis preguntando si previamente he tenido que contar cuatro kilos de monedas para saber exactamente cuántos blíster voy a necesitar, no es necesario, hay una solución más sencilla: “las matemáticas son tus amigas“. Simplemente sabiendo que una moneda de 20 céntimos pesa 5,74 gramos y una de 10 céntimos pesa 4,10 gramos, solo tenemos que separarlas y pesarlas, luego dividir el peso total por el unitario, y ya sabremos el número de monedas aproximadas que tenemos de cada tipo.

Fig. Peso de un blister con monedas de 20 céntimos.

A los pocos minutos de haberle enviado el mensaje a mi amigo por Whatsapp con el número y tipo de blísteres de monedas que me tenía que conseguir, accedo a la aplicación Facebook de mi teléfono móvil y me encuentro con un anuncio de Amazon, en el que aparece un contador de monedas automático. Quizás puede parecer este un hecho sin la mayor importancia, pero teniendo en cuenta una serie de detalles que voy explicar a continuación sobre el funcionamiento del cifrado extremo a extremo (end to end encryption) de Whatsapp y la arquitectura de los sistemas operativos Android, esto no debería haber podido ocurrir nunca, ya que estaría contravenido absolutamente las políticas de uso de esta aplicación, a no ser claro está, que todo ello fuera fruto única y exclusivamente de la casualidad. Casualidad en la que justamente la publicidad que Facebook me muestre a los pocos minutos de haber hablado por Whatsapp sobre blísteres de monedas, sea un producto tan extraño y concreto como un contador automático de monedas. Un contados de monedas automático no es el típico producto que se muestra en los anuncios de Facebook… ¿tú qué crees?.

Fig. Anuncio de Facebook del contador de monedas

Cada cual después de haber leído este artículo, tendrá que valorar en su yo interior cual es la explicación más lógica o razonable para explicar lo que ha ocurrido. Yo no sé lo que ha ocurrido, solo sé lo que no ha podido ser y esto exactamente es lo que voy a explicar a continuación.

Volviendo a la situación anterior, el caso es que a mi amigo, realmente no le envié un mensaje por Whatsapp escrito por mí, con los blíster de monedas que me hacían faltan, lo que hice es reenviarle el mismo mensaje que le había enviado semanas antes para recordarle el número exacto de blísteres que necesitaba. La diferencia no es pequeña. Si le hubiera escrito el mensaje ese mismo día, existiría la posibilidad de que el teclado que utiliza mi teléfono móvil estuviera enviado parte de lo que escribo a sus servidores centrales para tratar esa información. Por ejemplo, el caso del teclado de Google para Android (GBoard), necesita enviar a Google parte de los textos que el usuario escribe para que las funciones de autocompletar o escritura por gestos funcionen óptimamente. Si nunca te has parado a pensar en el que el propio teclado de tu teléfono es una aplicación independiente que tiene acceso a todo lo que escribes, quizás ahora sea un buen momento para tomar en consideración este detalle.

Fig. App Gboard de Google

Pero como decía: el hecho de que Facebook me muestra publicidad sobre algo que he “dicho” por Whatsapp tiene que tener una explicación. En este caso se puede descartar que la “filtración” de datos pudiera estar relacionada con el teclado de mi teléfono, ya que el mensaje con el número de blísteres que necesitaba, realmente no lo he llegado a escribir con la aplicación del teclado, para enviarlo usé la opción de “Reenviar” que dispone Whatsapp, de este modo el teclado no opera, puesto que esta función de Whatsapp no hace uso del portapapeles del teclado, si no que, queda todo el proceso de reenvío dentro del propio Whatsapp. La opción del teclado: descartada.

Fig. Detalle del reenvío de un mensaje por Whatsapp

Otra opción es que sea la propia aplicación de Whatsapp la que estuviera enviando estos datos a sus servidores para ofrecer un servicio de publicidad orientada a sus usuarios. Esto se podría hacer de dos modos:

El primero, sería que existiera un proceso en la aplicación de Whatsapp que de forma automática enviara estos datos a dónde quiera que los tuviera que enviar. Podría ser posible (al menos técnicamente), si no fuera porque en Android las aplicaciones se instalan en un ejecutable en formato “APK(Android Application Package), este APK no deja de ser un contenedor (ZIP) en el que se almacena el código fuente o de programación de la aplicación compilado en JAR (Java Archive). Los JAR se pueden decompilar. Por ejemplo con la herramienta libre apktool, podríamos “abrir” una aplicación de Android y leer el código de programación que el diseñador escribió, con sus manifest, res, assets, etc… Lo que significa que se puede ver/auditar el código de programación de una app para comprobar si se ha programado para que realice alguna tarea “oculta”, por ejemplo, el famoso caso de la linterna espía, una app de linterna que realmente su código de programación incluía todo tipo de estratagemas para espiar a los usuarios que la usaban. Whatsapp con cerca de 1.500.000.000 usuarios en todo el mundo, si no es la que mas, es una de las aplicaciones mas auditadas y analizadas por expertos de ciberseguridad en todo el mundo, por no hablar de las versiones para beta testers. Si Whatsapp tuviera una sola línea de código malicioso, no tardaríamos mucho tiempo en averiguarlo. Esta opción, aunque sea por sentido común, también se podría descartar.

Fig. Apktool

El segundo modo, sería que otra aplicación, por ejemplo Facebook, pudiera acceder a la base de datos de conversaciones que Whatsapp almacena dentro del teléfono sin cifrar. Whatsapp, por defecto, en la actualidad almacena la base de datos con las conversaciones de cada usuario en dos sitios distintos. Todos los días a las 2:00 AM Whatsapp genera un backup de todas las conversaciones almacenadas hasta el momento, las cifra, y o bien las sube a un almacenamiento en la nube de Google Drive (método actual) o las guarda en el almacenamiento compartido del teléfono (por ejemplo la tarjeta MicroSD). En este punto podríamos llegar a pensar que este cifrado no es lo suficientemente robusto y cuando se sube la copia de seguridad de nuestras conversaciones a la nube de Google Drive, Google tiene la capacidad de descifrar el fichero y leer nuestros chats, aunque esto fuera posible, en este caso concreto tampoco se podría aplicar, ya que la conversación en cuestión se mantuvo a las 21:00 horas, y la copia de seguridad no llegaría a los servidores de Google (cifrada) hasta las 02:00 horas del día siguiente. Descartado también.

Fig. Backup de Whatsapp

Hemos estado hablado de la base de datos cifrada que hace la función de copia de seguridad, pero Whatsapp dispone de otra base de datos (la de verdad), la que está utilizando en producción para ir almacenando los distintos mensajes que se van generando. Como esta base de datos no está cifrada de ningún modo (es una fichero SQLITE llamado msgstore.db), podríamos pensar, ahora sí, que Facebook accede a este fichero SQLITE con la base de datos de Whatsapp y lo va consultando según sea necesario. Pues tampoco, resulta que las aplicaciones en Android, se ejecutan en una maquina virtual llamada Dalvik, esta máquina es independiente y aislada por cada app, además, el espacio reservado para cada una de las aplicaciones está protegido por una contraseña distinta por app, en el caso de Whatsapp, la base de datos se encuentra almacenada en la ruta: /data/data/com.whatsapp/databases/, ruta que solamente es accesible únicamente por el usuario creado por Android para ejecutar la aplicación Whatsapp (cada app en Android opera con un usuario/contraseña distinto). Entonces si las aplicaciones están totalmente aisladas ¿Cómo es posible que por ejemplo Whatsapp puede acceder a los contactos o Facebook pueda compartir información con otra app?, esto es posible gracias a los “Content Provider“, un mecanismo proporcionado por Android que nos permite compartir información entre diferentes aplicaciones, pero solo la información que hemos autorizado (¿Os suena lo de los permisos de Android?), en este caso, ninguna otra aplicación tiene acceso a los datos de conversaciones de Whatsapp.

Fig. Distintos usuarios en Android

La única excepción sería un móvil rooteado, rootear un móvil no es otra cosa que activar el usuario “Super Administrador“, deshabilitado por defecto en la mayoría de los teléfonos. Si activamos este usuario en nuestro smartphone, sería el único que puede acceder al contenido del resto de usuarios del sistema y por lo tanto acceder al fichero msgstore.db (Conversaciones de Whatsapp) y leer su contenido, de ser así, este artículo no tendría sentido alguno. Pero no, el smartphone en cuestión no ha sido rooteado, es más, opera con una versión “pura” de Android.

Fig. Usuario root en Android

Ahora llega el momento de hablar del punto más controvertido de todo esto, hasta ahora hemos estado hablando de la comunicación en uno de sus estados, cuando los datos de chats se encuentran almacenados en nuestro dispositivo (bases de datos estáticas). Pero existe otro estado de los datos, este estado lo encontramos cuando los datos se encuentran en tránsito de un dispositivo a otro, es decir, del emisor al receptor. Si estos datos no viajan cifrados, o no lo suficientemente cifrados, alguien los podría interceptar y leer/ver nuestras conversaciones a través de Whatsapp. En el caso de Whatsapp, desde hace ya unos años se implementó el cifrado extremo a extremo, una tecnología que permite enviar un mensaje a otro usuario, de tal forma que ninguna otra persona conozco las claves de descifrado del mensaje a excepción del destinatario (ni el emisor las conoce). Esto se consigue gracias a la implementación del protocolo criptográfico Diffie-Hellman en Whatsapp y la tecnología Signal.

Fig. Croquis Diffie Hellman

Este protocolo se basa en las matemáticas (la teoría dice que son grupos de enteros multiplicativos módulo p, con p primo). Para que nos entendamos, se basa en la propiedad matemática en la que es fácil operar un número A con otro B para que salga C, (50×30=1500) pero a partir de c (1500) es muy difícil saber qué números A (50) y B (30) lo han generado. Obviamente el protocolo no se aplica con una operación de multiplicación, es un simple ejemplo para hacerlo entendible, además se deben utilizar números primos suficientemente elevados. De este modo, cada usuario (realmente el proceso lo realiza Whatsapp de forma transparente para el usuario) crearía su propia clave pública y privada, la privada la custodiaría y la pública se la enviaría a la persona con la que quiere hablar (B), la persona con la quiera hablar (B) cifra el mensaje con la clave pública que le han enviado y cuando le llegue a la primera parte (A) el mensaje cifrado con su clave pública, solamente la tiene que descifrar con su clave privada (la de A). En este esquema, los servidores de Whatsapp nunca tendrían acceso al contenido de los mensajes enviados por cada usuario, siempre y cuando, no tengan acceso a su clave privada, extremo que según sus términos y condiciones, exponen que no es posible ¿o sí?.

Fig. Anuncio de cifrado en Whatsapp

Así que a estas alturas de la “película”, solo puede decir: ¿y tú?, ¿crees en las casualidades? Si todavía no lo tienes claro, puedes seguir leyendo un poco más.

A raíz del tuit que publiqué hace unos días en el que os contaba lo que ahora estoy explicando más detalladamente en este artículo, varios de mis “seguidores” en Twitter comprobaron por si mismos si esto que estaba contando podía ser real o no. Aquí os dejo dos tuits de @TheCybertus y @menektoni en los que comparten con todos nosotros las pruebas que han realizado con el tránsito de datos confidenciales entre conversaciones de WhatsApp y anuncios en Facebook.

Pruebas de @TheCybertus
Prueba de @menektoni

Os animo a que seáis vosotros mismos quien probéis en vuestros propios smartphones esto que os estoy contando. Podéis enviar un mensaje de WhatsApp a un conocido vuestro comentando que necesitáis un producto concreto y extraño, luego solo tendréis que revisar vuestra aplicación de Facebook o Instagram a ver si os muestra algún tipo de anuncio relacionado.

No me gustaría que os quedarais con la idea de qué este puede ser el típico artículo conspiranoico en el que todos somos espiados, nada más lejos de mi intención. Simplemente busco con este artículo contar un suceso que me ha ocurrido tanto a mí cómo a otras personas, suceso al que difícilmente se le podrá buscar explicación sin involucrar al cifrado extremo a extremo de WhatsApp.

¿Te ha gustado este artículo? Si quieres, puedes ayudarme a escribir el siguiente artículo de GLIDER invitándome a un café a través de mi perfil en Ko-fi.com

 

Pulsa Aquí para invitarme a un café con hielo.

  Salu2.

Manuel Guerra

Manuel Guerra

Mi nombre es Manuel Guerra. Investigador especializado en: [eCrime] | [Forensic] && [Hacking]. Editor de GLIDER.es

Navegación de la entrada


Comentarios

  • Avatar

    Victor

    Pedazo de mini máster sobre el funcionamiento interno de Android en lo que ha gestión de permisos de aplicaciones se refiere. Siempre digo lo mismo, si una empresa con miles de millones de usuarios no sabe ganar dinero, el problema no es el producto es el que la gestiona, en esta ocasión saben muy bien cómo convertir un producto “gratuito” en miles de millones de euros, pero voy más allá, tú has hecho el análisis en base a un sistema Android, pero te aseguro que iOS también pasa y estoy pendiente de que mi suegro me ceda un Windows Phone para meterle fuego.

    Lo dicho, artículo muy top, pero el café te lo pago en el bombazo cuando vuelva a subir a la capi algún día por razones de curro. Me gustaría sentarme un día y charlar de posibles caminos ha seguir para no encasillarme lo que queda de carrera 😂

    • Manuel Guerra

      Manuel Guerra

      Hola Victor. Tienes razón, falta un análisis con iOS y Windows phone (¿Eso todavía existe? Jeje). Me gusta que mis artículos se basen en estudios reales, no teóricos, por eso dispongo de una serie de teléfonos Android que me he ido comprando y configurarando de manera especial para poder realizar los análisis en un entorno de laboratorio controlado, el problema es que comprarme un iPhone medianamente actual para hacer estas pruebas se me va de las manos en cuanto a presupuesto se refiere. A darle duro a ese Windows Phone y a la carrera también ;). Cuando vengas por Madrid, nos tomamos un café. Salu2

  • Avatar

    Christian

    ¡Excelente articulo!

  • Avatar

    Francisco

    Hola, muy interesante tu articulo y no, no es casualidad. Es causalidad. Whasapp es de facebook y es de esperar que espíen y monitoricen nuestras conversaciones. Por más que intenten convencerme de que estas comunicaciones van cifradas, el tema es que el cifrado lo ofrece precisamente la misma aplicación, el canal de comunicación es el de la misma aplicación, todo el stack/infraestructura que se ve es de la misma aplicación/empresa. Ergo, la empresa, en este caso facebook, puede acceder tranquilamente a todas nuestras conversaciones por más que estén cifradas y un largo etc. Lamentablemente el negocio de ofrecer privacidad va en aumento y la realidad que en la net no hay nada privado.

  • Avatar

    Gustavo

    Creo que lo que realmente pasa es que el punto en el que la información es estudiada es en los propios servidores de Whatsapp. No olvidemos que ahora está app pertenece a Facebook, por lo que puede acceder a una gran base de datos con todas nuestras conversaciones. Hacer búsquedas de determinadas palabras, patrones, etc.. y a partir de eso generar la publicidad en Facebook

  • Avatar

    Alejandro

    Esto lleva siendo obvio desde el mismo momento en que Facebook adquirió Whatsapp.

    Lo que me hizo ser consciente a mi fue lo siguiente: En mi trabajo, para probar una aplicación que estaba desarrollando, me dieron un usuario de pruebas (inexistente) que “trabajaba” en Haro (un pueblo de La Rioja. Unos años antes había conocido a una persona que publicitaba mucho Haro, así que me hizo gracia y se lo comenté a alguien por Whatsapp. Ese mismo día al llegar a casa Facebook me sugirió ppr lo menos 15 contactos de Haro (a los que no he visto en mi vida). Es decir, claro que Whatsapp comparte lo que dices con Facebook.

    Por hacer un poco de memoria, cuando Facebook compró Whatsapp hubo una temporada en la que estuvieron sacando actualizaciones de Whatsapp en las que no se añadía ninguna funcionalidad nueva, pero causaban bug extraños (en iOS creo recordar que hubo una temporada en la que whatsapp consumía una barbaridad de memoria de telefono, o de tráfico de datos 3G). ¿Que los señores de Facebook no sabían desarrollar una aplicación y se pusieron a trastear con el Whatsapp de producción cuando lo compraron? No, claro que saben lo que hacen. Pero cuando lo compraron todo lo que se desarrollaba para Whatsapp paró, y los desarrolladores se dedicaron a integrar Whatsapp con Facebook. Cuando acabaron, volvieron a empezar a implementar nuevas funcionalidades.

    En cualquier caso, esto que suena tan feo (nos espian), es lo mismo que hacen otras compañías, como google “leyendo” tus correos para darte publicidad o avisarte de cuando tienes que salir de viaje para hacer check-in en el hotel que has reservado.

  • Avatar

    Victor

    Enhorabuena por el artículo, es muy interesante desde el punto de vista técnico. No obstante debo decir que yo he visto ese anuncio hace unos días (bastante antes de leer el artículo) y no tengo motivos para pensar que tenga que ver con conversaciones previas sobre conteo de monedas ni nada parecido. Me acuerdo porque me hizo gracia la maquinita, pero sin más.
    No descarto que pueda haber un uso cruzado entre Whatsapp y Facebook, y tú has dado pistas interesantes, pero tampoco hay que descartar que sea realmente fruto de la casualidad, al menos en este caso.

  • Avatar

    Ac

    Un análisis interesante pero también hay que saber que algunas aplicaciones cuando otorgas los permisos del micrófono obtiene meta datos (palabras claves) en este caso de productos los cuales son enviamos para fines de marketing.

    Esto me ha pasado varias veces solamente teniendo conversaciones con mi esposa de algún producto.

  • Avatar

    ElFer

    Whatsapp vulnera la RGPD y paga por ello cantidades mínimas como pena. Le sale más rentable todo lo expuesto que seguir las reglas del
    Juego. Gracias por la información del artículo. Muy interesante y mascadito.

  • Avatar

    OLGA

    Buenas tardes! Gracias por la información. A mi hace unas semanas me paso algo similar…
    Estabámos haciendo una actividad acuática (barranquismo, rapel, escalada…)en la costa y se me ropieron la suela de los escarpines. En ningún momento mencioné esto por whatsapp, ni una llamada y automáticamente en facebook me aparecieron anuncios de estos artículos..¿.Casualidad?

  • Avatar

    William

    Pero y si crees que estás enviando a de A a B de forma cifrada pero en realidad ocurre que, A, envía a F el mensaje y todo como si fuese B así que puede coger el mensaje en limpio, encriptarlo de nuevo haciéndose pasar por A y lo envía a B con una clave que podría ser diferente, los mensajes como sabemos pasan por el servido, ¿Cómo podemos asegurar que no es F con quien en realidad mantenemos el enlace extremo a extremo? Seguimos teniendo una comunicación extremo a extremo pero no sabemos con quien…

  • Avatar

    Oiane

    Si solo fuera Whatsaap… micrófonos, tarjetas de crédito… ¿es normal que mi marido me regale por sorpresa una colonia y que al día siguiente me la encuentre anunciada en IG? ¿O qué me cuente que ha invertido en una productora y “milagrosamente” vea publicidad de sus películas francesas? Ya se sabe que cuando el producto es gratis…. lo que hay que hacer es ser conscientes del rastro que dejamos. A mi, sinceramente, que me quieran vender un producto me da igual, lo que me da miedo es la manipulación… que dirijan a nuestros hijos a cierto tipo de contenidos políticos, religiosos, ideológicos… eso sí que debiera preocuparnos.

  • Avatar

    JesúsI

    Artículo muy interesante. ¿Podría ser que alguna app que tuvieras instalada estuviera utilizando SurfaceFlinger (o algún otro servicio) para obtener capturas de tu pantalla? De ser así, otra aplicación podría estar viendo lo que haces y usando OCR para obtener keywords. Sé que en algunas versiones de Android el acceso a dicho servicio requiere permisos especiales, pero no tengo claro si es en todas las versiones de Android.

    También creo que es interesante aclarar que aunque se muestre la publicidad en Facebook, eso no significa que haya sido Facebook quien haya decidido mostrarte concretamente a tí ese anuncio específico. Los anunciantes pueden “pedir” a Facebook que te muestre un anuncio concreto basado en un comportamiento que ellos han observado. Aunque, no tengo del todo claro que Facebook permita hacer esto sin haber inyectado algún tracking pixel en algún momento…

    Como dirían los ingleses, food for thought.

  • Avatar

    Víctor

    También sería conveniente conocer el estado del sistema/teléfono al que enviaron el mensaje (receptor)

  • Avatar

    Carlos Sastre

    Hola,
    Lo primero agradecer el master que nos has dado.
    Sólo quería comentar algo que me parece… “raro”: ¿nadie se ha fijado que las dos imágenes de la prueba de Cibertus, que se supone son de días distintos, están “tomadas” a la misma hora exacta, con la misma cobertura y la misma batería? Ya sabéis, igual que dice el artículo, mucha casualidad…

    Gracias por la info!

  • Avatar

    Jose

    Muy buen análisis. Yo acabo de comprobarlo en mis carnes: desde el pc hice unas búsquedas de “farolas solares” en amazon (vi varios modelo para ver como estaba el mercado)… Al día siguiente, viendo FB en el móvil, su publicidad me sugería las farolas solares que había estado mirando y otras similares…

  • Avatar

    Albert

    A mi no solo me pasa escribiendo por whastapp, si no con cosas que he hablado con alguien personalmente y con el telefono cerca, y luego he recibido informacion al respecto, demasiada casualidad.

Deja un comentario

Tu dirección de correo electrónico no será publicada. Los campos necesarios están marcados *

Puede usar las siguientes etiquetas y atributos HTML:

<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>