【技术分析】PuzzleMaker 使用 Chrome 零日漏洞利用链进行攻击

admin 2021年11月6日08:22:40评论141 views字数 4711阅读15分42秒阅读模式

点击上方蓝字“Ots安全”一起玩耍      -点击图文广告 = 打赏

【技术分析】PuzzleMaker 使用 Chrome 零日漏洞利用链进行攻击

作者:

科斯汀·赖乌   鲍里斯·拉林    阿列克谢·库拉耶夫


2021 年 4 月 14 日至 15 日,卡巴斯基技术检测到一波针对多家公司的高度针对性攻击。更仔细的分析表明,所有这些攻击都利用了一系列 Google Chrome 和 Microsoft Windows 零日漏洞。虽然我们无法在 Chrome 网络浏览器中检索用于远程代码执行 (RCE) 的漏洞,但我们能够找到并分析用于逃离沙箱并获取系统权限的特权提升 (EoP) 漏洞。


特权提升漏洞经过了微调,以针对 Windows 10 的最新和最突出的版本(17763 – RS5、18362 – 19H1、18363 – 19H2、19041 – 20H1、19042 – 20H2),并且它利用了两个不同的漏洞Microsoft Windows 操作系统内核。2021 年 4 月 20 日,我们向 Microsoft 报告了这些漏洞,他们将 CVE-2021-31955 分配给信息泄露漏洞,将 CVE-2021-31956 分配给提权漏洞。作为 6 月补丁星期二的一部分,这两个漏洞均于 2021 年 6 月 8 日修复。


远程代码执行漏洞利用

所有观察到的攻击都是通过 Chrome 浏览器进行的。不幸的是,我们无法检索到带有完整漏洞利用代码的 JavaScript,但攻击和事件发生的时间框架让我们怀疑存在一个特定漏洞。


Pwn2Own 比赛于 2021 年 4 月 6 日至 8 日举行。这是一场计算机黑客大赛,其中 Google Chrome 网络浏览器是目标之一。根据 ZDI(零日倡议,Pwn2Own 的组织者)网站,一个参与团队能够使用 Typer Mismatch 错误证明对 Chrome 渲染器进程的成功利用。


2021 年 4 月 12 日,Chromium 的开发人员向 V8 的开源存储库(Chrome 和 Chromium 网络浏览器使用的 JavaScript 引擎)提交了两个(问题1196683和1195777)与 Typer 相关的错误修复。这些错误修复之一(问题1196683)旨在修补 Pwn2Own 期间使用的漏洞,并且这两个错误修复与回归测试一起提交 - JavaScript 文件以触发这些漏洞。同一天晚些时候,Twitter 用户名@r4j0x00 的用户在 GitHub 上发布了一个有效的远程代码执行漏洞,目标是谷歌浏览器的最新版本。该漏洞利用问题1196683 中的漏洞在浏览器渲染器进程的上下文中执行 shellcode。

【技术分析】PuzzleMaker 使用 Chrome 零日漏洞利用链进行攻击

2021 年 4 月 12 日发布的 Chrome 零日推文截图

已发布的漏洞不包含沙箱逃逸漏洞,因此仅在浏览器使用命令行选项–no-sandbox启动时才起作用。


2021 年 4 月 13 日,谷歌发布了适用于 Windows、Mac 和 Linux 的 Chrome 更新 89.0.4389.128,修复了两个漏洞;CVE-2021-21220(在 Pwn2Own 期间使用)就是其中之一。


我们的一些客户在 2021 年 4 月 14 日至 15 日遭到攻击,他们的 Chrome 浏览器已经更新到 89.0.4389.128,这就是为什么我们认为攻击者没有在攻击中使用 CVE-2021-21220。


2021 年 4 月 14 日,谷歌发布了适用于 Windows、Mac 和 Linux 的 Chrome 更新 90.0.4430.72,修复了 37 个漏洞。同一天,向公众展示了一个新的 Chrome 漏洞。

