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

10 KiB
Raw Blame History

macOS 危险权限 & TCC 权限

从零开始学习 AWS 黑客技术,成为 htARTE (HackTricks AWS 红队专家)

支持 HackTricks 的其他方式:

{% 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 签名或与主执行文件具有相同的团队 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

待办事项:我不知道这允许做什么

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

待办事项:在这份报告提到这可以用来在重启后更新受 SSV 保护的内容。如果您知道如何操作,请提交 PR

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

待办事项:在这份报告提到这可以用来在重启后更新受 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"'

kTCCServiceEndpointSecurityClient

允许包括写用户TCC数据库在内的其他权限。

kTCCServiceSystemPolicySysAdminFiles

允许更改用户的**NFSHomeDirectory** 属性,这会改变他的家目录路径,因此允许绕过TCC

kTCCServiceSystemPolicyAppBundles

允许修改应用程序包内的文件在app.app内这通常是默认不允许的。

可以在 系统设置 > 隐私与安全 > 应用管理 中检查谁拥有此访问权限。

kTCCServiceAccessibility

进程将能够滥用macOS辅助功能这意味着例如它将能够按键。所以他可以请求控制像Finder这样的应用程序并使用此权限批准对话框。

中等

com.apple.security.cs.allow-jit

此权限允许通过向mmap()系统函数传递MAP_JIT标志来创建可写且可执行的内存。查看这里获取更多信息

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权限

kTCCServicePostEvent

从零开始学习AWS黑客攻击直到成为专家通过 htARTE (HackTricks AWS Red Team Expert)

支持HackTricks的其他方式