macOS Authorizations DB & Authd
Reading time: 4 minutes
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.
Baza danych autoryzacji
Baza danych znajdująca się w /var/db/auth.db
jest bazą danych używaną do przechowywania uprawnień do wykonywania wrażliwych operacji. Operacje te są wykonywane całkowicie w przestrzeni użytkownika i są zazwyczaj używane przez usługi XPC, które muszą sprawdzić czy wywołujący klient jest uprawniony do wykonania określonej akcji, sprawdzając tę bazę danych.
Początkowo ta baza danych jest tworzona na podstawie zawartości /System/Library/Security/authorization.plist
. Następnie niektóre usługi mogą dodać lub zmodyfikować tę bazę danych, aby dodać do niej inne uprawnienia.
Reguły są przechowywane w tabeli rules
wewnątrz bazy danych i zawierają następujące kolumny:
- id: Unikalny identyfikator dla każdej reguły, automatycznie inkrementowany i służący jako klucz główny.
- name: Unikalna nazwa reguły używana do identyfikacji i odniesienia się do niej w systemie autoryzacji.
- type: Określa typ reguły, ograniczony do wartości 1 lub 2 w celu zdefiniowania jej logiki autoryzacji.
- class: Kategoruje regułę do określonej klasy, zapewniając, że jest to liczba całkowita dodatnia.
- "allow" dla zezwolenia, "deny" dla odmowy, "user" jeśli właściwość grupy wskazuje na grupę, której członkostwo umożliwia dostęp, "rule" wskazuje w tablicy regułę do spełnienia, "evaluate-mechanisms" po którym następuje tablica
mechanisms
, która jest albo wbudowana, albo nazwą pakietu wewnątrz/System/Library/CoreServices/SecurityAgentPlugins/
lub /Library/Security//SecurityAgentPlugins - group: Wskazuje grupę użytkowników związaną z regułą dla autoryzacji opartej na grupach.
- kofn: Reprezentuje parametr "k-of-n", określający, ile subreguł musi być spełnionych z całkowitej liczby.
- timeout: Określa czas trwania w sekundach, zanim autoryzacja przyznana przez regułę wygaśnie.
- flags: Zawiera różne flagi, które modyfikują zachowanie i cechy reguły.
- tries: Ogranicza liczbę dozwolonych prób autoryzacji w celu zwiększenia bezpieczeństwa.
- version: Śledzi wersję reguły dla kontroli wersji i aktualizacji.
- created: Rejestruje znacznik czasu, kiedy reguła została utworzona w celach audytowych.
- modified: Przechowuje znacznik czasu ostatniej modyfikacji dokonanej w regule.
- hash: Przechowuje wartość hasha reguły, aby zapewnić jej integralność i wykryć manipulacje.
- identifier: Dostarcza unikalny identyfikator w postaci ciągu, taki jak UUID, dla zewnętrznych odniesień do reguły.
- requirement: Zawiera zserializowane dane definiujące specyficzne wymagania autoryzacji i mechanizmy reguły.
- comment: Oferuje opis lub komentarz w formie czytelnej dla człowieka dotyczący reguły w celach dokumentacyjnych i jasności.
Przykład
# 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>
Ponadto w https://www.dssw.co.uk/reference/authorization-rights/authenticate-admin-nonshared/ można zobaczyć znaczenie 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
To demon, który odbiera żądania autoryzacji klientów do wykonywania wrażliwych działań. Działa jako usługa XPC zdefiniowana w folderze XPCServices/
i używa do zapisywania swoich logów w /var/log/authd.log
.
Ponadto, korzystając z narzędzia security, możliwe jest testowanie wielu interfejsów API Security.framework
. Na przykład AuthorizationExecuteWithPrivileges
uruchamiając: security execute-with-privileges /bin/ls
To spowoduje fork i exec /usr/libexec/security_authtrampoline /bin/ls
jako root, co poprosi o uprawnienia w oknie dialogowym, aby wykonać ls jako root:
tip
Ucz się i ćwicz AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Ucz się i ćwicz GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Wsparcie HackTricks
- Sprawdź plany subskrypcyjne!
- Dołącz do 💬 grupy Discord lub grupy telegram lub śledź nas na Twitterze 🐦 @hacktricks_live.
- Dziel się trikami hackingowymi, przesyłając PR-y do HackTricks i HackTricks Cloud repozytoriów github.