导语:MOTW 是 The Mark of the Web 的英文简称,MOTW 是 Windows Internet Explorer通过强制使IE浏览器浏览存储下来的网页在安全的位置的一种机制,目的是增强安全性。
MOTW 是 The Mark of the Web 的英文简称,MOTW 是 Windows Internet Explorer通过强制使IE浏览器浏览存储下来的网页在安全的位置的一种机制,目的是增强安全性。MOTW 是一个注释作为标签添加到HTML网页中的,当用户打开存储在本地的HTML文档时,IE浏览器通过读这个注释判断是否在安全区域。下面是一个有效地MOTW示例:
< !-- saved from url=(0023)http://www.sagerking.com/ -- >
其中,(0025)值是他后面的字符串长度,sagerking是Internet Web站点的名称,当浏览器打开此保存的html时,IE将查找“Save from URL”注释,并使用适合该URL的区域来确定对Web页应该应用哪种安全策略。
同 Microsoft Internet Explorer 6相比, MOTW 的功能 更加 强大。 当你在做网站开发的时候,MOTW可以使你在安全区域测试你的HTML文档,这个安全的区域是你自己指定的。比如网页中要调用flash脚本Action Script,如果没有在安全区域,那么这些脚本将会禁用,程序不能正常打开,这时你需要添加安全区域。
不过,对于渗透测试人员而言,MOTW可能是一个重大测试障碍,尤其是在尝试获得一个初始攻击立足点的时候。
当该文件被标记为从互联网下载时,你的有效载荷可能是可执行文件、MS Office文件或CHM文件的格式,这样这些文件可能就会受到Windows操作系统和安全产品的额外审查。在此文章中,我们将解释该机制的工作原理,并探索可帮助规避或绕过MOTW的攻击技术。
请注意,此文章中描述的技术不是新技术,这些技术已经在野外被攻击者被用烂了。因此,此文旨在提高大家对这些技术的认识。
过去,MOTW是通过在保存的网页的开头添加 < !-–saved from url=> 。
此机制后来被安全人员扩展到HTML以外的其他文件类型,这是通过为下载的文件创建备用数据流(ADS)来实现的。 ADS是一种NTFS文件系统功能,早在Windows 3.1中就已添加。此功能允许将多个数据流与文件名关联,格式为 “filename:streamname”。
下载文件时,Internet Explorer会创建一个名为Zone.Identifier的ADS,并向该流添加ZoneId,以指示文件源自哪个区域。尽管它不是官方名称,但许多人仍然将此功能称为Web标记。
使用PowerShell列出和查看备用数据流很简单:Get-Item和Get-Content cmdlet都带有一个“Stream”参数,如下面的屏幕截图所示:
在Zone.Identifier ADS中可以使用以下ZoneId值:
· 0.本地计算机
· 1.本地Intranet
· 2.可信站点
· 3.互联网
· 4.受限制的地点
如今,Windows平台上用于处理附件或下载文件的所有主要软件都会生成Zone.Identifier ADS,包括Internet Explorer,Edge,Outlook,Chrome,FireFox等。那这些程序是如何编写此ADS?通过直接创建ADS或通过系统的IAttachmentExecute接口实现。通过系统的IAttachmentExecute接口实现的行为可以通过附件管理器中的SaveZoneInformation属性进行控制。
请注意,Windows 10的IAttachmentExecute接口的实现也会将URL信息添加到Zone.Identifier ADS:
对于渗透测试人员来说,要意识到使用HTML走私技术时也会设置MOTW(请注意上面的屏幕截图中的“blob”关键字,这是潜在的HTML走私的指标)。
MOTW所起的安全作用
Windows、MS Office和各种其他程序使用来自区域标识符备用数据流的信息来触发下载文件上的安全功能,从渗透测试人员的角度来看,以下是最值得注意的(注意,此列表还远远不够完整,我只列举了其中一部分)。
Windows Defender SmartScreen
在Windows10操作系统下,安装一个程序时,Windows Defender SmartScreen 弹出一个警告窗口,警告内容是:Windows Defender SmartScreen 已阻止启动一个未识别的应用。运行此应用可能会导致你的电脑存在安全风险。
另外,此功能通过对照许多Windows用户众所周知并下载的文件白名单检查下载的可执行文件(基于区域标识符ADS)来起作用。如果该文件不在该列表中,则Windows Defender SmartScreen将显示以下警告:
MS Office protected view
受保护的视图沙箱试图保护MS Office用户免受来自Internet或其他危险区域的文件中的潜在风险的影响。默认情况下,带有MOTW标记的大多数MS Office文件类型都将在此沙箱中打开。许多用户都知道此功能是MS Office著名的带有“启用编辑”按钮的黄色栏。
几年前,MWR(现在的F-Secure labs)发表了一篇关于这个沙箱的技术文章。注意,有些MS Office文件类型不能在受保护的视图沙箱中加载,SYLK文件格式就是一个著名的例子。
何为SYLK文件格式?
SYLK文件格式是一种1980年代开发的文件格式,最新的MS Office版本仍支持该格式。事实证明,这种文件格式是创建武器化文档的很好选择,攻击者可以使用这些文件来建立初始立足点。通常,SYLK文件具有文件扩展名.slk。 SYLK是一种仅使用可显示的ANSI字符的文件格式,它的创建目的是在应用程序(例如电子表格和数据库)之间交换数据。
如今几乎不使用该文件格式,并且缺乏相关文档。维基百科关于SYLK的详细信息有限。可能最好的可用文档是文件sylksum.doc,该文件由Microsoft创建,最新更新于1986。
尽管是古老的文件格式,但默认情况下,文件扩展名.slk仍映射到最新MS Office版本(已在2010、2013和2016上确认)上的Excel。事实证明SYLK的功能超越了DDE攻击,特别是,恶意宏也可以嵌入此文件类型。
SYLK格式吸引攻击者的一个重要原因是:Protected View沙箱不适用于此文件格式。这意味着,如果武器化的SYLK文件是通过电子邮件或Web传播的,并且应用了“网络标记”标志,则目标用户不会受到此警告消息的困扰。
从Internet下载的MS Office块宏
此功能是在Office 2016中引入的,后来又移植到Office2013。如果启用此设置,则会禁用标记有MOTW的MS Office文件中的宏,并向用户显示一条警告消息。
用户肯定会注意到此警告消息,这使得它成为一个非常有效的措施来对付大规模的基于宏的恶意软件。
Visual Studio项目文件
打开不受信任的Visual Studio项目文件可能很危险,有关原因,请参阅研究人员在Nullcon Goa 2020上的一篇演讲。默认情况下,Visual Studio将为设置了MOTW属性的任何项目文件显示一条警告消息。
适用于Office的Windows Defender Application Guard
对于那些注重安全的Google Chrome和Mozilla Firefox用户,2019年微软发布了一个新的浏览器扩展程序——Windows Defender Application Guard。适用于两款热门浏览器的WDAG提供了和Microsoft Edge相同的硬件隔离技术,当用户访问不受信任的网站时候自动将用户重定向至隔离的Edge会话中。该扩展程序完成安装之后,用户可以通过点击浏览器上上的扩展图标来打开WindowsDefender Application Guard。在隔离的浏览器会话中,用户可以自由地导航到尚未明确定义为企业信任的任何站点,在该模式下的访问不会对系统的其余部分产生任何影响。配合我们即将推出的动态切换功能,如果用户尝试在隔离会话中访问受信任的企业网站,用户将会被切换回默认浏览器。
另外,Windows Defender Application Guard可以运行嵌入在小型虚拟机(基于Application Guard技术)中MS Office文件中的潜在恶意宏,以保护操作系统。
根据可用的有限文档,在VM中运行文档的决定基于MOTW。不幸的是,我还没有使用过这项技术,因此我无法通过测试确认其实际的有效性。
绕过MOTW的策略
从渗透者测试的角度来看,我们可以采用两种策略来绕过MOTW。目前,我们在野外观察到的所有技术都可以归为以下两类:
1. 滥用未设置MOTW的软件:以未设置或传播区域标识符信息的软件处理的文件格式传播有效载荷。
2. 滥用容器格式:以不支持NTFS备用数据流功能的容器格式传播有效载荷。
当然,还有第三种策略:就是对用户进行社会工程改造以删除MOTW属性(右键单击文件->属性->取消阻止)。但是,该话题超出了本文的范围,我在此就不赘述了。而对于安全团队来讲,从技术层面来说,你可以通过组策略设置HideZoneInfoOnProperties来阻止终端用户执行此操作。
现在,让我们深入来了解一下绕过MOTW的两种技术策略。
策略1:滥用未设置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功能吗?这意味着我们无法在其他文件系统(例如FAT32)上创建区域标识符ADS。而对于攻击者来说,他们可以通过将有效载荷嵌入到文件系统容器(例如ISO或VHD(X))中来利用此行为。
使用Windows资源管理器打开此类容器时,外部容器上的MOTW将不会传播到容器内的文件。下面的屏幕截图证实了这一点:已下载的ISO带有MOTW标记,但ISO内的有效载荷未标记。
请注意,通过ISO格式传送有效载荷是一种在野外常见的规避技术,例如,TA505就是一个著名的滥用这种技术的攻击者。
缓解措施
首先,一些常用的安全措施就可以起到很好的缓解作用,因为有很多攻击者不会使用本文中描述的技术。特别是,我非常支持阻止从互联网下载文件中的宏的措施,该措施可在MS Office 2013及其后续版本中使用。
其次,此文中描述的技术介绍了一个非常重要的安全预防措施:深度防御。不要在设计安全预防策略时,采取单一的预防措施的环境,在本示例中为MOTW。
如果攻击者试图绕过MOTW,你可以采取哪些其他措施。例如,如果对你的组织可行,请在邮件过滤器和代理中阻止容器格式。此外,限制可能绕过依赖MOTW的措施的任何恶意文件的影响,例如使用ASR规则。ASR是Attack surface reduction的简称,就是通过配置攻击面减少规则,可以保护计算机不被恶意软件、代码攻击。
本文翻译自:https://outflank.nl/blog/2020/03/30/mark-of-the-web-from-a-red-teams-perspective/如若转载,请注明原文地址: