Cómo identificar contenido codificado en una página de phishing [cerrado]

2

En primer lugar, soy un tonto en seguridad de la información. Hoy por la mañana he recibido un correo electrónico que me da curiosidad. Era un tipo de página de phishing que no fue detectada por el filtro de spam de Gmail. Así que he descargado el contenido para echar un vistazo a su código. Lo que encontré fue una página HTML / JavaScript simple con algo como esto al pie de página:

function XF(){return new Array('0cd0a85cd81679c246c5a0bb377e5f3b789d0612531b507f4a9dd98ba372219feb0d35d42db5970a21c95428a46ddb18bd664c405e1dd9074f6e0ffdda0cd7f9365337e1baca81c9d73803789c0192093adef61debca1f9525309693700fe45464d57327a2fb449f05b4c0736a71bcf1ffcc66a09e439358cf0d1abf9763f1548ac13a8aed69a52e8a3f15d0d5294f41877d4b5408e95c1286f390bb1bf19c6581b3c17075ebf4733b7224bf275cc8911fc15b359bd195d4f2220ad2ca3991f096f22e32d0ae0a749d921f7bb331a7a07fa31e98f2ea6edf4c996bf82e2eea6664033f1e890023d1bb2fc8b3dbf9ca70bfb9b9063f583d2927f2eeb82c08d130e7c04c2ea8a388750694fbef8a3257944f838446cbfbdd827275e20938288fcb5876608d8d444931c5b03c441e6086aee1111ed0a8366a64e75c38afddf4a6bf70f3583ca7bdf5402f281e62405899c38bcdf51c497cdfdc5951850f5a53d0d0fa7373fa458df3f63ebfff78a2b2a159ad48e1575f55f2adf8a3fc3202dfd15a7c1efe0efec1ceaa69406b3db509bbe596d3ee97e2c365ba7f48fd01ad3035beba46ae443aee287739033c9c9fcf8ec0daf8247931d667a6ab8d8c60cbe627f4b37a5a6ee7bf5de687cdb15c3b6778e6b9af28af9b2306c3f93ffd5588347e293fc61a75263317e3ef10e59f7798a936625d98dae2904186de3aefa1e877af65', ...}

ACTUALIZADO 1: Aquí está el código completo en PasteBin .

Acabo de pasar el primer elemento de la matriz para minimizar el código. Puedo imaginar que es una matriz hexadecimal, pero me gustaría saber cómo podría decodificar su contenido para ver qué está haciendo.

Cualquier ayuda será apreciada.

ACTUALIZADO 2: Pude convertir parte del código de nuevo a String y me di cuenta de que es realmente un script muy habitual. Compruebe: enlace

    
pregunta Jaumzera 17.05.2016 - 13:58
fuente

1 respuesta

4

Sólo unas pocas cosas pequeñas, no he descubierto la cosa por completo. Siéntase libre de expandir y comentar sobre esto.

Después de que embellecemos el código, obtenemos: enlace

Vemos:

var C4 = new Array(0x3c, 0x73, 0x63, 0x72, 0x69, 0x70, 0x74...

Y luego una función

function DC() {
    var Wb = C4.length,
        _yu = new Array(Wb),
        i;
    for (i = 0; i < Wb; i++) _yu[i] = String.fromCharCode(C4[i]);
    document.open();
    document.clear();
    document.write(_yu.join(""));
    document.close();
};

Por lo tanto, esto solo realiza HEX - > La conversión ASCII y escribe la cadena decodificada en el documento. Esto a su vez evalúa a

<script>
    function _ii(Cc) {
        var Dc, yx, _099, _ln, o, _x02, _jh;
        Dc = new Array(4);
        _jh = XF();
        _ln = _jh.length;
        yx = _r0(Cc, _s88n(_jh[_ln - (0x4c ^ 0x4e)]), 0x03e8);
        _099 = ZZ(_xsii(_jh[_ln - (0x2b ^ 0x2f)]), yx);
        _x02 = ZZ(_xsii(_jh[_ln - (0x98 ^ 0x9B)]), yx);
        o = JJ(_jh, _099, _x02, Dc);
        if ((Dc.join("")) == _jh[_ln - 1]) {
            document.write(o.join(""));
            document.close();
        } else {
            msg.innerHTML = "&nbsp;";
            alert('Senha inválida!');
        };
        _ip = false;
    };
</script>

Aquí es donde se pone interesante, porque se llaman otras funciones ofuscadas. Aquí es donde se está utilizando la matriz mágica devuelta por "XF ()":

function XF() {
    return new Array('0cd0a85cd816....6ec24dde78ca48', 'd6860accfa237d675ba73acc5e486168', 'f81845c6e66b62e5fc758da50dc73d68', 'a96751384baa020ef306acaed4e7851683989674', 'eb3494af236b53ec970b830e308ff41d');
};

Ya que solo necesitamos capturar la cadena descifrada que está escrita nuevamente en document , podemos modificar fácilmente el código para generar la cadena en su lugar.

Pero, para eso necesitamos el objeto "cc" que se usa dentro de _ii() . Vemos que hay una función que llama a _ii() :

function A0(Cc) {
    if (!_ip) {
        msg.innerHTML = ms2;
        window.setTimeout(function() {
            _ii(Cc);
        }, 0);
        _ip = true;
    };
};

Pero entonces, ¿quién llama a A0 en su lugar y con qué argumento? Miramos el HTML y lo vemos

<form name="F1" onsubmit="A0(document.F1.P1.value)" action="javascript:A0(document.F1.P1.value)">

Y también

<a href="javascript: A0(document.F1.P1.value);">

Por lo tanto, necesitamos el valor de la forma F1 y el subobjeto P1 para eso

Sin embargo, no he descubierto el argumento correcto para eso en este momento. Tal vez un valor codificado en algún lugar dentro. Cuando ejecuto la versión modificada de la función con el argumento "abc" para que salga la cadena que está escrita en el documento, solo obtengo basura ahora mismo

Siresolvemoselargumentocorrecto,estoprobablementesedescifrecorrectamenteaunanuevapiezademalware.ElcódigoquehevistohastaahoraessoloHashing(MD5oSHA1)ycosasdecifrado.ElmalwarerealdebeestardentrodelamatrizenlafunciónXF().

(Funciónmodificada:)

function_ii(Cc){console.log("inside");
    var Dc, yx, _099, _ln, o, _x02, _jh;
    Dc = new Array(4);
    console.log("good");
    _jh = XF();
    console.log("outside");

    _ln = _jh.length;
    console.log("good");
    yx = _r0(Cc, _s88n(_jh[_ln - (0x4c ^ 0x4e)]), 0x03e8);
    _099 = ZZ(_xsii(_jh[_ln - (0x2b ^ 0x2f)]), yx);
    _x02 = ZZ(_xsii(_jh[_ln - (0x98 ^ 0x9B)]), yx);
    o = JJ(_jh, _099, _x02, Dc);
    console.log(o.join(""));
    /*if ((Dc.join("")) == _jh[_ln - 1]) {
        document.write(o.join(""));
        document.close();
    } else {
        msg.innerHTML = "&nbsp;";
        alert('Senha inválida!');
    };*/
    _ip = false;
};

Es seguro abrir el formulario, ya no existe ninguna de las imágenes vinculadas. Tenemos la siguiente página:

Eltextoquesedejaenelcuadrodetextoparecedecir"Por favor ingrese su contraseña". Entonces, esto parece que realmente tenemos que saber la contraseña para descifrar el texto. Pero ¿cuál es la contraseña? Pensé que esto era una estafa? Hasta que se sepa, la contraseña no parece ser enviada a un servidor de terceros. Solo la contraseña correcta descifra otra cosa (o estoy fallando en descifrar el código y hace otra cosa)

    
respondido por el Maximilian Gerhardt 17.05.2016 - 15:25
fuente

Lea otras preguntas en las etiquetas