【技术分析】PuzzleMaker 使用 Chrome 零日漏洞利用链进行攻击

2021 年 4 月 14 日发布的带有 Chrome 零日漏洞的 GitHub 存储库屏幕截图


这个新发布的漏洞利用了问题1195777 中的漏洞,适用于新发布的 Chrome 90.0.4430.72,并在几天后,即 2021 年 4 月 20 日修复为 CVE-2021-21224。


我们怀疑攻击者还能够使用此 JavaScript 文件进行回归测试来开发漏洞(或从其他人那里获取),并且可能在攻击中使用了 CVE-2021-21224。


提权漏洞利用

CVE-2021-31955 是 ntoskrnl.exe 中的信息泄露漏洞。该漏洞与名为 SuperFetch 的 Windows 操作系统功能有关。它是在 Windows Vista 中引入的,旨在通过将常用应用程序预加载到内存中来减少软件加载时间。为了 SuperFetch 的目的,函数NtQuerySystemInformation实现了一个特殊的系统信息类SystemSuperfetchInformation。这个系统信息类包含十多个不同的 SuperFetch 信息类。该漏洞在于SuperFetch信息类SuperfetchPrivSourceQuery的NtQuerySystemInformation函数返回的数据 包含当前执行进程的 EPROCESS 内核地址。


值得注意的是,这个漏洞可以在GitHub 上可用几年的代码中观察到,然后我们才发现它并被微软修补。

【技术分析】PuzzleMaker 使用 Chrome 零日漏洞利用链进行攻击

在 MemInfo 实用程序的源代码中可以观察到 CVE-2021-31955


另一个漏洞 CVE-2021-31956 是 ntfs.sys 中基于堆的缓冲区溢出。函数NtfsQueryEaUserEaList处理文件的扩展属性列表,并将检索到的值存储到缓冲区。此函数可通过ntoskrnl系统调用访问,并且可以控制输出缓冲区的大小。如果扩展属性的大小未对齐,则该函数将计算填充并且下一个扩展属性将被存储为 32 位对齐。该代码检查输出缓冲区是否足够长以适合带有填充的扩展属性,但它不检查可能的整数下溢。因此,可能会发生基于堆的缓冲区溢出。

