最近卡巴斯基发布了对 Duqu 2.0 的分析,显然该恶意软件使用 True Type 字体文件来利用关键漏洞(CVE-2011-3402)“直接跳转到内核”。我无法找到有关此特定漏洞的许多详细信息,也无法找到有关如何将 TTF 用于阴险目的的信息。我天真地认为将字体指令转换为屏幕上字符的代码不需要内核访问,也不需要特别复杂,但这显然是不正确的。那么是什么让邪恶的字体文件能够运行任意代码呢?
字体如何用于权限提升?
字体很难。这是旧代码。它以内核模式运行。
FireEye, Inc. 的Julia Wolf做了一个分析:
- 此处的视频:Julia Wolf,29C3,2012-12-29,CVE-2011-3402 技术分析
PDF 此处:Julia Wolf,CanSecWest,2013-03-08,Windows 内核 TrueType 字体引擎漏洞
视频/幻灯片再次在这里。HackInParis,2013-06-20,Windows 内核漏洞分析:从间谍活动到犯罪使用,幻灯片:303 页 PDF,视频:YouTube 1 小时
要点似乎是这样的:
幻灯片 32:
- 使用图灵完备语言绘制轮廓以操纵图形状态
(而且这种语言似乎是在内核模式下解释的。)
幻灯片 78:
- 它是 CVT 数组的长度,存储在 True Type VM 的内部全局状态结构中。
- 结果,TrueType 引擎现在认为它包含 129 个元素,而不是原来的 1 个元素。
2016-06 更新:零项目的一般背景
Google Project Zero 整理了一篇关于一般字体漏洞的深入背景博文:(不过,没有提到上面
的具体内容。)CVE-2011-3402
- 谷歌零项目博客,2015-07-31,Mateusz Jurczyk,一个字体漏洞来统治它们#1:引入 BLEND 漏洞(存档在这里。)
- Google Project Zero博客,2016-06-27,Mateusz Jurczyk,Windows 内核字体模糊测试的一年 #1:结果(在此处存档。)
- Google Project Zero博客,2016-07-01,Mateusz Jurczyk,Windows 内核字体模糊测试的一年 #2:技术(在此处存档。)
- 有关更深入的背景细节:请参阅Mateusz 'j00ru' Jurczyk 的个人博客(在此处存档。)
2017 年 1 月更新:Windows 10 Aniversary Update 现在可以在 USER 模式下解析字体
TechNet 博客:2017 年 1 月 13 日,Matt Oh 和 Elia Florio,Windows Defender ATP 研究团队,通过零日漏洞利用缓解措施强化 Windows 10 (在此处存档。)
字体解析现在在 AC ["AppContainer"] 内的用户模式下完成
(包含该声明的图像似乎来自本演示文稿的幻灯片 34:BlackHat 2016,Windows 10 缓解改进。)
TrueType 字体和 OpenType 字体
TrueType 字体 (TTF) 和 OpenType 字体 (OTF) 是非常流行和广泛使用的字体系统。对于许多机器来说,TTF 是默认设置,而 OTF 正变得越来越流行,尤其是因为它可以用作开源格式。OTF 于 1996 年公开可用,而 TTF 早在那之前就已经在使用了。支持这两种字体系统的驱动程序中经常使用的遗留代码暴露了诸如堆溢出或越界错误之类的漏洞——这两种漏洞都是导致恶意特权执行的常见攻击向量。
通常,针对 TTF 和 OTF 漏洞的利用会针对支持在计算机上使用这些字体文件类型的驱动程序。
在 CVE-2015-2426(Microsoft 检测并阻止为Exploit:Win32/CVE-2015-2426)的情况下,该漏洞尝试针对 Windows Adobe 类型管理器库使用的 .dll 驱动程序文件 (atmfd.dll)在 Windows 中。该漏洞已通过 MS15-078 解决。当他们的数据因数据泄露而泄露时,趋势科技对 HackingTeam 漏洞利用中发现的这一漏洞进行了分析。NCC Group 还对 HackingTeam 漏洞进行了冗长的分析,该漏洞作为 ms15_078_atmfd_bof 进入了 metasploit 框架项目。
如果您能理解整个故事,请务必查看 j00ru 在 44CON 上关于逆向工程和利用字体光栅化器的演讲。
CVE-2013-3128(由 MS13-081 解决)是 Microsoft 程序解析 OTF 和 TTF 字体的方式中的一个漏洞。在这种情况下,攻击者会将恶意或格式错误的字体嵌入网页中,然后加载或定位漏洞并允许在计算机上安装恶意软件。有针对 CVE-2013-3128 的Nessus和OpenVAS插件,其中包括相关的 TTF 漏洞 CVE-2013-3894。可能这两个从未进入 metasploit-framework 漏洞利用模块的原因是因为相同的补丁汇总,MS13-081 和 MS13-082 包含另一个名为 ms13_081_track_popup_menu 的本地特权升级漏洞(质量与较新的 ms14_058_track_popup_menu 相似)。
如果您真的喜欢字体缩放器引擎漏洞,请务必查看F13 实验室的工作,包括他们的 Black Hat USA 2013 - Smashing The Font Scaler Engine in Windows Kernel视频和白皮书,以及来自 Black Hat USA 的 Dig Team 的工作2014 - 了解 Windows Kernel Font Scaler Engine视频和PDF 演示中的TOCTTOU 。
封装的 PostScript
Encapsulated PostScript (EPS) 文件用于显示打印预览并提供与打印相关的其他功能。像 TTF 一样,它们无处不在。
.eps 文件可以嵌入到其他文件中,例如 Word .docx 文件。.docx 文件被解压或解压,.eps 文件被添加并作为图像引用,.docx 文件被重新打包。
我们已经看到使用 CVE-2015-2545 的这种交付机制的三个版本,它影响了 Microsoft Office 中使用的 PosScript 过滤器:
- 第一个版本试图在CVE-2015-2545公开之前利用它,从而使其成为零日漏洞利用。它使用了一个在印度首次出现的名为 resume.docx 的文件。微软发布了 MS15-099(9 月发布)来修复该漏洞。
- 第二个版本试图绕过 MS15-099(9 月发布)并在日本被观察到。对 MS15-099(11 月发布)的更新缓解了这种情况。
- 第三个版本在韩国被发现,文件名未知,通过更新 MS15-099(11 月发布)也有所缓解。
以一种不同寻常的方式,从未创建过针对此漏洞的 metasploit-framework 漏洞利用模块,但可以在 CORE IMPACT 中找到一个作为Microsoft Office Malformed EPS File Vulnerability Exploit的模块——或者查看一些关于寄存器和堆栈跟踪的视图。
从技术上讲,渲染字体不需要访问内核空间内存空间,因此存在漏洞和补丁。
该补丁解决了渲染引擎需要在堆栈中访问和创建可写内存的问题。
虽然这可能发生在用户级内存或内核级内存寄存器中,但在写入堆栈之前缺乏边界检查,这使得代码可以从格式错误的 fon 文件中执行。
找到它被利用的“方式”的最佳选择是搜索 metasploits 模块。我相信有一个。