新的Shrootless漏洞可让攻击者在macOS系统上安装Rootkit

新的Shrootless漏洞可让攻击者在macOS系统上安装Rootkit

Microsoft 发现了一个漏洞,攻击者可以利用该漏洞绕过macOS 中的系统完整性保护(SIP) 并在设备上执行任意操作。我们还发现了一种类似的技术,它可以让攻击者提升他们的权限以对受影响的设备进行 root。我们通过Microsoft 安全漏洞研究(MSVR) 的协调漏洞披露(CVD)与 Apple 分享了这些发现。Apple 于 2021 年 10 月 26 日发布的安全更新中包含针对此漏洞的修复程序,现标识为CVE-2021-30892

新的Shrootless漏洞可让攻击者在macOS系统上安装Rootkit

SIP 是 macOS 中的一项安全技术,可限制 root 用户执行可能危及系统完整性的操作。我们在评估有权绕过 SIP 保护的进程时发现了该漏洞。我们发现该漏洞在于 Apple 签名的带有安装后脚本的软件包的安装方式。恶意行为者可以创建一个特制的文件来劫持安装过程。在绕过 SIP 的限制后,攻击者可以安装恶意内核驱动程序 (rootkit)、覆盖系统文件或安装持久的、无法检测的恶意软件等。

这个操作系统级漏洞和其他不可避免地会被发现的漏洞增加了攻击者可以利用的越来越多的可能攻击媒介。随着网络变得越来越异构,试图危害非 Windows 设备的威胁数量也在增加。Mac 上的 Microsoft Defender for Endpoint使组织能够在 macOS 设备上获得可见性并检测威胁。这种可见性汇总到Microsoft Defender for Endpoint,它为组织提供了一个“单一管理平台”,他们可以在其中检测、管理、响应和修复不同平台上的漏洞和威胁。

在这篇博文中,我们将分享一些有关 SIP 的信息,检查之前披露的常见 SIP 绕过类型,并展示我们发现的独特类型。

SIP 概述

Apple 首次在 macOS Yosemite 中引入,SIP(也称为“无根”)本质上是通过利用 Apple 沙箱保护整个平台来从root锁定系统。在内部,它由以下 NVRAM 变量控制:

  • csr-active-config:启用保护的位掩码
  • csr-data:存储网络引导配置

这些变量不能在非恢复模式下合法修改。因此,禁用 SIP 的唯一合法方法是启动到恢复模式并关闭 SIP。打开或关闭 SIP 是使用内置的csrutil工具完成的,该工具还可以显示 SIP 状态:

新的Shrootless漏洞可让攻击者在macOS系统上安装Rootkit
图 1:显示 SIP 状态的 csrutil。
请注意,无法从非恢复操作系统禁用 SIP。

csr-active-config位掩码NVRAM变量描述了不同的保护SIP优惠。虽然不是一个详尽的清单,但以下是一些值得称赞的地方;其余的可以在XNU 源代码中自由检查:

csr-active-config NVRAM 位描述
CSR_ALLOW_UNTRUSTED_KEXTS控制不受信任的内核扩展的加载
CSR_ALLOW_UNRESTRICTED_FS控制对受限文件系统位置的写访问
CSR_ALLOW_TASK_FOR_PID控制是否允许获取 Apple 进程的任务端口(即调用task_for_pid API)
CSR_ALLOW_UNRESTRICTED_NVRAM控制不受限制的 NVRAM 访问
CSR_ALLOW_KERNEL_DEBUGGER控制是否允许内核调试

破坏任何这些保护措施都可能使攻击者完全绕过 SIP。一些场景包括:

  • 加载不受信任的内核扩展可能会危及内核并允许所述扩展在没有任何检查的情况下执行操作
  • 绕过文件系统检查可以允许内核扩展完全对自己强制执行 SIP
  • 自由修改NVRAM可以控制SIP本身

文件系统限制

