domingo, mayo 01, 2022

WhatsApp: Cómo pueden saber dónde vives por pulsar un enlace de un "Status" #WhatsAppStatus #WhatsApp #Privacidad

Es conocido que si te conectas a un sitio web, tu dirección IP puede ser registrada y analizada. Y esta dirección puede dar información de tu ubicación - más o menos certera -. Esto sucede en todos los servicios que permiten compartir URLs y esta dirección IP que los sitios web pueden capturar y analizar, apunta, más a o menos, al lugar donde te encuentras, salvo que hagas uso de la red TOR, utilices una VPN o un Proxy que haga anónima tu conexión.

Figura 1: Cómo pueden saber dónde vives por pulsar un enlace de un WhatsApps "Status"

Algunas aplicaciones te avisan del peligro de esta redirección, pero otras muchas aplicaciones como Twitter, TelegramInstagram o WhatsApp, no lo hacen. En este artículo explicamos cómo poder explotar la información que muestra el histórico de visitas de nuestro ESTADO de WhatsApp (WhatsApp Status), qué contactos de WhatsApp y cuándo lo han visualizado, lo que puede ser un problema para la privacidad del uso que haces de WhatsApp, así que toma nota. 

Ya hace años, los chicos de SecurityByDefault publicaron un ejemplo de cómo utilizar la carga automática de imágenes en la previsualización de los mensajes de WhatsApp  en los chats para capturar la dirección IP de un contacto. WhatsApp  y Telegram corrigieron esto para que no sea el destinatario del mensaje sino el emisor, el que cargue la imagen de previsualización, precisamente por privacidad.

Figura 2:  Previews generados de forma segura
para evitar captura de dirección IP

Como vamos a ver, a partir de recoger las conexiones que hagan los contactos de WhatsApp a nuestro ESTADO podremos correlacionar este historial con fecha y hora, con un log ad-hoc en la web donde fueron redirigidos los contactos que hicieron clic. Mediante una serie de pasos fáciles de realizar, una tabla en una BBDD y un fichero en PHP

Figura 3: Libro de "Cómo protegerse de los peligros en Internet"
de José Carlos Gallego en  0xWord

La mitigación podría ser tan sencilla como un aviso por parte de WhatsApp del peligro que conlleva esta redirección o bien una concienciación a los usuarios de los riesgos contra su privacidad a los que incurren, esto último es el propósito final de esta explicación, para que puedan protegerse de los peligros en Internet correctamente.

La funcionalidad del estado de WhatsApp

El ESTADO de WhatsApp es una funcionalidad que según su ayuda se describe de la siguiente forma en la plataforma: 

“Con los estados, puedes compartir actualizaciones de texto, fotos, videos y GIF que desaparecen después de 24 horas y están cifradas de extremo a extremo. Para recibir actualizaciones de estado de tus contactos y que ellos reciban las tuyas, tú y tus contactos deben tener sus respectivos números de teléfono guardados en la libreta de contactos de sus teléfonos”.

Curiosamente, la funcionalidad de añadir texto nos permite que este texto sea una URL, y al hacer doble clic sobre él, este híperenlace nos redirige a una web, como muestra la figura siguiente. En este ejemplo concreto lo hará a la URL de la web Xxx.com

Figura 4: Creación de un Estado en WhatsApp con una URL
que registrará direcciones IP.

Esto no es nada nuevo, y los Stories de Instagram funcionan exactamente. Es una funcionalidad que utilizan muchos en la plataforma para difundir sus contenidos. La única diferencia fundamental, como vamos a ver, es que en Instagram el usuario que publica una Story no tiene un log detallado de horas de conexión y cuentas de sus contactos de Instagram que han visto la Story. En WhatsApp sí.

Figura 5: Si activas las "confirmaciones de lectura de mensajes"
WhatsApp te deja ver un log detallado de a qué hora quién
visitó tu ESTADO, lo que da una información valiosa.

Ahora ya podemos organizar esto. Por un lado un registro de visitas a la web que capture la hora exacta y la dirección IP del visitante. Por otro un registro detallado de contactos de WhatsApp que han visitado el estado. Si hay "match", ya sabes la dirección IP y dónde está el contacto de WhatsApp concreto. 
 
Cómo preparar la web de registro (Stickyweb)

En primer lugar, creamos una tabla en MySQL con el propósito de almacenar la GEO información de las direcciones IP de las visitas de los contactos que han sido redirigidos. La estructura de la tabla Log se muestra en la imagen siguiente.


Figura 6: Estructura de la tabla LOG donde se registrará la
GEO información IP de las visitas a xxxx.com

En segundo lugar, construimos una página web que, por simplicidad, consta de solo un fichero (index.php) y que también por simplicidad está construida en PHP, tal y como se puede ver en la imagen siguiente.

Figura 7: código PHP que obtiene la información de GEOIP
y la registra en la tabla LOG

En la ejecución del código PHP se recuperan las variables de entorno asociado con la navegación del usuario y que junto a un campo “Timestamp” de la tabla Log anterior expuesta, que supone la fecha de creación del registro en el momento que las instrucciones de PHP realizan la inserción de estos datos de navegación en la tabla Log de la base de datos MySQL.

