La ingeniería social es una rama muy antigua de la seguridad informática. El juego del gato y del ratón en el que las víctimas deben estar espabiladas para no caer en la trampa. Hoy queremos hablar de QRLJacking, una técnica que permite, mediante los tokens QRCode, llevar a cabo ataques que pongan en ventaja al atacante. Como ejemplo se utiliza al servicio más famoso que hace uso del QRCode: WhatsApp Web. Antes de nada, decir que el artículo es totalmente educativo y divulgativo. No nos hacemos responsables de un mal uso de esta información.
Los miembros del proyecto OWASP han publicado una herramienta denominada QRLJacking para realizar pruebas de ataques de Spear Phishing en sitios que utilizan QRCodes como forma de autenticar a los usuarios. El esquema es sencillo de entender. En primer lugar, se debe configurar un servidor web dónde almacenar un sitio web falso con el Phishing y el código QRCode con el que se quiere engañar a la víctima. El objetivo final del ataque de Spear Phising ha de ser, de alguna forma, lograr que la víctima visite el sitio web falso y que lea el QRCode con el dispositivo móvil. A partir de dicho momento, el atacante tendrá todo lo necesario para obtener el acceso.
En el caso de WhatsApp, los atacantes buscan mostrar un QRCode de WhatsApp Web a la víctima y que, mediante el engaño, se pueda obtener la sesión de WhatsApp Web de la víctima, autenticada con ese QRCode para poder espiar los mensajes de WhatsApp.
PoC: Montando lo necesario
En primer lugar, se necesita bajar los ficheros de QRLJacking, lo cual puede ser llevado a cabo desde su Github. Como se indica en el propio Github, existen dos partes diferentes en la configuración del ataque: la parte Client-Side y la parte Server-Side. La parte Server-Side necesita que se suba el fichero qrHandler.php a un servidor web. Este fichero es el encargado de transformar el QRCode que se capturará de WhatsApp a Base64. El fichero PHP devuelve un fichero JPG con el QRCode.
Además, debemos utilizar la imaginación de cada uno para “convencer” al usuario con el mensaje de Spear Phishing de que el QRCode que se le mostrará en una web preparada debe ser leído con su aplicación de WhatsApp. Para ejemplificar esto, crearemos una web dónde se informe al usuario de que hay un premio y que para participar debe leer el QRCode con la aplicación de WhatsApp.
La parte Client-Side es la parte más Javascript. Necesitamos realizar varias acciones en nuestro navegador para poder capturar el QRCode de WhatsApp y enviarlo al fichero PHP que se encuentra en la parte Server-Side, explicada anteriormente. ¿Qué hay que configurar en nuestro Firefox?
La página de WhatsApp Web genera gráficos con datos en formato QRCode cada cierto tiempo, por lo que el código JavaScript inyectado por el plugin va consultando continuamente para ir extrayendo el QRCode nuevo y reportarlo al servidor que lo mostrará en la página web de Phishing. A continuación, se muestra un QRCode válido en la página de WhatsApp Web.
En este instante el plugin de Firefox Greasemonkey captura el nuevo QRCode y lo envía al servidor dónde se haya configurado la parte Server-Side. Para esta prueba de concepto, el valor base64 del QRCode se envía a la dirección IP del atacante, en concreto al fichero QRHandler.php publicado en el servicio web publicado en esa dirección, que se encargará de generarar el fichero JPG con la imagen del QRCode en la web de Phsihing.
Ahora llega el momento de ver cómo un atacante puede obrar para que la víctima lea el QRCode con su móvil. Para ello, el atacante puede hacer un uso de un esquema de Spear Phishing clásico en el que se indique que se ha ganado un premio, quizá suscripción infinita a WhatsApp o llamadas ilimitadas. Esto ya cae en la imaginación de cada uno. El sitio web que se presenta a continuación refresca cada cierto tiempo el valor del QRCode. Nadie regala nada gratis, es algo que tenemos que tener siempre en la cabeza. Si nos toca un premio en Internet, desconfiemos.
Si la víctima cae en este tipo de engaño, el atacante recibe la sesión de WhatsApp en su navegador de Firefox. Es decir, en el mismo sitio dónde el plugin de Greasemonkey está inyectando el código JavaScript para capturar el QRCode original de WhatsApp Web.
Este artículo solo es una PoC que nos ayuda a ver lo fácil que puede ser, en algunas ocasiones, que caigamos ante las múltiples amenazas que tiene Internet. La ingeniería social sigue avanzando y mejorando ante las nuevas tecnologías que van apareciendo, por lo que la concienciación y el buen uso de éstas es algo vital para estar un poco más seguro en la red. Los ataques de Spear Phishing pueden buscar tus datos, tus credenciales si no tienes 2FA, tus tokens OAuth como ya vimos con Sappo o que valides un QRCode. Ten cuidado.
Figura 1: QRLJacking. Cómo te pueden robar sesiones de WhatsApp Web |
Los miembros del proyecto OWASP han publicado una herramienta denominada QRLJacking para realizar pruebas de ataques de Spear Phishing en sitios que utilizan QRCodes como forma de autenticar a los usuarios. El esquema es sencillo de entender. En primer lugar, se debe configurar un servidor web dónde almacenar un sitio web falso con el Phishing y el código QRCode con el que se quiere engañar a la víctima. El objetivo final del ataque de Spear Phising ha de ser, de alguna forma, lograr que la víctima visite el sitio web falso y que lea el QRCode con el dispositivo móvil. A partir de dicho momento, el atacante tendrá todo lo necesario para obtener el acceso.
Figura 2: Esquema del ataque de QRLJacking |
En el caso de WhatsApp, los atacantes buscan mostrar un QRCode de WhatsApp Web a la víctima y que, mediante el engaño, se pueda obtener la sesión de WhatsApp Web de la víctima, autenticada con ese QRCode para poder espiar los mensajes de WhatsApp.
PoC: Montando lo necesario
En primer lugar, se necesita bajar los ficheros de QRLJacking, lo cual puede ser llevado a cabo desde su Github. Como se indica en el propio Github, existen dos partes diferentes en la configuración del ataque: la parte Client-Side y la parte Server-Side. La parte Server-Side necesita que se suba el fichero qrHandler.php a un servidor web. Este fichero es el encargado de transformar el QRCode que se capturará de WhatsApp a Base64. El fichero PHP devuelve un fichero JPG con el QRCode.
Además, debemos utilizar la imaginación de cada uno para “convencer” al usuario con el mensaje de Spear Phishing de que el QRCode que se le mostrará en una web preparada debe ser leído con su aplicación de WhatsApp. Para ejemplificar esto, crearemos una web dónde se informe al usuario de que hay un premio y que para participar debe leer el QRCode con la aplicación de WhatsApp.
La parte Client-Side es la parte más Javascript. Necesitamos realizar varias acciones en nuestro navegador para poder capturar el QRCode de WhatsApp y enviarlo al fichero PHP que se encuentra en la parte Server-Side, explicada anteriormente. ¿Qué hay que configurar en nuestro Firefox?
1. En primer lugar, hay que escribir en la barra de direcciones “about:config” para acceder a las configuraciones del navegador. Hay que buscar la directiva “security.csp.enable” y deshabilitarla.
Figura 3: Deshabilitar security.csp.enable |
Esto es necesario porque la página de WhatsApp Web viene protegida por CSP y si se intenta ejecutar el plugin para inyectar código en ella y capturar el QRCode, el navegador no dejará hacerlo ya que lo impide la política de Content Security Policy con la que viene la web.
Figura 4: Login de WhatsApp Web con Headers CSP |
2. Después, utilizando el add-on Greasemonkey hay que cargar el fichero WhatsAppQRJackingModule.js. Este plugin de Firefox se encarga de inyectar el código JS necesario para extraer el QR Code del sitio web de WhatsApp Web y enviarlo al fichero PHP qrHandler.php, que se encuentra en el servidor web. Luego se genera el fichero JPG con la imagen del QR Code extraído y el sitio web falso podría utilizar dicho QR Code.
3. Por último, se debe acceder al sitio web de WhatsApp Web desde nuestro propio navegador. Se llevará a cabo todo el proceso, explicado anteriormente, y si el proceso de ingeniería social es correcto, se obtendrá la sesión de WhatsApp Web de un usuario.PoC: Dame tu sesión de WhatsApp Web
La página de WhatsApp Web genera gráficos con datos en formato QRCode cada cierto tiempo, por lo que el código JavaScript inyectado por el plugin va consultando continuamente para ir extrayendo el QRCode nuevo y reportarlo al servidor que lo mostrará en la página web de Phishing. A continuación, se muestra un QRCode válido en la página de WhatsApp Web.
Figura 5: QRCode de login para WhatsApp Web |
En este instante el plugin de Firefox Greasemonkey captura el nuevo QRCode y lo envía al servidor dónde se haya configurado la parte Server-Side. Para esta prueba de concepto, el valor base64 del QRCode se envía a la dirección IP del atacante, en concreto al fichero QRHandler.php publicado en el servicio web publicado en esa dirección, que se encargará de generarar el fichero JPG con la imagen del QRCode en la web de Phsihing.
Ahora llega el momento de ver cómo un atacante puede obrar para que la víctima lea el QRCode con su móvil. Para ello, el atacante puede hacer un uso de un esquema de Spear Phishing clásico en el que se indique que se ha ganado un premio, quizá suscripción infinita a WhatsApp o llamadas ilimitadas. Esto ya cae en la imaginación de cada uno. El sitio web que se presenta a continuación refresca cada cierto tiempo el valor del QRCode. Nadie regala nada gratis, es algo que tenemos que tener siempre en la cabeza. Si nos toca un premio en Internet, desconfiemos.
Figura 6: Página en el servidor de Phishing que actualiza el QRCode de una sesión de WhatsApp Web |
Si la víctima cae en este tipo de engaño, el atacante recibe la sesión de WhatsApp en su navegador de Firefox. Es decir, en el mismo sitio dónde el plugin de Greasemonkey está inyectando el código JavaScript para capturar el QRCode original de WhatsApp Web.
Figura 7: Sesión abierta en WhatsApp Web con el QRCode escaneado en el servidor de Phishing |
Este artículo solo es una PoC que nos ayuda a ver lo fácil que puede ser, en algunas ocasiones, que caigamos ante las múltiples amenazas que tiene Internet. La ingeniería social sigue avanzando y mejorando ante las nuevas tecnologías que van apareciendo, por lo que la concienciación y el buen uso de éstas es algo vital para estar un poco más seguro en la red. Los ataques de Spear Phishing pueden buscar tus datos, tus credenciales si no tienes 2FA, tus tokens OAuth como ya vimos con Sappo o que valides un QRCode. Ten cuidado.
Autor: Pablo González Pérez (@pablogonzalezpe)
Escritor de los libros "Metasploit para Pentesters", "Ethical Hacking", "Got Root" y “Pentesting con Powershell”
Muy Bueno Chema
ResponderEliminarY si el QR lo que hace es levantar una red wifi con el ssid en oculto la cual te pueda permitir a estar en la misma red ,interesante la PoC.
ResponderEliminarEsto es bastante viejo ya, hace años que existe.
ResponderEliminarIncluso fue publicado con el software Selenium ya.
Prehistorico.
si esto se implementara con latch y qr . Seria a prueba de ingenieria social?
ResponderEliminar