macOS Gefährliche Berechtigungen & TCC-Berechtigungen
Reading time: 7 minutes
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.
warning
Beachten Sie, dass Berechtigungen, die mit com.apple
beginnen, nicht für Dritte verfügbar sind, nur Apple kann sie gewähren.
Hoch
com.apple.rootless.install.heritable
Die Berechtigung com.apple.rootless.install.heritable
ermöglicht es, SIP zu umgehen. Überprüfen Sie dies für weitere Informationen.
com.apple.rootless.install
Die Berechtigung com.apple.rootless.install
ermöglicht es, SIP zu umgehen. Überprüfen Sie dies für weitere Informationen.
com.apple.system-task-ports
(früher task_for_pid-allow
genannt)
Diese Berechtigung ermöglicht es, den Task-Port für jeden Prozess, außer dem Kernel, zu erhalten. Überprüfen Sie dies für weitere Informationen.
com.apple.security.get-task-allow
Diese Berechtigung ermöglicht es anderen Prozessen mit der Berechtigung `com.apple.security.cs.debugger, den Task-Port des Prozesses zu erhalten, der von der Binärdatei mit dieser Berechtigung ausgeführt wird, und Code darauf zu injizieren. Überprüfen Sie dies für weitere Informationen.
com.apple.security.cs.debugger
Apps mit der Debugging-Tool-Berechtigung können task_for_pid()
aufrufen, um einen gültigen Task-Port für nicht signierte und Drittanbieter-Apps mit der Berechtigung Get Task Allow
, die auf true
gesetzt ist, abzurufen. Selbst mit der Debugging-Tool-Berechtigung kann ein Debugger jedoch die Task-Ports von Prozessen nicht abrufen, die nicht die Berechtigung Get Task Allow
haben und daher durch die Systemintegritätsschutz geschützt sind. Überprüfen Sie dies für weitere Informationen.
com.apple.security.cs.disable-library-validation
Diese Berechtigung ermöglicht es, Frameworks, Plug-ins oder Bibliotheken zu laden, ohne entweder von Apple signiert zu sein oder mit derselben Team-ID wie die Hauptanwendung signiert zu sein, sodass ein Angreifer einige beliebige Bibliotheksladungen missbrauchen könnte, um Code zu injizieren. Überprüfen Sie dies für weitere Informationen.
com.apple.private.security.clear-library-validation
Diese Berechtigung ist sehr ähnlich zu com.apple.security.cs.disable-library-validation
, aber anstatt die Bibliotheksvalidierung direkt zu deaktivieren, ermöglicht sie dem Prozess, einen csops
-Systemaufruf zu tätigen, um sie zu deaktivieren.
Überprüfen Sie dies für weitere Informationen.
com.apple.security.cs.allow-dyld-environment-variables
Diese Berechtigung ermöglicht es, DYLD-Umgebungsvariablen zu verwenden, die zum Injizieren von Bibliotheken und Code verwendet werden könnten. Überprüfen Sie dies für weitere Informationen.
com.apple.private.tcc.manager
oder com.apple.rootless.storage
.TCC
Laut diesem Blog und diesem Blog ermöglichen diese Berechtigungen, die TCC-Datenbank zu modifizieren.
system.install.apple-software
und system.install.apple-software.standar-user
Diese Berechtigungen ermöglichen es, Software zu installieren, ohne den Benutzer um Erlaubnis zu fragen, was für eine Privilegieneskalation hilfreich sein kann.
com.apple.private.security.kext-management
Berechtigung, die benötigt wird, um den Kernel zu bitten, eine Kernel-Erweiterung zu laden.
com.apple.private.icloud-account-access
Mit der Berechtigung com.apple.private.icloud-account-access
ist es möglich, mit dem com.apple.iCloudHelper
XPC-Dienst zu kommunizieren, der iCloud-Token bereitstellt.
iMovie und Garageband hatten diese Berechtigung.
Für weitere Informationen über den Exploit, um iCloud-Token aus dieser Berechtigung zu erhalten, überprüfen Sie den Vortrag: #OBTS v5.0: "Was auf Ihrem Mac passiert, bleibt in Apples iCloud?!" - Wojciech Regula
com.apple.private.tcc.manager.check-by-audit-token
TODO: Ich weiß nicht, was dies erlaubt.
com.apple.private.apfs.revert-to-snapshot
TODO: In diesem Bericht wird erwähnt, dass dies verwendet werden könnte, um die SSV-geschützten Inhalte nach einem Neustart zu aktualisieren. Wenn Sie wissen, wie, senden Sie bitte einen PR!
com.apple.private.apfs.create-sealed-snapshot
TODO: In diesem Bericht wird erwähnt, dass dies verwendet werden könnte, um die SSV-geschützten Inhalte nach einem Neustart zu aktualisieren. Wenn Sie wissen, wie, senden Sie bitte einen PR!
keychain-access-groups
Diese Berechtigung listet die Keychain-Gruppen auf, auf die die Anwendung Zugriff hat:
<key>keychain-access-groups</key>
<array>
<string>ichat</string>
<string>apple</string>
<string>appleaccount</string>
<string>InternetAccounts</string>
<string>IMCore</string>
</array>
kTCCServiceSystemPolicyAllFiles
Gibt Vollzugriff auf die Festplatte-Berechtigungen, eine der höchsten TCC-Berechtigungen, die man haben kann.
kTCCServiceAppleEvents
Erlaubt der App, Ereignisse an andere Anwendungen zu senden, die häufig zum Automatisieren von Aufgaben verwendet werden. Durch die Kontrolle anderer Apps kann es die Berechtigungen missbrauchen, die diesen anderen Apps gewährt wurden.
Wie zum Beispiel, sie dazu zu bringen, den Benutzer nach seinem Passwort zu fragen:
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"'
Oder sie dazu bringen, willkürliche Aktionen auszuführen.
kTCCServiceEndpointSecurityClient
Erlaubt unter anderem, die TCC-Datenbank der Benutzer zu schreiben.
kTCCServiceSystemPolicySysAdminFiles
Erlaubt es, das NFSHomeDirectory
-Attribut eines Benutzers zu ändern, was seinen Home-Ordner-Pfad ändert und somit das Umgehen von TCC ermöglicht.
kTCCServiceSystemPolicyAppBundles
Erlaubt das Modifizieren von Dateien innerhalb von App-Bundles (innerhalb von app.app), was standardmäßig nicht erlaubt ist.
Es ist möglich zu überprüfen, wer diesen Zugriff hat in Systemeinstellungen > Datenschutz & Sicherheit > App-Verwaltung.
kTCCServiceAccessibility
Der Prozess wird in der Lage sein, die Zugänglichkeitsfunktionen von macOS zu missbrauchen, was bedeutet, dass er beispielsweise Tastenanschläge drücken kann. Er könnte also Zugriff anfordern, um eine App wie Finder zu steuern und den Dialog mit dieser Berechtigung zu genehmigen.
Mittel
com.apple.security.cs.allow-jit
Diese Berechtigung erlaubt es, speicher zu erstellen, der beschreibbar und ausführbar ist, indem das MAP_JIT
-Flag an die mmap()
-Systemfunktion übergeben wird. Weitere Informationen finden Sie hier.
com.apple.security.cs.allow-unsigned-executable-memory
Diese Berechtigung erlaubt es, C-Code zu überschreiben oder zu patchen, die lange veraltete NSCreateObjectFileImageFromMemory
(die grundsätzlich unsicher ist) zu verwenden oder das DVDPlayback-Framework zu nutzen. Weitere Informationen finden Sie hier.
caution
Das Einfügen dieser Berechtigung setzt Ihre App gängigen Sicherheitsanfälligkeiten in speicherunsicheren Programmiersprachen aus. Überlegen Sie sorgfältig, ob Ihre App diese Ausnahme benötigt.
com.apple.security.cs.disable-executable-page-protection
Diese Berechtigung erlaubt es, Abschnitte seiner eigenen ausführbaren Dateien auf der Festplatte zu modifizieren, um gewaltsam zu beenden. Weitere Informationen finden Sie hier.
caution
Die Berechtigung zum Deaktivieren des Schutzes für ausführbaren Speicher ist eine extreme Berechtigung, die einen grundlegenden Sicherheitschutz Ihrer App entfernt, wodurch es einem Angreifer möglich wird, den ausführbaren Code Ihrer App unbemerkt umzuschreiben. Bevorzugen Sie, wenn möglich, engere Berechtigungen.
com.apple.security.cs.allow-relative-library-loads
TODO
com.apple.private.nullfs_allow
Diese Berechtigung erlaubt es, ein nullfs-Dateisystem zu mounten (standardmäßig verboten). Tool: mount_nullfs.
kTCCServiceAll
Laut diesem Blogbeitrag wird diese TCC-Berechtigung normalerweise in folgender Form gefunden:
[Key] com.apple.private.tcc.allow-prompting
[Value]
[Array]
[String] kTCCServiceAll
Erlaube dem Prozess, nach allen TCC-Berechtigungen zu fragen.
kTCCServicePostEvent
tip
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Unterstützen Sie HackTricks
- Überprüfen Sie die Abonnementpläne!
- Treten Sie der 💬 Discord-Gruppe oder der Telegram-Gruppe bei oder folgen Sie uns auf Twitter 🐦 @hacktricks_live.
- Teilen Sie Hacking-Tricks, indem Sie PRs an die HackTricks und HackTricks Cloud GitHub-Repos senden.