Cronología de los Eventos

Una vez desplegada la web y con la tabla de registro del Log en la base de datos funcionado, punto 1 del cronograma del esquema siguiente. El siguiente paso corresponde al punto 2, en el que publicamos nuestro estado a la espera de que nuestros contactos hagan un clic en la URL asociada a nuestro estado de WhatsApp.

Figura 8: Cronología de creación de la web, creación del estado y clic de los contactos

Cronológicamente los contactos 1, 43 y 22, lo harán en el tiempo en los puntos 3, 4 y 5 respectivamente, como también muestra la imagen anterior.

Análisis de la Información registrada

Una vez que ya está registrada la GEO información IP de navegación de los contactos en la tabla Log de MySQL, procedemos a correlacionar el campo “FechaRegistro” (que recordemos que es de tipo TimeStamp) con la fecha y hora que muestra el Historial de los contactos que han visto el Estado de WhatsApp e hicieron clic en la URL del enlace de Estado, como muestra la imagen siguiente.

Figura 9:  En el log del Estado de WhatsApp podemos ver qué contacto vio
 el Estado y a qué hora, y luego buscamos esa hora en la tabla de Log
para saber qué IP usó en la conexión a la web.

El resto, es mirar la información extendida en la tabla de GEO Información IP que tenemos en la base de datos de MySQL con toda la información extendida que hemos sacado y que va asociada a la dicha dirección IP. Lo dicho, puede ser más o menos exacta.

Figura 10: Información extendida sobre la dirección IP

A partir de esta correlación tenemos accesible la información del número de teléfono (haciendo uso de la agenda) y de la dirección IP de conexión, que determinan la información geográfica asociada, así como el proveedor que nos presta el servicio de interconexión, ya sea móvil o no, exponiendo la privacidad de navegación de los contactos de una manera ni autorizada ni solicitada.

Impacto y mitigación

El impacto de esta práctica es una pérdida efectiva de la "GEO privacidad" de los usuarios que hubieran hecho clic en el estado, pudiendo suponer un seguimiento no autorizado de las personas. Algo que de facto es deducir si se está usando una red móvil o una conexión fija, en qué ciudad, provincia o país se está conectado, con todas las implicaciones para la seguridad de las personas o de sus bienes que ello pudiera implica. 

Tal vez, se debiera advertir al usuario que este será redirigido a una web externa, (como ya hace WhatsApp), pero debería informar de lo que ello implica, lo que  sería una mitigación muy efectiva, ya que las personas se darían cuenta del peligro de pérdida de privacidad que eso implica.

aaa
Figura 11: WhatsApp avisa antes de hacer una redirección fuera de la cuenta,
y ahí podía poner más información del riesgo de privacidad.

Además, se podía hacer que el registro de accesos al Estado de WhatsApp fuera menos "detallado", y hacerlo más similar al de Instagram, donde se puede ver qué usuarios vieron la Story, y luego datos agregados de clics o comparticiones, pero no quién hizo qué ni a qué hora exacta.  

Figura 12: En Instagram, las estadísticas de las Stories no
son tan detalladas como la de los Estados de WhatsApp.
Están agregadas y no dicen quién hizo qué a qué hora.

La curiosidad por saber qué quiere mostrarnos un contacto, unido al desconocimiento general de este funcionamiento y que termina en visitar una URL del Estado de Whatsapp, unido a la funcionalidad del registro temporal del historial de visitas que hace WhatsApp de los Status, conlleva a una importante exposición de la privacidad de navegación, al correlacionar toda esta información. 

Saludos,

7 comentarios:

  1. Falta el "pequeñito" detalle de donde conseguir la base de datos/servicio web de geolocalización por IP ;-)

    ResponderEliminar
  2. @NetVicious hay muchos servicios con esa info. Los de mejor calidad son los de pago. Busca en Google por "ip geolocation lookup" y listo.
    Saludos!

    ResponderEliminar
  3. Personalmente me da igual que sepan mis contactos dónde estoy pero vamos, sé algo de informática y hacer todo esto no es fácil ni sencillo

    ResponderEliminar
  4. @PAcho, ¿hcer una web que recoja una IP y pasarla por una API de GeoIP? Muy sencillo.

    ResponderEliminar
    Respuestas
    1. Todavía más si utilizan iplogger o Gravify para generar el acortado, que ya están programados. Y meterle al enlace la opción de preguntar por la ubicación para más exactitud.

      Eliminar
  5. Pero los servicios que te dan la "geolocalización" no te dan la ubicación exacta, a no ser que esta sea consentida por el mismo usuario a través del navegador. ¿O existe alguna API/servicio que burla esta petición?

    ResponderEliminar
  6. Pero los servicios que te dan la "geolocalización" no te dan la ubicación exacta, a no ser que esta sea consentida por el mismo usuario a través del navegador. ¿O existe alguna API/servicio que burla esta petición?

    ResponderEliminar