domingo, 11 de junio de 2017

Cómo un enlace malicioso en WhatsApp puede robar los nombres de tus contactos

Figura 1: Cómo un enlace malicioso en WhatsApp puede robar los nombres de tus contactos
Siempre que se hace un click en un hipervínculo enviado a través de un mensaje de correo electrónico o cualquier plataforma de mensajería, existe un cierto riesgo de que el enlace sea malicioso y el servidor al que nos conectamos intente atacarnos o capturar información nuestra. Esto, por supuesto, también pasa en WhatsApp y algunas veces de forma peculiar para espiar a personas a través de WhatsApp, así que cuidado con los enlaces.

Al enviar un hipervínculo al que una persona hace clic, se puede acceder a la dirección IP desde la que se conecta  - incluso hubo unas versiones en las que la conexión al servidor para cargar la miniatura era automática y se podría saber la dirección de conexión a Internet de la otra persona sin que hiciera clic -, también se puede acceder a información como el dispositivo que se utiliza debido a lo verbose que son los smartphone en los User-Agent de sus navegadores, etcétera.

Figura 2: Un User-Agent de Safari en iOS mostrando la versión de iPhone concreta

En este caso, el leak de información que se produce en algunas versiones de WhatsApp es que te pueden robar el nombre que le has dado en tu agenda a un determinado contacto. Es decir, supongamos que das de alta en tu agenda de contactos de WhtasApp a un contacto con el nombre de "Antonio" y está asociado al número 555-555-555. Un atacante podría enviarte un enlace especialmente diseñado para que dado el número 555-555-555, si haces clic en él dentro de un chat de WhatsApp, la misma app de WhatsApp envíe el nombre de "Antonio" sin que el usuario lo sepa.

PoC: Robando nombres de la agenda WhatsApp con enlaces

Este comportamiento lo ha descubierto Daniel Sesé, un joven investigador de seguridad, y ha hecho esta prueba de concepto en la que se puede ver cómo funciona. Básicamente hay un servidor malicioso que recibe por GET el valor name. El servidor almacena los valores de name en un fichero de texto. Este es el código en el servidor malicioso de names.php.

Figura 3: Código de names.php en el servidor malicioso



El atacante envía por un chat de WhatsApp a la víctima un enlace poniendo en la variable name el número de teléfono de la persona de la que quiere obtener su nombre en la agenda de contactos de la víctima. 

Figura 4: El enlace al servidor lleva la variable name y el número de teléfono del contacto
del que queremos saber el nombre


Cuando la víctima lo recibe, y hace clic en él, la app de WhatsApp de la víctima envía el nombre del contacto en la variable name del hipervínculo en lugar del número de teléfono original, lo que hace que el servidor malicioso reciba por GET en el valor name el nombre del contacto.

Figura 5: La víctima recibe el enlace, pero WhatsApp cambia el
número de teléfono por el nombre en la agenda en la variable names.

Según las pruebas hechas, si el enlace que recibe la víctima lleva su número, entonces envía el "nickname" que usó él mismo para el registro. Si lleva el número de una persona de la agenda de contactos, entonces, como se ve en el vídeo, envía el nombre del contacto hasta el primer espacio.

Figura 6: Valores recibidos en el servidor cuando se hace clic

Si no lo tiene añadido, se envía el apodo con el que se registró la víctima pero si el otro usuario ha hablado anteriormente con él en un grupo y, conoce el apodo, o se envían los primeros dígitos del teléfono.

Figura 7: PoC en vídeo de cómo robar nombres de la agenda de WhatsApp

Estos comportamientos se basan en que la variable name es utilizada internamente en WhatsApp y su comportamiento cuando llegan estos enlaces y se hace clic en ellos, no parece controlado, por eso depende de la lista de valores que haya en la agenda. Ten presente este comportamiento para disfrutar de un uso más seguro de tus conversaciones.