20.03.30-OutFlank - 从红队的角度看网络标记
区域标识符备用数据流信息,通常称为 Web 标记(缩写为 MOTW),对于红队人员和渗透测试人员来说可能是一个重大障碍,尤其是在试图获得初始立足点时。
当文件被标记为从 Internet 下载时,可执行文件、MS Office 文件或 CHM 文件格式的有效负载可能会受到 Windows 操作系统和安全产品的额外审查。在这篇博文中,我们将解释这种机制是如何工作的,我们将探索可以帮助逃避或摆脱 MOTW 的攻击性技术。
请注意,这篇博文中描述的技术并不新鲜。我们目睹了他们所有人在野外被虐待。因此,这篇博文旨在提高红队队员(用于更真实的对手模拟)和蓝队队员(以便更好地应对和理解攻击者技术)对这些技术的认识。
MOTW简介
Web 标记 (MOTW) 是 Internet Explorer 最初引入的一项安全功能,用于强制保存的网页在保存页面的位置的安全区域中运行。过去,这是通过在<!-–saved from url=>已保存网页的开头添加 HTML 注释来实现的。
这种机制后来扩展到 HTML 以外的其他文件类型。这是通过为下载的文件创建备用数据流 (ADS) 来实现的。ADS 是早在 Windows 3.1 中添加的 NTFS 文件系统功能。此功能允许使用“文件名:流名”格式将多个数据流与文件名相关联。
下载文件时,Internet Explorer 会创建一个名为的 ADSZone.Identifier并将 ZoneId 添加到此流中,以指示文件来自哪个区域。尽管它不是官方名称,但许多人仍然将此功能称为 Web 标记。
使用 PowerShell 列出和查看备用数据流非常简单:theGet-Item和Get-Contentcmdlet 都采用“Stream”参数,如以下屏幕截图所示:
在 Zone.Identifier ADS 中可以使用以下 ZoneId 值:
- 0.本地电脑
- 1.本地内网
- 可信站点
- 互联网
- 受限站点
现在Windows平台上所有处理附件或下载文件的主要软件都会生成一个Zone.Identifier ADS,包括Internet Explorer、Edge、Outlook、Chrome、FireFox等。这些程序是如何编写这个ADS的?通过直接创建 ADS 或通过系统的IAttachmentExecute接口实现。后者的行为可以通过Attachment Manager中的 SaveZoneInformation 属性进行控制。
请注意,Windows 10 的 IAttachmentExecute 接口实现还将 URL 信息添加到 Zone.Identifier ADS:
对于红队队员来说,最好意识到在使用HTML 走私技术时也会设置 MOTW (请注意上面屏幕截图中的“blob”关键字,这是潜在 HTML 走私的指标)。
MOTW 在安全措施中的作用
Windows、MS Office 和各种其他程序使用区域标识符备用数据流中的信息来触发下载文件的安全功能。从红队队员的角度来看,以下是最值得注意的(但还有更多——这个列表还远未完成)。
Windows Defender SmartScreen
此功能通过检查下载的可执行文件(基于区域标识符 ADS)与许多 Windows 用户众所周知和下载的文件的白名单来工作。如果文件不在该列表中,Windows Defender SmartScreen 会显示以下警告:
MS Office 受保护的视图
受保护的视图沙箱试图保护 MS Office 用户免受来自 Internet 或其他危险区域的文件中的潜在风险。默认情况下,大多数带有 MOTW 标记的 MS Office 文件类型都将在此沙箱中打开。许多用户将此功能称为 MS Office 著名的带有“启用编辑”按钮的黄色条。
几年前,MWR(现为 F-Secure 实验室)就该沙盒发表了一篇很棒的技术文章。请注意,某些 MS Office 文件类型无法在受保护的视图沙箱中加载。SYLK就是一个著名的例子。
从 Internet 下载的 MS Office 块宏
此功能是在 Office 2016 中引入的,后来又向后移植到 Office 2013。如果启用此设置,则会禁用带有 MOTW 标记的 MS Office 文件中的宏,并向用户显示一条消息。
最终用户不能忽略此警告消息,这使其成为针对大规模基于宏的恶意软件的非常有效的措施。
Visual Studio 项目文件
打开不受信任的 Visual Studio 项目文件可能很危险(原因请参阅我在 Nullcon Goa 2020上的演示文稿)。默认情况下,Visual Studio 将为任何设置了 MOTW 属性的项目文件显示一条警告消息。
Office 应用程序保护
这项新发布的功能在小型虚拟机(基于应用程序防护技术)中运行嵌入在 MS Office 文件中的潜在恶意宏,以保护操作系统。
从可用的有限文档来看,在 VM 中运行文档的决定基于 MOTW。不幸的是,我还没有接触到这项技术,所以我无法通过测试来证实这一说法。
摆脱 MOTW 的策略
从红队的角度来看,我们可以采用两种策略来规避 MOTW。我们在野外目睹的所有技术都可以归类为以下两种策略:
- 滥用未设置 MOTW 的软件– 以文件格式提供您的有效负载,该文件格式由未设置或传播区域标识符信息的软件处理。
- 滥用容器格式——以不支持 NTFS 的备用数据流功能的容器格式交付您的有效负载。
当然还有第三种策略:社会工程用户移除 MOTW 属性(右键单击文件 -> 属性 -> 取消阻止)。但由于这是一篇技术博客文章,因此此策略超出了本文的范围。对于蓝队:您可以通过组策略设置HideZoneInfoOnProperties从技术上阻止您的最终用户这样做。
让我们更深入地探讨一下摆脱 MOTW 的两种技术策略……
策略一:滥用没有设置MOTW的软件
第一个策略是通过不设置(或传播)MOTW 属性的软件来传递您的有效负载。
Git 客户端就是一个很好的例子。下图显示使用 Git 客户端从 GitHub 克隆的文件没有 Zone.Identifier ADS。
对于针对开发人员的红队来说,通过 Git 交付您的有效负载可能是规避 MOTW 的好选择。这与针对 Visual Studio 的有效负载特别相关,但这是未来博客文章的材料。
另一个没有设置 Zone.Identifier ADS 的著名软件示例是 7Zip。此归档客户端仅在从 GUI 双击文件时设置 MOTW 标志,这意味着文件被提取到临时目录并从那里打开。但是,在手动将文件提取到其他位置(即单击提取按钮而不是双击)时,7Zip 不会为提取的文件传播 Zone.Identifier ADS。请注意,无论归档文件格式如何,这都有效:7zip 处理的任何扩展名(7z、zip、rar 等)都将展示这种行为。
这似乎是 7Zip 首席开发人员有意识的设计决定,从以下关于 SourceForge 的讨论摘录中可以看出。更多信息可以在这里找到:
附带说明一下,无论如何,我都不建议使用 7Zip 来提取具有潜在危险的文件,因为它是一种以做出“奇怪”安全决策(例如缺少 ASLR ……)而闻名的产品。
策略 2:滥用容器格式
还记得备用数据流是 NTFS 功能吗?这意味着区域标识符 ADS 不能在其他文件系统上创建,例如 FAT32。从红队的角度来看,我们可以通过将有效负载嵌入文件系统容器(例如 ISO 或 VHD(X))来利用此行为。
使用 Windows 资源管理器打开此类容器时,外部容器上的 MOTW 不会传播到容器内的文件。这在下面的屏幕截图中得到了演示:下载的 ISO 带有 MOTW 标记,但 ISO 中的有效负载没有。
请注意,通过 ISO 格式传递有效载荷是一种常见的规避技术。例如,TA505是已知滥用此技术的著名演员。
给蓝队的消息
那么,当您试图保护您的网络时,这一切意味着什么?
首先,可以规避安全措施这一事实并不会使这种措施无用。会有很多攻击者不使用本博文中描述的技术。特别是,我非常喜欢在从 Internet 下载的文件中阻止宏的措施,该措施在 MS Office 2013 和后续版本中可用。
其次,这篇博文中描述的技术承认了一个非常重要的安全范式: 深度防御。不要设计一个您的安全性依赖于单一预防措施的环境(在此示例中为 MOTW)。
开始考虑在攻击者试图逃避 MOTW 的情况下您可以采取哪些其他措施。例如,如果对您的组织可行,请在您的邮件过滤器和代理中阻止容器格式。此外,限制任何可能绕过依赖 MOTW 的措施的恶意文件的影响,例如使用攻击面减少规则。
我想你明白了:不要做椰子安全——一个单一的硬层,但当它破裂时都是柔软的。