macOS SIP
WhiteIntel是一个由暗网支持的搜索引擎,提供免费功能,用于检查公司或其客户是否受到窃取恶意软件的侵害。
WhiteIntel的主要目标是打击由窃取信息恶意软件导致的账户劫持和勒索软件攻击。
您可以访问他们的网站并免费尝试他们的引擎:
基本信息
macOS中的**系统完整性保护(SIP)**是一种机制,旨在防止即使是最特权的用户也无法对关键系统文件进行未经授权的更改。此功能通过限制在受保护区域添加、修改或删除文件等操作,发挥着维护系统完整性的关键作用。SIP保护的主要文件夹包括:
/System
/bin
/sbin
/usr
SIP行为的规则在位于**/System/Library/Sandbox/rootless.conf
**的配置文件中定义。在此文件中,以星号(*)为前缀的路径被标记为SIP限制的例外情况。
请参考以下示例:
这段代码暗示了虽然SIP通常保护**/usr
**目录,但在特定子目录(/usr/libexec/cups
、/usr/local
和/usr/share/man
)中,修改是允许的,这可以通过路径前面的星号(*)来表示。
要验证目录或文件是否受SIP保护,您可以使用**ls -lOd
命令来检查restricted
或sunlnk
**标志的存在。例如:
在这种情况下,sunlnk
标志表示 /usr/libexec/cups
目录本身无法被删除,尽管其中的文件可以被创建、修改或删除。
另一方面:
在这里,restricted
标志表示 /usr/libexec
目录受 SIP 保护。在受 SIP 保护的目录中,文件无法被创建、修改或删除。
此外,如果文件包含属性 com.apple.rootless
扩展 属性,那个文件也将受到 SIP 保护。
SIP 还限制其他 root 操作,如:
加载不受信任的内核扩展
为苹果签名的进程获取任务端口
修改 NVRAM 变量
允许内核调试
选项以位标志形式保存在 nvram 变量中(在 Intel 上为 csr-active-config
,在 ARM 上从引导的设备树中读取 lp-sip0
)。您可以在 XNU 源代码中的 csr.sh
中找到这些标志:
SIP 状态
您可以使用以下命令检查系统是否启用了 SIP:
如果您需要禁用SIP,您必须在恢复模式下重新启动计算机(在启动过程中按下Command+R),然后执行以下命令:
如果您希望保持 SIP 启用但移除调试保护,可以通过以下方式实现:
其他限制
禁止加载未签名的内核扩展(kext),确保只有经过验证的扩展与系统内核交互。
防止调试 macOS 系统进程,保护核心系统组件免受未经授权的访问和修改。
阻止工具 如 dtrace 检查系统进程,进一步保护系统操作的完整性。
SIP 绕过
绕过 SIP 使攻击者能够:
访问用户数据:从所有用户帐户中读取敏感用户数据,如邮件、消息和 Safari 历史记录。
TCC 绕过:直接操作 TCC(透明度、同意和控制)数据库,以授予对摄像头、麦克风和其他资源的未经授权访问。
建立持久性:将恶意软件放置在受 SIP 保护的位置,使其难以被移除,即使是通过 root 权限。这还包括篡改恶意软件移除工具(MRT)的潜力。
加载内核扩展:尽管有额外的保护措施,绕过 SIP 简化了加载未签名内核扩展的过程。
安装程序包
使用 Apple 证书签名的安装程序包 可以绕过其保护措施。这意味着即使是由标准开发人员签名的程序包,如果它们试图修改受 SIP 保护的目录,也将被阻止。
不存在的 SIP 文件
一个潜在的漏洞是,如果一个文件在 rootless.conf
中被指定但当前不存在,它可以被创建。恶意软件可以利用这一点在系统上 建立持久性。例如,如果在 rootless.conf
中列出但不存在,那么恶意程序可以在 /System/Library/LaunchDaemons
中创建一个 .plist 文件。
com.apple.rootless.install.heritable
授权 com.apple.rootless.install.heritable
允许绕过 SIP
发现可以在系统验证其代码签名后 交换安装程序包,然后系统将安装恶意程序包而不是原始程序包。由于这些操作是由 system_installd
执行的,因此可以绕过 SIP。
如果从挂载的映像或外部驱动器安装了程序包,则 安装程序 将从 该文件系统(而不是 SIP 受保护的位置)执行二进制文件,使 system_installd
执行任意二进制文件。
CVE-2021-30892 - Shrootless
来自此博客文章的研究人员 发现了 macOS 的系统完整性保护(SIP)机制中的一个漏洞,称为 'Shrootless' 漏洞。此漏洞围绕 system_installd
守护程序展开,该守护程序具有一个授权 com.apple.rootless.install.heritable
,允许其任何子进程绕过 SIP 的文件系统限制。
system_installd
守护程序将安装由 Apple 签名的程序包。
研究人员发现,在安装 Apple 签名的程序包(.pkg 文件)期间,system_installd
将 运行 包中包含的任何 后安装 脚本。这些脚本由默认 shell zsh
执行,该 shell 会自动 运行 /etc/zshenv
文件中的命令(如果存在),即使在非交互模式下也是如此。攻击者可以利用这种行为:通过创建一个恶意的 /etc/zshenv
文件,并等待 system_installd
调用 zsh
,他们可以在设备上执行任意操作。
此外,发现 /etc/zshenv
可以用作一般攻击技术,不仅仅是用于绕过 SIP。每个用户配置文件都有一个 ~/.zshenv
文件,它的行为方式与 /etc/zshenv
相同,但不需要 root 权限。这个文件可以用作持久性机制,每次 zsh
启动时触发,或者用作特权提升机制。如果管理员用户使用 sudo -s
或 sudo <command>
提升到 root,~/.zshenv
文件将被触发,有效地提升到 root。
在 CVE-2022-22583 中发现,同一个 system_installd
进程仍然可能被滥用,因为它将 后安装脚本放在了 /tmp
中受 SIP 保护的随机命名文件夹内。问题在于 /tmp
本身并未受 SIP 保护,因此可以在其上 挂载 虚拟映像,然后 安装程序 将在其中放置 后安装脚本,卸载 虚拟映像,重新创建 所有 文件夹 并添加 后安装 脚本以执行 载荷。
发现了一个漏洞,fsck_cs
被误导以跟随 符号链接,导致其损坏一个关键文件。具体来说,攻击者从 /dev/diskX
到文件 /System/Library/Extensions/AppleKextExcludeList.kext/Contents/Info.plist
创建了一个链接。在 /dev/diskX
上执行 fsck_cs
导致 Info.plist
的损坏。该文件的完整性对于操作系统的 SIP(系统完整性保护)至关重要,它控制内核扩展的加载。一旦损坏,SIP 管理内核排除的能力就会受到影响。
利用此漏洞的命令为:
这个漏洞的利用有严重的影响。Info.plist
文件通常负责管理内核扩展的权限,但变得无效。这包括无法列入黑名单某些扩展,比如AppleHWAccess.kext
。因此,由于SIP的控制机制失效,这个扩展可以被加载,从而授予对系统RAM的未经授权的读写访问。
可以在SIP受保护的文件夹上挂载一个新的文件系统以绕过保护。
系统被设置为从Install macOS Sierra.app
中的嵌入式安装程序磁盘映像启动以升级操作系统,利用bless
实用程序。使用的命令如下:
安全性可能会受到损害,如果攻击者在引导前更改升级镜像(InstallESD.dmg
)。该策略涉及用恶意版本 (libBaseIA.dylib
) 替换动态加载器 (dyld)。这种替换导致在启动安装程序时执行攻击者的代码。
攻击者的代码在升级过程中获得控制权,利用系统对安装程序的信任。攻击通过方法混淆来修改 InstallESD.dmg
镜像,特别是针对 extractBootBits
方法。这允许在磁盘映像被使用之前注入恶意代码。
此外,在 InstallESD.dmg
中,有一个 BaseSystem.dmg
,用作升级代码的根文件系统。将动态库注入其中允许恶意代码在能够修改操作系统级文件的进程中运行,显著增加了系统受损的可能性。
在 DEF CON 31 的这次演讲中,展示了 systemmigrationd
(可以绕过 SIP)如何执行 bash 和 perl 脚本,可以通过环境变量 BASH_ENV
和 PERL5OPT
进行滥用。
CVE-2023-42860
正如在这篇博文中详细说明的,InstallAssistant.pkg
包中的 postinstall
脚本允许执行。
此外,快照磁盘也被挂载为只读:
WhiteIntel 是一个由暗网支持的搜索引擎,提供免费功能,用于检查公司或其客户是否受到窃取恶意软件的侵害。
WhiteIntel的主要目标是打击由窃取信息恶意软件导致的账户劫持和勒索软件攻击。
您可以访问他们的网站并免费尝试他们的引擎:
最后更新于