复联3的上映热度未散 就听说漫威要联合跑男啦 听到这个消息 小编我搓了搓手手,好期待~ 不久前,ESET的研究人员发现了一个有趣的恶意PDF样本。该样本利用了两个0 DAY漏洞: Adobe Reader中的远程代码执行漏洞 (CVE-2018-4990) Microsoft Win中的权限提升漏洞 (CVE-2018-8120) 这两个漏洞组合运用可以说非常强大了,它允许攻击者以最高权限对攻击目标执行任意代码,并且只需进行最少量的用户交互。听起来是不是像召唤神龙一样厉害?接下来,小编为你详细扒一扒这个恶意样本的技术细节及其利用。 背景PDF是一种用于电子文档的文件格式,攻击者可以利用它向受害者的计算机发送恶意软件。为了执行恶意代码,攻击者必须要查找并利用PDF阅读器中的漏洞。 Adobe Reader是大多数人常用的一个阅读器,它具备了沙箱的安全特点,在阅读器中也称为“保护模式”(关于沙箱实现的详细技术已在Adobe的博客页面上发布)。 沙箱使攻击过程变得更加困难,因为即使代码执行完成,攻击者依旧要绕过沙箱的保护,才能攻击运行Adobe Reader的计算机。通常情况下,沙箱绕过是通过利用操作系统本身的漏洞来实现的。 CVE-2018-4990-Adobe Reader中的远程代码执行漏洞此恶意PDF样本嵌入了控制整个攻击过程的JavaScript代码。一旦打开PDF文件,就会执行JavaScript代码。 随着攻击进行,JavaScript代码开始操纵Button1对象。此对象包含特制的JPEG2000映像,该映像触发Adobe Reader中的双重释放漏洞。 操纵Button1对象的JavaScript代码 JavaScript运用堆喷射技术来破坏内部数据结构。在经过所有操作之后,攻击者实现了他们的主要目标:从JavaScript代码中读取和写入内存。 用于读写内存的JavaScript代码 利用这两个函数,攻击者可定位EScript.api插件的内存地址,该插件也是Adobe JavaScript引擎。 运用来自该模块的汇编指令(ROP gadgets),恶意JavaScript会设置一个ROP链,该链将导致本地shellcode执行。 构建ROP链的恶意JavaScript 作为最后一步,shellcode初始化了嵌入在PDF中的PE文件,并将执行传递给它。 CVE-2018-8120-MicrosoftWin中的权限提升漏洞利用Adobe Reader漏洞后,攻击者必须破坏沙箱。这正是我们讨论第二次开发的目的。 先前未知漏洞的根本原因起源于win32k Win内核组件的NtUserSetImeInfoEx函数。 尤其是,NtUserSetImeInfoEx的SetImeInfoEx子例程不验证数据指针,允许空指针取消引用。 分解SetImeInfoEx例程 如图所示,SetImeInfoEx函数需要一个指向初始化的WINDOWSTATION对象的指针作为第一个参数。 如果攻击者创建一个新的窗口对象并将其分配给用户模式下的当前进程,那么spklList可以等于零。 因此,通过映射NULL页面并将指针设置为偏移量0x2C,攻击者可以利用此漏洞在内核空间中写入任意地址。 值得注意的是,自Win 8以来,不再允许用户进程映射NULL页面。 由于攻击者有任意的写入函数,他们可以运用不一样的技术,但在这种情况下,攻击者可以选择运用Ivanlef0u和Mateusz“j00ru”Jurczyk、Gynvael Coldwin描述的技术。 攻击者通过重写全局描述表(Global Descriptor Table,GDT)来设置一个Ring 0级别的调用。 为此,攻击者运用SGDT汇编指令获得原始GDT的地址,构建自己的表,然后运用上述漏洞重写原始表。 然后利用CALL FAR指令执行特权级别的调用。 反汇编的CALL FAR指令 一旦以内核模式执行代码,漏洞利用系统令牌替换当前进程的令牌。 结论及建议最初,在将PDF样本上传到恶意样本的公共储存库时,ESET研究人员发现了它。 该样本不包含最终有效载荷,这表明它可能是在其早期发展阶段被捕获的。 尽管如此,还是有人展示了在漏洞发现和利用编写方面的高水平技能。 Adobe和Microsoft的补丁程序和建议可在以下站点获得:
受影响的版本: 妥协指标(IoC) |