EMET 版本二在EMET版本一的基础上进行了改进。EMET支持六种缓解攻击的技巧,这些技巧涉及一些可以阻止常见攻击的方法,比如与堆栈溢出相关,且可被恶意程序用来破坏系统的攻击。EMET不能够从根本上移除或修补漏洞,但是它可以减少漏洞被利用的风险。更重要的是,EMET的设计初衷是提供一种模式化的平台,以便将来人们在这一平台上添加更多保障安全的方法。简而言之,我们可以这样来理解EMET:
增加Windows利用缓冲溢出的弹性;
可以让Windows用一些专用安全措施来强化未编辑过的应用;
一些EMET缓解办法适用于核心操作系统,而其他的方法则适用于应用。EMET对那些有漏洞的应用最有帮助。对于那些要求保障IE6或Adobe Reader安全的用户而言,微软的安全博客给出了相关说明,用户可以从中学习如何使用EMET帮助Adobe Acrobat和Adobe Reader免受零日漏洞攻击。
在深一步探讨EMET功能之前,我们要回顾一下堆栈溢出。虽然这是一个常用词汇,但是并不是每个人都理解什么是堆栈溢出。很大程度上,了解堆栈溢出对于了解EMET的功能十分重要。通常,堆栈溢出是一种逻辑错误,这种错误可以让攻击者干涉应用的执行堆栈,或者是向执行堆栈中注入恶意指令。为了能达到利用的目的,黑客必须:
1. 了解堆栈溢出漏洞。
2. 有能力制造溢出条件。
3. 成功获取由漏洞应用执行的恶意指令
有些堆栈溢出可以被触发,但却不能被用来运行攻击者的代码——这些通常都会导致攻击者对漏洞应用或者整个系统发起DoS攻击。以一个2008年的Adobe Reader漏洞CVE-2008-2992为例。
以下表格列出了截取自用户指导中的EMET方法以及简化的特性目的:
数据执行防御(DEP)很好地诠释了EMET 2 对系统的保护;它是Windows XP SP2 中的保护性功能,通过限制可执行内存代码的量来增加堆栈攻击和缓冲溢出攻击的难度。为了利用这一功能,你所使用的程序必须由供应商清楚地编译好。即便供应商没有为DEP编写程序,EMET也可以让你将DEP应用到任何可执行的数据上,因而它会让DEP的运行更有效率。DEP所保护的程序更加难以被攻击者利用,因而也更加安全。
如果你使用的是IE6浏览器,则要认真考虑DEP。微软的MS10-002建议就是主动利用可被DEP修补的关键漏洞的典范,即便我们不知道具体漏洞所在,DEP也可以提供保护。EMET不需要启用用于IE6的DEP,但是我们要明确地启用DEP。
Windows XP SP3,Vista SP1,Windows 7, Windows Server 2003 SP1和Server 2008支持EMET。可以参看EMET用户指南以便为操作系统选择合适的功能。要想使用EMET,先安装,然后启用你需要的功能。你还可以将EMET保护添加到每个应用上。
图一展示了Windows XP SP3系统上的操作系统级别的功能配置(仅支持DEP)。图二展示了用于Adobe Acrobat的应用指定型功能。再者,每个受保护的应用必须进行手动添加;不存在“保护所有项”的选项。在把所有功能部署到关键系统前,要对所有功能进行测试。
图一
图二
以任意规模手动添加应用时都可能出现不方便的情况,所以我们可以使用命令行指令向EMET添加应用。例如,假设你想将EMET部署到一些服务器上,并保护十个指定的可执行文件。你可以用安装脚本来定位每个可执行文件,然后用EMET_conf-add命令将位置发送给EMET。用户指南的第三部分对命令行配置选项进行了讨论。
最近,发布EMET的微软安全调查和防御小组针对微软漏洞分析以及对微软产品的攻击开设了一个博客,此博客中上传了许多有用的信息,建议Windows管理员读一读。