hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md

11 KiB
Raw Blame History

macOS危险的授权和TCC权限

☁️ HackTricks云 ☁️ -🐦 推特 🐦 - 🎙️ Twitch 🎙️ - 🎥 YouTube 🎥

{% hint style="warning" %} 请注意,以**com.apple**开头的授权仅供Apple授予不对第三方开放。 {% endhint %}

高级

com.apple.rootless.install.heritable

授权**com.apple.rootless.install.heritable允许绕过SIP**。查看此处了解更多信息

com.apple.rootless.install

授权**com.apple.rootless.install允许绕过SIP**。查看此处了解更多信息

com.apple.system-task-ports(以前称为task_for_pid-allow

此授权允许获取除内核以外的任何进程的任务端口。查看此处了解更多信息

com.apple.security.get-task-allow

此授权允许具有**com.apple.security.cs.debugger授权的其他进程获取具有此授权的二进制文件运行的进程的任务端口,并对其进行代码注入**。查看此处了解更多信息

com.apple.security.cs.debugger

具有调试工具授权的应用程序可以调用task_for_pid()来检索未签名和第三方应用程序的有效任务端口,前提是具有Get Task Allow授权设置为true。然而,即使具有调试工具授权,调试器无法获取没有**Get Task Allow授权**的进程的任务端口,因此受到系统完整性保护的保护。查看此处了解更多信息

com.apple.security.cs.disable-library-validation

此授权允许加载未由Apple签名或使用相同的Team ID签名的框架、插件或库,因此攻击者可以滥用某些任意库加载来注入代码。查看此处了解更多信息

com.apple.private.security.clear-library-validation

此授权与**com.apple.security.cs.disable-library-validation非常相似,但不是直接禁用**库验证,而是允许进程调用csops系统调用来禁用它。查看此处了解更多信息

com.apple.security.cs.allow-dyld-environment-variables

此授权允许使用可能用于注入库和代码的DYLD环境变量。查看此处了解更多信息

com.apple.private.tcc.managercom.apple.rootless.storage.TCC

根据此博客此博客,这些授权允许修改TCC数据库。

system.install.apple-softwaresystem.install.apple-software.standar-user

这些授权允许在不要求用户权限的情况下安装软件,这对于特权升级很有帮助。

com.apple.private.security.kext-management

需要此授权来请求内核加载内核扩展

com.apple.private.icloud-account-access

授权**com.apple.private.icloud-account-access可以与com.apple.iCloudHelper** XPC服务进行通信该服务将提供iCloud令牌。

iMovieGarageband具有此授权。

有关从该授权中获取iCloud令牌的漏洞的更多信息,请查看演讲:#OBTS v5.0: "What Happens on your Mac, Stays on Apple's iCloud?!" - Wojciech Regula

com.apple.private.tcc.manager.check-by-audit-token

TODO: 我不知道这个允许做什么。

com.apple.private.apfs.revert-to-snapshot

TODO: 在这份报告中提到这可以在重启后更新受SSV保护的内容。如果你知道如何发送PR请告诉我

com.apple.private.apfs.create-sealed-snapshot

TODO: 在这份报告中提到这可以在重启后更新受SSV保护的内容。如果你知道如何发送PR请告诉我

keychain-access-groups

这个权限列出了应用程序可以访问的钥匙串组:

<key>keychain-access-groups</key>
<array>
<string>ichat</string>
<string>apple</string>
<string>appleaccount</string>
<string>InternetAccounts</string>
<string>IMCore</string>
</array>

kTCCServiceSystemPolicyAllFiles

提供完全磁盘访问权限是TCC中最高权限之一。

kTCCServiceAppleEvents

允许应用程序向其他常用于自动化任务的应用程序发送事件。通过控制其他应用程序,它可以滥用这些应用程序被授予的权限。

例如,让它们要求用户输入密码:

{% code overflow="wrap" %}

osascript -e 'tell app "App Store" to activate' -e 'tell app "App Store" to activate' -e 'tell app "App Store" to display dialog "App Store requires your password to continue." & return & return default answer "" with icon 1 with hidden answer with title "App Store Alert"'

{% endcode %}

或使其执行任意操作

kTCCServiceEndpointSecurityClient

允许,除其他权限外,写入用户的TCC数据库

kTCCServiceSystemPolicySysAdminFiles

允许更改用户的**NFSHomeDirectory属性,从而更改用户的主文件夹路径,因此可以绕过TCC**。

kTCCServiceSystemPolicyAppBundles

允许修改应用程序包app.app内部中的文件默认情况下是不允许的

可以在_系统偏好设置_ > 隐私与安全性 > _应用程序管理_中检查具有此访问权限的用户。

中等

com.apple.security.cs.allow-jit

此权限允许通过将MAP_JIT标志传递给mmap()系统函数来创建可写和可执行的内存。查看此处了解更多信息

com.apple.security.cs.allow-unsigned-executable-memory

此权限允许覆盖或修补C代码,使用长期弃用的**NSCreateObjectFileImageFromMemory(基本上是不安全的),或使用DVDPlayback**框架。查看此处了解更多信息

{% hint style="danger" %} 包含此权限会使您的应用程序面临内存不安全代码语言中的常见漏洞。请仔细考虑您的应用程序是否需要此例外。 {% endhint %}

com.apple.security.cs.disable-executable-page-protection

此权限允许修改其自身在磁盘上的可执行文件的部分以强制退出。查看此处了解更多信息

{% hint style="danger" %} 禁用可执行内存保护权限是一项极端权限,它会从您的应用程序中删除基本的安全保护,使攻击者能够在不被检测到的情况下重写您的应用程序的可执行代码。如果可能,请优先选择更窄的权限。 {% endhint %}

com.apple.security.cs.allow-relative-library-loads

待办事项

com.apple.private.nullfs_allow

此权限允许挂载nullfs文件系统默认情况下是禁止的。工具mount_nullfs

kTCCServiceAll

根据这篇博文此TCC权限通常以以下形式出现

[Key] com.apple.private.tcc.allow-prompting
[Value]
[Array]
[String] kTCCServiceAll

允许进程请求所有TCC权限

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