QRLJacking: hackeando el código QR de WhatsApp y otros

Iniciado por Gabriela, Agosto 02, 2016, 03:08:24 PM

Tema anterior - Siguiente tema

0 Miembros y 1 Visitante están viendo este tema.

Agosto 02, 2016, 03:08:24 PM Ultima modificación: Agosto 02, 2016, 04:40:21 PM por Gabriela

Varios sitios webs se hacen eco de una prueba de concepto publicada hace pocos días en No tienes permitido ver los links. Registrarse o Entrar a mi cuenta en la cual se plantea una técnica de ataque llamada QRLJacking que permite evadir sistemas de seguridad e inicio de sesión SQRLs (Secure QR Logins). 

¿Qué es QRLJacking?

QRLJacking o Quick Response Code Login Jacking, según se lee (en inglés)  en  No tienes permitido ver los links. Registrarse o Entrar a mi cuenta  es  un vector de ataque -ingeniería social mediante- que afecta a todas las aplicaciones que permitan iniciar sesión a través del escaneo de un código QR y  cuyo  objetivo es secuestrar dicha sesión del usuario por el atacante.

Hay que señalar que para que este tipo de ataque pueda funcionar es necesario que tanto el atacante como la víctima estén conectados al mismo tiempo.  Asimismo, basado en la ingeniería social, es indispensable suplantar la identidad de las páginas web reales para que la víctima escanee el código QR malicioso, esto es, el que fue modificado por el atacante.

Esta técnica, conocida como secuestro QR basado en sistema de acceso, plantea una serie de etapas que pueden resumirse en:

-   El atacante ingresa al sitio que utiliza el código QR (por ejemplo WhatsApp web). El sitio muestra el código generado.

-   El atacante clona/copia del código QR de inicio de sesión en una página de phishing creada por él.

-   Esta página se envía a la víctima.

-   Si la víctima "cae", escanea el código QR, en nuestro ejemplo, con WhatsApp.

-   La aplicación móvil envía un token secreto al servicio web para completar el proceso de autenticación.

-   Como resultado, el atacante inicia la sesión cliente y obtiene el control sobre la cuenta de la víctima, esto es, el servicio inicia el intercambio de todos los datos de la víctima con la sesión del navegador del atacante.

-   Para llevar a cabo un resultado exitoso, el atacante debe refrescar continuamente (cada N segundos) el código generado en la página falsa.

Citar"Lo que los atacantes necesitan hacer para llevar a cabo con éxito un ataque QRLJacking es escribir un script para clonar periódicamente los códigos QR expirables y refrescar los que aparezcan en la página web de phishing creada, porque como sabemos un proceso QR Login bien implementado debe tener una intervalo de caducidad para los códigos QR"

Se puede apreciar el esquema en la siguiente imagen:




Este escenario, no solo aplica al WhatsApp, sino que se puede replicar en  WeChat, AirDroid, Weibo, Yandex, Alibaba y cualquier otro proyecto que utilice código QR como método de autenticación.



Por otra parte, en GitHub leemos (en inglés):

¿Cuáles  son los requisitos para lograr un ataque QRLJacking  con éxito?


El ataque  QRLJacking consta de dos partes:

1-   Del lado del servidor: Se necesita un script del lado del servidor para mostrar a la víctima la página desde que atacaremos.

2-   Del lado del cliente: Desde donde clonaremos el código QR, llevándolo a nuestra página de phishing, ya que cuando la víctima intenta acceder a la web, por ejemplo, de WhatsApp, lo que estará haciendo en cargar la web maliciosa y el script oculto en  el servidor nos enviará el token de acceso a nuestro servidor, a través del cual podremos acceder a la cuenta de la víctima.


Configuración del Servidor (Hosting del atacante)

1.   Subir el archivo " qrHandler.php " al servidor, este archivo php se utiliza para convertir la cadena de código QR base 64 en un archivo .JPG válido. Una vez que tenemos  una imagen válida generada QR , la nombramos como  " tmp.jpg " , la cual se localizará en la misma carpeta raíz de los archivos  y  se actualizará cada vez que se llame ese archivo php.

2.   A continuación, actualizar el archivo " phishing.html " del código fuente de  la página de phishing preferida.


Configuración del lado del cliente (browser del atacante) :

1.   Abrir el navegador Firefox.

2.   Clic en "opciones" y escribe No tienes permitido ver los links. Registrarse o Entrar a mi cuenta Dar clic en aceptar: "Tendré cuidado, lo prometo".

3.   Buscar "security.csp.enable" y cambiar el valor a "false" haciendo doble clic en él y así permitir la realización de una solicitud XHR sobre un dominio diferente. Se recomienda que después de las pruebas restablecer el valor original).

4.   Instalar el Greasemonkey addon  [   url=No tienes permitido ver los links. Registrarse o Entrar a mi cuenta] addon/Greasemonkey[/url]   ] y asegurarse que el archivo del modulo   "WhatsAppQRJackingModule.js"  se carga y está corriendo.

5.   Ahora vayamos No tienes permitido ver los links. Registrarse o Entrar a mi cuenta y esperar el inicio de sesión del WhatsApp. Greasemonkey  deberá inyectar nuestro archivo en el módulo de WhatsApp.

6.   Enviar el enlace directo de la última página de phishing a una víctima.  Una vez escaneada la QR , la sesión de la víctima será nuestra.




En GitHub se comparte, también un video demo de la POC



Más información y recursos en el sitio No tienes permitido ver los links. Registrarse o Entrar a mi cuenta



Sed buenos  :)

Gabriela

PD: Hay que comentar que con acceso físico al dispositivo, esta técnica de secuestro del código QR, ya se hablaba desde hace tiempo. En el youtube hay videos de 2014/2015.


Fuentes para la elaboración del post: GitHub|segu-info.com.ar|hackplayers.com





Tú te enamoraste de mi valentía, yo me enamoré de tu oscuridad; tú aprendiste a vencer tus miedos, yo aprendí a no perderme en tu abismo.