macOS Dangerous Entitlements & TCC perms

Nauka hakowania AWS od zera do bohatera z htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Zauważ, że uprawnienia zaczynające się od com.apple nie są dostępne dla stron trzecich, tylko Apple może je przyznać.

Wysokie

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 uruchamianego przez binarny plik z tym uprawnieniem i wstrzyknąć w niego kod. Sprawdź to dla więcej informacji.

com.apple.security.cs.debugger

Aplikacje z uprawnieniem Debugging Tool mogą wywołać task_for_pid() w celu pobrania prawidłowego portu zadania dla aplikacji niepodpisanych i stron trzecich z uprawnieniem Get Task Allow ustawionym na true. Jednak nawet z uprawnieniem narzędzia do debugowania, debugger nie może uzyskać portów zadań procesów, które nie mają uprawnienia Get Task Allow, a więc są 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 podpisywania przez Apple lub podpisywania tym samym identyfikatorem zespołu co główny plik wykonywalny, więc atakujący mógłby wykorzystać niektóre arbitralne ładowanie bibliotek 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 w celu jej wyłączenia. Sprawdź to dla więcej informacji.

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

To uprawnienie pozwala na użycie 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 instalowanie oprogramowania bez pytania o zgodę użytkownika, co może być pomocne dla 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 pozwala na 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 wykorzystania do uzyskania tokenów iCloud z tego uprawnienia, sprawdź prezentację: #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: Nie wiem, co to pozwala zrobić

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

TODO: W tym raporcie wspomniano, że może to być używane do aktualizacji chronionych zawartości SSV po ponownym uruchomieniu. Jeśli wiesz, jak to zrobić, prześlij PR!

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

TODO: W tym raporcie wspomniano, że może to być używane do aktualizacji chronionych zawartości SSV po ponownym uruchomieniu. Jeśli wiesz, jak to zrobić, prześlij PR!

keychain-access-groups

Ta lista uprawnień określa grupy kluczy do których ma dostęp aplikacja:

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

kTCCServiceSystemPolicyAllFiles

Daje uprawnienia do Pełnego dostępu do dysku, jedno z najwyższych uprawnień TCC, jakie można mieć.

kTCCServiceAppleEvents

Pozwala aplikacji wysyłać zdarzenia do innych aplikacji, które są często używane do automatyzacji zadań. Kontrolując inne aplikacje, może nadużyć udzielonych uprawnień tym innym aplikacjom.

Na przykład zmuszając je do poproszenia użytkownika o hasło:

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

lub zmuszając je do wykonywania dowolnych działań.

kTCCServiceEndpointSecurityClient

Pozwala między innymi na zapis do bazy danych TCC użytkowników.

kTCCServiceSystemPolicySysAdminFiles

Pozwala na zmianę atrybutu NFSHomeDirectory użytkownika, co zmienia ścieżkę folderu domowego i tym samym umożliwia obejście TCC.

kTCCServiceSystemPolicyAppBundles

Pozwala na modyfikację plików wewnątrz pakietów aplikacji (wewnątrz app.app), co jest domyślnie niedozwolone.

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ć funkcje dostępności macOS, co oznacza, że na przykład będzie mógł naciskać klawisze. Dlatego mógłby poprosić o dostęp do kontrolowania aplikacji takiej jak Finder i zatwierdzić okno dialogowe z tym uprawnieniem.

Średni

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 nadpisanie lub łatanie kodu C, używanie długo przestarzałego NSCreateObjectFileImageFromMemory (co jest zasadniczo niebezpieczne), lub używanie frameworku DVDPlayback. Sprawdź to dla więcej informacji.

Uwzględnienie tego uprawnienia narazia Twoją aplikację na powszechne podatności w językach kodu nieszyfrowanego w pamięci. Rozważ dokładnie, czy Twoja aplikacja potrzebuje tej wyjątkowej zgody.

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

To uprawnienie pozwala na modyfikowanie sekcji własnych plików wykonywalnych na dysku w celu wymuszenia wyjścia. Sprawdź to dla więcej informacji.

Uprawnienie Wyłącz Ochronę Strony Wykonywalnej jest skrajnym uprawnieniem, które usuwa podstawową ochronę bezpieczeństwa z Twojej aplikacji, umożliwiając atakującemu przepisanie kodu wykonywalnego Twojej aplikacji bez wykrycia. Wybieraj 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 (domyślnie zabronione). Narzędzie: mount_nullfs.

kTCCServiceAll

Zgodnie z tym wpisem na blogu, to uprawnienie TCC zazwyczaj znajduje się w formie:

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

Zezwól procesowi na poproszenie o wszystkie uprawnienia TCC.

kTCCServicePostEvent

Zacznij od zera i stań się ekspertem od hakowania AWS dzięki htARTE (HackTricks AWS Red Team Expert)!

Inne sposoby wsparcia HackTricks:

Last updated