我遇到了 JavaScript 攻击代码 - 如何搜索有关漏洞利用细节的信息?

信息安全 网页浏览器 开发 javascript 事件响应
2021-09-05 20:07:45

所以,我点击了一个看起来合理的 LinkedIn 邀请,并没有考虑先将鼠标悬停在链接上,因为通常电子邮件客户端会警告我这些事情。

一旦我意识到我登陆了一个漏洞利用页面,我迅速复制了源代码(包含一些明显有罪的 JavaScript),关闭了窗口,并正确地对攻击代码进行了去混淆处理(用 eval 包装的自制编码)。

编辑:这里是反混淆代码的 pastebin,后面是实际的 HTML 攻击页面。

幸运的是,在我的案例中似乎没有部署有效负载 - 攻击针对 PDF 和 Java 浏览器插件,我没有(我确实安装了 Java 无插件,但无论如何版本看起来太新了,无法进行攻击)。

但是,由于我不是 JS 专家(更不是 JS 推理专家),我试图搜索攻击代码以确保我不受影响。至今没有结果。

当然,这是有道理的——像这样的公开可见的代码会吸引小偷和其他任何希望将其用于恶意目的的人。

尽管如此,鉴于 JavaScript 攻击代码,我如何才能找到有关该漏洞的信息?

4个回答

看起来像是这个恶意软件被其他人逆转(以及逐步操作方法)的一个很好的例子。我刚刚在 google 上搜索了以下内容。

基本上,您似乎受到了臭名昭著的黑洞漏洞利用工具包的一些新变种的攻击。

如果您在链接到 'java'、'flash' 和 'pdf' 的 pastebin 中进行搜索,您会看到在整个过程中基本上转换为“下载并打开它”的引用,希望其中存在的众多漏洞之一套件将工作。我发布的第一个链接显示对此进行了很好的分解。

但是,如果上述作者没有进行任何分析,我建议走迈克尔建议的路线并加载 VM 映像。话虽如此,它仍然有其自身的风险。我建议,如果您想定期执行此操作,请使用专用于进行此类调查的旧笔记本电脑或台式机。这个问题将来也可能对您有所帮助。

除了使用虚拟机,如果你认为 javascript 本身是恶意的,你可以使用jsunpack 之类的工具来分析你的代码。此外,如果您使用 Wireshark 捕获数据包并重新创建场景,您可以提取有效负载/恶意二进制文件,将其上传到VirusTotalAnubis和/或Malwr以进行进一步分析。(快速说明:Malwr 还通过在 VM 上运行二进制文件为您提供杜鹃沙箱的结果)

如果搜索没有发现任何有用的东西,一个标准的选择是尝试一下。

使用相对较旧版本的 Adob​​e 和 Java 插件运行VM(如果您怀疑它针对 PDF 和/或 Java),在访问受感染站点之前拍摄 VM 的快照,记录所有进出 VM 的流量当您访问该网站时(以及此后不久)。

使用例如 Wireshark 检查流量并比较访问前后文件系统的内容(您可能会在http://www.honeynet.org/找到一些有用的资源)。

您发布的 JS 基本上是向受害者部署攻击的第一阶段。它正在枚举您通过 javascript 安装的所有内容。

一项这样的检查是

  if ((c.isIE && (c.verIE < 9 || !c.ActiveXEnabled))
                                                || (c.verGecko && 0 > c.compareNums(c.verGecko, c
                                                                .formatNum("2")))
                                                || (c.isSafari && (!c.verSafari || 0 > c.compareNums(
                                                                c.verSafari, c.formatNum("4"))))
                                                || (c.verOpera && c.verOpera < 10)) {
                                        b = [ 1, 1, 1 ]
                                }

在这里它会检查您的浏览器版本,是否有 IE < 版本 9、Firefox、Safari 或 Opera。

另一个这样的检查是

if (((javaver >= 500) && (javaver < 633))
                || ((javaver >= 700) && (javaver < 710))) {
        java1();
} else {
        if ((javaver > 709) && (javaver <= 717)) {
                java2();

这里正在检查您的 java 版本。并且根据您的 java 版本,即如果它介于 5.0.0 和 6.3.3 或 7.0.0 和 7.1.0 之间,它将部署一个函数 java1。现在,在 pastebin 输出中没有 java1 函数。这表明在某处引用了其他一些 .js 文件丢失。基本上 java1 函数是开发部分实际开始的地方。java2 函数和许多其他函数的类似情况。插件检查基本上是为了确定是否可以在浏览器中加载该特定插件。

所以,这个脚本只是实际利用的第一阶段。执行这么多检查的原因是因为利用变得非常困难,并且软件的每个版本都需要一组不同的有效负载。不仅是软件版本,还有操作系统版本。Windows XP SP2 漏洞利用不一定与 Windows XP SP3 漏洞相同,更不用说 Mac 与 Linux 与 Windows。而且您通常有一次机会利用点击链接的人。(在这种情况下,漏洞利用失败将导致浏览器崩溃)因此攻击者必须明智地选择他们必须在客户端上部署的漏洞利用:/

通过查看版本,如果您正在运行任何过时的应用程序,例如浏览器、java、flash 或 adobe 阅读器,您应该扫描您的系统以查找入侵。