macOS Dangerous Entitlements & TCC perms

Impara l'hacking di AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Nota che gli entitlements che iniziano con com.apple non sono disponibili per terze parti, solo Apple può concederli.

Alto

com.apple.rootless.install.heritable

L'entitlement com.apple.rootless.install.heritable consente di bypassare SIP. Controlla questo per ulteriori informazioni.

com.apple.rootless.install

L'entitlement com.apple.rootless.install consente di bypassare SIP. Controlla questo per ulteriori informazioni.

com.apple.system-task-ports (precedentemente chiamato task_for_pid-allow)

Questo entitlement consente di ottenere la porta del task per qualsiasi processo, tranne il kernel. Controlla questo per ulteriori informazioni.

com.apple.security.get-task-allow

Questo entitlement consente ad altri processi con l'entitlement com.apple.security.cs.debugger di ottenere la porta del task del processo eseguito dal binario con questo entitlement e iniettare codice su di esso. Controlla questo per ulteriori informazioni.

com.apple.security.cs.debugger

Le app con l'Entitlement degli Strumenti di Debugging possono chiamare task_for_pid() per recuperare una porta del task valida per app non firmate e di terze parti con l'entitlement Get Task Allow impostato su true. Tuttavia, anche con l'entitlement degli strumenti di debugging, un debugger non può ottenere le porte del task dei processi che non hanno l'entitlement Get Task Allow, e che sono quindi protetti da System Integrity Protection. Controlla questo per ulteriori informazioni.

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

Questo entitlement consente di caricare framework, plug-in o librerie senza essere né firmati da Apple né firmati con lo stesso Team ID dell'eseguibile principale, quindi un attaccante potrebbe abusare di un caricamento arbitrario di librerie per iniettare codice. Controlla questo per ulteriori informazioni.

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

Questo entitlement è molto simile a com.apple.security.cs.disable-library-validation ma invece di disabilitare direttamente la convalida delle librerie, consente al processo di chiamare una chiamata di sistema csops per disabilitarla. Controlla questo per ulteriori informazioni.

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

Questo entitlement consente di utilizzare le variabili di ambiente DYLD che potrebbero essere utilizzate per iniettare librerie e codice. Controlla questo per ulteriori informazioni.

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

Secondo questo blog e questo blog, questi entitlements consentono di modificare il database TCC.

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

Questi entitlements consentono di installare software senza chiedere autorizzazioni all'utente, il che può essere utile per una escalation dei privilegi.

com.apple.private.security.kext-management

Entitlement necessario per chiedere al kernel di caricare un'estensione del kernel.

com.apple.private.icloud-account-access

Con l'entitlement com.apple.private.icloud-account-access è possibile comunicare con il servizio XPC com.apple.iCloudHelper che fornirà token iCloud.

iMovie e Garageband avevano questo entitlement.

Per ulteriori informazioni sull'exploit per ottenere i token di iCloud da quell'entitlement controlla il talk: #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: Non so cosa permetta di fare questo

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

TODO: In questo report è menzionato che potrebbe essere usato per aggiornare i contenuti protetti da SSV dopo un riavvio. Se sai come farlo, invia una PR per favore!

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

TODO: In questo report è menzionato che potrebbe essere usato per aggiornare i contenuti protetti da SSV dopo un riavvio. Se sai come farlo, invia una PR per favore!

keychain-access-groups

Questo entitlement elenca i gruppi keychain ai quali l'applicazione ha accesso:

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

kTCCServiceSystemPolicyAllFiles

Concede le autorizzazioni per l'Accesso completo al disco, una delle autorizzazioni più elevate di TCC che puoi avere.

kTCCServiceAppleEvents

Permette all'applicazione di inviare eventi ad altre applicazioni comunemente utilizzate per automatizzare compiti. Controllando altre app, può abusare delle autorizzazioni concesse a queste altre app.

Come far sì che chiedano all'utente la sua password:

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"'

O permettendo loro di eseguire azioni arbitrarie.

kTCCServiceEndpointSecurityClient

Permette, tra le altre autorizzazioni, di scrivere nel database TCC degli utenti.

kTCCServiceSystemPolicySysAdminFiles

Permette di modificare l'attributo NFSHomeDirectory di un utente che cambia il percorso della sua cartella home e quindi consente di bypassare TCC.

kTCCServiceSystemPolicyAppBundles

Consente di modificare i file all'interno dei bundle delle app (all'interno di app.app), il che è disabilitato per impostazione predefinita.

È possibile verificare chi ha questo accesso in Impostazioni di Sistema > Privacy e Sicurezza > Gestione App.

kTCCServiceAccessibility

Il processo sarà in grado di abusare delle funzionalità di accessibilità di macOS, il che significa che ad esempio sarà in grado di premere tasti. Quindi potrebbe richiedere l'accesso per controllare un'app come Finder e approvare il dialogo con questo permesso.

Medio

com.apple.security.cs.allow-jit

Questo entitlement consente di creare memoria che è scrivibile ed eseguibile passando il flag MAP_JIT alla funzione di sistema mmap(). Controlla questo per ulteriori informazioni.

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

Questo entitlement consente di sovrascrivere o patchare codice C, utilizzare il long-deprecato NSCreateObjectFileImageFromMemory (che è fondamentalmente insicuro), o utilizzare il framework DVDPlayback. Controlla questo per ulteriori informazioni.

Includere questo entitlement espone la tua app a vulnerabilità comuni nei linguaggi di codice non sicuri in memoria. Valuta attentamente se la tua app ha bisogno di questa eccezione.

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

Questo entitlement consente di modificare sezioni dei propri file eseguibili su disco per uscire forzatamente. Controlla questo per ulteriori informazioni.

L'Entitlement di Disabilitazione della Protezione delle Pagine Eseguibili è un entitlement estremo che rimuove una protezione di sicurezza fondamentale dalla tua app, rendendo possibile per un attaccante riscrivere il codice eseguibile della tua app senza essere rilevato. Preferisci entitlement più specifici se possibile.

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

TODO

com.apple.private.nullfs_allow

Questo entitlement consente di montare un file system nullfs (vietato per impostazione predefinita). Strumento: mount_nullfs.

kTCCServiceAll

Secondo questo post sul blog, questa autorizzazione TCC di solito si trova nella forma:

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

Consenti al processo di richiedere tutti i permessi TCC.

kTCCServicePostEvent

Impara l'hacking AWS da zero a eroe con htARTE (Esperto Red Team AWS di HackTricks)!

Altri modi per supportare HackTricks:

Last updated