在对最近的网络钓鱼攻击进行分析时我们发现,攻击者开始使用 PowerPoint 自定义操作来代替宏触发恶意 Payload。虽然使用 PowerPoint 附件并不新鲜,但这种攻击还是很有趣的,因为他们可以绕过 Office 附件启用宏的控制器。
1. 攻击者创建一个新的 PowerPoint 文档并插入恶意脚本或可执行文件。插入的文件会被嵌入为一个 OLE 对象中。
2. 自定义操作设置为进行“上一张”操作并自动触发“活动内容”来执行嵌入的 OLE 对象。
3. 最后将文档保存为 PowerPoint 放映文件,这样当文件被打开时就会立刻进入放映视图。
当用户打开演示文档时,文档会进入放映视图并开始播放第一张幻灯片,这样就会触发自定义操作来执行嵌入的恶意 Payload。当执行嵌入内容时,用户会收到一个安全警告询问是否要打开/执行文件。
在我们发现的样本中,脚本被命名为 Powerpoint.vbe 来诱使用户执行恶意的 Payload。
在分析演示文档的内容后,我们很明显的发现攻击者采用了一系列的方法来隐藏脚本。首先,使用一幅看起来像是幻灯片头部的图片盖住嵌入式对象的图标,我们可以很容易的将这幅图像移开来开展进一步的检测。
默认情况下,被插入的对象会存储在文档的 ppt/embeddings
目录下并命名为 oleObject1.bin
,名字中的数字会随着嵌入对象数量的增加而增加。
使用工具 psparser.py 我们可以检查被嵌入文件的文档中对象的元数据并提取出恶意的 Payload。
这个样本中嵌入的脚本 (Powerpoint.vbe) 会从 hxxp://secureemail[.]bz/updater.exe
下载并执行文件 “updater.exe”( c098a36309881db55709a759df895803 )。
下面这个脚本来源于微软 TechNet 库中常用于解码经过编码的 VB 脚本: https://gallery.technet.microsoft.com/Encode-and-Decode-a-VB-a480d74c
攻击者希望利用自定义操作来作为 Payload 的载体需要确保以下两件事情:
1. 在幻灯片开始播放时操作就会被触发
2. 操作会执行被嵌入的 Payload
此外,攻击者常常也会混淆 Payload 的名称以诱使用户点击执行。而我们的防御者也可以结合这个特点来帮助识别恶意的演示文档。
为了能让演示文档打开后自动开始播放,攻击者需要将文档保存为 PowerPoint 播放文档( ppsx ),这样 [Content Types].xml 文件会被定义如下:
application/vnd.openxmlformats-officedocument.presentationml.<strong>slideshow</strong>
注: 攻击者可以通过重命名为传统的 .pps 扩展名来绕过包含这个内容类型,这样当文档被打开时会直接进入幻灯片播放视图,尽管文档并不是二进制文档类型。而在重命名为现代的 .ppsx 扩展名时会导致 PowerPoint 抛出一个错误。
攻击者还需要嵌入在被触发时可以被执行的内容,这往往是一个脚本或可执行文件。所有这些要插入的文件都会被 packager.dll 作为一个 OLE 对象嵌入到演示文档中。
默认情况下,被嵌入的对象会被包含在 graphicFrame 中并被幻灯片里 XML 标记的一个 oleObj 节点所引用。 注意:如果攻击者修改了输出,则 oleObj 标签还可以包含其他对象,即同时包含嵌入标识和被嵌入的对象。
这种情况下,被嵌入的内容为一个脚本或可执行程序,其 progId 为 Package 表示本地服务不会处理这个对象内容。
过去,攻击者常常会对在 传统的 Office 文档 (二进制复合文档)中插入的内容进行混淆,而现代的 Office 文档(OpenXML 文档)则是基于 XML 标记语言的,可以很容易的被研究者进行分析。相比之下,传统的格式是一个由若干 OLE 流组成的二进制文档,这在 MS-PPT 的 官方文档 中有具体说明
官方说明大约有650页,幸运的是我们不需要全部看完,只需要了解 OLE 对象是如何被引用及如何被存储的即可。
通过结合官方文档分析样本得出以下记录类型被用于引用或链接 OLE 对象。
样本存在 RT_ExternalOleEmbed 容器及原子类型 RT_ExternalOleEmbedAtom 和 RT_ExternalOleObjectAtom 表示样本内有被嵌入的内容或链接的 OLE 对象,这强烈表示样本可能存在问题,需要被进一步进行关于是否包含恶意内容的分析。
以下主要指标可以用于帮助识别可能的感染,防御者也可以使用 Yara 规则 来帮助识别恶意的文档。
对现有 PhishMe Triage 的客户我们使用如下规则进行检查恶意文档:
PM_PPT_With_OLEObject
PM_PowerPoint_Show_Embedded_OLE
PM_PowerPoint_Single_Slide_Presentation
这是另一中攻击者如何利用现有的应用特性绕过安全控制的例子。攻击者使用幻灯片动画和自定义操作代替宏来触发嵌入的 Payload。此外,不同于传统的使用宏,用户不需要进行操作允许执行脚本语言,取而代之是让用户确认他们想运行 Payload。这就为攻击者提供了更多的选择来伪造可执行文件或脚本的名字,以达到最终欺骗用户的目的。
*原文: phishme ,FB小编xiaix编译,转自须注明来自FreeBuf黑客与极客(FreeBuf.COM)