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

12 KiB

macOS Dangerous Entitlements & TCC perms

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

{% hint style="warning" %} Note que as permissões que começam com com.apple não estão disponíveis para terceiros, apenas a Apple pode concedê-las. {% endhint %}

Alto

com.apple.rootless.install.heritable

A permissão com.apple.rootless.install.heritable permite contornar o SIP. Confira isso para mais informações.

com.apple.rootless.install

A permissão com.apple.rootless.install permite contornar o SIP. Confira isso para mais informações.

com.apple.system-task-ports (anteriormente chamada task_for_pid-allow)

Essa permissão permite obter a porta de tarefa para qualquer processo, exceto o kernel. Confira isso para mais informações.

com.apple.security.get-task-allow

Essa permissão permite que outros processos com a permissão com.apple.security.cs.debugger obtenham a porta de tarefa do processo executado pelo binário com essa permissão e injete código nele. Confira isso para mais informações.

com.apple.security.cs.debugger

Aplicativos com a Permissão de Ferramenta de Depuração podem chamar task_for_pid() para recuperar uma porta de tarefa válida para aplicativos não assinados e de terceiros com a permissão Get Task Allow definida como true. No entanto, mesmo com a permissão de ferramenta de depuração, um depurador não pode obter as portas de tarefa de processos que não têm a permissão Get Task Allow, e que, portanto, estão protegidos pela Proteção de Integridade do Sistema. Confira isso para mais informações.

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

Essa permissão permite carregar frameworks, plug-ins ou bibliotecas sem serem assinados pela Apple ou assinados com o mesmo ID de Equipe que o executável principal, então um atacante poderia abusar de algum carregamento arbitrário de biblioteca para injetar código. Confira isso para mais informações.

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

Essa permissão é muito semelhante à com.apple.security.cs.disable-library-validation, mas em vez de desabilitar diretamente a validação de biblioteca, permite que o processo chame uma chamada de sistema csops para desabilitá-la.
Confira isso para mais informações.

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

Essa permissão permite usar variáveis de ambiente DYLD que poderiam ser usadas para injetar bibliotecas e código. Confira isso para mais informações.

com.apple.private.tcc.manager ou com.apple.rootless.storage.TCC

De acordo com este blog e este blog, essas permissões permitem modificar o banco de dados TCC.

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

Essas permissões permitem instalar software sem pedir permissões ao usuário, o que pode ser útil para uma elevação de privilégio.

com.apple.private.security.kext-management

Permissão necessária para solicitar ao kernel que carregue uma extensão de kernel.

com.apple.private.icloud-account-access

A permissão com.apple.private.icloud-account-access permite comunicar-se com o serviço XPC com.apple.iCloudHelper, que fornecerá tokens do iCloud.

iMovie e Garageband tinham essa permissão.

Para mais informações sobre a exploração para obter tokens do iCloud dessa permissão, confira a palestra: #OBTS v5.0: "O que acontece no seu Mac, fica no iCloud da Apple?!" - Wojciech Regula

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

TODO: Eu não sei o que isso permite fazer

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

TODO: No este relatório é mencionado que isso poderia ser usado para atualizar os conteúdos protegidos por SSV após uma reinicialização. Se você souber como, envie um PR, por favor!

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

TODO: No este relatório é mencionado que isso poderia ser usado para atualizar os conteúdos protegidos por SSV após uma reinicialização. Se você souber como, envie um PR, por favor!

keychain-access-groups

Essa permissão lista os grupos de keychain aos quais o aplicativo tem acesso:

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

kTCCServiceSystemPolicyAllFiles

Concede permissões de Acesso Completo ao Disco, uma das permissões mais altas do TCC que você pode ter.

kTCCServiceAppleEvents

Permite que o aplicativo envie eventos para outros aplicativos que são comumente usados para automatizar tarefas. Controlando outros aplicativos, ele pode abusar das permissões concedidas a esses outros aplicativos.

Como fazê-los pedir a senha do usuário:

{% 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 %}

Ou fazê-los realizar ações arbitrárias.

kTCCServiceEndpointSecurityClient

Permite, entre outras permissões, escrever no banco de dados TCC dos usuários.

kTCCServiceSystemPolicySysAdminFiles

Permite alterar o atributo NFSHomeDirectory de um usuário que muda o caminho da sua pasta inicial e, portanto, permite contornar o TCC.

kTCCServiceSystemPolicyAppBundles

Permite modificar arquivos dentro do pacote de aplicativos (dentro de app.app), o que é proibido por padrão.

É possível verificar quem tem esse acesso em Configurações do Sistema > Privacidade e Segurança > Gerenciamento de Aplicativos.

kTCCServiceAccessibility

O processo poderá abusar das funcionalidades de acessibilidade do macOS, o que significa que, por exemplo, ele poderá pressionar teclas. Assim, ele poderia solicitar acesso para controlar um aplicativo como o Finder e aprovar o diálogo com essa permissão.

Médio

com.apple.security.cs.allow-jit

Essa permissão permite criar memória que é gravável e executável passando a flag MAP_JIT para a função de sistema mmap(). Confira isso para mais informações.

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

Essa permissão permite substituir ou corrigir código C, usar o longamente descontinuado NSCreateObjectFileImageFromMemory (que é fundamentalmente inseguro), ou usar o framework DVDPlayback. Confira isso para mais informações.

{% hint style="danger" %} Incluir essa permissão expõe seu aplicativo a vulnerabilidades comuns em linguagens de código inseguro em memória. Considere cuidadosamente se seu aplicativo precisa dessa exceção. {% endhint %}

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

Essa permissão permite modificar seções de seus próprios arquivos executáveis no disco para forçar a saída. Confira isso para mais informações.

{% hint style="danger" %} A Permissão de Desativação da Proteção de Memória Executável é uma permissão extrema que remove uma proteção de segurança fundamental do seu aplicativo, tornando possível que um atacante reescreva o código executável do seu aplicativo sem detecção. Prefira permissões mais restritas, se possível. {% endhint %}

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

TODO

com.apple.private.nullfs_allow

Essa permissão permite montar um sistema de arquivos nullfs (proibido por padrão). Ferramenta: mount_nullfs.

kTCCServiceAll

De acordo com este post de blog, essa permissão TCC geralmente é encontrada na forma:

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

Permitir que o processo peça todas as permissões do TCC.

kTCCServicePostEvent

{% hint style="success" %} Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}