Una de las cosas curiosas que tienen las JavaScript Botnets, es que puedes hacer ataques dirigidos a webs cuando aún está conectada la víctima al payload, para que una vez que se desconecte, la web que visite esté infectada. Esa es una demo de las realizadas en las charlas de BlackHat y Defcon, y éste es el paso a paso de la demo – que lo realicé por si algo iba mal -.
Paso 1: Configurar un nuevo ataque pre-configurado para el banco californiano. Con este panel decidimos qué ficheros vamos a cargar en todos los bots infectados con labotnet.
Figura 1: El panel de la JavaScript Botnet con los preset attacks |
Paso 2: Analizamos la web en busca de ficheros javascript cargados de forma estática. Esto se puede hacer con cualquier fichero, incluso htm o html, pero nosotros hemos decidido hacerlo con JavaScript, para no cambiar el formato. En este caso, en la web de este banco de California vamos a seleccionar el ficherogatag.js para ser infectado.
Figura 2: Ficheros JS cargados por la web objetivo |
Paso 3: Se configura el payload adecuado para que descargue a la caché este ficheroJavaScript. Como estará utilizado el Proxy, nos garantizamos que el fichero quedará infectado en la caché, una vez se desconecte del servidor.
Figura 3: El fichero se fuerza en cualquier web visitada |
Paso 4: La víctima se conecta al servidor Proxy porque así lo ha querido.
Figura 4: La víctima se conecta al Rogue Proxy Server |
Paso 5: Visita cualquier página, y el fichero infectado queda descargado e infectado con el payload en la caché del navegador.
Figura 5: El fichero gatag.js con el payload copiado al final del archivo |
Paso 6: La víctima se desconecta del servidor Proxy, para continuar con su navegación normal.
Figura 6: La víctima se desconecta |
Paso 7: Un tiempo en el futuro, decide conectarse a la web de su banco, para realizar las gestiones pertinentes.
Figura 7: La víctima se conecta al banco un tiempo en el futuro |
Paso 8: Con el fichero JavaScript gatag.js es cargado en esa pestaña desde la caché del navegador, y este está infectado, se capturan los datos enviados en el formulario.
Figura 8: Los datos enviados en el formulario quedan grabados en panel |
En este caso se ha hecho la demo con un fichero JavaScript, pero se podría realizar el mismo ataque con ficheros HTML o incluso CSS, pudiendo hacerse uso no sólo deJavaScript, sino de side-channel attacks como los contados por Mario Heiderich en Got Your Nose! How attackers steal your precious data without using scripts.