Come identificare il contenuto codificato in una pagina di phishing [chiuso]

2

Prima di tutto, sono un vero maniaco della sicurezza delle informazioni. Oggi mattina ho ricevuto un'e-mail che mi incuriosisce. Era una specie di pagina di phishing che non è stata rilevata dal filtro antispam di Gmail. Quindi ho scaricato il contenuto per dare un'occhiata al suo codice. Quello che ho trovato era una semplice pagina HTML / JavaScript con qualcosa di simile al footer:

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

AGGIORNATO 1: Ecco l'intero codice in PasteBin .

Ho appena passato il primo elemento dell'array per minimizzare il codice. Posso capire che è un array esadecimale, ma mi piacerebbe sapere come potrei decodificarne il contenuto per vedere cosa sta facendo.

Qualsiasi aiuto sarà apprezzato.

AGGIORNATO 2: Sono stato in grado di convertire parte del codice in String e ho capito che si tratta di uno script poco pratico. Verifica: link

    
posta Jaumzera 17.05.2016 - 13:58
fonte

1 risposta

4

Solo alcune piccole cose, non ho capito completamente la cosa. Sentiti libero di espanderlo e commentarlo.

Dopo aver abbellito il codice, otteniamo: link

Vediamo:

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

E poi una funzione

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();
};

Quindi, questo esegue solo HEX - > Conversione ASCII e scrive la stringa decodificata nel documento. Questo a sua volta valuta

<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>

È qui che diventa interessante, perché vengono chiamate altre funzioni offuscate. Qui è dove viene utilizzata la matrice magica restituita da "XF ()":

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

Poiché abbiamo solo bisogno di afferrare la stringa decifrata che è di nuovo scritta in document , possiamo invece modificare facilmente il codice per produrre la stringa.

Ma per questo abbiamo bisogno dell'oggetto "cc" che è usato all'interno di _ii() . Vediamo che esiste una funzione che chiama _ii() :

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

Ma allora, chi chiama A0 invece e con quale argomento? Guardiamo l'HTML e vediamo

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

E anche

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

Quindi, abbiamo bisogno del valore della forma F1 e del subobject P1 per quello

Tuttavia, non ho ancora capito l'argomento giusto per questo. Forse un valore hardcoded ovunque all'interno. Quando eseguo la versione modificata della funzione con l'argomento "abc" sothat la stringa ouput che viene scritta nel documento, in questo momento ottengo solo garbage

Seindividuiamol'argomentogiusto,questoprobabilmentedecodificheràcorrettamentesuunnuovomalware.IlcodicechehovistofinoadoraèHashing(MD5oSHA1)erobadicrittografia.Ilveromalwaredevetrovarsiall'internodell'arrayconlafunzioneXF().

(Funzionemodificata:)

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;
};

Il modulo è sicuro da aprire, nessuna delle immagini collegate esiste più. Abbiamo la seguente pagina:

Iltestolasciatoallacaselladitestosembradire"Prego inserire la password". Quindi, sembra proprio che dobbiamo conoscere la password per decifrare il testo. Ma qual è la password? Pensavo fosse una truffa? Fino a quando non lo so, la password sembra non essere inviata ad alcuni server di terze parti. Solo la password corretta decodifica qualcos'altro (o non riesco a decifrare il codice e fa qualcos'altro)

    
risposta data 17.05.2016 - 15:25
fonte

Leggi altre domande sui tag