多年来,Apple 通过改进限制来加强 SIP 抵御攻击。最显着的 SIP 限制之一是文件系统限制。这对于红队成员和恶意行为者尤其重要,因为人们对设备关键组件造成的破坏程度直接取决于他们将不受限制的数据写入磁盘的能力。

文件/System/Library/Sandbox/rootless.conf通常控制哪些文件受 SIP 保护。虽然上述文件本身也受 SIP 保护,但可以使用带有-O标志的ls来运行它,以列出哪些文件受到类似保护。受 SIP 保护的文件具有“受限”标记。

新的Shrootless漏洞可让攻击者在macOS系统上安装Rootkit
图 2:使用 -O 选项列出 /usr。
/usr/local 不受 SIP 保护,但 /usr/sbin 受保护。

具有扩展属性com.apple.rootless 的文件同样受 SIP 保护。当然,没有办法合法地将该扩展属性添加到文件中。否则,恶意软件可能会使用 SIP 进行自身保护。文件系统限制是限制攻击者的好方法。例如,许多/System目录及其子目录受 SIP 保护。

新的Shrootless漏洞可让攻击者在macOS系统上安装Rootkit
图 3:SIP 阻止了经常用于持久性的恶意 LaunchDaemon 注册。

无根的权利

由于文件系统限制如此强大,Apple 必须考虑一些特殊情况。例如,系统更新需要不受限制地访问受 SIP 保护的目录。因此,Apple 引入了一组特殊的权利,可以通过设计绕过 SIP 检查。这些权利针对特定的 SIP 检查进行了微调,只有 Apple 可以分配它们。很自然地,Apple 只将这些权利分配给其流程。

在我们的研究中,我们专注于两个强大的权利,它们也是漏洞猎人的目标:

特权描述
com.apple.rootless.install完全绕过 SIP 文件系统检查
com.apple.rootless.install.inheritablecom.apple.rootless.install继承到子进程
新的Shrootless漏洞可让攻击者在macOS系统上安装Rootkit
图 4:名为“com.apple.rootless.install”的进程示例

显着的 SIP 绕过快速概述

在我们发现之前,过去已经报告了几个有趣的 SIP 绕过漏洞。在本节中,我们将这些漏洞分为几类,并为每个类提供一个示例。请注意,这不是一个完整的列表;例如,我们排除了涉及内核本身的漏洞,因为 SIP 只保护用户空间。

滥用动态库

以前,授权进程仍然可以加载任意动态库。2016提出了一个这样的示例,其中应用程序本地的libBaseIA.dylib被授权二进制文件使用,并且可能被恶意代码感染。此时,可以在恶意 dylib 中完全实现 SIP 绕过。

安装

在 OSX 10.11.2 的安全更新中,Apple 修复了同样被 MacDefender 恶意软件滥用的安全漏洞。上述漏洞可能允许恶意 .dmg 文件(使用 hdiutil)挂载到受 SIP 保护的文件夹,从而完全绕过 SIP 文件系统限制。

滥用权利

授权进程也是安全绕过的来源。一个值得注意的例子是使用名为fsck_cs实用程序的绕过。绕过利用fsck_cs将遵循符号链接并尝试修复呈现给它的文件系统的事实。

因此,攻击者可以创建一个符号链接指向来自的/ dev / diskX/System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist并调用前fsck_cs。由于Info.plist文件损坏,操作系统无法再控制内核扩展排除,因此绕过 SIP。

“Shrootless”漏洞

在评估有权绕过 SIP 保护的 macOS 进程时,我们遇到了守护进程system_installd,它具有强大的com.apple.rootless.install.inheritable权限。有了这个权利,system_installd 的任何子进程都可以完全绕过 SIP 文件系统限制。

新的Shrootless漏洞可让攻击者在macOS系统上安装Rootkit
图 5:system_installd 权利。
注意“com.apple.rootless.install.inheritable”

