¿Es posible espiar las conversaciones de WhatsApp?

La respuesta a la pregunta que abre este post es SÍ, es posible espiar las conversaciones de WhatsApp. WhatsApp es una aplicación que siempre ha estado plagada de problemas de seguridad: contraseñas que se pueden robar fácilmente, envío de mensajes sin cifrar, etc. Actualmente, el inicio de sesión de un nuevo dispositivo funciona de la siguiente manera:




  1. El teléfono publica su número de teléfono a una dirección URL HTTPS para solicitar un código de autenticación.

  2. El teléfono recibe el código de autenticación en un mensaje de texto.

  3. Se utiliza el código de autenticación, de nuevo a través de HTTPS, para obtener una contraseña.


Estas contraseñas son bastante largas y nunca visibles para el usuario; lo que hace que sean bastante difíciles de robar.


Descripción general del proceso de autenticación en WhatsApp.


Con la contraseña el cliente puede iniciar sesión en el servidor XMPP que utiliza WhatsApp. Para ello se utiliza el mecanismos SASL mediante WAUTH - 1.  Cuando se inicia sesión con el número de teléfono xxxxxxxxx ocurre lo siguiente (lo muestro usando la representación XML del protocolo; esto no es lo que se envía en realidad):

  • El cliente envía:


<auth xmlns="urn:ietf:params:xml:ns:xmpp-sasl" user="XXXXXXXXXXXX" mechanism="WAUTH-1" />




  • El servidor responde con un pequeño cambio:


<challenge xmlns="urn:ietf:params:xml:ns:xmpp-sasl"> YYYYYYYYYYYYYYYYYYYY< / challenge>




  • Para responder al servidor el cliente genera una clave usando PBKDF2 con la contraseña del usuario, algunos datos como la salida y SHA1 como la función hash.


A partir de ahora todos los mensajes son cifrados y almacenados (usando HMAC - SHA1) utilizando esta clave.

Errores que permiten que las conversaciones de WhatsApp puedan ser espiadas.

Error 1: uso de la misma clave de cifrado en ambas direcciones.

Esto permite recordar el algoritmo RC4 usado en el proceso de cifrado. En otras palabras: si tenemos dos mensajes cifrados con la misma clave RC4 podemos averiguar el contenido de los dos mensajes.

Como WhatsApp utiliza la misma clave RC4 tanto para el tráfico entrante como para el tráfico saliente ,sabemos que el texto cifrado en el byte i en la secuencia entrante XOR con el byte cifrado i en el flujo de salida será igual a XORing byte plaintext i en la corriente de datos entrante con byte plaintext i de la corriente de salida. Por esta operación XOR con cualquiera de los bytes de texto plano podemos descubrir el otro byte .

Esto no revela directamente todos los bytes , pero en muchos casos va a funcionar: el primer par de mensajes intercambiados son fáciles de predecir a partir de la información que se envía en este formato. Todos los mensajes todavía tienen una estructura común, a pesar de la codificación binaria: por ejemplo , cada estrofa comienza con 0xF8 . Incluso si un byte no se conoce totalmente, a veces puede ser conocido, ya  que debe ser alfanumérico o un número entero en un intervalo específico, lo que puede dar alguna información acerca de otros bytes.

Error 2: uso de la misma clave HMAC en ambas direcciones.

El propósito de la MAC es autenticar mensajes. Sin embargo, una MAC por sí sola no es suficiente para detectar todas las formas de manipulación: un atacante podría colocar mensajes específicos, intercambiarlos o incluso transmitirlos de vuelta al cliente. TLS contrarresta esto incluyendo un número de secuencia en el texto completo de cada mensaje y, mediante el uso de una clave diferente para el HMAC, para los mensajes del servidor al cliente y para los mensajes desde el cliente al servidor. WhatsApp no utiliza un contador de secuencia y vuelve a utilizar la misma clave RC4 para el HMAC.

Esto significa que cuando un atacante retransmite, cambia o intercala mensajes específicos el receptor no nota nada, excepto que el descifrado del mensaje da error; ya que es muy poco probable que se trate de una codificación binaria válida. Sin embargo, mediante el envío de un mensaje de vuelta al remitente exactamente en el mismo lugar en el flujo RC4 que se transmitió originalmente hará que el mensaje se descifre correctamente.

¿Cómo evitar que nos espíen nuestras conversaciones de WhatsApp?

La única forma de evitar que cualquier persona nos pueda espiar nuestras conversaciones de WhatsApp, a menos hasta que WhatsApp solucione los dos errores de los que he hablado anteriormente, es cambiarnos a cualquiera de las múltiples opciones a WhatsApp, que son mucho más seguras, como Woovos o Telegram.

Sin embargo, si por la razón que sea, no deseamos cambiar a ninguna de las opciones a WhatsApp deberemos adoptar, al menos, estas dos medidas:

  1. No usar WhatsApp en redes públicas.

  2. Conectarnos a WhatsApp a través de una VPN.

Comentarios

Entradas populares de este blog

¿Mujeres hermosas de Europa del Este que se enamoran de tí rapidísimamente por Internet? Eso no es amor... son scammers.

Anatomía de un ataque informático.

¿Qué es un ataque Man in the Browser (MiTB)?