¿Dónde está la bolita? Jugando con las pestañas del navegador para engañar al usuario (phishing avanzado)

El phishing tradicional funciona principalmente enviando a los usuarios un correo con un enlace que, si pinchan, les redireccionará a un sitio malicioso, normalmente una web falsa que se hace pasar por otra legítima. Pero, ¿y si la redirección al sitio falso se produce de forma inadvertida en una de las múltiples pestañas abiertas en el navegador?


Hoy vamos a ver dos formas ingeniosas para conseguirlo. La primera denominada 'Windows hijacking' que establecerá un contador al abrir una pestaña que una vez llegue a 0 cambiará la localización a la página fraudulenta. La segunda llamada 'tap nabbing' hará se cambie el contenido igualmente pero en otra pestaña que el usuario no está viendo en ese momento. De esa forma cuando el usuario vuelva a la pestaña creerá que la dejó abierta (por ej. Gmail) y se volverá a loggear.

Window hijacking

Es sabido que configurar un tag con un atributo como _blank tiene ciertos riesgos de seguridad:

https://mathiasbynens.github.io/rel-noopener/

Esto es debido a que una nueva página abierta tiene la capacidad de cambiar la ubicación de la ventana (windows location) con lo siguiente:

window.opener.location = "https://google.com"

Además es posible también crear una página web con la capacidad de crear una nueva página en una nueva pestaña, y luego cambiar la ubicación de la página recién creada después de un periodo arbitrario de tiempo. Esto se puede lograr de la siguiente manera:
<script>
    var windowHijack = function(){
        window.open('https://legitloginpage.xyz', 'test');
        setTimeout(function(){window.open('https://notlegitloginpage.xyz', 'test');}, 300000);
    }
</script>
<button onclick="windowHijack()">Open Window!</button>

En el ejemplo anterior, una nueva ventana se abre cuando se pulsa el botón y, 5 minutos más tarde, la nueva ventana cambiará de sitio. Incluso si en la nueva pestaña se navega a otro sitio web o se actualiza, el sitio original todavía podría cambiar la ubicación.

Demo1

En este ejemplo, se enlaza con una página de login y el temporizador se establece en 5 segundos. Cuando el tiempo se agota, la página de inicio de sesión legítima se cambia a una página de acceso ilegítimo que tiene un keylogger instalado.

https://security.love/windowHijacking

Demo2

En este ejemplo secundario, el ataque se combina con Pastejacking. Primero el enlace apunta a serverfault.com y, después de haber sido abierto, un segundo temporizador de 5 segundos va a cambiar la ubicación del sitio Web legítimo de serverfault a un clon maligno de la página original, con código pastejacking. Esto hace que cualquier usuario que intente copiar la respuesta en su lugar se inyecte "cat /etc/passwd \n" en su portapapeles.

https://security.love/windowHijacking/index2.html

Tap nabbing

Las pestañas o ventanas abiertas utilizando JavaScript o target = "_blank" aunque limitado tienen acceso a la ventana padre, haciendo caso omiso de las restricciones de cross-origin. Entre ellos la capacidad de redirigir la pestaña padre o de la ventana usando window.opener.location.

Si bien ésto puede parecer inofensivo, es posible realizar un ataque de phishing cuando las aplicaciones web permiten o hacen uso de anchors con target = "_blank" o window.open().

Imagina el siguiente escenario, el más típico:

Eres un administrador utilizando algún foro o software de chat. Actualmente estás conectado en la aplicación, y ves un mensaje dejado por un usuario. El usuario solicita o te convence para que hagas clic en un enlace de su mensaje, que se abre en una nueva pestaña. Mientras que la nueva página puede parecer completamente segura - tal vez sólo una captura de pantalla o o un error en HTML - ejecuta el siguiente JS:

window.opener.location.assign ('https://yourcompanyname.phishing.com');

Lo que no te das cuenta es que al tratar con este cliente ilegítimo o queja del usuario, la pestaña de la aplicación fue redireccionada en background. ¿A qué? A un sitio web de suplantación de identidad idéntico, que solicita que introduzcas tus credenciales para entrar de nuevo.

Demo1

Un enlace que abre _blank en una nueva pestaña. El código JavaScript que se ejecuta en la nueva pestaña tiene un handler con window.opener. La página abierta abre una página falsa de Github con el mensaje "Timeout, please log in again".  El usuario cierra la pestaña abierta y vuelve a lo que cree que es GitHub, donde vuelve a introducir las credenciales.

 http://molnarg.github.io/tabnabbing-demo/decoy_document.html

Fuentes:
- windowHijacking
- Mozilla detecta un nuevo tipo de phishing, el tab napping
- Tabnabbing demo
- blankshield

4 comentarios :