Recientemente en María Pita Defcon, evento celebrado en A Coruña los días 9 y 10 de Marzo, tuve el placer de ir de ponente. En este evento hablé de la evolución de las estafas y los engaños, como por ejemplo el phishing, durante los últimos 20 años. Una de las partes, quizá, más chulas fue la exposición del QRLJacking sobre WhatsApp y cómo pueden robarte las sesiones y la información asociada: contactos, conversaciones, etcétera.
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 el uso del QR Code, llevar a cabo ataques que
pongan en ventaja al atacante. Como ejemplo presentamos al servicio más famoso
que hace uso del QR Code, WhatsApp. WhatsApp tiene la opción de ser utilizado a través de su aplicación
web 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.
La gente de OWASP
ha publicado una herramienta denominada QRLJacking,
la cual permite al auditor llevar a cabo este tipo de pruebas de forma sencilla
y directa. ¿En qué consiste este tipo de pruebas?
El esquema es
sencillo. En primer lugar, se debe configurar un servidor web dónde almacenar
un sitio web falso y el QR Code con el que se quiere engañar a la víctima. De
alguna forma, lograr que la víctima visite dicho sitio web falso y que lea el
QR Code con el dispositivo móvil. A partir de dicho momento, el atacante tendrá
todo lo necesario para obtener el privilegio. En el caso de WhatsApp, los atacantes buscan mostrar
un QR Code de WhatsApp Web a la
víctima y, mediante el engaño de ésta, obtener la sesión de WhatsApp de la víctima.
Montando lo necesario
En primer lugar, se
necesita bajar los ficheros de QRLJacking,
lo cual puede ser llevado a cabo desde 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 QR Code que se capturará de
WhatsApp a base64. El fichero PHP devuelve un fichero JPG con el QR Code.
Además, debemos
utilizar la imaginación de cada uno para “convencer”
al usuario de que el QR Code 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 QR Code 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 QR Code de WhatsApp y
enviarlo al fichero PHP que se encuentra en la parte server side, explicada anteriormente. ¿Qué hay que configurar en
nuestro Firefox
- 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.
- 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.
- 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.
Dame tu sesión de WhatsApp
Web
La web de WhatsApp Web genera códigos QR cada ‘x’ tiempo, por lo que el código JS
inyectado por el plugin va consultando cada ‘x’ tiempo para ir extrayendo el
código QR y generar el proceso. A continuación, se muestra un QR Code válido en
la web de WhatsApp Web.
En este instante el
plugin de Firefox Greasemonkey
captura el QR Code y lo envía al servidor dónde se haya configurado. Para esta
prueba de concepto, el base64 del QR Code se envía a la dirección IP del
atacante, al fichero QRHandler.php, el cual generará el fichero JPG con la
imagen del QR Code.
Ahora llega el
momento de ver cómo un atacante puede obrar para que la víctima lea el QR Code
con su móvil. Para ello, éste puede hacer un phishing clásico en el que se indique que se ha ganado un premio,
quizá suscripción infinita a WhatsApp.
Esto ya cae en la imaginación de cada uno. El sitio web que se presenta a
continuación refresca cada ‘x’ tiempo el QR Code. Nadie da duros a pesetas, 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 web. Es decir, en el mismo sitio dónde el
plugin de Firefox está inyectando el código JS para capturar el QR Code
original de WhatsApp.
Por último, decir
que existe otro vector que el ataque de Man
in the Middle en una red de área local. Con este ataque un atacante podría
lograr inyectar el QR Code en páginas legítimas, realizando un ataque, quizás,
más real. Sea como sea, interesante prueba de concepto 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.
No hay comentarios:
Publicar un comentario