Translated ['macos-hardening/macos-security-and-privilege-escalation/REA

This commit is contained in:
Translator 2023-09-11 00:05:20 +00:00
parent 7ccf7fe017
commit 12d72800f2
5 changed files with 130 additions and 110 deletions

View file

@ -4,7 +4,7 @@
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 你在一家**网络安全公司**工作吗你想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 你在一家**网络安全公司**工作吗你想在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)**。**
@ -25,7 +25,7 @@ HackenProof的赏金只有在客户存入奖励预算后才会启动。在漏洞
**成为web3黑客传奇**\
每次验证的漏洞都会获得声誉积分,并登上每周排行榜的榜首。
[**在HackenProof上注册**](https://hackenproof.com/register) 从您的黑客行动中获利!
[**在HackenProof上注册**](https://hackenproof.com/register)开始从您的黑客行动中获利!
{% embed url="https://hackenproof.com/register" %}
@ -63,6 +63,8 @@ HackenProof的赏金只有在客户存入奖励预算后才会启动。在漏洞
[macos-protocols.md](macos-protocols.md)
{% endcontent-ref %}
* **开源**的macOS[https://opensource.apple.com/](https://opensource.apple.com/)
### MacOS MDM
在公司中,**macOS**系统很可能会通过MDM进行**管理**。因此,从攻击者的角度来看,了解**它是如何工作的**是很有意义的:
@ -91,9 +93,9 @@ HackenProof的赏金只有在客户存入奖励预算后才会启动。在漏洞
这种情况可能发生在以下情况下:
* 使用的文件已经由用户创建(由用户拥有)
* 使用的文件由于一个组的原因可被用户写入
* 使用的文件由于一个组的原因对用户可写
* 使用的文件位于用户拥有的目录中(用户可以创建文件)
* 使用的文件位于由root拥有但用户具有写权限的目录中(用户可以创建文件)
* 使用的文件位于由root拥有但用户具有写访问权限的目录中(用户可以创建文件)
能够**创建一个将被root使用的文件**,允许用户**利用其内容**,甚至创建**符号链接/硬链接**将其指向另一个位置。
@ -124,6 +126,9 @@ HackenProof的赏金只有在客户存入奖励预算后才会启动。在漏洞
**任何用户**(即使是非特权用户)都可以创建和挂载时间机器快照,并**访问该快照的所有文件**。\
唯一需要的特权是所使用的应用程序(如`Terminal`)具有**完全磁盘访问权限**FDA`kTCCServiceSystemPolicyAllfiles`),需要由管理员授予。
{% code overflow="wrap" %}
```bash
# Create snapshot
tmutil localsnapshot
@ -155,7 +160,7 @@ ls /tmp/snap/Users/admin_user # This will work
### Linux提权
首先,请注意**大多数关于特权提升的技巧都会影响MacOS机器**。所以请参考:
首先,请注意**大多数关于特权提升的技巧都会影响MacOS**机器。所以请参考:
{% content-ref url="../../linux-hardening/privilege-escalation/" %}
[privilege-escalation](../../linux-hardening/privilege-escalation/)

View file

@ -2,12 +2,12 @@
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 你在一家**网络安全公司**工作吗你想在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) 或 [**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)**。**
* 获[**官方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来分享你的黑客技巧。**
</details>
@ -20,9 +20,9 @@ APFS的一些显著特点包括
1. **空间共享**APFS允许多个卷在单个物理设备上**共享相同的底层可用存储空间**。这使得卷可以动态增长和收缩,无需手动调整大小或重新分区,从而实现更高效的空间利用。
1. 这意味着,与文件磁盘中的传统分区相比,**在APFS中不同的分区共享整个磁盘空间**,而常规分区通常具有固定大小。
2. **快照**APFS支持**创建快照**,这些快照是文件系统的**只读**、时间实例。快照可以实现高效的备份和简单的系统回滚,因为它们消耗的额外存储空间很少,并且可以快速创建或还原。
3. **克隆**APFS可以**创建与原始文件或目录共享相同存储空间的文件或目录克隆**,直到克隆或原始文件被修改为止。这个功能提供了一种在不复存储空间的情况下创建文件或目录副本的高效方式。
4. **加密**APFS**本地支持全盘加密**以及每个文件和每个目录的加密,增强了不同用例下的数据安全性。
2. **快照**APFS支持**创建快照**,这些快照是文件系统的**只读**、时间实例。快照可以实现高效的备份和简单的系统回滚,因为它们占用的额外存储空间很小,可以快速创建或还原。
3. **克隆**APFS可以**创建与原始文件或目录共享相同存储空间的文件或目录克隆**,直到克隆或原始文件被修改为止。这个功能提供了一种在不复存储空间的情况下创建文件或目录副本的高效方式。
4. **加密**APFS**原生支持全盘加密**以及每个文件和每个目录的加密,增强了不同用例下的数据安全性。
5. **崩溃保护**APFS使用**写时复制元数据方案**,即使在突然断电或系统崩溃的情况下,也能确保文件系统的一致性,减少数据损坏的风险。
总体而言APFS为Apple设备提供了一个更现代、灵活和高效的文件系统注重提高性能、可靠性和安全性。
@ -41,16 +41,16 @@ cat /usr/share/firmlinks
/Library Library
[...]
```
**左侧**是**系统卷**上的目录路径,**右侧**是它在**数据卷**上映射目录路径。因此,`/library` --> `/system/Volumes/data/library`
**左侧**是**系统卷**上的目录路径,**右侧**是它在**数据卷**上映射目录路径。因此,`/library` --> `/system/Volumes/data/library`
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 YouTube 🎥</strong></a></summary>
* 你在一家**网络安全公司**工作吗?想要在 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)
* 发现我们的独家[**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 来分享你的黑客技巧。**
* **加入**[**💬**](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 来分享你的黑客技巧。**
</details>

View file

@ -4,10 +4,10 @@
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 你在一家**网络安全公司**工作吗?想在HackTricks中看到你的**公司广告**吗?或者你想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 你在一家**网络安全公司**工作吗?想在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)**。**
* **加入**[**💬**](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 repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享你的黑客技巧。**
</details>
@ -16,13 +16,13 @@
* **/Applications**:已安装的应用程序应位于此处。所有用户都可以访问它们。
* **/bin**:命令行二进制文件
* **/cores**:如果存在,用于存储核心转储
* **/cores**:如果存在,用于存储核心转储文件
* **/dev**:一切都被视为文件,因此您可能会在此处看到存储的硬件设备。
* **/etc**:配置文件
* **/Library**可以在此处找到与首选项、缓存和日志相关的许多子目录和文件。根目录和每个用户目录中都存在一个Library文件夹。
* **/private**未记录但是许多提到的文件夹都是指向private目录的符号链接。
* **/sbin**基本系统二进制文件(与管理相关)
* **/System**使OS X运行的文件。您应该在这里找到大多数仅适用于Apple的文件(而不是第三方文件)。
* **/sbin**关键系统二进制文件(与管理相关)
* **/System**使OS X运行的文件。您应该在这里找到主要是Apple特定文件(而不是第三方文件)。
* **/tmp**文件将在3天后被删除它是指向/private/tmp的软链接
* **/Users**:用户的主目录。
* **/usr**:配置和系统二进制文件
@ -75,35 +75,49 @@ MacOS将密码等信息存储在多个位置
* **`.noindex`**具有此扩展名的文件和文件夹将不会被Spotlight索引。
### macOS捆绑包
基本上捆绑包是文件系统中的一个目录结构。有趣的是默认情况下这个目录在Finder中看起来像一个单一的对象比如`.app`)。
基本上,捆绑包是文件系统中的一个**目录结构**。有趣的是默认情况下这个目录在Finder中**看起来像一个单一的对象**(比如`.app`)。&#x20;
{% content-ref url="macos-bundles.md" %}
[macos-bundles.md](macos-bundles.md)
{% endcontent-ref %}
## Dyld共享缓存
在macOS和iOS所有系统共享库如框架和dylib都被**合并到一个单一文件**中,称为**dyld共享缓存**。这样可以提高性能,因为代码可以更快地加载。
类似于dyld共享缓存内核和内核扩展也被编译成内核缓存在启动时加载。
为了从单一文件dylib共享缓存中提取库可以使用二进制工具[dyld\_shared\_cache\_util](https://www.mbsplugins.de/files/dyld\_shared\_cache\_util-dyld-733.8.zip),但现在可能无法正常工作:
{% code overflow="wrap" %}
```bash
dyld_shared_cache_util -extract ~/shared_cache/ /System/Volumes/Preboot/Cryptexes/OS/System/Library/dyld/dyld_shared_cache_arm64e
```
{% endcode %}
## 特殊文件权限
### 文件夹权限
在一个文件夹中,**读取**权限允许**列出**它,**写入**权限允许**删除**和**写入**文件,**执行**权限允许**遍历**目录。所以,例如,一个用户对一个文件具有**读取权限**,但在该目录中**没有执行权限**,则**无法读取**该文件。
在一个**文件夹**中,**读取**权限允许**列出**它,**写入**权限允许**删除**和**写入**文件,**执行**权限允许**遍历**目录。因此,例如,一个在没有**执行**权限的目录中的文件上具有**读取权限**的用户**无法读取**该文件。
### 标志修饰符
有一些标志可以设置在文件中,使文件的行为不同。您可以使用`ls -lO /path/directory`命令检查目录中文件的标志。
有一些标志可以设置在文件中,使文件的行为不同。您可以使用`ls -lO /path/directory`命令**检查目录中文件的标志**
* **`uchg`**:被称为**uchange**标志,将**阻止任何更改或删除**文件的操作。设置方法:`chflags uchg file.txt`
* root用户可以**移除该标志**并修改文件
* **`restricted`**此标志使文件受到SIP的保护您无法将此标志添加到文件中
* **`Sticky bit`**:如果一个目录具有粘性位,**只有**目录的**所有者或root用户可以重命名或删除**文件。通常在/tmp目录上设置此标志以防止普通用户删除或移动其他用户的文件。
* **`uchg`**也称为**uchange**标志,将**阻止任何更改或删除**文件。要设置它,请执行`chflags uchg file.txt`
* root用户可以**除该标志**并修改文件
* **`restricted`**:此标志使文件受到**SIP保护**(无法将此标志添加到文件)。
* **`粘滞位`**:如果一个目录具有粘滞位,**只有**目录的**所有者或root用户可以重命名或删除**文件。通常在/tmp目录上设置此标志以防止普通用户删除或移动其他用户的文件。
### **文件ACLs**
文件的ACLs包含了**ACE**(访问控制项),可以为不同的用户分配更细粒度的权限。
文件**ACLs**包含**ACE**(访问控制项),可以为不同的用户分配更**精细的权限**
可以为**目录**授予以下权限:`list`、`search`、`add_file`、`add_subdirectory`、`delete_child`、`delete_child`。\
可以为**文件**授予以下权限`read`、`write`、`append`、`execute`。
对于**文件**`read`、`write`、`append`、`execute`。
当文件包含ACLs时,您将在列出权限时**找到一个"+"**如:
当文件包含ACL时您将在列出权限时**找到一个"+"**,如下所示
```bash
ls -ld Movies
drwx------+ 7 username staff 224 15 Apr 19:42 Movies
@ -114,13 +128,13 @@ ls -lde Movies
drwx------+ 7 username staff 224 15 Apr 19:42 Movies
0: group:everyone deny delete
```
您可以使用以下命令(这个命令非常慢)找到**所有有ACL的文件**
您可以使用以下命令(这个命令非常慢)找到**所有有ACL的文件**
```bash
ls -RAle / 2>/dev/null | grep -E -B1 "\d: "
```
### 资源分支 | macOS ADS
这是一种在MacOS机器上获取**备用数据流**的方法。您可以通过将内容保存在名为**com.apple.ResourceFork**的扩展属性中,并将其保存在**file/..namedfork/rsrc**中的文件中。
这是一种在MacOS机器上获取**备用数据流(Alternate Data Streams)**的方法。您可以通过将内容保存在名为**com.apple.ResourceFork**的扩展属性中,并将其保存在**file/..namedfork/rsrc**中的文件中。
```bash
echo "Hello" > a.txt
echo "Hello Mac ADS" > a.txt/..namedfork/rsrc
@ -139,15 +153,15 @@ find / -type f -exec ls -ld {} \; 2>/dev/null | grep -E "[x\-]@ " | awk '{printf
```
{% endcode %}
## **通用二进制文件和** Mach-o 格式
## **通用二进制文件和**Mach-o格式
Mac OS 二进制文件通常被编译为**通用二进制文件**。**通用二进制文件**可以在同一个文件中**支持多个架构**。
Mac OS二进制文件通常被编译为**通用二进制文件**。**通用二进制文件**可以在同一个文件中**支持多个架构**。
{% content-ref url="universal-binaries-and-mach-o-format.md" %}
[universal-binaries-and-mach-o-format.md](universal-binaries-and-mach-o-format.md)
{% endcontent-ref %}
## macOS 内存转储
## macOS内存转储
{% content-ref url="macos-memory-dumping.md" %}
[macos-memory-dumping.md](macos-memory-dumping.md)
@ -155,34 +169,34 @@ Mac OS 二进制文件通常被编译为**通用二进制文件**。**通用二
## 风险类别文件 Mac OS
文件 `/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/System` 包含与文件扩展名相关的风险。
文件`/System/Library/CoreServices/CoreTypes.bundle/Contents/Resources/System`包含与文件扩展名相关的风险。
可能的类别包括以下内容:
* **LSRiskCategorySafe**: **完全** **安全**Safari 下载后会自动打开
* **LSRiskCategoryNeutral**: 没有警告,但**不会自动打开**
* **LSRiskCategoryUnsafeExecutable**: **触发**一个**警告**“此文件是一个应用程序…”
* **LSRiskCategoryMayContainUnsafeExecutable**: 适用于包含可执行文件的存档等内容。除非 Safari 能确定所有内容都是安全或中性的,否则会**触发警告**。
* **LSRiskCategorySafe****完全安全**Safari将在下载后自动打开
* **LSRiskCategoryNeutral**没有警告,但**不会自动打开**
* **LSRiskCategoryUnsafeExecutable****触发**“此文件是应用程序...”的警告
* **LSRiskCategoryMayContainUnsafeExecutable**适用于包含可执行文件的存档等内容。除非Safari可以确定所有内容都是安全或中性的,否则会**触发警告**。
## 日志文件
* **`$HOME/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`**: 包含有关下载文件的信息,如下载文件的 URL。
* **`/var/log/system.log`**: OSX 系统的主要日志。com.apple.syslogd.plist 负责执行系统日志记录(您可以通过查找 `launchctl list` 中的 "com.apple.syslogd" 来检查是否已禁用)。
* **`/private/var/log/asl/*.asl`**: 这些是可能包含有趣信息的 Apple 系统日志。
* **`$HOME/Library/Preferences/com.apple.recentitems.plist`**: 存储最近通过 "Finder" 访问的文件和应用程序。
* **`$HOME/Library/Preferences/com.apple.loginitems.plsit`**: 存储系统启动时要启动的项目
* **`$HOME/Library/Logs/DiskUtility.log`**: DiskUtility 应用程序的日志文件(包含有关驱动器(包括 USB的信息
* **`/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist`**: 无线访问点的数据。
* **`/private/var/db/launchd.db/com.apple.launchd/overrides.plist`**: 停用的守护程序列表。
* **`$HOME/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2`**:包含有关下载文件的信息,例如下载文件的URL。
* **`/var/log/system.log`**OSX系统的主要日志。com.apple.syslogd.plist负责执行syslogging您可以通过查找`launchctl list`中的“com.apple.syslogd”来检查是否已禁用)。
* **`/private/var/log/asl/*.asl`**这些是可能包含有趣信息的Apple系统日志。
* **`$HOME/Library/Preferences/com.apple.recentitems.plist`**存储通过“Finder”最近访问的文件和应用程序。
* **`$HOME/Library/Preferences/com.apple.loginitems.plsit`**:存储在系统启动时要启动的项目
* **`$HOME/Library/Logs/DiskUtility.log`**DiskUtility应用程序的日志文件包含有关驱动器包括USB驱动器)的信息)
* **`/Library/Preferences/SystemConfiguration/com.apple.airport.preferences.plist`**:关于无线访问点的数据。
* **`/private/var/db/launchd.db/com.apple.launchd/overrides.plist`**:已停用的守护程序列表。
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 您在**网络安全公司**工作吗?您想在 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或下载PDF格式的HackTricks吗?请查看[**订阅计划**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[NFT](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来分享您的黑客技巧。**
</details>

View file

@ -22,19 +22,13 @@
```bash
ls -lR /Applications/Safari.app/Contents
```
* `Contents/_CodeSignature`
包含有关应用程序的**代码签名信息**(例如哈希等)。
* `Contents/MacOS`
包含应用程序的**二进制文件**(当用户双击应用程序图标时执行)。
* `Contents/Resources`
包含应用程序的**用户界面元素**例如图像、文档和描述各种用户界面的nib/xib文件。
* `Contents/Info.plist`\
应用程序的主要“**配置文件**”。苹果指出,“系统依赖于此文件的存在来识别有关应用程序和任何相关文件的相关信息”。
* `Contents/_CodeSignature` -> 包含有关应用程序的**代码签名信息**(例如哈希等)。
* `openssl dgst -binary -sha1 /Applications/Safari.app/Contents/Resources/Assets.car | openssl base64`
* `Contents/MacOS` -> 包含应用程序的**二进制文件**(当用户双击应用程序图标时执行)。
* `Contents/Resources` -> 包含应用程序的**用户界面元素**例如图像、文档和描述各种用户界面的nib/xib文件。
* `Contents/Info.plist` -> 应用程序的主要“**配置文件**”。苹果指出,“系统依赖于此文件的存在来识别与应用程序和任何相关文件有关的信息”。
* **Plist** **文件**包含配置信息。您可以在[https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html](https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Introduction/Introduction.html)中找到有关它们plist键的含义的信息。
* 在分析应用程序时可能感兴趣的一些键值对包括:\\
* 在分析应用程序时可能感兴趣的键值对包括:\\
* **CFBundleExecutable**
@ -42,20 +36,20 @@ ls -lR /Applications/Safari.app/Contents
* **CFBundleIdentifier**
包含应用程序的捆绑标识符(系统通常用于**全局** **标识**应用程序)。
包含应用程序的捆绑标识符(系统通常用于**全局标识**应用程序)。
* **LSMinimumSystemVersion**
包含应用程序兼容的**最旧** **版本****macOS**
包含应用程序兼容的**最旧版本的macOS**。
<details>
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks Cloud ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 Twitter 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 您在**网络安全公司**工作吗您想在HackTricks中看到您的**公司广告**吗?或者您想获得**PEASS的最新版本或下载PDF格式的HackTricks**吗?请查看[**SUBSCRIPTION PLANS**](https://github.com/sponsors/carlospolop)
* 发现我们的独家[NFTs](https://opensea.io/collection/the-peass-family)收藏品[**The PEASS Family**](https://opensea.io/collection/the-peass-family)
* 您在**网络安全公司**工作吗您想在HackTricks中看到您的**公司广告**吗?或者您想获得最新版本的PEASS或下载PDF格式的HackTricks吗?请查看[**SUBSCRIPTION PLANS**](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 repo**](https://github.com/carlospolop/hacktricks) **和**[**hacktricks-cloud repo**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
</details>

View file

@ -25,19 +25,19 @@
例如,以下配置:
```javascript
javascriptCopy code/usr
/usr
* /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
@ -62,7 +62,7 @@ csrutil enable --without debug
```
### 其他限制
SIP还有一些其他限制。例如它禁止加载未签名的内核扩展kexts并阻止对macOS系统进程进行调试。它还阻止像dtrace这样的工具检查系统进程。
SIP还施加了其他几项限制。例如,它禁止**加载未签名的内核扩展**kexts并阻止对macOS系统进程的**调试**。它还阻止了像dtrace这样的工具检查系统进程。
## SIP绕过
@ -71,36 +71,36 @@ SIP还有一些其他限制。例如它禁止加载未签名的内核扩展
如果攻击者成功绕过SIP他将获得以下收益
* 阅读所有用户的邮件、消息、Safari历史记录等
* 授予摄像头、麦克风或其他权限通过直接覆盖SIP保护的TCC数据库
* 持久性他可以将恶意软件保存在SIP保护的位置甚至管理员也无法删除它。此外他还可以篡改MRT。
* 更容易加载内核扩展(仍然有其他强大的保护措施)
* 授予摄像头、麦克风或其他权限通过直接覆盖SIP保护的TCC数据库
* 持久性他可以将恶意软件保存在SIP保护的位置甚至管理员也无法删除它。此外他还可以篡改MRT。
* 轻松加载内核扩展(对此还有其他强大的保护措施)。
### 安装程序包
**使用Apple的证书签名的安装程序包**可以绕过其保护。这意味着即使是由标准开发人员签名的包如果它们试图修改SIP保护的目录也将被阻止。
**使用Apple的证书签名的安装程序包**可以绕过其保护。这意味着即使是由标准开发人员签名的包如果它们试图修改SIP保护的目录,也将被阻止。
### 不存在的SIP文件
一个潜在的漏洞是,如果一个文件在**`rootless.conf`中被指定,但当前不存在**,它可以被创建。恶意软件可以利用这一点在系统上建立持久性。例如,如果在`rootless.conf`中列出了`/System/Library/LaunchDaemons`中的.plist文件但不存在那么恶意程序可以在那里创建一个.plist文件。
一个潜在的漏洞是,如果一个文件在**`rootless.conf`中被指定,但当前不存在**,它可以被创建。恶意软件可以利用这一点在系统上**建立持久性**。例如,如果一个恶意程序在`rootless.conf`中列出了`/System/Library/LaunchDaemons`中的.plist文件但不存在它可以创建一个该文件。
### 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的文件系统限制。
研究人员发现,在安装由苹果签名的包(.pkg文件`system_installd`会运行包中包含的任何**post-install**脚本。这些脚本由默认的shell **`zsh`**执行,即使在非交互模式下,它也会自动运行**`/etc/zshenv`**文件中的命令,如果该文件存在。攻击者可以利用这个行为:通过创建一个恶意的`/etc/zshenv`文件,并等待`system_installd`调用`zsh`,他们可以在设备上执行任意操作。
研究人员发现,在安装由苹果签名的包(.pkg文件**`system_installd`会运行**包中包含的任何**post-install**脚本。这些脚本由默认的shell **`zsh`**执行,如果存在**`/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**](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`**进程仍然可以被滥用,因为它将**post-install脚本放在了SIP保护的随机命名文件夹中的`/tmp`**中。问题在于**`/tmp`本身没有受到SIP的保护**因此可以在其上**挂载**一个**虚拟映像**,然后**安装程序**会将**post-install脚本**放在其中,**卸载**虚拟映像,**重新创建**所有**文件夹**并**添加**带有**要执行的payload的post-install脚本**。
### **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的限制。它还**公开了一种在没有任何安全检查的情况下移动文件的方法**。
@ -109,50 +109,57 @@ SIP还有一些其他限制。例如它禁止加载未签名的内核扩展
封闭系统快照是苹果在**macOS Big SurmacOS 11**中引入的一个功能,作为其**系统完整性保护SIP**机制的一部分,提供了额外的安全性和系统稳定性。它们本质上是系统卷的只读版本。
以下是更详细的介绍
以下是更详细的说明
1. **不可变系统**封闭系统快照使macOS系统卷变为“不可变”意味着它不能被修改。这可以防止任何未经授权或意外的对系统的更改从而可能危及安全性或系统稳定性。
2. **系统软件更新**当您安装macOS更新或升级时macOS会创建一个新的系统快照。然后macOS启动卷使用**APFSApple文件系统**切换到这个新的快照。如果在更新过程中出现问题,系统始终可以恢复到先前的快照,使应用更新的整个过程更加安全可靠
2. **系统软件更新**当您安装macOS更新或升级时macOS会创建一个新的系统快照。然后macOS启动卷使用**APFSApple文件系统**切换到这个新的快照。整个应用更新的过程变得更加安全可靠,因为如果在更新过程中出现问题,系统始终可以恢复到之前的快照
3. **数据分离**结合在macOS Catalina中引入的数据和系统卷分离的概念封闭系统快照功能确保所有数据和设置存储在单独的“**数据**”卷上。这种分离使您的数据与系统独立,简化了系统更新的过程,并增强了系统安全性。
请记住这些快照由macOS自动管理并且由于APFS的空间共享功能它们不会占用额外的磁盘空间。还需要注意的是这些快照与**Time Machine快照**不同,后者是用户可访问的整个系统的备份。
### 检查快照
命令**`diskutil apfs list`**列出了APFS卷的详细信息布局:
命令**`diskutil apfs list`**列出了APFS卷的详细信息及其布局:
<pre><code>+-- Container disk3 966B902E-EDBA-4775-B743-CF97A0556A13
| ====================================================
| APFS Container Reference: disk3
| Size (Capacity Ceiling): 494384795648 B (494.4 GB)
| Capacity In Use By Volumes: 219214536704 B (219.2 GB) (44.3% used)
| Capacity Not Allocated: 275170258944 B (275.2 GB) (55.7% free)
| APFS容器引用: disk3
| 大小(容量上限): 494384795648 B494.4 GB
| 卷使用的容量: 219214536704 B219.2 GB使用了44.3%
| 未分配的容量: 275170258944 B275.2 GB空闲了55.7%
| |
| +-&#x3C; Physical Store disk0s2 86D4B7EC-6FA5-4042-93A7-D3766A222EBE
| +-&#x3C; 物理存储器 disk0s2 86D4B7EC-6FA5-4042-93A7-D3766A222EBE
| | -----------------------------------------------------------
| | APFS Physical Store Disk: disk0s2
| | Size: 494384795648 B (494.4 GB)
| | APFS物理存储器磁盘: disk0s2
| | 大小: 494384795648 B494.4 GB
| |
| +-> Volume disk3s1 7A27E734-880F-4D91-A703-FB55861D49B7
| +-> disk3s1 7A27E734-880F-4D91-A703-FB55861D49B7
| | ---------------------------------------------------
| | APFS Volume Disk (Role): disk3s1 (System)
| | Name: Macintosh HD (Case-insensitive)
| | Mount Point: /System/Volumes/Update/mnt1
| | Capacity Consumed: 128192102
<strong>| | APFS卷
| | 快照磁盘: disk3s1s1
| | 快照挂载点: /
<strong>| | 快照已封存: 是
<strong>| | 快照挂载点: /
</strong><strong>| | 快照已封存: 是
</strong>[...]
+-> 卷 disk3s5 281959B7-07A1-4940-BDDF-6419360F3327
| ---------------------------------------------------
| APFS 卷磁盘 (角色): disk3s5 (数据)
| 名称: Macintosh HD - Data (不区分大小写)
<strong> | 挂载点: /System/Volumes/Data
</strong><strong> | 已使用容量: 412071784448 B (412.1 GB)
</strong> | 封存: 否
| FileVault: 是 (已解锁)
</code></pre>
在上面的输出中,可以看到**macOS系统卷快照已被封存**由操作系统进行了加密签名。因此如果绕过SIP并对其进行修改**操作系统将无法启动**。
在上面的输出中,可以看到**用户可访问的位置**被挂载在`/System/Volumes/Data`下
还可以通过运行以下命令来验证封存是否已启用:
```
此外,**macOS系统卷快照**被挂载在`/`下,并且它是**已封存**的由操作系统进行了加密签名。因此如果绕过SIP并对其进行修改**操作系统将无法启动**。
还可以通过运行以下命令**验证封存是否已启用**
```bash
csrutil authenticated-root status
Authenticated Root status: enabled
```
此外,被挂载为**只读**
此外,快照磁盘也被挂载为**只读**
```
mount
/dev/disk3s1s1 on / (apfs, sealed, local, read-only, journaled)
@ -161,10 +168,10 @@ mount
<summary><a href="https://cloud.hacktricks.xyz/pentesting-cloud/pentesting-cloud-methodology"><strong>☁️ HackTricks 云 ☁️</strong></a> -<a href="https://twitter.com/hacktricks_live"><strong>🐦 推特 🐦</strong></a> - <a href="https://www.twitch.tv/hacktricks_live/schedule"><strong>🎙️ Twitch 🎙️</strong></a> - <a href="https://www.youtube.com/@hacktricks_LIVE"><strong>🎥 Youtube 🎥</strong></a></summary>
* 你在一家**网络安全公司**工作吗?想要在 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),或者**关注**我在**推特**上的[**🐦**](https://github.com/carlospolop/hacktricks/tree/7af18b62b3bdc423e11444677a6a73d4043511e9/\[https:/emojipedia.org/bird/README.md)[**@carlospolopm**](https://twitter.com/hacktricks\_live)**。**
* 你在一家 **网络安全公司** 工作吗?想要在 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 来分享你的黑客技巧。**
</details>