macOS Authorizations DB & Authd
Reading time: 4 minutes
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.
Athorizarions DB
Il database situato in /var/db/auth.db
è un database utilizzato per memorizzare i permessi per eseguire operazioni sensibili. Queste operazioni vengono eseguite completamente nello spazio utente e sono solitamente utilizzate dai servizi XPC che devono verificare se il client chiamante è autorizzato a eseguire determinate azioni controllando questo database.
Inizialmente, questo database viene creato dal contenuto di /System/Library/Security/authorization.plist
. Successivamente, alcuni servizi potrebbero aggiungere o modificare questo database per aggiungere altri permessi.
Le regole sono memorizzate nella tabella rules
all'interno del database e contengono le seguenti colonne:
- id: Un identificatore unico per ogni regola, automaticamente incrementato e che funge da chiave primaria.
- name: Il nome unico della regola utilizzato per identificarla e fare riferimento ad essa all'interno del sistema di autorizzazione.
- type: Specifica il tipo di regola, limitato ai valori 1 o 2 per definire la sua logica di autorizzazione.
- class: Categorizza la regola in una classe specifica, assicurandosi che sia un intero positivo.
- "allow" per consentire, "deny" per negare, "user" se la proprietà del gruppo indica un gruppo di cui l'appartenenza consente l'accesso, "rule" indica in un array una regola da soddisfare, "evaluate-mechanisms" seguito da un array
mechanisms
che sono o builtins o un nome di un bundle all'interno di/System/Library/CoreServices/SecurityAgentPlugins/
o /Library/Security//SecurityAgentPlugins - group: Indica il gruppo utente associato alla regola per l'autorizzazione basata su gruppi.
- kofn: Rappresenta il parametro "k-of-n", determinando quanti subregole devono essere soddisfatte su un numero totale.
- timeout: Definisce la durata in secondi prima che l'autorizzazione concessa dalla regola scada.
- flags: Contiene vari flag che modificano il comportamento e le caratteristiche della regola.
- tries: Limita il numero di tentativi di autorizzazione consentiti per migliorare la sicurezza.
- version: Tiene traccia della versione della regola per il controllo delle versioni e gli aggiornamenti.
- created: Registra il timestamp quando la regola è stata creata per scopi di audit.
- modified: Memorizza il timestamp dell'ultima modifica apportata alla regola.
- hash: Contiene un valore hash della regola per garantire la sua integrità e rilevare manomissioni.
- identifier: Fornisce un identificatore stringa unico, come un UUID, per riferimenti esterni alla regola.
- requirement: Contiene dati serializzati che definiscono i requisiti specifici di autorizzazione e i meccanismi della regola.
- comment: Offre una descrizione o un commento leggibile dall'uomo sulla regola per documentazione e chiarezza.
Example
# List by name and comments
sudo sqlite3 /var/db/auth.db "select name, comment from rules"
# Get rules for com.apple.tcc.util.admin
security authorizationdb read com.apple.tcc.util.admin
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
<plist version="1.0">
<dict>
<key>class</key>
<string>rule</string>
<key>comment</key>
<string>For modification of TCC settings.</string>
<key>created</key>
<real>701369782.01043606</real>
<key>modified</key>
<real>701369782.01043606</real>
<key>rule</key>
<array>
<string>authenticate-admin-nonshared</string>
</array>
<key>version</key>
<integer>0</integer>
</dict>
</plist>
Inoltre, in https://www.dssw.co.uk/reference/authorization-rights/authenticate-admin-nonshared/ è possibile vedere il significato di authenticate-admin-nonshared
:
{
"allow-root": "false",
"authenticate-user": "true",
"class": "user",
"comment": "Authenticate as an administrator.",
"group": "admin",
"session-owner": "false",
"shared": "false",
"timeout": "30",
"tries": "10000",
"version": "1"
}
Authd
È un demone che riceverà richieste per autorizzare i client a eseguire azioni sensibili. Funziona come un servizio XPC definito all'interno della cartella XPCServices/
e utilizza per scrivere i suoi log in /var/log/authd.log
.
Inoltre, utilizzando lo strumento di sicurezza, è possibile testare molte API di Security.framework
. Ad esempio, AuthorizationExecuteWithPrivileges
eseguendo: security execute-with-privileges /bin/ls
Questo fork e exec /usr/libexec/security_authtrampoline /bin/ls
come root, che chiederà permessi in un prompt per eseguire ls come root:
tip
Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Supporta HackTricks
- Controlla i piani di abbonamento!
- Unisciti al 💬 gruppo Discord o al gruppo telegram o seguici su Twitter 🐦 @hacktricks_live.
- Condividi trucchi di hacking inviando PR ai HackTricks e HackTricks Cloud repos di github.