# macOS安全保护
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS红队专家)!
支持HackTricks的其他方式:
- 如果您想看到您的**公司在HackTricks中做广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
- 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
- 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们独家的[NFT](https://opensea.io/collection/the-peass-family)收藏品
- **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或 **关注**我的**Twitter** 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
- 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。
## Gatekeeper
Gatekeeper通常用于指代**Quarantine + Gatekeeper + XProtect**的组合,这是3个macOS安全模块,旨在**阻止用户执行潜在恶意软件下载**。
更多信息:
{% content-ref url="macos-gatekeeper.md" %}
[macos-gatekeeper.md](macos-gatekeeper.md)
{% endcontent-ref %}
## 进程限制
### SIP - 系统完整性保护
{% content-ref url="macos-sip.md" %}
[macos-sip.md](macos-sip.md)
{% endcontent-ref %}
### 沙盒
macOS沙盒**限制在沙盒内运行的应用程序**执行沙盒配置文件中指定的**允许操作**。这有助于确保**应用程序仅访问预期资源**。
{% content-ref url="macos-sandbox/" %}
[macos-sandbox](macos-sandbox/)
{% endcontent-ref %}
### TCC - **透明度、同意和控制**
**TCC(透明度、同意和控制)**是一个安全框架。它旨在**管理应用程序的权限**,特别是通过规范它们对敏感功能的访问。这包括诸如**位置服务、联系人、照片、麦克风、摄像头、辅助功能和完全磁盘访问**等元素。TCC确保应用程序只能在获得明确用户同意后访问这些功能,从而增强隐私和对个人数据的控制。
{% content-ref url="macos-tcc/" %}
[macos-tcc](macos-tcc/)
{% endcontent-ref %}
### 启动/环境约束和信任缓存
macOS中的启动约束是一项安全功能,通过将系统二进制文件分类到**信任缓存**中的约束类别,来**规范进程启动**,定义**谁可以启动**进程,**如何启动**以及**从何处启动**。在macOS Ventura中引入,每个可执行二进制文件都有其**启动**规则,包括**自身**、**父级**和**负责**约束。在macOS Sonoma中扩展到第三方应用程序作为**环境**约束,这些功能有助于通过管理进程启动条件来减轻潜在的系统利用。
{% content-ref url="macos-launch-environment-constraints.md" %}
[macos-launch-environment-constraints.md](macos-launch-environment-constraints.md)
{% endcontent-ref %}
## MRT - 恶意软件移除工具
恶意软件移除工具(MRT)是macOS安全基础设施的另一部分。顾名思义,MRT的主要功能是**从受感染系统中删除已知的恶意软件**。
一旦在Mac上检测到恶意软件(无论是通过XProtect还是其他方式),MRT可用于自动**删除恶意软件**。MRT在后台静默运行,通常在系统更新时运行,或者在下载新的恶意软件定义时运行(看起来MRT用于检测恶意软件的规则在二进制文件中)。
虽然XProtect和MRT都是macOS安全措施的一部分,但它们执行不同的功能:
- **XProtect**是一种预防工具。它会在文件下载时(通过某些应用程序)**检查文件**,如果检测到任何已知类型的恶意软件,它会**阻止文件打开**,从而防止恶意软件首次感染您的系统。
- 另一方面,**MRT**是一种**响应式工具**。它在系统上检测到恶意软件后运行,目的是删除有问题的软件以清理系统。
MRT应用程序位于**`/Library/Apple/System/Library/CoreServices/MRT.app`**
## 后台任务管理
**macOS**现在会**警告**每当工具使用已知的**持久代码执行技术**(如登录项、守护程序等)时,因此用户更清楚**哪些软件是持久的**。
这是通过位于`/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/backgroundtaskmanagementd`的**守护程序**和位于`/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Support/BackgroundTaskManagementAgent.app`的**代理**来运行的。
**`backgroundtaskmanagementd`**知道某个东西安装在持久文件夹中的方式是通过**获取FSEvents**并为其创建一些**处理程序**。
此外,有一个包含由苹果维护的**常见应用程序**的属性列表文件,位于:`/System/Library/PrivateFrameworks/BackgroundTaskManagement.framework/Versions/A/Resources/attributions.plist`
```json
[...]
"us.zoom.ZoomDaemon" => {
"AssociatedBundleIdentifiers" => [
0 => "us.zoom.xos"
]
"Attribution" => "Zoom"
"Program" => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
"ProgramArguments" => [
0 => "/Library/PrivilegedHelperTools/us.zoom.ZoomDaemon"
]
"TeamIdentifier" => "BJ4HAAB9B3"
}
[...]
```
### 枚举
可以使用Apple的cli工具**枚举所有**配置的后台项目:
```bash
# The tool will always ask for the users password
sfltool dumpbtm
```
此外,您还可以使用[**DumpBTM**](https://github.com/objective-see/DumpBTM)列出这些信息。
```bash
# You need to grant the Terminal Full Disk Access for this to work
chmod +x dumpBTM
xattr -rc dumpBTM # Remove quarantine attr
./dumpBTM
```
这些信息被存储在 **`/private/var/db/com.apple.backgroundtaskmanagement/BackgroundItems-v4.btm`** 中,终端需要 FDA。
### 操纵 BTM
当发现新的持久性时,会触发一个类型为 **`ES_EVENT_TYPE_NOTIFY_BTM_LAUNCH_ITEM_ADD`** 的事件。因此,任何一种**阻止**发送此**事件**或**代理警告**用户的方法都将帮助攻击者_**绕过**_ BTM。
* **重置数据库**:运行以下命令将重置数据库(应该从头开始重建),但是出于某种原因,在运行此命令后,**直到系统重新启动之前,不会警告任何新的持久性**。
* 需要**root**权限。
```bash
# Reset the database
sfltool resettbtm
```
* **停止代理程序**:可以向代理程序发送停止信号,这样当发现新的检测时,**就不会提醒用户**。
```bash
# Get PID
pgrep BackgroundTaskManagementAgent
1011
# Stop it
kill -SIGSTOP 1011
# Check it's stopped (a T means it's stopped)
ps -o state 1011
T
```
* **漏洞**: 如果**创建持久性的进程**在其后立即快速存在,守护程序将尝试**获取有关其信息**,**失败**,并且**无法发送事件**指示有新的持久性事物存在。
有关BTM的**更多信息**和**参考资料**:
* [https://youtu.be/9hjUmT031tc?t=26481](https://youtu.be/9hjUmT031tc?t=26481)
* [https://www.patreon.com/posts/new-developer-77420730?l=fr](https://www.patreon.com/posts/new-developer-77420730?l=fr)
* [https://support.apple.com/en-gb/guide/deployment/depdca572563/web](https://support.apple.com/en-gb/guide/deployment/depdca572563/web)
从零开始学习AWS黑客技术,成为专家 htARTE(HackTricks AWS Red Team Expert)!
支持HackTricks的其他方式:
* 如果您想在HackTricks中看到您的**公司广告**或**下载PDF格式的HackTricks**,请查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
* 获取[**官方PEASS & HackTricks周边产品**](https://peass.creator-spring.com)
* 探索[**PEASS家族**](https://opensea.io/collection/the-peass-family),我们的独家[**NFTs**](https://opensea.io/collection/the-peass-family)
* **加入** 💬 [**Discord群**](https://discord.gg/hRep4RUj7f) 或 [**电报群**](https://t.me/peass) 或在**Twitter**上关注我 🐦 [**@carlospolopm**](https://twitter.com/carlospolopm)**。**
* 通过向[**HackTricks**](https://github.com/carlospolop/hacktricks)和[**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github仓库提交PR来分享您的黑客技巧。