EMET 3.5技术预览版利用BlueHat Prize的安全缓解技术
去年在Black Hat Las Vegas大会上,我们宣布了BlueHat Prize竞赛——一项为防御性安全研究设立的高额奖金竞赛。一个月前,我们公布了三位决赛选手的名单。在周四晚上10点后不久,在微软研究员答谢派对上,我们将揭晓哪位决赛选手赢得了哪个奖项——20万美元的大奖、5万美元的二等奖和价值1万美元的MSDN订阅三等奖。我们很兴奋能在同一时间向决赛选手和全世界现场公布这一消息。
话虽如此,这些获奖提交都展示了创造性的方法,有助于增加利用内存安全漏洞执行任意代码的难度。我们希望立即将这些新颖的想法付诸实践,以帮助保护客户。为此,今天我们宣布新版本的EMET集成了竞赛决赛选手的几个想法,并可供立即下载:EMET 3.5技术预览版。
在这篇博客文章中,我们将看看EMET 3.5技术预览版中实现的新更新和缓解措施。请注意,这是一个“技术预览”版本,旨在评估几种缓解想法在真实场景中的应用兼容性风险。EMET 3.0已准备好广泛的企业采用。EMET 3.5技术预览版可帮助我们实地测试这些新想法。
在这个版本中,我们实现了从BlueHat Prize提交中选出的四种ROP缓解措施。
新的ROP缓解措施
我们在这个技术预览版本中实现了四种新的ROP缓解措施。我们在BlueHat提交中收到的一些缓解措施并非原创(请参见以下部分),但可以提供针对许多当前漏洞利用的保护。“执行流模拟缓解”(如下所述)是该提交中的主要新颖贡献。
先前关于ROP缓解的工作
我们实现的一些缓解措施已经被安全社区解决。例如,Piotr Bania写了一篇关于ROP缓解的好论文,可以在这里找到:http://kryptoslogic.com/download/ROP_Whitepaper.pdf
缓解措施描述
ROP缓解措施依赖于这样一个事实:在某个时刻,ROP链需要在将执行转移到shellcode之前调用某些关键函数(VirtualAlloc、VirtualProtect、HeapCreate、LoadLibrary等)。EMET将过滤对这些关键函数的所有调用,并执行以下检查:
调用者检查缓解
EMET将确保当达到关键函数时,它是通过“call”指令而不是“ret”指令达到的。这是一个非常有用的缓解措施,可以破坏许多ROP小工具。这种缓解措施可能与某些程序不兼容,因此请谨慎使用。
执行流模拟缓解
这种缓解措施试图检测调用关键函数后的ROP小工具。它通过模拟关键函数调用者返回地址处的指定数量指令来工作。要模拟的指令数量可以通过编辑所需应用程序的注册表键并创建“SimExecFlowCount”DWORD值来手动配置:
默认情况下,模拟15条指令。与“调用者检查”一样,这种缓解措施可能不与所有程序兼容。
堆栈转移缓解
这种缓解措施非常有用,用于检测堆栈是否已被转移。它与大多数程序兼容,因此可以安全地默认启用。
特殊函数检查
特殊函数检查缓解分为:
- 加载库检查
- 内存保护检查
前者验证对加载库的调用,看它是否来自ROP小工具或shellcode,而后者旨在防止任何尝试更改给定线程堆栈区域保护的行为。
用户界面的变化
由于EMET中的缓解措施总数增加,不再适合一个屏幕,我们决定将缓解措施分组到选项卡中。以下截图显示了新的ROP缓解措施:
我们还添加了通知托盘图标中的上下文菜单项,允许您轻松启动EMET图形界面:
启用ROP缓解措施
ROP缓解措施默认禁用,您必须显式启用它们。可以从“应用程序配置”对话框中导入预配置的应用程序集:
选择文件/导入,然后导航到“[EMET_Install_Folder]\Deployment\Protection Profiles”并选择“All.xml”。要为所有应用程序启用某些ROP缓解措施,只需编辑“DefaultConfig/Mitigations”节点并将所需的ROP缓解措施设置为“true”:
当检测到ROP尝试时,EMET将显示工具提示并创建事件日志条目:
此外,在这个技术预览版本中,EMET将显示一个消息框,其中包含有关检测到的ROP尝试的更多详细信息,并为您提供继续(忽略ROP检查)或终止进程的选择。我们向用户呈现此对话框,以便如果检测到误报,EMET不会立即终止您的应用程序。确认对话框如下所示:
ROP缓解措施在行动中
我们针对一堆公共ROP漏洞利用测试了EMT 3.5。以下截图显示了EMET 3.5 TP如何缓解Metasploit的ms12_037_same_id:
这里我们看到EMET如何阻止CVE-2010-0188(LibTIFF):
关于应用程序兼容性的说明
安全缓解措施带有应用程序兼容性风险。一些应用程序依赖于缓解措施阻止的确切行为。因此,缓解措施通常默认关闭,并在启用前需要开发者的选择加入。虽然EMET允许用户覆盖此设置,但重要的是要意识到风险。EMET适用于技术精通的用户,如IT专业人员和安全研究人员,他们可以解决这些缓解措施可能引入的问题。我们还建议在部署到任何生产系统之前,使用这些缓解措施测试您的应用程序和使用场景。
已知限制
反馈
EMET 3.5 TP需要先卸载以前版本的EMET。先前配置的应用程序和规则将保留,并在安装EMET 3.5 TP后再次工作。
我们鼓励您下载并试用此版本。欢迎任何反馈或评论;您可以通过switech@microsoft.com联系我们。
致谢
我要感谢MSRC工程和科学团队,特别是:Chengyun Chu, Suha Can, Elia Florio。
Elias Bachaalany, MSRC Engineering