for ( cur_ea_list_entry = ea_list; ; cur_ea_list_entry = next_ea_list_entry ){  ...   out_buf_pos = (DWORD *)(out_buf + padding + occupied_length);   if ( NtfsLocateEaByName(eas_blocks_for_file, eas_blocks_size, &name, &ea_block_pos) )  {  ea_block = eas_blocks_for_file + ea_block_pos;  ea_block_size = ea_block->DataLength + ea_block->NameLength + 9;  if ( ea_block_size <= out_buf_length - padding ) // integer-underflow is possible  {    memmove(out_buf_pos, (const void *)ea_block, ea_block_size); // heap buffer overflow    *out_buf_pos = 0;  }  }  else  {  ...  }   ...   occupied_length += ea_block_size + padding;  out_buf_length -= ea_block_size + padding;  padding = ((ea_block_size + 3) & 0xFFFFFFFC) - ea_block_size;   ...}

函数 NtfsQueryEaUserEaList 中易受攻击代码的伪代码

该漏洞利用 CVE-2021-31956 和 Windows 通知工具 (WNF) 来创建任意内存读写原语。我们计划在未来发布有关此技术的更多信息。


由于该漏洞利用CVE-2021-31955获取EPROCESS结构的内核地址,因此可以利用常见的后期利用技术窃取SYSTEM令牌。但是,该漏洞利用很少使用的“PreviousMode”技术代替。我们已经看到了 CHAINSHOT 框架使用的这种技术,甚至在 2019 年的 CanSecWest/BlueHat 上对其进行了介绍。该漏洞利用这种技术将恶意软件模块注入系统进程并执行。


恶意软件模块

除了上述漏洞利用之外,完整的攻击链还包括四个额外的恶意软件模块,它们将被称为:

  • Stager

  • Dropper

  • Service

  • Remote shell


stager 模块用于通知漏洞利用成功。它还从远程服务器下载并执行更复杂的恶意软件投放器模块。每个 stager 模块都通过一个个性化的配置 blob 交付给受害者,该 blob 定义了 C&C URL、会话 ID、解密下一阶段恶意软件的密钥以及其他信息。


到目前为止,我们发现的所有 stager 模块样本都配置为使用相同的 URL 地址——hxxps://p{removed}/metrika_upload/index.php——来下载加密的恶意软件 dropper 模块。


我们认为远程代码执行 JavaScript 漏洞也有可能托管在同一个看似合法的地缘政治新闻门户上,但我们没有发现经典水坑攻击的证据。受害者论表明,漏洞利用具有高度针对性。


dropper 模块用于安装两个可执行文件,它们伪装成属于 Microsoft Windows 操作系统的合法文件。其中一个文件 (%SYSTEM%WmiPrvMon.exe) 注册为服务并用作第二个可执行文件的启动程序。第二个可执行文件 (%SYSTEM%wmimon.dll) 具有远程 shell 的功能,可以被视为攻击的主要负载。我们找不到此恶意软件与其他已知恶意软件之间的任何相似之处。


远程 shell 模块在内部 (media-seoengine[.]com) 有一个硬编码的 C&C 服务器 URL。C&C 服务器和客户端之间的所有通信都是经过授权和加密的。远程 shell 模块能够下载和上传文件、创建进程、休眠指定时间以及从受感染的机器中删除自身。


我们分析的所有工件似乎都与任何已知的威胁行为者没有密切的联系。我们观察到的与 CHAINSHOT 的唯一相似之处是“PreviousMode”技术,尽管这是众所周知的并且可能被各种团体使用。我们将这些攻击背后的威胁参与者称为 PuzzleMaker。


卡巴斯基产品检测到此漏洞利用和恶意软件模块,结果如下:

  • PDM:Exploit.Win32.Generic

  • PDM:Trojan.Win32.Generic

  • UDS:DangerousObject.Multi.Generic


卡巴斯基产品在行为检测引擎和漏洞利用防护组件的帮助下检测到这些攻击。在过去几年中,我们在我们的产品中构建了多种漏洞利用保护技术,这些技术已经检测到许多零日漏洞,并反复证明了它们的有效性。我们将通过增强技术并与第三方供应商合作修补漏洞,继续为我们的用户改进防御,使每个人的互联网都更加安全。


卡巴斯基情报报告服务的客户可以获得有关这些攻击及其背后参与者的更多信息。联系方式:[email protected]


卡巴斯基感谢 Microsoft 对报告和补丁的及时分析。


国际奥委会

media-seoengine[.]com


%SYSTEM%WmiPrvMon.exe

MD5 09A5055DB44FC1C9E3ADD608EFFF038C

SHA-1 BFFA4462901B74DBFBFFAA3A3DB27DAA61211412

SHA-256 982F7C4700C75B818333D29040B81833D2905C5C50C80F3B70F3B70F3B7BFBFFAA3A3


%SYSTEM%wmimon.dll

MD5 D6B850C950379D5EE0F254F7164833E8

SHA-1 E63ED3B56A5F9A1EA5C92D3D2444196EA13BE94B

SHA-256 8A17279BA26C6F3EAFBE6E6F7F3FCB6E6F7F3FCB6F7F8F8FCABD1F7F8F9060FCABD1F7F900F

【技术分析】PuzzleMaker 使用 Chrome 零日漏洞利用链进行攻击

本文始发于微信公众号(Ots安全):【技术分析】PuzzleMaker 使用 Chrome 零日漏洞利用链进行攻击

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2021年11月6日08:22:40
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   【技术分析】PuzzleMaker 使用 Chrome 零日漏洞利用链进行攻击http://cn-sec.com/archives/403450.html

发表评论

匿名网友 填写信息