WhatsApp es el cliente de mensajería instantánea más utilizado en todo el mundo, lo que hace que también sea una de las aplicaciones más atacadas por los piratas informáticos. Aunque en el pasado hackear WhatsApp era realmente sencillo debido a la inexistencia del cifrado ni de medidas de seguridad, hoy en día esta tarea se ha complicado notablemente debido a las nuevas medidas de seguridad implementadas en esta aplicación. Sin embargo, aún tiene serias debilidades que pueden suponer un peligro para los usuarios, como, por ejemplo, el uso de códigos QR para el inicio de sesión en su aplicación Web.
El pasado mes de enero explicamos cómo los piratas informáticos pueden hackear WhatsApp aprovechándose de un fallo en la generación de los códigos QR que podía permitir a un atacante hacerse con el código de otra persona, iniciar sesión con sus credenciales y poder leer los mensajes de WhatsApp sin dejar rastro de actividad.
Esta técnica, aunque preocupante, es bastante complicada de llevar a cabo y tiene muchas limitaciones a la hora de ponerla en práctica, como, por ejemplo, que solo un usuario puede utilizar WhatsApp Web a la vez (por lo que, si la otra persona lo intenta usar, nos echará de la sesión a nosotros) y que los ordenadores «de confianza» siempre se muestran en el cliente de mensajería.
Aunque esta técnica es bastante complicada de llevar a la práctica, no es la única que se aprovecha de los códigos QR para hackear WhatsApp, y un ejemplo de ello es QRLJacking. Siempre puedes conectar un Wi-Fi por código QR.
Así funciona QRLJacking, la técnica para hackear WhatsApp utilizando un solo código QR
QRLJacking es un sencillo vector de ataque informático basado, principalmente, en la ingeniería social con el que simplemente debemos engañar a un usuario para que escanee un código QR con la aplicación que deseamos hackear, por ejemplo, WhatsApp, para poder tomar el control de su sesión de forma remota.
Para llevar a cabo este ataque, lo único que necesitamos es acceder al repositorio oficial de QRLJacking y descargar lo necesario para ponerlo en funcionamiento. A continuación, montaremos un servidor web con el fichero «qrHandler.php» encargado de convertir el código de inicio de sesión a base64 y, posteriormente, en una imagen jpg y «phishing.html», la página que utilizaremos para llevar a cabo el ataque.
Una vez que el servidor está en funcionamiento, necesitaremos un navegador web como Firefox capaz de inyectar el script «WhatsAppQRJackingModule.js» al visitar una web como «https://web.whatsapp.com». Cuando esta web genera el código QR, el script lo envía al servidor que hayamos configurado en el paso anterior para suplantarlo con el código QR generado por el fichero PHP.
Cuando la víctima escanea dicho código (utilizando ingeniería social, por ejemplo, con que nos ha tocado un premio), ya tendremos el control sobre la sesión de WhatsApp de la víctima.
Además de WhatsApp, esta técnica es totalmente funcional con otras muchas aplicaciones y plataformas que basan su inicio de sesión en códigos QR, como AirDroid, Alibaba, Aliexpress, WeChat, Line y Yandex, entre otras.
Cómo protegernos del QRLJacking
Como podemos ver, el principal factor de esta técnica de hacking es la ingeniería social, es decir, el engaño. Nadie regala nada a través de Internet, por lo que lo primero que debemos hacer es evitar caer en este tipo de engaños, y mucho menos escaneando código QR de webs o fuentes extrañas, como un banner, con WhatsApp o cualquier otra aplicación.
Además, también debemos evitar iniciar sesión con nuestras cuentas en navegadores y ordenadores que no sean de total confianza, ya que sin la previa instalación e inyección del script JavaScript, esta técnica no podría ser posible.
Por último, en el caso concreto de WhatsApp, nunca está de más revisar los ordenadores que tienen acceso a su aplicación Web, eliminando el permiso a todos de vez en cuando para evitar estos problemas.
¿Qué opinas de esta técnica de hacking? ¿Crees que WhatsApp debería dejar de lado los códigos QR y basarse en otros sistemas de login como la autenticación en dos pasos o el clásico usuario/contraseña?