From 8a541c34976bcacf524e8d456f216882f33df8c1 Mon Sep 17 00:00:00 2001 From: Translator Date: Sun, 24 Dec 2023 01:05:09 +0000 Subject: [PATCH] Translated ['macos-hardening/macos-security-and-privilege-escalation/mac --- .../macos-security-protections/macos-sip.md | 142 ++++++++++-------- 1 file changed, 81 insertions(+), 61 deletions(-) diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sip.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sip.md index 8845abf03..08888be88 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sip.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sip.md @@ -4,24 +4,24 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* 你在一个**网络安全公司**工作吗?你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! -* 发现我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family) -* 获得[**官方PEASS和HackTricks周边产品**](https://peass.creator-spring.com) -* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**电报群组**](https://t.me/peass),或者**关注**我在**Twitter**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -* **通过向**[**hacktricks repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。** +* 如果您在**网络安全公司**工作?您想在**HackTricks**中看到您的**公司广告**?或者您想要访问**最新版本的PEASS或下载HackTricks的PDF**?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! +* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)系列。 +* 获取[**官方的PEASS & HackTricks周边商品**](https://peass.creator-spring.com) +* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**telegram群组**](https://t.me/peass)或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **通过向**[**hacktricks仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。** ## **基本信息** -**系统完整性保护(SIP)**是macOS中的一项安全技术,它保护某些系统目录免受未经授权的访问,即使对于root用户也是如此。它防止对这些目录进行修改,包括创建、修改或删除文件。SIP保护的主要目录包括: +**系统完整性保护(SIP)**是macOS中的一项安全技术,它保护某些系统目录不受未经授权的访问,即使是root用户也不例外。它防止对这些目录的修改,包括创建、更改或删除文件。SIP保护的主要目录有: * **/System** * **/bin** * **/sbin** * **/usr** -这些目录及其子目录的保护规则在**`/System/Library/Sandbox/rootless.conf`**文件中指定。在该文件中,以星号(\*)开头的路径表示SIP限制的例外情况。 +这些目录及其子目录的保护规则在**`/System/Library/Sandbox/rootless.conf`**文件中指定。在此文件中,以星号(\*)开头的路径表示对SIP限制的例外。 例如,以下配置: ```javascript @@ -30,98 +30,111 @@ * /usr/local * /usr/share/man ``` -表明**`/usr`**目录通常受到SIP的保护。然而,三个指定的子目录(`/usr/libexec/cups`,`/usr/local`和`/usr/share/man`)允许进行修改,因为它们在前面有一个星号(\*)。 +表明**`/usr`**目录通常受到SIP的保护。然而,在指定的三个子目录(`/usr/libexec/cups`、`/usr/local`和`/usr/share/man`)中允许修改,因为它们前面带有星号(\*)。 -要验证目录或文件是否受到SIP的保护,可以使用**`ls -lOd`**命令检查是否存在**`restricted`**或**`sunlnk`**标志。例如: +要验证目录或文件是否受到SIP保护,您可以使用**`ls -lOd`**命令检查是否存在**`restricted`**或**`sunlnk`**标志。例如: ```bash ls -lOd /usr/libexec/cups drwxr-xr-x 11 root wheel sunlnk 352 May 13 00:29 /usr/libexec/cups ``` -在这种情况下,**`sunlnk`** 标志表示 `/usr/libexec/cups` 目录本身**不能被删除**,但其中的文件可以被创建、修改或删除。 +在这种情况下,**`sunlnk`** 标志表示 `/usr/libexec/cups` 目录本身**不能被删除**,尽管其中的文件可以被创建、修改或删除。 另一方面: ```bash ls -lOd /usr/libexec drwxr-xr-x 338 root wheel restricted 10816 May 13 00:29 /usr/libexec ``` -这里,**`restricted`** 标志表示 `/usr/libexec` 目录受到 SIP 保护。在受 SIP 保护的目录中,文件无法被创建、修改或删除。 +这里,**`restricted`** 标志表明 `/usr/libexec` 目录受到 SIP 的保护。在 SIP 保护的目录中,文件不能被创建、修改或删除。 + +此外,如果一个文件包含了扩展 **属性** **`com.apple.rootless`**,那么该文件也将被 **SIP 保护**。 + +**SIP 还限制了其他 root 操作**,例如: + +* 加载不受信任的内核扩展 +* 获取 Apple 签名进程的 task-ports +* 修改 NVRAM 变量 +* 允许内核调试 + +选项在 nvram 变量中以位标志的形式维护(在 Intel 上是 `csr-active-config`,在 ARM 上从启动的设备树中读取 `lp-sip0`)。您可以在 XNU 源代码的 `csr.sh` 中找到这些标志: + +
### SIP 状态 -您可以使用以下命令检查系统是否启用了 SIP: +您可以使用以下命令检查您的系统是否启用了 SIP: ```bash csrutil status ``` -如果您需要禁用SIP,您必须在恢复模式下重新启动计算机(在启动过程中按下Command+R),然后执行以下命令: ```bash csrutil disable ``` -如果您希望保持SIP启用状态但移除调试保护,可以使用以下方法: +```bash +csrutil disable +``` +如果您希望保持SIP启用状态,但移除调试保护,您可以使用以下方法: ```bash csrutil enable --without debug ``` ### 其他限制 -SIP还施加了其他几项限制。例如,它禁止**加载未签名的内核扩展**(kexts),并阻止对macOS系统进程的**调试**。它还阻止了像dtrace这样的工具检查系统进程。 +SIP 还强加了一些其他限制。例如,它不允许**加载未签名的内核扩展**(kexts),并阻止对 macOS 系统进程的**调试**。它还阻止像 dtrace 这样的工具检查系统进程。 -## SIP绕过 +## SIP 绕过 -### 价格 +如果攻击者设法绕过 SIP,他将能够做到以下事情: -如果攻击者成功绕过SIP,他将获得以下收益: - -* 阅读所有用户的邮件、消息、Safari历史记录等 -* 授予摄像头、麦克风或其他权限(通过直接覆盖SIP受保护的TCC数据库) -* 持久性:他可以将恶意软件保存在SIP受保护的位置,甚至管理员也无法删除它。此外,他还可以篡改MRT。 -* 轻松加载内核扩展(对此还有其他强大的保护措施)。 +* 读取所有用户的邮件、消息、Safari 历史记录等 +* 授予摄像头、麦克风或任何东西的权限(通过直接覆盖受 SIP 保护的 TCC 数据库) +* 持久性:他可以将恶意软件保存在受 SIP 保护的位置,甚至 root 也无法删除它。他还可以篡改 MRT。 +* 更容易加载内核扩展(尽管对此仍有其他严格的保护措施)。 ### 安装程序包 -**使用Apple的证书签名的安装程序包**可以绕过其保护。这意味着,即使是由标准开发人员签名的包,如果它们试图修改SIP受保护的目录,也将被阻止。 +**用苹果证书签名的安装程序包**可以绕过其保护。这意味着,即使是标准开发者签名的包,如果试图修改受 SIP 保护的目录,也会被阻止。 -### 不存在的SIP文件 +### 不存在的 SIP 文件 -一个潜在的漏洞是,如果一个文件在**`rootless.conf`中被指定,但当前不存在**,它可以被创建。恶意软件可以利用这一点在系统上**建立持久性**。例如,如果一个恶意程序在`rootless.conf`中列出了`/System/Library/LaunchDaemons`中的.plist文件,但该文件不存在,它可以创建一个该文件。 +一个潜在的漏洞是,如果在 **`rootless.conf` 中指定了一个文件但该文件当前不存在**,则可以创建它。恶意软件可以利用这一点在系统上**建立持久性**。例如,恶意程序可以在 `/System/Library/LaunchDaemons` 中创建一个 .plist 文件,如果它在 `rootless.conf` 中列出但不存在。 ### com.apple.rootless.install.heritable {% hint style="danger" %} -权限**`com.apple.rootless.install.heritable`**允许绕过SIP +权限 **`com.apple.rootless.install.heritable`** 允许绕过 SIP {% endhint %} -[**这篇博文的研究人员**](https://www.microsoft.com/en-us/security/blog/2021/10/28/microsoft-finds-new-macos-vulnerability-shrootless-that-could-bypass-system-integrity-protection/)发现了macOS的系统完整性保护(SIP)机制的一个漏洞,被称为“Shrootless”漏洞。这个漏洞围绕着**`system_installd`**守护程序展开,该守护程序具有一个名为**`com.apple.rootless.install.heritable`**的权限,允许其任何子进程绕过SIP的文件系统限制。 +[**来自这篇博客文章的研究人员**](https://www.microsoft.com/en-us/security/blog/2021/10/28/microsoft-finds-new-macos-vulnerability-shrootless-that-could-bypass-system-integrity-protection/) 发现了 macOS 的系统完整性保护(SIP)机制中的一个漏洞,被称为 'Shrootless' 漏洞。这个漏洞围绕着 **`system_installd`** 守护进程,它拥有一个权限,**`com.apple.rootless.install.heritable`**,允许其子进程绕过 SIP 的文件系统限制。 -**`system_installd`**守护程序将安装由**Apple**签名的软件包。 +**`system_installd`** 守护进程将安装由 **苹果** 签名的包。 -研究人员发现,在安装一个Apple签名的软件包(.pkg文件)时,**`system_installd`**会**运行**包中包含的任何**post-install**脚本。这些脚本由默认的shell **`zsh`**执行,如果存在的话,即使在非交互模式下,也会自动从**`/etc/zshenv`**文件中**运行**命令。攻击者可以利用这个行为:通过创建一个恶意的`/etc/zshenv`文件,并等待**`system_installd`调用`zsh`**,他们可以在设备上执行任意操作。 +研究人员发现,在安装苹果签名的包(.pkg 文件)期间,**`system_installd`** **运行**包中包含的任何**安装后**脚本。这些脚本由默认 shell,**`zsh`** 执行,它会自动**运行**来自 **`/etc/zshenv`** 文件的命令(如果存在),即使在非交互模式下也是如此。攻击者可以利用这种行为:通过创建一个恶意的 `/etc/zshenv` 文件并等待 **`system_installd` 调用 `zsh`**,他们可以在设备上执行任意操作。 -此外,还发现**`/etc/zshenv`可以用作一般的攻击技术**,不仅仅是用于绕过SIP。每个用户配置文件都有一个`~/.zshenv`文件,它的行为与`/etc/zshenv`相同,但不需要root权限。这个文件可以用作持久性机制,每次`zsh`启动时触发,或者用作权限提升机制。如果管理员用户使用`sudo -s`或`sudo `提升为root用户,`~/.zshenv`文件将被触发,有效地提升为root用户。 +此外,还发现 **`/etc/zshenv` 可以作为一种通用攻击技术**,不仅仅是用于 SIP 绕过。每个用户配置文件都有一个 `~/.zshenv` 文件,其行为与 `/etc/zshenv` 相同,但不需要 root 权限。这个文件可以用作持久性机制,每次 `zsh` 启动时触发,或作为提升权限机制。如果管理员用户使用 `sudo -s` 或 `sudo ` 提升为 root,`~/.zshenv` 文件将被触发,有效地提升为 root。 -在[**CVE-2022-22583**](https://perception-point.io/blog/technical-analysis-cve-2022-22583/)中发现,同样的**`system_installd`**进程仍然可以被滥用,因为它将**post-install脚本放在SIP保护的随机命名文件夹中的`/tmp`内**。问题在于**`/tmp`本身没有受到SIP的保护**,所以可以在其上**挂载**一个**虚拟映像**,然后**安装程序**会将**post-install脚本**放在其中,**卸载**虚拟映像,**重新创建**所有**文件夹**并**添加**带有**要执行的payload的post-installation脚本**。 +在 [**CVE-2022-22583**](https://perception-point.io/blog/technical-analysis-cve-2022-22583/) 中发现,同一个 **`system_installd`** 过程仍然可以被滥用,因为它将 **安装后脚本放在 `/tmp` 内由 SIP 保护的随机命名文件夹中**。问题是 **`/tmp` 本身并未受到 SIP 的保护**,因此可以在其上**挂载**一个**虚拟映像**,然后**安装程序**会将**安装后脚本**放在那里,**卸载**虚拟映像,**重新创建**所有**文件夹**并**添加**带有**有效载荷**的**安装后**脚本以执行。 ### **com.apple.rootless.install** {% hint style="danger" %} -权限**`com.apple.rootless.install`**允许绕过SIP +权限 **`com.apple.rootless.install`** 允许绕过 SIP {% endhint %} -从[**CVE-2022-26712**](https://jhftss.github.io/CVE-2022-26712-The-POC-For-SIP-Bypass-Is-Even-Tweetable/)中得知,系统XPC服务`/System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc`具有权限**`com.apple.rootless.install`**,它允许进程绕过SIP的限制。它还**公开了一种在没有任何安全检查的情况下移动文件的方法**。 +来自 [**CVE-2022-26712**](https://jhftss.github.io/CVE-2022-26712-The-POC-For-SIP-Bypass-Is-Even-Tweetable/) 的系统 XPC 服务 `/System/Library/PrivateFrameworks/ShoveService.framework/Versions/A/XPCServices/SystemShoveService.xpc` 拥有权限 **`com.apple.rootless.install`**,该权限授予进程绕过 SIP 限制的权限。它还**暴露了一个无任何安全检查的移动文件的方法。** ## 封闭系统快照 -封闭系统快照是苹果在**macOS Big Sur(macOS 11)**中引入的一个功能,作为其**系统完整性保护(SIP)**机制的一部分,提供了额外的安全性和系统稳定性。它们本质上是系统卷的只读版本。 +封闭系统快照是苹果在 **macOS Big Sur (macOS 11)** 中引入的一个功能,作为其**系统完整性保护(SIP)**机制的一部分,以提供额外的安全性和系统稳定性层。它们本质上是系统卷的只读版本。 -以下是更详细的说明: +以下是更详细的介绍: -1. **不可变系统**:封闭系统快照使macOS系统卷变为“不可变”,意味着它不能被修改。这可以防止任何未经授权或意外的对系统的更改,从而可能危及安全性或系统稳定性。 -2. **系统软件更新**:当您安装macOS更新或升级时,macOS会创建一个新的系统快照。然后,macOS启动卷使用**APFS(Apple文件系统)**切换到这个新的快照。如果在更新过程中出现问题,整个应用更新的过程变得更加安全可靠,因为系统始终可以恢复到之前的快照。 -3. **数据分离**:结合在macOS Catalina中引入的数据和系统卷分离的概念,封闭系统快照功能确保所有数据和设置都存储在单独的“**数据**”卷上。这种分离使您的数据与系统独立,简化了系统更新的过程,并增强了系统安全性。 +1. **不可变系统**:封闭系统快照使 macOS 系统卷变为“不可变”,意味着它不能被修改。这防止了任何未授权或意外的系统变更,这些变更可能会危害安全性或系统稳定性。 +2. **系统软件更新**:当您安装 macOS 更新或升级时,macOS 会创建一个新的系统快照。然后 macOS 启动卷使用 **APFS (苹果文件系统)** 切换到这个新快照。整个更新应用过程变得更加安全可靠,因为如果更新过程中出现问题,系统总是可以回退到之前的快照。 +3. **数据分离**:结合 macOS Catalina 引入的数据和系统卷分离概念,封闭系统快照功能确保了所有数据和设置都存储在一个独立的“**数据**”卷上。这种分离使您的数据独立于系统,简化了系统更新过程并增强了系统安全性。 -请记住,这些快照由macOS自动管理,并且由于APFS的空间共享功能,它们不会占用额外的磁盘空间。还需要注意的是,这些快照与**Time Machine快照**不同,后者是用户可访问的整个系统的备份。 +请记住,这些快照是由 macOS 自动管理的,并且由于 APFS 的空间共享能力,它们不会占用您磁盘上的额外空间。同样重要的是要注意,这些快照与**时间机器快照**不同,后者是用户可访问的整个系统的备份。 ### 检查快照 -命令**`diskutil apfs list`**列出了APFS卷的详细信息及其布局: +命令 **`diskutil apfs list`** 列出了 **APFS 卷的详细信息**及其布局:
+-- Container disk3 966B902E-EDBA-4775-B743-CF97A0556A13
 |   ====================================================
@@ -137,27 +150,34 @@ SIP还施加了其他几项限制。例如,它禁止**加载未签名的内核
 |   |
 |   +-> Volume disk3s1 7A27E734-880F-4D91-A703-FB55861D49B7
 |   |   ---------------------------------------------------
-|   |   APFS Volume
-|   |   快照:                  FAA23E0C-791C-43FF-B0E7-0E1C0810AC61
-|   |   快照磁盘:             disk3s1s1
-|   |   快照挂载点:      /
-|   |   快照密封:           是
+|   |   APFS Volume Disk (Role):   disk3s1 (System)
+|   |   Name:                      Macintosh HD (Case-insensitive)
+|   |   Mount Point:               /System/Volumes/Update/mnt1
+|   |   Capacity Consumed:         12819210240 B (12.8 GB)
+|   |   Sealed:                    Broken
+|   |   FileVault:                 Yes (Unlocked)
+|   |   Encrypted:                 No
+|   |   |
+|   |   快照:FAA23E0C-791C-43FF-B0E7-0E1C0810AC61
+|   |   快照磁盘:disk3s1s1
+|   |   快照挂载点:/
+|   |   快照封存:是
 [...]
 +-> 卷 disk3s5 281959B7-07A1-4940-BDDF-6419360F3327
 |   ---------------------------------------------------
-|   APFS 卷磁盘 (角色):   disk3s5 (数据)
-|   名称:                      Macintosh HD - Data (不区分大小写)
-    |   挂载点:               /System/Volumes/Data
-    |   已使用容量:         412071784448 B (412.1 GB)
-    |   密封:                    否
-|   FileVault:                 是 (已解锁)
+|   APFS 卷磁盘(角色):disk3s5(数据)
+|   名称:Macintosh HD - Data(不区分大小写)
+    |   挂载点:/System/Volumes/Data
+    |   已使用容量:412071784448 B(412.1 GB)
+    |   封存:否
+|   FileVault:是(已解锁)
 
-在上面的输出中,可以看到**用户可访问的位置**被挂载在`/System/Volumes/Data`下。 +在上述输出中,可以看到**用户可访问位置**挂载在`/System/Volumes/Data`下。 -此外,**macOS系统卷快照**被挂载在`/`下,并且它是**密封的**(由操作系统进行了加密签名)。因此,如果绕过SIP并对其进行修改,**操作系统将无法启动**。 +此外,**macOS 系统卷快照**挂载在`/`,并且是**封存的**(由操作系统加密签名)。因此,如果绕过 SIP 并修改它,**操作系统将不再启动**。 -还可以通过运行以下命令**验证密封是否已启用**: +还可以通过运行以下命令来**验证封存是否启用**: ```bash csrutil authenticated-root status Authenticated Root status: enabled @@ -169,12 +189,12 @@ mount ```
-☁️ HackTricks 云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 +☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* 你在一家 **网络安全公司** 工作吗?想要在 HackTricks 中 **宣传你的公司** 吗?或者你想要获得 **PEASS 的最新版本或下载 HackTricks 的 PDF** 吗?请查看 [**订阅计划**](https://github.com/sponsors/carlospolop)! -* 发现我们的独家 [**NFTs**](https://opensea.io/collection/the-peass-family) 集合 [**The PEASS Family**](https://opensea.io/collection/the-peass-family) -* 获得 [**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com) -* **加入** [**💬**](https://emojipedia.org/speech-balloon/) [**Discord 群组**](https://discord.gg/hRep4RUj7f) 或者 [**Telegram 群组**](https://t.me/peass),或者在 **Twitter** 上 **关注** 我 [**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** -* **通过向** [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。** +* 如果您在**网络安全公司**工作,想在**HackTricks**上看到您的**公司广告**,或者想要访问**最新版本的PEASS或下载HackTricks的PDF**?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)! +* 发现[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs**](https://opensea.io/collection/the-peass-family)系列。 +* 获取[**官方PEASS & HackTricks商品**](https://peass.creator-spring.com)。 +* **加入**[**💬**](https://emojipedia.org/speech-balloon/) [**Discord群组**](https://discord.gg/hRep4RUj7f)或[**telegram群组**](https://t.me/peass),或在**Twitter**上**关注**我[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。** +* **通过向**[**hacktricks仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**