From a0261f37eb57b48362e9260f794b38d0ae7d87bd Mon Sep 17 00:00:00 2001 From: Translator Date: Wed, 27 Dec 2023 01:57:04 +0000 Subject: [PATCH] Translated ['macos-hardening/macos-security-and-privilege-escalation/mac --- .../macos-fs-tricks/README.md | 126 ++++++++++-------- .../macos-tcc/README.md | 109 ++++++++++----- 2 files changed, 146 insertions(+), 89 deletions(-) diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md index fd1cea502..f905ef304 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-fs-tricks/README.md @@ -1,50 +1,52 @@ -# macOS文件系统技巧 +# macOS FS 技巧
-☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥 +☁️ 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)! +* 发现我们的独家[**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来分享您的黑客技巧。**
-## POSIX权限组合 +## POSIX 权限组合 **目录**中的权限: -* **读取** - 你可以**枚举**目录条目 -* **写入** - 你可以**删除/写入**目录中的文件 -* **执行** - 你被**允许遍历**目录 - 如果你没有这个权限,你无法访问其中的任何文件,或者任何子目录中的文件。 +* **读取** - 您可以**列举**目录条目 +* **写入** - 您可以在目录中**删除/写入** **文件**,并且可以**删除空文件夹**。 +* 但是您**无法删除/修改非空文件夹**,除非您对其有写入权限。 +* 您**无法修改文件夹的名称**,除非您拥有它。 +* **执行** - 您被**允许遍历**目录 - 如果您没有这个权限,您无法访问其中的任何文件,或任何子目录中的文件。 ### 危险组合 -如何覆盖由root拥有的文件/文件夹,但是: +**如何覆盖由root拥有的文件/文件夹**,但: * 路径中的一个父**目录所有者**是用户 -* 路径中的一个父**目录所有者**是具有**写入权限**的**用户组** -* 一个用户**组**对**文件**具有**写入**权限 +* 路径中的一个父**目录所有者**是拥有**写入权限**的**用户组** +* 一个用户**组**对**文件**有**写入**权限 -使用上述任何组合,攻击者可以通过在预期路径中**注入**一个**符号/硬链接**来获得特权任意写入。 +有了以上任何一种组合,攻击者可以**注入**一个**符号/硬链接**到预期路径,以获得特权的任意写入。 -### 文件夹根目录 R+X 特殊情况 +### 文件夹root R+X特殊情况 -如果一个**目录**中有**只有root具有R+X访问权限**的文件,那么其他人是**无法访问**这些文件的。因此,如果存在一个漏洞,允许将一个由用户可读但由于该**限制**而无法读取的文件从这个文件夹**移动到另一个文件夹**,则可以滥用该漏洞来读取这些文件。 +如果一个**目录**中有文件,**只有root有R+X权限**,那么其他人**无法访问**这些文件。因此,如果存在一个漏洞允许**移动用户可读的文件**,但由于该**限制**而无法读取的文件,从这个文件夹**移动到另一个文件夹**,可能会被滥用来读取这些文件。 -示例:[https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/#nix-directory-permissions](https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/#nix-directory-permissions) +示例在:[https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/#nix-directory-permissions](https://theevilbit.github.io/posts/exploiting\_directory\_permissions\_on\_macos/#nix-directory-permissions) ## 符号链接 / 硬链接 -如果一个特权进程正在写入**文件**,该文件可能由**权限较低的用户**控制,或者可能由权限较低的用户**先前创建**。用户可以通过符号链接或硬链接将其指向另一个文件,特权进程将在该文件上写入。 +如果一个特权进程正在向**文件**写入数据,而这个文件可能被**低权限用户控制**,或者可能被低权限用户**预先创建**。用户可以通过符号链接或硬链接**指向另一个文件**,特权进程将在该文件上写入。 -在其他部分中查看攻击者可以**滥用任意写入来提升权限**的地方。 +在其他部分检查攻击者如何**滥用任意写入来提升权限**。 ## .fileloc -具有**`.fileloc`**扩展名的文件可以指向其他应用程序或二进制文件,因此当打开它们时,将执行该应用程序/二进制文件。\ +带有**`.fileloc`**扩展名的文件可以指向其他应用程序或二进制文件,所以当它们被打开时,将执行该应用程序/二进制文件。\ 示例: ```xml @@ -60,19 +62,19 @@ ``` ## 任意文件描述符 -如果你能让一个进程以高权限打开一个文件或文件夹,你可以滥用 `crontab` 来使用 `EDITOR=exploit.py` 打开 `/etc/sudoers.d` 中的一个文件,这样 `exploit.py` 将获取到 `/etc/sudoers` 中文件的文件描述符并滥用它。 +如果你能让一个**进程以高权限打开一个文件或文件夹**,你可以滥用**`crontab`**,通过设置**`EDITOR=exploit.py`**来打开`/etc/sudoers.d`中的文件,这样`exploit.py`就能获取到`/etc/sudoers`文件内的文件描述符,并滥用它。 例如:[https://youtu.be/f1HA5QhLQ7Y?t=21098](https://youtu.be/f1HA5QhLQ7Y?t=21098) -## 避免隔离 xattrs 的技巧 +## 绕过隔离属性技巧 -### 删除它 +### 移除它 ```bash xattr -d com.apple.quarantine /path/to/file_or_app ``` ### uchg / uchange / uimmutable 标志 -如果一个文件/文件夹具有这个不可变属性,就无法在其上放置 xattr。 +如果一个文件/文件夹具有这个不可变属性,将无法在其上添加 xattr ```bash echo asd > /tmp/asd chflags uchg /tmp/asd # "chflags uchange /tmp/asd" or "chflags uimmutable /tmp/asd" @@ -84,7 +86,7 @@ ls -lO /tmp/asd ``` ### defvfs 挂载 -**devfs** 挂载**不支持 xattr**,更多信息请参考 [**CVE-2023-32364**](https://gergelykalman.com/CVE-2023-32364-a-macOS-sandbox-escape-by-mounting.html) +**devfs** 挂载**不支持 xattr**,更多信息见 [**CVE-2023-32364**](https://gergelykalman.com/CVE-2023-32364-a-macOS-sandbox-escape-by-mounting.html) ```bash mkdir /tmp/mnt mount_devfs -o noowners none "/tmp/mnt" @@ -93,9 +95,9 @@ mkdir /tmp/mnt/lol xattr -w com.apple.quarantine "" /tmp/mnt/lol xattr: [Errno 1] Operation not permitted: '/tmp/mnt/lol' ``` -### 写入扩展属性访问控制列表(ACL) +### writeextattr ACL -此ACL防止向文件添加`xattrs`。 +此ACL防止向文件添加`xattrs` ```bash rm -rf /tmp/test* echo test >/tmp/test @@ -118,13 +120,13 @@ ls -le /tmp/test ``` ### **com.apple.acl.text xattr + AppleDouble** -**AppleDouble**文件格式会复制包括ACEs在内的文件。 +**AppleDouble** 文件格式会复制文件及其访问控制条目(ACEs)。 -在[**源代码**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html)中,可以看到存储在名为**`com.apple.acl.text`**的xattr中的ACL文本表示将被设置为解压后文件的ACL。因此,如果您将应用程序压缩为使用**AppleDouble**文件格式的zip文件,并且该ACL阻止其他xattr写入它...则隔离xattr不会设置到应用程序中: +在[**源代码**](https://opensource.apple.com/source/Libc/Libc-391/darwin/copyfile.c.auto.html)中可以看到,存储在名为 **`com.apple.acl.text`** 的 xattr 内的 ACL 文本表示将被设置为解压缩文件的 ACL。因此,如果你将一个应用程序压缩成带有防止其他 xattrs 被写入的 ACL 的 **AppleDouble** 文件格式的 zip 文件...隔离 xattr 没有被设置到应用程序中: -有关更多信息,请查看[**原始报告**](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)。 +查看[**原始报告**](https://www.microsoft.com/en-us/security/blog/2022/12/19/gatekeepers-achilles-heel-unearthing-a-macos-vulnerability/)获取更多信息。 -要复制此操作,首先需要获取正确的acl字符串: +要复制这个我们首先需要获取正确的 acl 字符串: ```bash # Everything will be happening here mkdir /tmp/temp_xattrs @@ -142,9 +144,9 @@ ditto -c -k del test.zip ditto -x -k --rsrc test.zip . ls -le test ``` -(请注意,即使这样做,沙盒也会在此之前写入隔离的xattr) +(请注意,即使这样做,沙盒在之前也会写入隔离 xattr) -虽然不是必需的,但我还是把它放在这里以防万一: +虽然不是必须的,但我还是保留在这里,以防万一: {% content-ref url="macos-xattr-acls-extra-stuff.md" %} [macos-xattr-acls-extra-stuff.md](macos-xattr-acls-extra-stuff.md) @@ -152,9 +154,9 @@ ls -le test ## 绕过代码签名 -Bundle包含文件**`_CodeSignature/CodeResources`**,其中包含**bundle**中每个**文件**的**哈希值**。请注意,CodeResources的哈希值也**嵌入在可执行文件**中,因此我们不能对其进行更改。 +包含文件 **`_CodeSignature/CodeResources`** 的包,其中包含了包内每个**文件**的**哈希值**。注意,CodeResources 的哈希值也被**嵌入到可执行文件中**,所以我们也不能干扰它。 -然而,有一些文件的签名不会被检查,这些文件在plist中具有omit键,例如: +然而,有些文件的签名不会被检查,这些文件在 plist 中有 omit 键,例如: ```xml ... @@ -198,18 +200,28 @@ Bundle包含文件**`_CodeSignature/CodeResources`**,其中包含**bundle**中 ... ``` -可以使用以下命令行计算资源的签名: +```bash +codesign -d --verbose=4 /path/to/resource +``` +{% endcode %} + +这可以通过命令行界面计算资源的签名: {% code overflow="wrap" %} ```bash +codesign -d --verbose=4 /path/to/resource +``` +{% endcode %} +```bash openssl dgst -binary -sha1 /System/Cryptexes/App/System/Applications/Safari.app/Contents/Resources/AppIcon.icns | openssl base64 ``` -## 挂载DMG +{% endcode %} -用户可以挂载自定义的DMG,甚至可以覆盖一些现有的文件夹。以下是创建包含自定义内容的自定义DMG包的方法: +## 挂载 dmg 文件 -```overflow="wrap" -``` +即使在一些现有文件夹之上,用户也可以挂载一个自定义的 dmg 文件。以下是您如何创建一个带有自定义内容的自定义 dmg 包: + +{% code overflow="wrap" %} ```bash # Create the volume hdiutil create /private/tmp/tmp.dmg -size 2m -ov -volname CustomVolName -fs APFS 1>/dev/null @@ -234,15 +246,15 @@ hdiutil create -srcfolder justsome.app justsome.dmg ## 任意写入 -### 定期的 sh 脚本 +### 定期 sh 脚本 -如果你的脚本可以被解释为一个 **shell 脚本**,你可以覆盖 **`/etc/periodic/daily/999.local`** shell 脚本,该脚本将每天触发一次。 +如果你的脚本可以被解释为一个**shell 脚本**,你可以覆盖**`/etc/periodic/daily/999.local`** shell 脚本,它将每天被触发。 -你可以使用以下命令**伪造**执行该脚本:**`sudo periodic daily`** +你可以用以下命令**伪造**这个脚本的执行:**`sudo periodic daily`** ### 守护进程 -编写一个任意的 **LaunchDaemon**,比如 **`/Library/LaunchDaemons/xyz.hacktricks.privesc.plist`**,其中包含一个执行任意脚本的 plist 文件,例如: +写一个任意的**LaunchDaemon**,如**`/Library/LaunchDaemons/xyz.hacktricks.privesc.plist`**,它执行一个任意脚本,例如: ```xml @@ -259,17 +271,18 @@ hdiutil create -srcfolder justsome.app justsome.dmg ``` -只需生成脚本`/Applications/Scripts/privesc.sh`,其中包含您想以root身份运行的**命令**。 +```markdown +只需生成脚本 `/Applications/Scripts/privesc.sh` 并写入您希望以 root 身份运行的**命令**。 -### Sudoers文件 +### Sudoers 文件 -如果您具有**任意写入权限**,可以在**`/etc/sudoers.d/`**文件夹中创建一个文件,授予自己**sudo**权限。 +如果您具有**任意写入**权限,您可以在 **`/etc/sudoers.d/`** 文件夹内创建一个文件,为自己授予 **sudo** 权限。 -### PATH文件 +### PATH 文件 -文件**`/etc/paths`**是填充PATH环境变量的主要位置之一。您必须是root才能覆盖它,但如果来自**特权进程**的脚本正在执行一些**没有完整路径的命令**,您可能可以通过修改此文件来**劫持**它。 +文件 **`/etc/paths`** 是填充 PATH 环境变量的主要位置之一。您必须是 root 才能覆盖它,但如果一个**特权进程**的脚本正在执行某些**没有完整路径的命令**,您可能可以通过修改此文件来**劫持**它。 -您还可以在**`/etc/paths.d`**中编写文件,以将新文件夹加载到`PATH`环境变量中。 + 您还可以在 **`/etc/paths.d`** 中写入文件,将新文件夹加载到 `PATH` 环境变量中。 ## 参考资料 @@ -279,10 +292,11 @@ hdiutil create -srcfolder justsome.app justsome.dmg ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* 您在**网络安全公司**工作吗?您想在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** 中看到您的**公司广告**吗? 或者您想要访问**最新版本的 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 来**分享您的黑客技巧**。 +``` diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md index d6d236d1a..cb421594c 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-tcc/README.md @@ -4,9 +4,9 @@ ☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥 -* 如果您在**网络安全公司**工作,想在**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 & 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)**。** * **通过向**[**hacktricks仓库**](https://github.com/carlospolop/hacktricks) **和** [**hacktricks-cloud仓库**](https://github.com/carlospolop/hacktricks-cloud) **提交PR来分享您的黑客技巧。** @@ -40,11 +40,11 @@ ps -ef | grep tcc * 系统范围的数据库位于 **`/Library/Application Support/com.apple.TCC/TCC.db`**。 * 该数据库受到 **SIP 保护**,因此只有 SIP 绕过才能写入它。 -* 用户 TCC 数据库 **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`** 用于每个用户的偏好设置。 -* 该数据库受保护,因此只有具有高级 TCC 权限的进程(如完全磁盘访问)才能写入它(但它不受 SIP 保护)。 +* 针对每个用户偏好设置的用户 TCC 数据库 **`$HOME/Library/Application Support/com.apple.TCC/TCC.db`**。 +* 该数据库受保护,因此只有具有高级 TCC 权限(如完全磁盘访问)的进程才能写入它(但它不受 SIP 保护)。 {% hint style="warning" %} -上述数据库也**受 TCC 保护以限制读取访问**。因此,除非是来自具有 TCC 权限的进程,否则您**无法读取**您的常规用户 TCC 数据库。 +上述数据库也**受 TCC 保护以限制读取访问**。因此,除非是来自具有 TCC 权限的进程,否则您**无法读取**常规用户的 TCC 数据库。 然而,请记住,具有这些高权限的进程(如 **FDA** 或 **`kTCCServiceEndpointSecurityClient`**)将能够写入用户的 TCC 数据库。 {% endhint %} @@ -59,7 +59,7 @@ ps -ef | grep tcc {% endhint %} {% hint style="info" %} -**通知中心 UI** 可以在系统 TCC 数据库中进行**更改**: +**通知中心 UI** 可以对系统 TCC 数据库进行**更改**: {% code overflow="wrap" %} ```bash @@ -123,7 +123,7 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0; {% endtabs %} {% hint style="success" %} -检查这两个数据库,你可以检查应用程序已允许、已禁止或没有的权限(它会请求权限)。 +检查这两个数据库,您可以检查应用程序已允许、已禁止或没有的权限(它将请求权限)。 {% endhint %} * **`service`** 是 TCC **权限**的字符串表示形式 @@ -171,7 +171,7 @@ sqlite> select * from access where client LIKE "%telegram%" and auth_value=0; ``` -
+
* **`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) @@ -196,7 +196,7 @@ echo "X'$REQ_HEX'" 您还可以在 `系统偏好设置 --> 安全性与隐私 --> 隐私 --> 文件与文件夹` 中检查**已授予应用程序的权限**。 {% hint style="success" %} -用户 _可以_ 使用 **`tccutil`** **删除或查询规则**。 +用户_可以_使用 **`tccutil`** **删除或查询规则**。 {% endhint %} #### 重置 TCC 权限 @@ -234,9 +234,9 @@ csreq -t -r /tmp/telegram_csreq.bin 应用程序**不仅需要** **请求**并已被**授予访问**某些资源的权限,它们还需要**具有相关的权限**。\ 例如,**Telegram** 有权限 `com.apple.security.device.camera` 来请求**访问摄像头**。一个**没有**这个**权限的应用程序将无法**访问摄像头(用户甚至不会被询问权限)。 -然而,对于应用程序来说,要**访问**某些用户文件夹,如 `~/Desktop`、`~/Downloads` 和 `~/Documents`,它们**不需要**具有任何特定的**权限**。系统将透明地处理访问并在需要时**提示用户**。 +然而,对于应用程序来说,要**访问**某些**用户文件夹**,如 `~/Desktop`、`~/Downloads` 和 `~/Documents`,它们**不需要**具有任何特定的**权限**。系统将透明地处理访问并在需要时**提示用户**。 -苹果的应用程序**不会生成提示**。它们在其**权限**列表中包含**预先授予的权利**,这意味着它们将**永远不会生成弹出窗口**,**也不**会出现在任何**TCC 数据库中**。例如: +苹果的应用程序**不会生成提示**。它们包含在其**权限**列表中的**预先授予的权利**,这意味着它们将**永远不会生成弹出窗口**,**也不会**出现在任何**TCC 数据库中**。例如: ```bash codesign -dv --entitlements :- /System/Applications/Calendar.app [...] @@ -258,12 +258,12 @@ codesign -dv --entitlements :- /System/Applications/Calendar.app ### 敏感的未受保护地方 * $HOME(本身) -* $HOME/.ssh、$HOME/.aws 等 +* $HOME/.ssh, $HOME/.aws 等 * /tmp ### 用户意图 / com.apple.macl -如前所述,可以通过将文件拖放到应用程序上来**授予应用程序对文件的访问权限**。这种访问不会在任何TCC数据库中指定,而是作为文件的**扩展属性**。此属性将**存储允许应用程序的UUID**: +如前所述,可以通过将文件拖放到应用程序上来**授予应用程序对文件的访问权限**。这种访问不会在任何TCC数据库中指定,而是作为文件的**扩展** **属性**。此属性将**存储**允许应用程序的UUID: ```bash xattr Desktop/private.txt com.apple.macl @@ -279,18 +279,18 @@ otool -l /System/Applications/Utilities/Terminal.app/Contents/MacOS/Terminal| gr uuid 769FD8F1-90E0-3206-808C-A8947BEBD6C3 ``` {% hint style="info" %} -值得注意的是,**`com.apple.macl`** 属性是由 **Sandbox** 管理,而不是 tccd。 +值得注意的是,**`com.apple.macl`** 属性是由 **Sandbox** 管理的,而不是 tccd。 另外请注意,如果您将允许计算机中某个应用的 UUID 的文件移动到另一台计算机,因为相同的应用将有不同的 UIDs,它不会授予那个应用访问权限。 {% 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 -如果您在某个时刻设法获得了对 TCC 数据库的写入权限,您可以使用类似以下的方法来添加一个条目(移除注释): +如果您在某个时刻设法获得了对 TCC 数据库的写入权限,您可以使用类似以下的方法添加一个条目(移除注释):
@@ -336,16 +336,16 @@ strftime('%s', 'now') -- last_reminded with default current timestamp ```
-### 自动化到FDA\* +### 自动化 (Finder) 到 FDA\* -TCC中自动化权限的名称是:**`kTCCServiceAppleEvents`**\ -这个特定的TCC权限还指出了可以在TCC数据库中管理的**应用程序**(所以权限并不允许管理所有内容)。 +TCC 权限的自动化权限名称是:**`kTCCServiceAppleEvents`**\ +这个特定的 TCC 权限还表明了可以在 TCC 数据库中管理的**应用程序**(所以权限并不是允许管理所有东西)。 -**Finder**是一个**总是拥有FDA**的应用程序(即使它没有出现在UI中),所以如果你拥有对它的**自动化**权限,你可以滥用它的权限来**让它执行一些操作**。\ -在这种情况下,你的应用程序将需要对**`com.apple.Finder`**的**`kTCCServiceAppleEvents`**权限。 +**Finder** 是一个**始终拥有 FDA** 的应用程序(即使它没有出现在 UI 中),所以如果你拥有对它的**自动化**权限,你可以滥用它的权限来**让它执行一些操作**。\ +在这种情况下,你的应用程序需要对 **`com.apple.Finder`** 的 **`kTCCServiceAppleEvents`** 权限。 {% tabs %} -{% tab title="窃取用户的TCC.db" %} +{% tab title="窃取用户的 TCC.db" %} ```applescript # This AppleScript will copy the system TCC database into /tmp osascript< -同样的情况发生在 **Script Editor 应用程序**,它可以控制 Finder,但使用 AppleScript 你不能强制它执行脚本。 +同样的情况也发生在**Script Editor app,** 它可以控制Finder,但使用AppleScript你不能强制它执行脚本。 -### 自动化 + 辅助功能(**`kTCCServicePostEvent`**)到 FDA\* +### 自动化 (SE) 到某些TCC -在 **`System Events`** 上的自动化 + 辅助功能(**`kTCCServicePostEvent`**)允许向进程发送 **按键指令**。通过这种方式,你可以滥用 Finder 来更改用户的 TCC.db 或者给任意应用程序授权 FDA(尽管这样做可能会提示输入密码)。 +系统事件可以创建文件夹操作,而文件夹操作可以访问一些TCC文件夹,因此可以使用如下脚本来滥用这种行为: +```bash +# Create script to execute with the action +cat > "/tmp/script.js" <