From 7f7949341071f72cb9d0460d6e83d327af1fd7d4 Mon Sep 17 00:00:00 2001 From: Translator Date: Tue, 24 Sep 2024 15:17:53 +0000 Subject: [PATCH] Translated ['macos-hardening/macos-security-and-privilege-escalation/mac --- .../macos-sandbox/README.md | 235 ++++++++++++++---- .../macos-security-protections/macos-sip.md | 84 ++++--- 2 files changed, 236 insertions(+), 83 deletions(-) diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md index e77ba83d5..8631be24c 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sandbox/README.md @@ -1,8 +1,8 @@ # macOS Sandbox {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -17,11 +17,11 @@ Learn & practice GCP Hacking: mach #Check mac-ports (got from launchd with an api) -sbtool file /tmp #Check file access -sbtool inspect #Gives you an explaination of the sandbox profile -sbtool all -``` ### Benutzerdefinierte SBPL in App Store-Apps -Es könnte für Unternehmen möglich sein, ihre Apps **mit benutzerdefinierten Sandbox-Profilen** (anstatt mit dem Standardprofil) auszuführen. Sie müssen die Berechtigung **`com.apple.security.temporary-exception.sbpl`** verwenden, die von Apple genehmigt werden muss. +Es könnte für Unternehmen möglich sein, ihre Apps **mit benutzerdefinierten Sandbox-Profilen** (anstatt mit dem Standardprofil) auszuführen. Sie müssen das Recht **`com.apple.security.temporary-exception.sbpl`** verwenden, das von Apple genehmigt werden muss. -Es ist möglich, die Definition dieser Berechtigung in **`/System/Library/Sandbox/Profiles/application.sb:`** zu überprüfen. +Es ist möglich, die Definition dieses Rechts in **`/System/Library/Sandbox/Profiles/application.sb:`** zu überprüfen. ```scheme (sandbox-array-entitlement "com.apple.security.temporary-exception.sbpl" @@ -262,19 +276,142 @@ Es ist möglich, die Definition dieser Berechtigung in **`/System/Library/Sandbo (let* ((port (open-input-string string)) (sbpl (read port))) (with-transparent-redirection (eval sbpl))))) ``` -Dies wird den **String nach diesem Berechtigungsnachweis** als Sandbox-Profil **eval**. +Dies wird **den String nach diesem Recht** als ein Sandbox-Profil **eval**. + +### Kompilieren & Dekompilieren eines Sandbox-Profils + +Das **`sandbox-exec`**-Tool verwendet die Funktionen `sandbox_compile_*` aus `libsandbox.dylib`. Die Hauptfunktionen, die exportiert werden, sind: `sandbox_compile_file` (erwartet einen Dateipfad, Parameter `-f`), `sandbox_compile_string` (erwartet einen String, Parameter `-p`), `sandbox_compile_name` (erwartet einen Namen eines Containers, Parameter `-n`), `sandbox_compile_entitlements` (erwartet Entitlements plist). + +Diese umgekehrte und [**Open-Source-Version des Tools sandbox-exec**](https://newosxbook.com/src.jl?tree=listings\&file=/sandbox\_exec.c) ermöglicht es, dass **`sandbox-exec`** in eine Datei das kompilierte Sandbox-Profil schreibt. + +Darüber hinaus kann es, um einen Prozess innerhalb eines Containers einzuschränken, `sandbox_spawnattrs_set[container/profilename]` aufrufen und einen Container oder ein bereits vorhandenes Profil übergeben. + +## Debuggen & Umgehen der Sandbox + +Auf macOS, im Gegensatz zu iOS, wo Prozesse von Anfang an durch den Kernel sandboxed sind, **müssen Prozesse selbst in die Sandbox eintreten**. Das bedeutet, dass ein Prozess auf macOS nicht durch die Sandbox eingeschränkt ist, bis er aktiv entscheidet, sie zu betreten, obwohl Apps aus dem App Store immer sandboxed sind. + +Prozesse werden automatisch aus dem Userland sandboxed, wenn sie starten, wenn sie das Recht haben: `com.apple.security.app-sandbox`. Für eine detaillierte Erklärung dieses Prozesses siehe: + +{% content-ref url="macos-sandbox-debug-and-bypass/" %} +[macos-sandbox-debug-and-bypass](macos-sandbox-debug-and-bypass/) +{% endcontent-ref %} + +## **Sandbox-Erweiterungen** + +Erweiterungen ermöglichen es, einem Objekt weitere Berechtigungen zu geben, und werden durch den Aufruf einer der Funktionen vergeben: + +* `sandbox_issue_extension` +* `sandbox_extension_issue_file[_with_new_type]` +* `sandbox_extension_issue_mach` +* `sandbox_extension_issue_iokit_user_client_class` +* `sandbox_extension_issue_iokit_registry_rentry_class` +* `sandbox_extension_issue_generic` +* `sandbox_extension_issue_posix_ipc` + +Die Erweiterungen werden im zweiten MACF-Label-Slot gespeichert, der über die Prozessanmeldeinformationen zugänglich ist. Das folgende **`sbtool`** kann auf diese Informationen zugreifen. + +Beachten Sie, dass Erweiterungen normalerweise von erlaubten Prozessen gewährt werden. Zum Beispiel wird `tccd` das Erweiterungstoken von `com.apple.tcc.kTCCServicePhotos` gewähren, wenn ein Prozess versucht hat, auf die Fotos zuzugreifen und in einer XPC-Nachricht erlaubt wurde. Dann muss der Prozess das Erweiterungstoken konsumieren, damit es hinzugefügt wird.\ +Beachten Sie, dass die Erweiterungstoken lange Hexadezimalzahlen sind, die die gewährten Berechtigungen kodieren. Sie haben jedoch die erlaubte PID nicht fest codiert, was bedeutet, dass jeder Prozess mit Zugriff auf das Token **von mehreren Prozessen konsumiert werden kann**. + +Beachten Sie, dass Erweiterungen auch sehr mit Rechten verbunden sind, sodass das Vorhandensein bestimmter Rechte automatisch bestimmte Erweiterungen gewähren kann. + +### **Überprüfen der PID-Berechtigungen** + +[**Laut diesem**](https://www.youtube.com/watch?v=mG715HcDgO8\&t=3011s) können die **`sandbox_check`**-Funktionen (es ist ein `__mac_syscall`) überprüfen, **ob eine Operation erlaubt ist oder nicht** durch die Sandbox in einer bestimmten PID, Audit-Token oder eindeutige ID. + +Das [**Tool sbtool**](http://newosxbook.com/src.jl?tree=listings\&file=sbtool.c) (finden Sie es [hier kompiliert](https://newosxbook.com/articles/hitsb.html)) kann überprüfen, ob eine PID bestimmte Aktionen ausführen kann: +```bash +sbtool mach #Check mac-ports (got from launchd with an api) +sbtool file /tmp #Check file access +sbtool inspect #Gives you an explanation of the sandbox profile and extensions +sbtool all +``` +### \[un]suspend + +Es ist auch möglich, den Sandbox zu suspendieren und wieder zu aktivieren, indem die Funktionen `sandbox_suspend` und `sandbox_unsuspend` aus `libsystem_sandbox.dylib` verwendet werden. + +Beachten Sie, dass zur Aufruf der Suspend-Funktion einige Berechtigungen überprüft werden, um den Aufrufer zu autorisieren, sie aufzurufen, wie: + +* com.apple.private.security.sandbox-manager +* com.apple.security.print +* com.apple.security.temporary-exception.audio-unit-host + +## mac\_syscall + +Dieser Systemaufruf (#381) erwartet ein String-Argument als ersten Parameter, das das Modul angibt, das ausgeführt werden soll, und dann einen Code im zweiten Argument, der die auszuführende Funktion angibt. Der dritte Parameter hängt dann von der ausgeführten Funktion ab. + +Der Funktionsaufruf `___sandbox_ms` umschließt `mac_syscall`, wobei im ersten Argument `"Sandbox"` angegeben wird, genau wie `___sandbox_msp` ein Wrapper von `mac_set_proc` (#387) ist. Einige der unterstützten Codes von `___sandbox_ms` finden sich in dieser Tabelle: + +* **set\_profile (#0)**: Wendet ein kompiliertes oder benanntes Profil auf einen Prozess an. +* **platform\_policy (#1)**: Erzwingt plattformspezifische Richtlinienprüfungen (variiert zwischen macOS und iOS). +* **check\_sandbox (#2)**: Führt eine manuelle Überprüfung einer bestimmten Sandbox-Operation durch. +* **note (#3)**: Fügt eine Annotation zu einer Sandbox hinzu. +* **container (#4)**: Fügt einer Sandbox eine Annotation hinzu, typischerweise zur Fehlersuche oder Identifikation. +* **extension\_issue (#5)**: Generiert eine neue Erweiterung für einen Prozess. +* **extension\_consume (#6)**: Verbraucht eine gegebene Erweiterung. +* **extension\_release (#7)**: Gibt den Speicher frei, der an eine verbrauchte Erweiterung gebunden ist. +* **extension\_update\_file (#8)**: Ändert Parameter einer bestehenden Dateierweiterung innerhalb der Sandbox. +* **extension\_twiddle (#9)**: Passt eine bestehende Dateierweiterung an oder ändert sie (z.B. TextEdit, rtf, rtfd). +* **suspend (#10)**: Unterbricht vorübergehend alle Sandbox-Prüfungen (erfordert entsprechende Berechtigungen). +* **unsuspend (#11)**: Setzt alle zuvor suspendierten Sandbox-Prüfungen fort. +* **passthrough\_access (#12)**: Erlaubt direkten Passthrough-Zugriff auf eine Ressource, umgeht Sandbox-Prüfungen. +* **set\_container\_path (#13)**: (nur iOS) Setzt einen Containerpfad für eine App-Gruppe oder eine Signatur-ID. +* **container\_map (#14)**: (nur iOS) Ruft einen Containerpfad von `containermanagerd` ab. +* **sandbox\_user\_state\_item\_buffer\_send (#15)**: (iOS 10+) Setzt Metadaten im Benutzermodus in der Sandbox. +* **inspect (#16)**: Bietet Debug-Informationen über einen sandboxed Prozess. +* **dump (#18)**: (macOS 11) Dumpt das aktuelle Profil einer Sandbox zur Analyse. +* **vtrace (#19)**: Verfolgt Sandbox-Operationen zur Überwachung oder Fehlersuche. +* **builtin\_profile\_deactivate (#20)**: (macOS < 11) Deaktiviert benannte Profile (z.B. `pe_i_can_has_debugger`). +* **check\_bulk (#21)**: Führt mehrere `sandbox_check`-Operationen in einem einzigen Aufruf durch. +* **reference\_retain\_by\_audit\_token (#28)**: Erstellt eine Referenz für ein Audit-Token zur Verwendung in Sandbox-Prüfungen. +* **reference\_release (#29)**: Gibt eine zuvor gehaltene Audit-Token-Referenz frei. +* **rootless\_allows\_task\_for\_pid (#30)**: Überprüft, ob `task_for_pid` erlaubt ist (ähnlich wie `csr`-Prüfungen). +* **rootless\_whitelist\_push (#31)**: (macOS) Wendet eine Manifestdatei für den Systemintegritätsschutz (SIP) an. +* **rootless\_whitelist\_check (preflight) (#32)**: Überprüft die SIP-Manifestdatei vor der Ausführung. +* **rootless\_protected\_volume (#33)**: (macOS) Wendet SIP-Schutz auf eine Festplatte oder Partition an. +* **rootless\_mkdir\_protected (#34)**: Wendet SIP/DataVault-Schutz auf einen Verzeichnis-Erstellungsprozess an. + +## Sandbox.kext + +Beachten Sie, dass die Kernel-Erweiterung in iOS **alle Profile hardcodiert** im `__TEXT.__const`-Segment enthält, um zu verhindern, dass sie modifiziert werden. Folgendes sind einige interessante Funktionen aus der Kernel-Erweiterung: + +* **`hook_policy_init`**: Es hookt `mpo_policy_init` und wird nach `mac_policy_register` aufgerufen. Es führt die meisten Initialisierungen der Sandbox durch. Es initialisiert auch SIP. +* **`hook_policy_initbsd`**: Es richtet die sysctl-Schnittstelle ein und registriert `security.mac.sandbox.sentinel`, `security.mac.sandbox.audio_active` und `security.mac.sandbox.debug_mode` (wenn mit `PE_i_can_has_debugger` gebootet). +* **`hook_policy_syscall`**: Es wird von `mac_syscall` mit "Sandbox" als erstem Argument und einem Code, der die Operation im zweiten angibt, aufgerufen. Ein Switch wird verwendet, um den auszuführenden Code entsprechend dem angeforderten Code zu finden. + +### MACF Hooks + +**`Sandbox.kext`** verwendet mehr als hundert Hooks über MACF. Die meisten Hooks überprüfen nur einige triviale Fälle, die es erlauben, die Aktion auszuführen; andernfalls rufen sie **`cred_sb_evalutate`** mit den **Anmeldeinformationen** von MACF und einer Nummer, die der **Operation** entspricht, die ausgeführt werden soll, sowie einem **Puffer** für die Ausgabe auf. + +Ein gutes Beispiel dafür ist die Funktion **`_mpo_file_check_mmap`**, die **`mmap`** hookt und die überprüft, ob der neue Speicher beschreibbar sein wird (und wenn nicht, die Ausführung erlaubt), dann überprüft, ob er für den dyld Shared Cache verwendet wird, und wenn ja, die Ausführung erlaubt, und schließlich wird **`cred_sb_evalutate`** aufgerufen, um weitere Erlaubnisprüfungen durchzuführen. + +Darüber hinaus gibt es von den Hunderten von Hooks, die Sandbox verwendet, 3, die besonders interessant sind: + +* `mpo_proc_check_for`: Es wendet das Profil an, wenn nötig, und wenn es zuvor nicht angewendet wurde. +* `mpo_vnode_check_exec`: Wird aufgerufen, wenn ein Prozess die zugehörige Binärdatei lädt, dann wird eine Profilüberprüfung durchgeführt und auch eine Überprüfung, die SUID/SGID-Ausführungen verbietet. +* `mpo_cred_label_update_execve`: Dies wird aufgerufen, wenn das Label zugewiesen wird. Dies ist der längste, da es aufgerufen wird, wenn die Binärdatei vollständig geladen ist, aber noch nicht ausgeführt wurde. Es führt Aktionen wie das Erstellen des Sandbox-Objekts, das Anhängen der Sandbox-Struktur an die kauth-Anmeldeinformationen und das Entfernen des Zugriffs auf Mach-Ports durch... + +Beachten Sie, dass **`cred_sb_evalutate`** ein Wrapper über **`sb_evaluate`** ist und diese Funktion die übergebenen Anmeldeinformationen erhält und dann die Bewertung unter Verwendung der **`eval`**-Funktion durchführt, die normalerweise das **Plattformprofil** bewertet, das standardmäßig auf alle Prozesse angewendet wird, und dann das **spezifische Prozessprofil**. Beachten Sie, dass das Plattformprofil eines der Hauptkomponenten von **SIP** in macOS ist. + +## Sandboxd + +Sandbox hat auch einen Benutzerdämon, der den XPC Mach-Dienst `com.apple.sandboxd` ausführt und den speziellen Port 14 (`HOST_SEATBELT_PORT`) bindet, den die Kernel-Erweiterung verwendet, um mit ihm zu kommunizieren. Es stellt einige Funktionen über MIG zur Verfügung. + +## References + +* [**\*OS Internals Volume III**](https://newosxbook.com/home.html) {% hint style="success" %} -Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
-Unterstütze HackTricks +Support HackTricks -* Überprüfe die [**Abonnementpläne**](https://github.com/sponsors/carlospolop)! -* **Tritt der** 💬 [**Discord-Gruppe**](https://discord.gg/hRep4RUj7f) oder der [**Telegram-Gruppe**](https://t.me/peass) bei oder **folge** uns auf **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** -* **Teile Hacking-Tricks, indem du PRs zu den** [**HackTricks**](https://github.com/carlospolop/hacktricks) und [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) GitHub-Repos einreichst. +* Check the [**subscription plans**](https://github.com/sponsors/carlospolop)! +* **Join the** 💬 [**Discord group**](https://discord.gg/hRep4RUj7f) or the [**telegram group**](https://t.me/peass) or **follow** us on **Twitter** 🐦 [**@hacktricks\_live**](https://twitter.com/hacktricks\_live)**.** +* **Share hacking tricks by submitting PRs to the** [**HackTricks**](https://github.com/carlospolop/hacktricks) and [**HackTricks Cloud**](https://github.com/carlospolop/hacktricks-cloud) github repos.
{% endhint %} diff --git a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sip.md b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sip.md index 6b244124d..70e86e60c 100644 --- a/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sip.md +++ b/macos-hardening/macos-security-and-privilege-escalation/macos-security-protections/macos-sip.md @@ -1,8 +1,8 @@ # macOS SIP {% hint style="success" %} -Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Learn & practice AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Learn & practice GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -15,10 +15,9 @@ Learn & practice GCP Hacking: {% endhint %} - ## **Grundinformationen** -**System Integrity Protection (SIP)** in macOS ist ein Mechanismus, der verhindern soll, dass selbst die privilegiertesten Benutzer unbefugte Änderungen an wichtigen Systemordnern vornehmen. Diese Funktion spielt eine entscheidende Rolle bei der Aufrechterhaltung der Integrität des Systems, indem sie Aktionen wie das Hinzufügen, Ändern oder Löschen von Dateien in geschützten Bereichen einschränkt. Die wichtigsten Ordner, die durch SIP geschützt sind, umfassen: +**System Integrity Protection (SIP)** in macOS ist ein Mechanismus, der darauf abzielt, selbst die privilegiertesten Benutzer daran zu hindern, unbefugte Änderungen an wichtigen Systemordnern vorzunehmen. Diese Funktion spielt eine entscheidende Rolle bei der Aufrechterhaltung der Integrität des Systems, indem sie Aktionen wie das Hinzufügen, Ändern oder Löschen von Dateien in geschützten Bereichen einschränkt. Die wichtigsten Ordner, die durch SIP geschützt sind, umfassen: * **/System** * **/bin** @@ -50,7 +49,11 @@ drwxr-xr-x 338 root wheel restricted 10816 May 13 00:29 /usr/libexec ``` Hier zeigt das **`restricted`** Flag an, dass das Verzeichnis `/usr/libexec` durch SIP geschützt ist. In einem SIP-geschützten Verzeichnis können keine Dateien erstellt, geändert oder gelöscht werden. -Darüber hinaus wird eine Datei, die das Attribut **`com.apple.rootless`** als erweitertes **Attribut** enthält, ebenfalls **durch SIP geschützt**. +Darüber hinaus wird eine Datei, die das Attribut **`com.apple.rootless`** enthält, ebenfalls **durch SIP geschützt**. + +{% hint style="success" %} +Beachten Sie, dass der **Sandbox** Hook **`hook_vnode_check_setextattr`** jeden Versuch verhindert, das erweiterte Attribut **`com.apple.rootless`** zu ändern. +{% endhint %} **SIP beschränkt auch andere Root-Aktionen** wie: @@ -73,11 +76,11 @@ Wenn Sie SIP deaktivieren müssen, müssen Sie Ihren Computer im Wiederherstellu ```bash csrutil disable ``` -Wenn Sie SIP aktiviert lassen, aber die Debugging-Schutzmaßnahmen entfernen möchten, können Sie dies tun mit: +Wenn Sie SIP aktiviert lassen, aber die Debugging-Schutzmaßnahmen entfernen möchten, können Sie dies mit folgendem Befehl tun: ```bash csrutil enable --without debug ``` -### Andere Einschränkungen +### Other Restrictions * **Verhindert das Laden von nicht signierten Kernel-Erweiterungen** (kexts), wodurch sichergestellt wird, dass nur verifizierte Erweiterungen mit dem Systemkernel interagieren. * **Verhindert das Debugging** von macOS-Systemprozessen und schützt so die Kernkomponenten des Systems vor unbefugtem Zugriff und Modifikation. @@ -85,18 +88,32 @@ csrutil enable --without debug [**Erfahren Sie mehr über SIP-Informationen in diesem Vortrag**](https://www.slideshare.net/i0n1c/syscan360-stefan-esser-os-x-el-capitan-sinking-the-ship)**.** -## SIP-Umgehungen +### **SIP-bezogene Berechtigungen** -Die Umgehung von SIP ermöglicht es einem Angreifer: +* `com.apple.rootless.xpc.bootstrap`: Steuerung von launchd +* `com.apple.rootless.install[.heritable]`: Zugriff auf das Dateisystem +* `com.apple.rootless.kext-management`: `kext_request` +* `com.apple.rootless.datavault.controller`: Verwaltung von UF\_DATAVAULT +* `com.apple.rootless.xpc.bootstrap`: XPC-Setup-Funktionen +* `com.apple.rootless.xpc.effective-root`: Root über launchd XPC +* `com.apple.rootless.restricted-block-devices`: Zugriff auf rohe Blockgeräte +* `com.apple.rootless.internal.installer-equivalent`: Ungehinderter Zugriff auf das Dateisystem +* `com.apple.rootless.restricted-nvram-variables[.heritable]`: Voller Zugriff auf NVRAM +* `com.apple.rootless.storage.label`: Ändern von Dateien, die durch com.apple.rootless xattr mit dem entsprechenden Label eingeschränkt sind +* `com.apple.rootless.volume.VM.label`: VM-Swap auf Volume beibehalten -* **Zugriff auf Benutzerdaten**: Sensible Benutzerdaten wie E-Mails, Nachrichten und Safari-Verlauf aus allen Benutzerkonten zu lesen. +## SIP Bypasses + +Das Umgehen von SIP ermöglicht es einem Angreifer: + +* **Zugriff auf Benutzerdaten**: Sensible Benutzerdaten wie E-Mails, Nachrichten und Safari-Verlauf aus allen Benutzerkonten lesen. * **TCC-Umgehung**: Direkte Manipulation der TCC (Transparenz, Zustimmung und Kontrolle)-Datenbank, um unbefugten Zugriff auf die Webcam, das Mikrofon und andere Ressourcen zu gewähren. -* **Persistenz herstellen**: Malware an SIP-geschützten Orten platzieren, wodurch sie resistent gegen Entfernung wird, selbst durch Root-Rechte. Dies schließt auch die Möglichkeit ein, das Malware Removal Tool (MRT) zu manipulieren. -* **Kernel-Erweiterungen laden**: Obwohl es zusätzliche Schutzmaßnahmen gibt, vereinfacht die Umgehung von SIP den Prozess des Ladens von nicht signierten Kernel-Erweiterungen. +* **Persistenz herstellen**: Malware an SIP-geschützten Orten platzieren, wodurch sie resistent gegen Entfernung ist, selbst durch Root-Rechte. Dies schließt auch die Möglichkeit ein, das Malware Removal Tool (MRT) zu manipulieren. +* **Kernel-Erweiterungen laden**: Obwohl es zusätzliche Schutzmaßnahmen gibt, vereinfacht das Umgehen von SIP den Prozess des Ladens nicht signierter Kernel-Erweiterungen. -### Installationspakete +### Installer-Pakete -**Installationspakete, die mit Apples Zertifikat signiert sind**, können die Schutzmaßnahmen umgehen. Das bedeutet, dass selbst Pakete, die von Standardentwicklern signiert sind, blockiert werden, wenn sie versuchen, SIP-geschützte Verzeichnisse zu ändern. +**Installer-Pakete, die mit Apples Zertifikat signiert sind**, können die Schutzmaßnahmen umgehen. Das bedeutet, dass selbst Pakete, die von Standardentwicklern signiert sind, blockiert werden, wenn sie versuchen, SIP-geschützte Verzeichnisse zu ändern. ### Nicht vorhandene SIP-Datei @@ -110,7 +127,7 @@ Die Berechtigung **`com.apple.rootless.install.heritable`** ermöglicht es, SIP #### [CVE-2019-8561](https://objective-see.org/blog/blog\_0x42.html) -Es wurde entdeckt, dass es möglich war, **das Installationspaket nach der Überprüfung der Codesignatur durch das System zu tauschen**, sodass das System das bösartige Paket anstelle des Originals installieren würde. Da diese Aktionen von **`system_installd`** durchgeführt wurden, würde dies die Umgehung von SIP ermöglichen. +Es wurde entdeckt, dass es möglich war, **das Installationspaket nach der Überprüfung der Codesignatur durch das System zu tauschen**, sodass das System das bösartige Paket anstelle des Originals installieren würde. Da diese Aktionen von **`system_installd`** durchgeführt wurden, würde dies das Umgehen von SIP ermöglichen. #### [CVE-2020–9854](https://objective-see.org/blog/blog\_0x4D.html) @@ -118,7 +135,7 @@ Wenn ein Paket von einem gemounteten Image oder externen Laufwerk installiert wu #### CVE-2021-30892 - Shrootless -[**Forscher aus diesem Blogbeitrag**](https://www.microsoft.com/en-us/security/blog/2021/10/28/microsoft-finds-new-macos-vulnerability-shrootless-that-could-bypass-system-integrity-protection/) entdeckten eine Schwachstelle im Systemintegritätsschutz (SIP)-Mechanismus von macOS, die als 'Shrootless'-Schwachstelle bezeichnet wird. Diese Schwachstelle konzentriert sich auf den **`system_installd`**-Daemon, der eine Berechtigung, **`com.apple.rootless.install.heritable`**, hat, die es einem seiner Kindprozesse ermöglicht, die Dateisystembeschränkungen von SIP zu umgehen. +[**Forscher aus diesem Blogbeitrag**](https://www.microsoft.com/en-us/security/blog/2021/10/28/microsoft-finds-new-macos-vulnerability-shrootless-that-could-bypass-system-integrity-protection/) entdeckten eine Schwachstelle im Systemintegritätsschutz (SIP) von macOS, die als 'Shrootless'-Schwachstelle bezeichnet wird. Diese Schwachstelle konzentriert sich auf den **`system_installd`**-Daemon, der eine Berechtigung, **`com.apple.rootless.install.heritable`**, hat, die es einem seiner Kindprozesse ermöglicht, die Dateisystembeschränkungen von SIP zu umgehen. Der **`system_installd`**-Daemon installiert Pakete, die von **Apple** signiert wurden. @@ -128,7 +145,7 @@ Darüber hinaus wurde entdeckt, dass **`/etc/zshenv` als allgemeine Angriffstech #### [**CVE-2022-22583**](https://perception-point.io/blog/technical-analysis-cve-2022-22583/) -In [**CVE-2022-22583**](https://perception-point.io/blog/technical-analysis-cve-2022-22583/) wurde entdeckt, dass der gleiche **`system_installd`**-Prozess weiterhin missbraucht werden konnte, da er das **Post-Installationsskript in einen zufällig benannten Ordner, der durch SIP in `/tmp` geschützt ist,** legte. Das Problem ist, dass **`/tmp` selbst nicht durch SIP geschützt ist**, sodass es möglich war, ein **virtuelles Image darauf zu mounten**, dann würde der **Installer** das **Post-Installationsskript** dort ablegen, das virtuelle Image **aushängen**, alle **Ordner neu erstellen** und das **Post-Installationsskript** mit der **Payload** hinzufügen, um es auszuführen. +In [**CVE-2022-22583**](https://perception-point.io/blog/technical-analysis-cve-2022-22583/) wurde entdeckt, dass der gleiche **`system_installd`**-Prozess weiterhin missbraucht werden konnte, da er das **Post-Installations-Skript in einen zufällig benannten Ordner, der durch SIP in `/tmp` geschützt ist,** legte. Das Problem ist, dass **`/tmp` selbst nicht durch SIP geschützt ist**, sodass es möglich war, ein **virtuelles Image darauf zu mounten**, dann würde der **Installer** das **Post-Installations-Skript** dort ablegen, das virtuelle Image **aushängen**, alle **Ordner** **neu erstellen** und das **Post-Installations**-Skript mit der **Payload** zum Ausführen hinzufügen. #### [fsck\_cs utility](https://www.theregister.com/2016/03/30/apple\_os\_x\_rootless/) @@ -141,7 +158,7 @@ fsck_cs /dev/diskX 1>&- touch /Library/Extensions/ reboot ``` -Die Ausnutzung dieser Schwachstelle hat schwerwiegende Folgen. Die `Info.plist`-Datei, die normalerweise für die Verwaltung der Berechtigungen für Kernel-Erweiterungen verantwortlich ist, wird unwirksam. Dazu gehört die Unfähigkeit, bestimmte Erweiterungen wie `AppleHWAccess.kext` auf die schwarze Liste zu setzen. Folglich kann diese Erweiterung, da der Kontrollmechanismus von SIP außer Betrieb ist, geladen werden, was unbefugten Lese- und Schreibzugriff auf den RAM des Systems gewährt. +Die Ausnutzung dieser Schwachstelle hat schwerwiegende Folgen. Die `Info.plist`-Datei, die normalerweise für die Verwaltung von Berechtigungen für Kernel-Erweiterungen verantwortlich ist, wird unwirksam. Dazu gehört die Unfähigkeit, bestimmte Erweiterungen wie `AppleHWAccess.kext` auf die schwarze Liste zu setzen. Folglich kann diese Erweiterung, da der Kontrollmechanismus des SIP außer Betrieb ist, geladen werden, was unbefugten Lese- und Schreibzugriff auf den RAM des Systems gewährt. #### [Mount über SIP geschützte Ordner](https://www.slideshare.net/i0n1c/syscan360-stefan-esser-os-x-el-capitan-sinking-the-ship) @@ -162,7 +179,7 @@ Die Sicherheit dieses Prozesses kann gefährdet werden, wenn ein Angreifer das U Der Code des Angreifers erlangt während des Upgrade-Prozesses die Kontrolle und nutzt das Vertrauen des Systems in den Installer aus. Der Angriff erfolgt durch die Veränderung des `InstallESD.dmg`-Images mittels Method Swizzling, wobei insbesondere die Methode `extractBootBits` ins Visier genommen wird. Dies ermöglicht die Einspeisung von bösartigem Code, bevor das Disk-Image verwendet wird. -Darüber hinaus gibt es im `InstallESD.dmg` ein `BaseSystem.dmg`, das als Wurzel-Dateisystem des Upgrade-Codes dient. Das Einspeisen einer dynamischen Bibliothek in dieses ermöglicht es dem bösartigen Code, innerhalb eines Prozesses zu arbeiten, der in der Lage ist, OS-Level-Dateien zu ändern, was das Potenzial für eine Systemkompromittierung erheblich erhöht. +Darüber hinaus gibt es innerhalb des `InstallESD.dmg` ein `BaseSystem.dmg`, das als Wurzel-Dateisystem des Upgrade-Codes dient. Das Einspeisen einer dynamischen Bibliothek in dieses ermöglicht es dem bösartigen Code, innerhalb eines Prozesses zu arbeiten, der in der Lage ist, OS-Ebene-Dateien zu ändern, was das Potenzial für eine Systemkompromittierung erheblich erhöht. #### [systemmigrationd (2023)](https://www.youtube.com/watch?v=zxZesAN-TEk) @@ -194,7 +211,7 @@ Hier ist ein detaillierterer Blick: 1. **Unveränderliches System**: Versiegelte System-Snapshots machen das macOS-Systemvolumen "unveränderlich", was bedeutet, dass es nicht modifiziert werden kann. Dies verhindert unbefugte oder versehentliche Änderungen am System, die die Sicherheit oder Systemstabilität gefährden könnten. 2. **Systemsoftware-Updates**: Wenn Sie macOS-Updates oder -Upgrades installieren, erstellt macOS einen neuen System-Snapshot. Das macOS-Startvolumen verwendet dann **APFS (Apple File System)**, um zu diesem neuen Snapshot zu wechseln. Der gesamte Prozess der Anwendung von Updates wird sicherer und zuverlässiger, da das System immer zum vorherigen Snapshot zurückkehren kann, wenn während des Updates etwas schiefgeht. -3. **Daten-Trennung**: In Verbindung mit dem Konzept der Trennung von Daten- und Systemvolumen, das in macOS Catalina eingeführt wurde, stellt die Funktion der versiegelten System-Snapshots sicher, dass alle Ihre Daten und Einstellungen auf einem separaten "**Daten**"-Volumen gespeichert werden. Diese Trennung macht Ihre Daten unabhängig vom System, was den Prozess der Systemupdates vereinfacht und die Systemsicherheit erhöht. +3. **Daten-Trennung**: In Verbindung mit dem Konzept der Trennung von Daten- und Systemvolumen, das in macOS Catalina eingeführt wurde, stellt die Funktion des versiegelten System-Snapshots sicher, dass alle Ihre Daten und Einstellungen auf einem separaten "**Daten**"-Volumen gespeichert werden. Diese Trennung macht Ihre Daten unabhängig vom System, was den Prozess der Systemupdates vereinfacht und die Systemsicherheit erhöht. Denken Sie daran, dass diese Snapshots automatisch von macOS verwaltet werden und dank der Speicherfreigabefunktionen von APFS keinen zusätzlichen Speicherplatz auf Ihrer Festplatte beanspruchen. Es ist auch wichtig zu beachten, dass diese Snapshots sich von **Time Machine-Snapshots** unterscheiden, die benutzerzugängliche Backups des gesamten Systems sind. @@ -206,8 +223,8 @@ Der Befehl **`diskutil apfs list`** listet die **Details der APFS-Volumes** und | ==================================================== | APFS Container Reference: disk3 | Size (Capacity Ceiling): 494384795648 B (494.4 GB) -| Capacity In Use By Volumes: 219214536704 B (219.2 GB) (44.3% verwendet) -| Capacity Not Allocated: 275170258944 B (275.2 GB) (55.7% frei) +| Capacity In Use By Volumes: 219214536704 B (219.2 GB) (44.3% used) +| Capacity Not Allocated: 275170258944 B (275.2 GB) (55.7% free) | | | +-< Physical Store disk0s2 86D4B7EC-6FA5-4042-93A7-D3766A222EBE | | ----------------------------------------------------------- @@ -216,32 +233,32 @@ Der Befehl **`diskutil apfs list`** listet die **Details der APFS-Volumes** und | | | +-> Volume disk3s1 7A27E734-880F-4D91-A703-FB55861D49B7 | | --------------------------------------------------- -| | APFS Volume Disk (Rolle): disk3s1 (System) -| | Name: Macintosh HD (Groß-/Kleinschreibung-empfindlich) +| | APFS Volume Disk (Role): disk3s1 (System) +| | Name: Macintosh HD (Groß-/Kleinschreibung ignorierend) | | Mount Point: /System/Volumes/Update/mnt1 | | Capacity Consumed: 12819210240 B (12.8 GB) -| | Versiegelt: Gebrochen +| | Sealed: Broken | | FileVault: Ja (Entsperrt) -| | Verschlüsselt: Nein +| | Encrypted: Nein | | | | | Snapshot: FAA23E0C-791C-43FF-B0E7-0E1C0810AC61 | | Snapshot Disk: disk3s1s1 | | Snapshot Mount Point: / -| | Snapshot Versiegelt: Ja +| | Snapshot Sealed: Ja [...] +-> Volume disk3s5 281959B7-07A1-4940-BDDF-6419360F3327 | --------------------------------------------------- -| APFS Volume Disk (Rolle): disk3s5 (Daten) -| Name: Macintosh HD - Daten (Groß-/Kleinschreibung-empfindlich) +| APFS Volume Disk (Role): disk3s5 (Daten) +| Name: Macintosh HD - Daten (Groß-/Kleinschreibung ignorierend) | Mount Point: /System/Volumes/Data | Capacity Consumed: 412071784448 B (412.1 GB) - | Versiegelt: Nein + | Sealed: Nein | FileVault: Ja (Entsperrt) Im vorherigen Output ist zu sehen, dass **benutzerzugängliche Orte** unter `/System/Volumes/Data` gemountet sind. -Darüber hinaus ist der **macOS-Systemvolumensnapshot** unter `/` gemountet und ist **versiegelt** (kryptografisch vom OS signiert). Wenn SIP umgangen und geändert wird, wird das **OS nicht mehr booten**. +Darüber hinaus ist der **macOS-Systemvolumensnapshot** unter `/` gemountet und ist **versiegelt** (kryptografisch vom OS signiert). Wenn SIP umgangen und modifiziert wird, wird das **OS nicht mehr booten**. Es ist auch möglich, **zu überprüfen, ob das Siegel aktiviert ist**, indem Sie Folgendes ausführen: ```bash @@ -254,8 +271,8 @@ mount /dev/disk3s1s1 on / (apfs, sealed, local, read-only, journaled) ``` {% hint style="success" %} -Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ -Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte) +Lerne & übe AWS Hacking:[**HackTricks Training AWS Red Team Expert (ARTE)**](https://training.hacktricks.xyz/courses/arte)\ +Lerne & übe GCP Hacking: [**HackTricks Training GCP Red Team Expert (GRTE)**](https://training.hacktricks.xyz/courses/grte)
@@ -267,4 +284,3 @@ Lerne & übe GCP Hacking: {% endhint %} -