mirror of
https://github.com/HackTricks-wiki/hacktricks.git
synced 2025-10-10 18:36:50 +00:00
Translated ['src/macos-hardening/macos-security-and-privilege-escalation
This commit is contained in:
parent
f214af3349
commit
f03ab79d13
@ -288,7 +288,6 @@
|
||||
- [PsExec/Winexec/ScExec](windows-hardening/lateral-movement/psexec-and-winexec.md)
|
||||
- [RDPexec](windows-hardening/lateral-movement/rdpexec.md)
|
||||
- [SCMexec](windows-hardening/lateral-movement/scmexec.md)
|
||||
- [SmbExec/ScExec](windows-hardening/lateral-movement/smbexec.md)
|
||||
- [WinRM](windows-hardening/lateral-movement/winrm.md)
|
||||
- [WmiExec](windows-hardening/lateral-movement/wmiexec.md)
|
||||
- [Pivoting to the Cloud$$external:https://cloud.hacktricks.wiki/en/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/index.html$$]()
|
||||
|
@ -6,7 +6,7 @@
|
||||
|
||||
**TCC (透明性、同意和控制)** 是一种安全协议,专注于规范应用程序权限。其主要作用是保护敏感功能,如 **位置服务、联系人、照片、麦克风、相机、辅助功能和完整磁盘访问**。通过在授予应用程序访问这些元素之前要求用户明确同意,TCC 增强了隐私和用户对其数据的控制。
|
||||
|
||||
当应用程序请求访问受保护功能时,用户会遇到 TCC。这通过一个提示可见,允许用户 **批准或拒绝访问**。此外,TCC 还支持用户的直接操作,例如 **将文件拖放到应用程序中**,以授予对特定文件的访问,确保应用程序仅访问明确允许的内容。
|
||||
当应用程序请求访问受保护的功能时,用户会遇到 TCC。这通过一个提示可见,允许用户 **批准或拒绝访问**。此外,TCC 还支持用户的直接操作,例如 **将文件拖放到应用程序中**,以授予对特定文件的访问,确保应用程序仅访问明确允许的内容。
|
||||
|
||||

|
||||
|
||||
@ -14,7 +14,7 @@
|
||||
|
||||
每个登录用户都有一个 **用户模式 tccd** 在运行,定义在 `/System/Library/LaunchAgents/com.apple.tccd.plist` 中,注册 mach 服务 `com.apple.tccd` 和 `com.apple.usernotifications.delegate.com.apple.tccd`。
|
||||
|
||||
在这里,您可以看到 tccd 作为系统和用户运行:
|
||||
在这里可以看到 tccd 作为系统和用户运行:
|
||||
```bash
|
||||
ps -ef | grep tcc
|
||||
0 374 1 0 Thu07PM ?? 2:01.66 /System/Library/PrivateFrameworks/TCC.framework/Support/tccd system
|
||||
@ -42,7 +42,7 @@ ps -ef | grep tcc
|
||||
- SIP 保护的文件 **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`**(任何人可读)是需要 TCC 例外的应用程序的允许列表。
|
||||
|
||||
> [!TIP]
|
||||
> **iOS** 中的 TCC 数据库在 **`/private/var/mobile/Library/TCC/TCC.db`** 中。
|
||||
> **iOS** 中的 TCC 数据库在 **`/private/var/mobile/Library/TCC/TCC.db`**。
|
||||
|
||||
> [!NOTE]
|
||||
> **通知中心 UI** 可以对**系统 TCC 数据库**进行**更改**:
|
||||
@ -174,7 +174,7 @@ echo "X'$REQ_HEX'"
|
||||
您还可以在`System Preferences --> Security & Privacy --> Privacy --> Files and Folders`中检查**已授予的权限**。
|
||||
|
||||
> [!TIP]
|
||||
> 用户_可以_使用**`tccutil`** **删除或查询规则**。
|
||||
> 用户 _可以_ **使用 `tccutil` 删除或查询规则**。
|
||||
|
||||
#### 重置 TCC 权限
|
||||
```bash
|
||||
@ -186,7 +186,7 @@ tccutil reset All
|
||||
```
|
||||
### TCC 签名检查
|
||||
|
||||
TCC **数据库** 存储应用程序的 **Bundle ID**,但它还 **存储** **信息** 关于 **签名** 以 **确保** 请求使用权限的应用程序是正确的。
|
||||
TCC **数据库** 存储应用程序的 **Bundle ID**,但它还 **存储** **信息** 关于 **签名** 以 **确保** 请求使用权限的应用是正确的。
|
||||
```bash
|
||||
# From sqlite
|
||||
sqlite> select service, client, hex(csreq) from access where auth_value=2;
|
||||
@ -204,11 +204,11 @@ csreq -t -r /tmp/telegram_csreq.bin
|
||||
### 权限与 TCC 权限
|
||||
|
||||
应用程序 **不仅需要** **请求** 并且已经 **获得访问** 某些资源的权限,它们还需要 **拥有相关的权限**。\
|
||||
例如 **Telegram** 拥有权限 `com.apple.security.device.camera` 来请求 **访问相机**。一个 **没有** 这个 **权限的应用** 将无法访问相机(用户甚至不会被询问权限)。
|
||||
例如 **Telegram** 拥有权限 `com.apple.security.device.camera` 来请求 **访问相机**。一个 **没有** 这个 **权限的应用程序将无法** 访问相机(用户甚至不会被询问权限)。
|
||||
|
||||
然而,对于应用程序 **访问** 某些用户文件夹,如 `~/Desktop`、`~/Downloads` 和 `~/Documents`,它们 **不需要** 任何特定的 **权限**。系统将透明地处理访问并 **根据需要提示用户**。
|
||||
|
||||
苹果的应用程序 **不会生成提示**。它们在其 **权限** 列表中包含 **预先授予的权利**,这意味着它们 **永远不会生成弹出窗口**,**也不会** 显示在任何 **TCC 数据库** 中。例如:
|
||||
苹果的应用程序 **不会生成提示**。它们在其 **权限** 列表中包含 **预先授予的权利**,这意味着它们 **永远不会生成弹出窗口**,**也** 不会出现在任何 **TCC 数据库** 中。例如:
|
||||
```bash
|
||||
codesign -dv --entitlements :- /System/Applications/Calendar.app
|
||||
[...]
|
||||
@ -254,13 +254,13 @@ uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
|
||||
>
|
||||
> 还要注意,如果您将允许计算机上某个应用程序的 UUID 的文件移动到另一台计算机,由于同一应用程序将具有不同的 UID,它将不会授予该应用程序访问权限。
|
||||
|
||||
扩展属性 `com.apple.macl` **无法像其他扩展属性那样被清除**,因为它是 **受 SIP 保护的**。然而,正如 [**在这篇文章中解释的**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/),可以通过 **压缩** 文件、**删除** 它和 **解压缩** 它来禁用它。
|
||||
扩展属性 `com.apple.macl` **无法像其他扩展属性那样被清除**,因为它是 **受 SIP 保护的**。然而,正如 [**在这篇文章中解释的**](https://www.brunerd.com/blog/2020/01/07/track-and-tackle-com-apple-macl/),可以通过 **压缩** 文件、**删除** 它和 **解压** 它来禁用它。
|
||||
|
||||
## TCC 权限提升与绕过
|
||||
|
||||
### 插入到 TCC
|
||||
|
||||
如果您在某个时刻成功获得对 TCC 数据库的写入访问权限,可以使用以下内容添加条目(删除注释):
|
||||
如果您在某个时刻成功获得 TCC 数据库的写入访问权限,可以使用以下内容添加条目(删除注释):
|
||||
|
||||
<details>
|
||||
|
||||
@ -398,9 +398,9 @@ EOD
|
||||
|
||||
同样发生在 **Script Editor app**,它可以控制 Finder,但使用 AppleScript 你无法强制它执行脚本。
|
||||
|
||||
### Automation (SE) to some TCC
|
||||
### 自动化 (SE) 到某些 TCC
|
||||
|
||||
**System Events 可以创建文件夹操作,而文件夹操作可以访问一些 TCC 文件夹**(桌面、文档和下载),因此可以使用如下脚本来滥用这种行为:
|
||||
**系统事件可以创建文件夹操作,而文件夹操作可以访问一些 TCC 文件夹**(桌面、文档和下载),因此可以使用如下脚本来滥用这种行为:
|
||||
```bash
|
||||
# Create script to execute with the action
|
||||
cat > "/tmp/script.js" <<EOD
|
||||
@ -444,7 +444,7 @@ rm "$HOME/Desktop/file"
|
||||
```
|
||||
### 自动化 (SE) + 辅助功能 (**`kTCCServicePostEvent`|**`kTCCServiceAccessibility`**)** 到 FDA\*
|
||||
|
||||
在 **`System Events`** + 辅助功能 (**`kTCCServicePostEvent`**) 上的自动化允许向进程发送 **按键**。通过这种方式,您可以滥用 Finder 来更改用户的 TCC.db 或为任意应用程序提供 FDA(尽管可能会提示输入密码)。
|
||||
在 **`System Events`** + 辅助功能 (**`kTCCServicePostEvent`**) 上的自动化允许向 **进程发送按键**。通过这种方式,您可以滥用 Finder 来更改用户的 TCC.db 或为任意应用程序提供 FDA(尽管可能会提示输入密码)。
|
||||
|
||||
Finder 覆盖用户 TCC.db 示例:
|
||||
```applescript
|
||||
@ -502,7 +502,7 @@ EOF
|
||||
|
||||
### 系统策略 SysAdmin 文件到 FDA
|
||||
|
||||
**`kTCCServiceSystemPolicySysAdminFiles`** 允许 **更改** 用户的 **`NFSHomeDirectory`** 属性,这会更改他的主文件夹,从而允许 **绕过 TCC**。
|
||||
**`kTCCServiceSystemPolicySysAdminFiles`** 允许 **更改** 用户的 **`NFSHomeDirectory`** 属性,从而更改他的主文件夹,因此允许 **绕过 TCC**。
|
||||
|
||||
### 用户 TCC 数据库到 FDA
|
||||
|
||||
@ -518,14 +518,14 @@ EOF
|
||||
|
||||
### **SIP 绕过到 TCC 绕过**
|
||||
|
||||
系统 **TCC 数据库** 受到 **SIP** 保护,这就是为什么只有具有 **指示的权限** 的进程才能修改它。因此,如果攻击者找到一个 **SIP 绕过** 通过一个 **文件**(能够修改受 SIP 限制的文件),他将能够:
|
||||
系统 **TCC 数据库** 受到 **SIP** 保护,这就是为什么只有具有 **指示的权利** 的进程才能修改它。因此,如果攻击者找到一个 **SIP 绕过** 通过一个 **文件**(能够修改受 SIP 限制的文件),他将能够:
|
||||
|
||||
- **移除 TCC 数据库的保护**,并授予自己所有 TCC 权限。他可以滥用这些文件中的任何一个,例如:
|
||||
- **移除** TCC 数据库的保护,并授予自己所有 TCC 权限。他可以滥用这些文件中的任何一个,例如:
|
||||
- TCC 系统数据库
|
||||
- REG.db
|
||||
- MDMOverrides.plist
|
||||
|
||||
然而,还有另一种选择可以滥用这个 **SIP 绕过来绕过 TCC**,文件 `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` 是一个需要 TCC 例外的应用程序的允许列表。因此,如果攻击者可以 **移除此文件的 SIP 保护** 并添加自己的 **应用程序**,该应用程序将能够绕过 TCC。\
|
||||
然而,还有另一种选择可以滥用这个 **SIP 绕过以绕过 TCC**,文件 `/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist` 是一个需要 TCC 例外的应用程序的允许列表。因此,如果攻击者可以 **移除此文件的 SIP 保护** 并添加自己的 **应用程序**,该应用程序将能够绕过 TCC。\
|
||||
例如添加终端:
|
||||
```bash
|
||||
# Get needed info
|
||||
|
Loading…
x
Reference in New Issue
Block a user