EnglishmansDentist漏洞分析
引言
我们继续分析ShadowBrokers在2017年4月发布的漏洞利用工具系列。在之前关于SMB漏洞EternalChampion和EternalSynergy的两篇博客之后,本次我们将分析一个不同的工具,重点关注针对Exchange Server 2003的漏洞利用程序EnglishmansDentist。
EnglishmansDentist通过底层操作系统Windows Server 2003(已停止支持)提供的共享库中的渲染漏洞,攻击Exchange 2003邮件服务器。该漏洞存在于Exchange 2003默认配置所使用的OLECNV32.DLL库中。
较新的操作系统(Windows Server 2008及以上)和Exchange Server版本(2007及以上)不受此漏洞影响,因此使用这些新平台的客户无需采取任何措施。
概述
该漏洞的根本原因是共享库OLECNV32.DLL中处理QuickDraw PICT图像格式的内存破坏错误。此图形库默认存在于Windows XP和Windows Server 2003上。Exchange Server 2003使用此图形库来渲染以电子邮件附件形式传递的PICT内容。
尽管底层漏洞存在于操作系统中,但攻击向量是通过Exchange的渲染例程触发的,该例程通过OLE调用并利用特制的电子邮件附件触发。
漏洞利用要求与传递机制
攻击者需要至少一个在目标Exchange 2003邮件服务器上的有效邮件账户(用户名和密码)。漏洞利用程序首先运行一系列验证和检查,确保有效账户可以成功登录和检查邮件。还需要一个次要的电子邮件账户(伪造或真实)作为源,向有效账户发送畸形的PICT附件。
恶意PICT附件传递到目标邮件服务器后,工具使用有效账户凭据登录,并强制Exchange Server使用可用协议(OWA、IMAP、POP3)解析和渲染恶意附件。由于渲染代码在服务器端执行,成功利用将导致在具有SYSTEM权限的Exchange Server进程上下文中执行任意代码。
利用成功后,EnglishmansDentist保持监听模式,等待shellcode回连。此时,工具指示Exchange服务器删除传递漏洞利用的恶意电子邮件,清除攻击的取证证据。
漏洞:CVE-2017-8487
漏洞存在于OLECNV32.DLL导出的例程QD2GDI()中。该函数负责转换和渲染QuickDraw图像,并由Exchange Server 2003的“store.exe”进程使用。当通过OWA自动解析附件时调用此例程,该解析器的攻击面可通过OLE32访问。
QD2GDI()的内部代码在解析LongComment记录(通常由操作码0xA1标识)时存在内存破坏错误。攻击者可以通过创建一个畸形的PICT文件来利用此漏洞,该文件包含一个PP_FONTNAME子记录,其中fontName字符串超过32字节,触发固定大小变量的越界覆盖。
漏洞利用:无缓解措施的轻松任务
在缺乏ASLR和CFG等基本缓解措施的Windows Server 2003环境中,利用越界覆盖漏洞非常简单。由于没有ASLR的内存随机化,攻击者可以使用预计算的ROP链调用VirtualAlloc,然后将shellcode传输到新分配的可执行缓冲区中运行。
漏洞利用首先使用畸形的0xA1记录触发内存破坏漏洞,并利用越界覆盖破坏托管其他对象的内部OLECNV32结构。具体来说,漏洞利用目标是全局fontTable[]数组中的字体条目,该条目稍后被复制到gdiEnv结构,并可用于覆盖函数指针并控制执行。
漏洞利用:针对英文、德文、韩文和中文操作系统的ROP链
漏洞利用使用基于DBGHELP.DLL库构建的ROP gadget,该库通常加载到Exchange Server store.exe进程的内存空间中。由于DBGHELP.DLL是一个依赖于语言的库(不同操作系统语言存在多个版本),因此在不同版本的Windows Server 2003上存在一定的差异。
攻击者通过预先计算他们感兴趣的目标操作系统的正确偏移量来解决这个问题。事实上,EnglishmansDentist中包含的配置XML文件包含了为英文Windows Server 2003开发的ROP gadget,还包括德文、韩文、简体中文和繁体中文的版本,披露了攻击者感兴趣的所有潜在目标平台。
检测与缓解措施
如前所述,Windows Server 2003缺乏过去十年Microsoft产品安全增强的基本缓解措施。由于ASLR、CFG和其他缓解措施,类似漏洞在现代操作系统(如Windows 10 Creators Update或Windows Server 2016)中远程利用的难度要大得多。
此外,完整性级别和容器(沙盒)的引入使得Microsoft能够限制某些图形渲染组件,以最小化像今天讨论的解析漏洞造成的损害(例如Office Protected View、浏览器的AppContainer、字体渲染的字体沙盒)。
最后,如今Microsoft编译器中的安全检查演进和广泛使用的模糊测试可以在源代码中发现并消除类似错误,从而在源头上减少整个错误类别。
我们提供了一个YARA签名,可用于检测EnglishmansDentist通过电子邮件传递的PICT图像,适用于仍在运行Windows Server 2003的客户。
最后的话
感谢Matt Miller(MSRC)、Ben Faull(Office Security)和Brent Alinger(Office 365)在分析此漏洞利用过程中提供的笔记和帮助。
Elia Florio, Windows Defender ATP研究团队