macOS Dangerous Entitlements & TCC perms
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Zauważ, że uprawnienia zaczynające się od com.apple
nie są dostępne dla osób trzecich, tylko Apple może je przyznać.
com.apple.rootless.install.heritable
Uprawnienie com.apple.rootless.install.heritable
pozwala na obejście SIP. Sprawdź to dla więcej informacji.
com.apple.rootless.install
Uprawnienie com.apple.rootless.install
pozwala na obejście SIP. Sprawdź to dla więcej informacji.
com.apple.system-task-ports
(wcześniej nazywane task_for_pid-allow
)To uprawnienie pozwala uzyskać port zadania dla dowolnego procesu, z wyjątkiem jądra. Sprawdź to dla więcej informacji.
com.apple.security.get-task-allow
To uprawnienie pozwala innym procesom z uprawnieniem com.apple.security.cs.debugger
uzyskać port zadania procesu uruchomionego przez binarny plik z tym uprawnieniem i wstrzyknąć kod. Sprawdź to dla więcej informacji.
com.apple.security.cs.debugger
Aplikacje z uprawnieniem narzędzia debugowania mogą wywołać task_for_pid()
, aby uzyskać ważny port zadania dla aplikacji niesigned i aplikacji osób trzecich z uprawnieniem Get Task Allow
ustawionym na true
. Jednak nawet z uprawnieniem narzędzia debugowania, debugger nie może uzyskać portów zadań procesów, które nie mają uprawnienia Get Task Allow
, a które są zatem chronione przez System Integrity Protection. Sprawdź to dla więcej informacji.
com.apple.security.cs.disable-library-validation
To uprawnienie pozwala na ładowanie frameworków, wtyczek lub bibliotek bez bycia podpisanym przez Apple lub podpisanym tym samym identyfikatorem zespołu co główny plik wykonywalny, więc atakujący mógłby wykorzystać ładowanie dowolnej biblioteki do wstrzyknięcia kodu. Sprawdź to dla więcej informacji.
com.apple.private.security.clear-library-validation
To uprawnienie jest bardzo podobne do com.apple.security.cs.disable-library-validation
, ale zamiast bezpośrednio wyłączać walidację bibliotek, pozwala procesowi wywołać wywołanie systemowe csops
, aby je wyłączyć.
Sprawdź to dla więcej informacji.
com.apple.security.cs.allow-dyld-environment-variables
To uprawnienie pozwala na używanie zmiennych środowiskowych DYLD, które mogą być używane do wstrzykiwania bibliotek i kodu. Sprawdź to dla więcej informacji.
com.apple.private.tcc.manager
lub com.apple.rootless.storage
.TCC
Zgodnie z tym blogiem i tym blogiem, te uprawnienia pozwalają na modyfikację bazy danych TCC.
system.install.apple-software
i system.install.apple-software.standar-user
Te uprawnienia pozwalają na instalację oprogramowania bez pytania o pozwolenie użytkownika, co może być pomocne w przypadku eskalacji uprawnień.
com.apple.private.security.kext-management
Uprawnienie potrzebne do poproszenia jądra o załadowanie rozszerzenia jądra.
com.apple.private.icloud-account-access
Uprawnienie com.apple.private.icloud-account-access
umożliwia komunikację z usługą XPC com.apple.iCloudHelper
, która dostarczy tokeny iCloud.
iMovie i Garageband miały to uprawnienie.
Aby uzyskać więcej informacji na temat exploita do uzyskania tokenów icloud z tego uprawnienia, sprawdź wykład: #OBTS v5.0: "Co się dzieje na twoim Macu, zostaje na iCloud Apple?!" - Wojciech Regula
com.apple.private.tcc.manager.check-by-audit-token
TODO: Nie wiem, co to pozwala zrobić
com.apple.private.apfs.revert-to-snapshot
TODO: W tym raporcie wspomniano, że może to być użyte do aktualizacji zawartości chronionej SSV po ponownym uruchomieniu. Jeśli wiesz jak, wyślij PR, proszę!
com.apple.private.apfs.create-sealed-snapshot
TODO: W tym raporcie wspomniano, że może to być użyte do aktualizacji zawartości chronionej SSV po ponownym uruchomieniu. Jeśli wiesz jak, wyślij PR, proszę!
keychain-access-groups
To uprawnienie wymienia grupy keychain, do których aplikacja ma dostęp:
kTCCServiceSystemPolicyAllFiles
Daje Pełny dostęp do dysku, jedno z najwyższych uprawnień TCC, jakie można mieć.
kTCCServiceAppleEvents
Pozwala aplikacji na wysyłanie zdarzeń do innych aplikacji, które są powszechnie używane do automatyzacji zadań. Kontrolując inne aplikacje, może nadużywać uprawnień przyznanych tym innym aplikacjom.
Na przykład, zmuszając je do poproszenia użytkownika o hasło:
Lub sprawić, by wykonywały dowolne akcje.
kTCCServiceEndpointSecurityClient
Pozwala, między innymi, na zapisywanie bazy danych TCC użytkowników.
kTCCServiceSystemPolicySysAdminFiles
Pozwala na zmianę atrybutu NFSHomeDirectory
użytkownika, co zmienia ścieżkę do jego folderu domowego i tym samym pozwala na obejście TCC.
kTCCServiceSystemPolicyAppBundles
Pozwala na modyfikację plików wewnątrz pakietów aplikacji (wewnątrz app.app), co jest domyślnie zabronione.
Można sprawdzić, kto ma ten dostęp w Ustawienia systemowe > Prywatność i bezpieczeństwo > Zarządzanie aplikacjami.
kTCCServiceAccessibility
Proces będzie mógł nadużywać funkcji dostępności macOS, co oznacza, że na przykład będzie mógł naciskać klawisze. MOŻE poprosić o dostęp do kontrolowania aplikacji, takiej jak Finder, i zatwierdzić okno dialogowe z tym uprawnieniem.
com.apple.security.cs.allow-jit
To uprawnienie pozwala na tworzenie pamięci, która jest zapisywalna i wykonywalna poprzez przekazanie flagi MAP_JIT
do funkcji systemowej mmap()
. Sprawdź to dla więcej informacji.
com.apple.security.cs.allow-unsigned-executable-memory
To uprawnienie pozwala na nadpisywanie lub patchowanie kodu C, użycie długo nieaktualizowanej NSCreateObjectFileImageFromMemory
(która jest zasadniczo niebezpieczna), lub użycie frameworka DVDPlayback. Sprawdź to dla więcej informacji.
Uwzględnienie tego uprawnienia naraża Twoją aplikację na powszechne luki w kodzie języków niebezpiecznych dla pamięci. Starannie rozważ, czy Twoja aplikacja potrzebuje tego wyjątku.
com.apple.security.cs.disable-executable-page-protection
To uprawnienie pozwala na modyfikację sekcji własnych plików wykonywalnych na dysku, aby wymusić wyjście. Sprawdź to dla więcej informacji.
Uprawnienie do wyłączenia ochrony pamięci wykonywalnej jest ekstremalnym uprawnieniem, które usuwa fundamentalną ochronę bezpieczeństwa z Twojej aplikacji, co umożliwia atakującemu przepisanie kodu wykonywalnego Twojej aplikacji bez wykrycia. Preferuj węższe uprawnienia, jeśli to możliwe.
com.apple.security.cs.allow-relative-library-loads
TODO
com.apple.private.nullfs_allow
To uprawnienie pozwala na zamontowanie systemu plików nullfs (zabronione domyślnie). Narzędzie: mount_nullfs.
kTCCServiceAll
Zgodnie z tym wpisem na blogu, to uprawnienie TCC zazwyczaj występuje w formie:
Zezwól procesowi na poproszenie o wszystkie uprawnienia TCC.
kTCCServicePostEvent
Ucz się i ćwicz Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Ucz się i ćwicz Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)