难以捉摸的恶意软件历险记,第四部分:DDE 和 Word 文档字段

难以捉摸的恶意软件历险记,第四部分:DDE 和 Word 文档字段

本文是无文件恶意软件系列的一部分。 该系列的所有其他部分:

在本文中,我将深入研究一个更复杂的锁定系统的多阶段无文件攻击场景。 但后来我遇到了一种极其简单的无代码攻击——不需要 Word 或 Excel 宏! 这更有效地证明了我在这一系列文章中最初的假设:打破任何组织的外围根本不是一项艰巨的任务。

我将描述的第一个攻击利用了 Microsoft Word 漏洞,该漏洞基于 过时的 动态数据交换协议 (DDE)。 她已经是 固定的。 第二个漏洞利用了 Microsoft COM 和对象传输功能中更常见的漏洞。

通过 DDE 回到未来

还有人记得DDE吗? 可能不多。 这是第一个 允许应用程序和设备传输数据的进程间通信协议.

我自己对它有点熟悉,因为我曾经检查和测试电信设备。 例如,当时,DDE 允许呼叫中心操作员将呼叫者 ID 传输到 CRM 应用程序,最终打开客户卡。 为此,您必须在手机和计算机之间连接 RS-232 电缆。 那些日子!

事实证明,Microsoft Word 仍然 支持 DDE。

这种攻击无需代码即可有效的原因是您可以访问 DDE 协议 来自 Word 文档中的自动字段(向 SensePost 致敬 研究和出版物 关于它)。

域代码 是另一个古老的 MS Word 功能,它允许您向文档添加动态文本和一些编程。 最明显的例子是页码字段,可以使用值 {PAGE *MERGEFORMAT} 将其插入页脚中。 这允许自动生成页码。

难以捉摸的恶意软件历险记,第四部分:DDE 和 Word 文档字段
提示:您可以在“插入”下找到“字段”菜单项。

我记得当我第一次在Word中发现这个功能时,我感到很惊讶。 在补丁禁用它之前,Word 仍然支持 DDE 字段选项。 这个想法是 DDE 将允许 Word 直接与应用程序通信,以便它可以将程序的输出传递到文档中。 当时这是一项非常年轻的技术——支持与外部应用程序的数据交换。 后来发展成了COM技术,我们下面也会看看。

最终,黑客意识到这个 DDE 应用程序可能是一个命令 shell,当然会启动 PowerShell,黑客可以从那里做任何他们想做的事情。
下面的屏幕截图显示了我如何使用这种隐形技术:来自 DDE 字段的一个小型 PowerShell 脚本(以下简称 PS)加载另一个 PS 脚本,从而启动第二阶段的攻击。

难以捉摸的恶意软件历险记,第四部分:DDE 和 Word 文档字段
感谢 Windows 弹出警告内置 DDEAUTO 字段正在秘密尝试启动 shell

利用该漏洞的首选方法是使用带有 DDEAUTO 字段的变体,该变体会自动运行脚本 打开时 Word 文档。
让我们想想我们能对此做些什么。

例如,作为新手黑客,您可以假装自己来自联邦税务局,发送网络钓鱼电子邮件,并在第一阶段的 PS 脚本中嵌入 DDEAUTO 字段(本质上是一个植入程序)。 你甚至不需要对宏等进行任何真正的编码,就像我在 上一篇文章。
受害者打开您的文档,嵌入的脚本被激活,黑客最终进入计算机。 就我而言,远程 PS 脚本仅打印一条消息,但它可以轻松启动 PS Empire 客户端,该客户端将提供远程 shell 访问。
受害者还没来得及说什么,黑客就会成为村里最富有的青少年。

难以捉摸的恶意软件历险记,第四部分:DDE 和 Word 文档字段
shell 无需任何编码即可启动。 即使是小孩子也能做到!

DDE 和字段

微软后来确实在 Word 中禁用了 DDE,但在此之前该公司表示该功能只是被滥用了。 他们不愿意改变任何事情是可以理解的。 根据我的经验,我自己见过一个示例,其中启用了打开文档时更新字段,但 IT 部门禁用了 Word 宏(但显示通知)。 顺便说一句,您可以在Word设置部分找到相应的设置。

然而,即使启用了字段更新,当字段请求访问已删除的数据时,Microsoft Word 还会通知用户,就像上面的 DDE 的情况一样。 微软真的在警告你。

但最有可能的是,用户仍然会忽略此警告并激活 Word 中的字段更新。 这是感谢 Microsoft 禁用危险的 DDE 功能的难得机会之一。

如今找到一个未打补丁的 Windows 系统有多难?

对于此测试,我使用 AWS Workspaces 访问虚拟桌面。 这样我就得到了一个未打补丁的 MS Office 虚拟机,它允许我插入 DDEAUTO 字段。 我毫不怀疑,通过类似的方式,您可以找到尚未安装必要安全补丁的其他公司。

物体之谜

即使您确实安装了此补丁,MS Office 中还存在其他安全漏洞,允许黑客执行与我们对 Word 所做的非常相似的操作。 在下一个场景中我们将学习 使用 Excel 作为网络钓鱼攻击的诱饵,无需编写任何代码。

为了理解这种情况,让我们记住 Microsoft 组件对象模型,或者简称为 COM(组件对象模型).

COM 自 1990 世纪 XNUMX 年代以来就已出现,被定义为基于 RPC 远程过程调用的“语言中立、面向对象的组件模型”。 要大致了解 COM 术语,请阅读 这个帖子 在 StackOverflow 上。

基本上,您可以将 COM 应用程序视为 Excel 或 Word 可执行文件,或其他运行的二进制文件。

事实证明,COM应用程序也可以运行 脚本 — JavaScript 或 VBScript。 从技术上讲,它被称为 小脚本。 您可能已经在 Windows 中看到过文件的 .sct 扩展名 - 这是 scriptlet 的官方扩展名。 本质上,它们是封装在 XML 包装器中的脚本代码:

<?XML version="1.0"?>

<scriptlet>
<registration
description="test"
progid="test"
version="1.00"
classid="{BBBB4444-0000-0000-0000-0000FAADACDC}"
remotable="true">
</registration>
<script language="JScript">
<![CDATA[

var r = new ActiveXObject("WScript.Shell").Run("cmd /k powershell -c Write-Host You have been scripted!");

]]>
</script>
</scriptlet>

黑客和渗透测试人员发现 Windows 中有单独的实用程序和应用程序接受 COM 对象,因此也接受 scriptlet。

我可以将 scriptlet 传递给用 VBS 编写的 Windows 实用程序(称为 pubprn)。 它位于C:Windowssystem32Printing_Admin_Scripts的深处。 顺便说一下,还有其他 Windows 实用程序接受对象作为参数。 我们先看这个例子。

难以捉摸的恶意软件历险记,第四部分:DDE 和 Word 文档字段
很自然,甚至可以从打印脚本启动 shell。 去微软吧!

作为测试,我创建了一个简单的远程 scriptlet,它启动 shell 并打印一条有趣的消息:“您刚刚被编写了脚本!” 本质上,pubprn 实例化一个 scriptlet 对象,允许 VBScript 代码运行包装器。 这种方法为想要潜入并隐藏在您的系统中的黑客提供了明显的优势。

在下一篇文章中,我将解释黑客如何使用 Excel 电子表格来利用 COM 脚本。

给你的作业,看看 这个视频 来自 Derbycon 2016,它准确地解释了黑客如何使用 scriptlet。 并且还阅读了 本文 关于 scriptlet 和某种绰号。

来源: habr.com

添加评论