Control de WhatsApp mediante QRLJacking
El QRLJacking (Quick Response Code Login Jacking) es un vector de ataque de ingeniería social simple que puede afectar a todas las aplicaciones que dependan de la función “Iniciar sesión con código QR”.
La víctima escanea, engañada, el código QR que le envía el cibercriminal. Sin darse cuenta, entrega el control de su cuenta y habilita al atacante a poder desviar las comunicaciones a su propio servidor, desde el cual podrá enviar mensajes e intervenir conversaciones.
Este tipo de ataques puede pasar desapercibido por la víctima, ya que podrá seguir logueándose y abriendo a su sesión de WhatsApp web o desktop. Esto marca una diferencia respecto a otros casos en los que la cuenta de WhatsApp queda inaccesible para la víctima, como por ejemplo el secuestro de WhatsApp pleno.
Así pueden secuestrar tu WhatsApp y enviar mensajes a tu nombre
En esta demostración utilicé una herramienta OpenSource, lo que indica que una persona sin tanto conocimiento podría utilizarla ya que viene lista para su implementación.
Lo primero que hacemos es generar un QR para luego mediante técnicas de ingeniería social enviárselo a la víctima, e inducirla a que lo escanee desde dispositivo.
Una vez escaneado el QR, el ciberdelincuente que simulamos aquí, obtiene acceso al WhatsApp y se puede loguear a la cuenta de la víctima.
Ya aquí el intruso puede espiar las conversaciones, ver su contenido y remitentes, y puede comenzar a mandar mensajes desde el número de la víctima, suplantando su identidad.
¿Cómo sucede la autenticación de WhatsApp desktop a través de QR?
Para entender como sucede el secuestro de la cuenta a través de un QRLJacking que permitirá un spoofing, es importante conocer como sucede la autenticación de la cuenta a través de QR para poder utilizarla desde WhatsApp web, o WhatsApp desktop.
Para iniciar el proceso, se utiliza un websocket (que abre una sesión de comunicación interactiva entre el navegador del usuario y el servidor de WhatsApp).
Cada cierto lapso el servidor se comunica con el WebSocket solicitando una actualización del código QR del WhatsApp web o desktop.
Al escanear el QR y para la autenticación, lo que sucede es que se remite información del usuario al servidor, lo que permitirá identificarlo como titular de la cuenta.
Vale aclarar que toda la comunicación en tráfico se encuentra cifrada de extremo a extremo.
¿Cómo funciona el envío de mensajes por WhatsApp?
Por último, es interesante entender cómo funcionan habitualmente el envío y recepción de mensajes en WhatsApp.
El protocolo que usa la aplicación es funXMP, una versión creada por la compañía que es una modificación del protocolo XMPP —un protocolo abierto, basado en XML para el intercambio, que es accesible para los usuarios que pueden examinarlo y modificarlo.
Al vincular un número de teléfono con la aplicación, establece una clave de cifrado de mensajes que será enviada a los servidores y que será utilizada para autenticar la cuenta del usuario previo al envío de mensajes.
Esto en primeras instancias garantiza que solo el usuario pueda remitir y recibir mensajes encriptados mediante una clave vinculada exclusivamente a su número de teléfono.