giovedì 23 agosto 2007

La decodifica automatica di semplici javascript offuscati e criptati.

Di solito l'attacco a siti per reindirizazare il visitatore a url contenenti malware viene portato con l'aggiunta di uno script java alla pagina attaccata.
Lo script il piu' delle volte e' offuscato, ossia contiene codici di escape che al momento della lettura della pagina vengono trasformati in javascript in chiaro.
Inoltre molte volte il codice viene criptato tramite chiave per impedire la decodifica.
Traendo spunto da un articolo pubblicato su
http://scriptasylum.com/tutorials/encdec/encode-decode.html

ho creato questa semplice pagina web che permette di decodificare istantaneamente alcuni codici java offuscati a questo link:
PAGINA DI DECODIFCA JAVASCRIPT OFFUSCATI

Un esempio:
Consideriamo il codice offuscato tuttora presente nella pagine web recentemente attaccate su domini di providers italiani


sono presenti due porzioni di codice java costituito da sequenze di escape....
La prima con sequenza escape (in giallo) non criptata...che in realta' contiene la funzione di decodifica df(s) della seconda parte di codice (in arancio) che invece contiene la sequenza di escape criptata. con l'indirizzo IP al sito malware.

Passando queste 2 stringhe di escape ( passare solo il codice compreso tra apici senza le parentesi e gli apici es. '%3C%73%......; la parte di codice in giallo nella finestra decodifica senza key, per la parte in arancio nella finestra decodifica con KEY ) abbiamo:

e nella corrispondente finestra di testo in chiaro ora possiamo leggere le due parti di codice.
La seconda parte decriptata mostra la chiamata ad un IP /81.95.148.42 registrato a nome di RBNET descr: RBusiness NetworkPanama City address: Republic of Panama, sito con sicuramente malware o reindirizzamenti ad altri siti con malware.

Aggiornamento

Ho portato in Autoit da javascript il codice del programma di decodifica dello script offuscato.
Si puo notare dal codice dello script di decodifica che la chiave numerica usata non e' altro che l'ultimo carattere numerico della sequenza di escape.
Nel nostro caso abbiamo l'ultimo carattere della stringa criptata = 3 ed e' proprio il numero 3 il valore chiave.


La decodifica viene ottenuta sottraendo il numero 3 a tutta alla sequenza dei codici numerici unicode dalla stringa opportunamente convertita.
Si ottine cosi' la stringa in chiaro che puo essere eseguita all'interno della pagina.
Probabilmente esistono altri script che invece che sottrarre la chiave numerica la sommano, oppure compiono altri passaggi matematici piu' complessi, ma in sostatnza questo algoritmo risulta molto semplice, molto piu' di quanto pensavo, prima di dargli una occhiata un po piu' approfondita.

Edgar

4 commenti:

maverick ha detto...

questo tipo è molto semplice da decodificare ma altri non sono così banali purtroppo. Comunque hai fatto benissimo a fare questa cosa

Edgar Bangkok ha detto...

Infatti, ho messo nel titolo 'semplici javascript...' propio perche' pensavo che ne esistono di piu complessi. Comunque visto che con una scasione ieri con webscanner ho trovato 45 SITES su IP 194.242.61.177 mentre a luglio erano Num. 41 SITES at IP 194.242.61.177 (invece che diminuire aumentano ....) mi sa che per un po ne avremo ancora in giro di questo semplice codice... anche se al momento innocuo a meno che qualcuno non decida di riattivare il server malware...
Edgar

Denise ha detto...

Ciao,

qualcuno può aiutarmi a decodificare questa pagina:
http://global.frooition.com/ebay/js/template_script.php

Ho provato a seguire i passaggi ma senza successo anche perchè la formula per ricavare la chiave sembra + complessa.

Grazie

Edgar Bangkok ha detto...

Ho pubblicato sul blog (in data odierna) una breve risposta al tuo quesito che spero passa esserti utie

http://edetools.blogspot.com/2009/01/breve-risposta-ad-un-quesito-su-come.html

Saluti

Edgar