由于 Microsoft Defender for Endpoint 具有后入侵组件,我们决定检查system_installd 的所有子进程。令我们惊讶的是,我们看到了一些可能允许攻击者滥用其功能并绕过 SIP 的案例。

例如,在安装 Apple 签名的包(.pkg 文件)时,该包会调用system_installd,然后负责安装前者。如果软件包包含任何安装后脚本,则system_installd 会通过调用默认 shell(在 macOS 上为zsh)来运行它们。有趣的是,当zsh启动时,它会查找文件/etc/zshenv,并且——如果找到——自动从该文件运行命令,即使在非交互模式下也是如此。因此,对于攻击者在设备上执行任意操作,他们可以采取的完全可靠的路径是创建恶意的/etc/zshenv文件,然后等待system_installd调用zsh

为了创建功能齐全的概念验证 (POC) 漏洞利用,我们实施了以下算法:

  1. 下载已知具有安装后脚本的 Apple 签名包(使用wget
  2. 植入恶意的/etc/zshenv来检查其父进程;如果是system_installd,则它会写入受限位置
  3. 调用安装程序实用程序来安装包

如下图 6 所示,POC 漏洞能够覆盖内核扩展排除列表:

新的Shrootless漏洞可让攻击者在macOS系统上安装Rootkit
图 6:我们的 POC 漏洞利用任意数据覆盖内核扩展排除列表

zshenv作为一种攻击技术

在我们的研究中,我们还发现除了用于绕过 SIP 之外,zshenv还可以用作通用攻击技术。我们发现/etc/zshenv~/.zshenv下的每个用户配置文件都有一个等效,它具有相同的功能和行为,但不需要 root 权限来写入。

通常,zshenv可以用作以下内容:

  • 一种持久化机制。它可以简单地等待zsh启动(在/etc下全局或每个用户)。
  • 特权提升机制。当管理员用户使用sudo -ssudo <command>提升为 root 时,主目录不会更改。因此,将~/.zshenv文件设置为管理员并等待管理员稍后使用sudo将触发~/.zshenv文件,从而提升为 root。

我们通过 Microsoft 安全漏洞研究 (MSVR) 的协调漏洞披露 (CVD) 与 Apple 分享了我们的发现。我们要感谢 Apple 产品安全团队在解决问题方面的专业精神和响应能力。

通过漏洞管理和行为监控加强设备安全

macOS 设备中的 SIP 等安全技术既是设备的内置基线保护,也是抵御恶意软件和其他网络安全威胁的最后一道防线。不幸的是,出于同样的原因,恶意行为者继续寻找突破这些障碍的创新方法。他们可以完全控制设备并运行他们希望的任何文件或进程,而不会被传统安全解决方案检测到。

我们对 CVE-2021-30892 漏洞的研究证明了这一点。它强调了组织需要像Microsoft Defender for Endpoint这样的安全解决方案,使他们能够通过威胁和漏洞管理快速发现和修复漏洞。这允许防御者实时检测设备上的漏洞和错误配置,并根据威胁形势、业务环境和其他因素确定需要立即解决的优先级。

此外,Microsoft Defender for Endpoint 使用高级行为分析和机器学习来检测设备上的异常活动,例如覆盖我们的 POC 漏洞能够实现的任意 SIP 保护文件。在上一节提供的示例中,zsh覆盖内核扩展排除列表是异常的。因此,Defender for Endpoint 会检测到它。扩展这个概念,Defender for Endpoint 对敏感文件访问有类似的检测,包括系统启动守护程序、rootless.conf文件等等。

最后,这项研究强调了安全研究人员、软件供应商和更大的安全社区之间合作的重要性。随着跨平台威胁的不断增加,漏洞发现、协调响应和其他形式的威胁情报共享有助于丰富我们的保护技术,无论用户使用何种平台或设备,都可以保护他们的计算体验。

from

Leave a Reply

您的电子邮箱地址不会被公开。 必填项已用 * 标注