hacktricks/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-dangerous-entitlements.md

11 KiB

macOS Dangerous Entitlements & TCC perms

{% hint style="success" %} Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Support HackTricks
{% endhint %}

{% hint style="warning" %} Napomena: ovlašćenja koja počinju sa com.apple nisu dostupna trećim stranama, samo Apple može da ih dodeli. {% endhint %}

High

com.apple.rootless.install.heritable

Ovlašćenje com.apple.rootless.install.heritable omogućava obiđite SIP. Proverite ovo za više informacija.

com.apple.rootless.install

Ovlašćenje com.apple.rootless.install omogućava obiđite SIP. Proverite ovo za više informacija.

com.apple.system-task-ports (ranije nazvano task_for_pid-allow)

Ovo ovlašćenje omogućava dobijanje task porta za bilo koji proces, osim jezgra. Proverite ovo za više informacija.

com.apple.security.get-task-allow

Ovo ovlašćenje omogućava drugim procesima sa ovlašćenjem com.apple.security.cs.debugger da dobiju task port procesa koji pokreće binarni fajl sa ovim ovlašćenjem i ubace kod u njega. Proverite ovo za više informacija.

com.apple.security.cs.debugger

Aplikacije sa ovlašćenjem Debugging Tool mogu pozvati task_for_pid() da dobiju važeći task port za nesignirane i treće strane aplikacije sa ovlašćenjem Get Task Allow postavljenim na true. Međutim, čak i sa ovlašćenjem alata za debagovanje, debager ne može dobiti task portove procesa koji nemaju ovlašćenje Get Task Allow, i koji su stoga zaštićeni zaštitom integriteta sistema. Proverite ovo za više informacija.

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

Ovo ovlašćenje omogućava učitavanje okvira, dodataka ili biblioteka bez da budu potpisani od strane Apple-a ili potpisani sa istim Team ID kao glavni izvršni fajl, tako da napadač može zloupotrebiti učitavanje neke proizvoljne biblioteke da ubaci kod. Proverite ovo za više informacija.

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

Ovo ovlašćenje je veoma slično com.apple.security.cs.disable-library-validation ali umesto da direktno onemogući validaciju biblioteka, omogućava procesu da pozove csops sistemski poziv da ga onemogući.
Proverite ovo za više informacija.

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

Ovo ovlašćenje omogućava korišćenje DYLD promenljivih okruženja koje se mogu koristiti za ubacivanje biblioteka i koda. Proverite ovo za više informacija.

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

Prema ovom blogu i ovom blogu, ova ovlašćenja omogućavaju modifikaciju TCC baze podataka.

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

Ova ovlašćenja omogućavaju instalaciju softvera bez traženja dozvola od korisnika, što može biti korisno za povećanje privilegija.

com.apple.private.security.kext-management

Ovlašćenje potrebno za traženje od jezgra da učita kernel ekstenziju.

com.apple.private.icloud-account-access

Ovlašćenje com.apple.private.icloud-account-access omogućava komunikaciju sa com.apple.iCloudHelper XPC servisom koji će obezbediti iCloud tokene.

iMovie i Garageband su imale ovo ovlašćenje.

Za više informacija o eksploatu za dobijanje iCloud tokena iz tog ovlašćenja proverite predavanje: #OBTS v5.0: "Šta se dešava na vašem Mac-u, ostaje na Apple-ovom iCloud-u?!" - Wojciech Regula

com.apple.private.tcc.manager.check-by-audit-token

TODO: Ne znam šta ovo omogućava

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

TODO: U ovoj izveštaju se pominje da bi ovo moglo biti korišćeno za ažuriranje SSV-zaštićenog sadržaja nakon ponovnog pokretanja. Ako znate kako, pošaljite PR, molim vas!

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

TODO: U ovoj izveštaju se pominje da bi ovo moglo biti korišćeno za ažuriranje SSV-zaštićenog sadržaja nakon ponovnog pokretanja. Ako znate kako, pošaljite PR, molim vas!

keychain-access-groups

Ovo ovlašćenje lista keychain grupe kojima aplikacija ima pristup:

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

kTCCServiceSystemPolicyAllFiles

Daje Potpunu pristup disku dozvole, jedna od najviših TCC dozvola koje možete imati.

kTCCServiceAppleEvents

Omogućava aplikaciji da šalje događaje drugim aplikacijama koje se obično koriste za automatizaciju zadataka. Kontrolisanjem drugih aplikacija, može zloupotrebiti dozvole koje su dodeljene tim drugim aplikacijama.

Kao što je navođenje njih da traže od korisnika njegovu lozinku:

{% code overflow="wrap" %}

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

{% endcode %}

Ili da ih natera da izvrše arbitrarne radnje.

kTCCServiceEndpointSecurityClient

Omogućava, između ostalog, da piše u TCC bazu podataka korisnika.

kTCCServiceSystemPolicySysAdminFiles

Omogućava da promeni NFSHomeDirectory atribut korisnika koji menja putanju svog domaćeg foldera i tako omogućava da obiđe TCC.

kTCCServiceSystemPolicyAppBundles

Omogućava modifikaciju fajlova unutar aplikacija (unutar app.app), što je podrazumevano zabranjeno.

Moguće je proveriti ko ima ovaj pristup u System Settings > Privacy & Security > App Management.

kTCCServiceAccessibility

Proces će moći da zloupotrebi macOS funkcije pristupa, što znači da će, na primer, moći da pritisne tastere. Tako bi mogao da zatraži pristup za kontrolu aplikacije kao što je Finder i odobri dijalog sa ovom dozvolom.

Medium

com.apple.security.cs.allow-jit

Ova dozvola omogućava da se kreira memorija koja je zapisiva i izvršna prosleđivanjem MAP_JIT oznake mmap() sistemskoj funkciji. Proverite ovo za više informacija.

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

Ova dozvola omogućava da se prepiše ili zakrpi C kod, koristi dugo zastareli NSCreateObjectFileImageFromMemory (koji je fundamentalno nesiguran), ili koristi DVDPlayback okvir. Proverite ovo za više informacija.

{% hint style="danger" %} Uključivanje ove dozvole izlaže vašu aplikaciju uobičajenim ranjivostima u jezicima koji nisu sigurni za memoriju. Pažljivo razmotrite da li vaša aplikacija treba ovu izuzetak. {% endhint %}

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

Ova dozvola omogućava da se modifikuju sekcije vlastitih izvršnih fajlova na disku kako bi se prisilno izašlo. Proverite ovo za više informacija.

{% hint style="danger" %} Dozvola za onemogućavanje zaštite izvršne memorije je ekstremna dozvola koja uklanja fundamentalnu sigurnosnu zaštitu iz vaše aplikacije, čineći mogućim da napadač prepisuje izvršni kod vaše aplikacije bez otkrivanja. Preferirajte uže dozvole ako je moguće. {% endhint %}

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

TODO

com.apple.private.nullfs_allow

Ova dozvola omogućava montiranje nullfs fajl sistema (zabranjeno podrazumevano). Alat: mount_nullfs.

kTCCServiceAll

Prema ovom blog postu, ova TCC dozvola obično se nalazi u formi:

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

Dozvolite procesu da zatraži sve TCC dozvole.

kTCCServicePostEvent

{% hint style="success" %} Učite i vežbajte AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Učite i vežbajte GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)

Podržite HackTricks
{% endhint %}