Was macht macos-process-einschleusung?
macOS-Prozesseinschleusungs-Playbook. Verwenden Sie es, wenn Sie Code in laufende oder startende macOS-Prozesse einschleusen müssen, z. B. durch Dylib-Entführung, DYLD-Umgebungsvariablen, XPC-Ausnutzung, Mach-Port-Manipulation oder Electron/Chromium-Missbrauch.
Überblick
Dieses Skill bietet eine Sammlung von Techniken zur Code-Einschleusung in macOS-Prozesse. Es ist nützlich für Sicherheitsforschung, Penetrationstests oder fortgeschrittene Systemadministration. Jede Technik wird mit konkreten Befehlen und Erklärungen beschrieben.
Voraussetzungen
- macOS (getestet auf Versionen 10.15+)
- Administratorrechte (Root) für viele Techniken
- Grundlegende Kenntnisse der macOS-Architektur (Mach, XPC, Dylibs)
Techniken
1. Dylib-Entführung (DYLD_INSERT_LIBRARIES)
Diese Technik nutzt die Umgebungsvariable DYLD_INSERT_LIBRARIES, um eine benutzerdefinierte dynamische Bibliothek in einen Prozess zu laden, bevor dessen Code ausgeführt wird.
Schritte:
- Erstellen Sie eine Dylib (z. B.
inject.dylib) mit Ihrer Payload. - Setzen Sie die Umgebungsvariable:
DYLD_INSERT_LIBRARIES=/pfad/zu/inject.dylib /pfad/zum/zielprogramm - Führen Sie das Programm aus.
Hinweis: Auf modernen macOS-Versionen wird diese Technik durch Systemintegritätsschutz (SIP) eingeschränkt. Sie funktioniert nur für nicht-Apple-Prozesse oder wenn SIP deaktiviert ist.
2. XPC-Exploitation
XPC (XNU Process Control) ermöglicht Interprozesskommunikation. Durch Ausnutzen von XPC-Diensten können Sie in andere Prozesse einschleusen.
Beispiele:
# Listen Sie XPC-Dienste auf
launchctl list
# Manipulieren Sie einen XPC-Dienst
# (Details abhängig von der Zielanwendung)
3. Mach-Port-Manipulation
Direkter Zugriff auf Mach-Ports ermöglicht es, Speicher zu lesen/schreiben und Prozesse zu steuern.
Befehl:
# Erhalten Sie einen Task-Port für einen PID
task_for_pid(mach_task_self(), pid, &task_port);
# Verwenden Sie den Port zum Einschleusen von Code
4. Electron/Chromium-Missbrauch
In Electron- oder Chromium-basierten Anwendungen können Sie den --inspect-Flag oder Developer Tools ausnutzen, um JavaScript-Code einzuschleusen.
Schritte:
- Starten Sie die Anwendung mit Debugging:
/pfad/zur/anwendung --inspect=9229 - Verbinden Sie sich mit Chrome DevTools oder einem Debugger.
- Führen Sie benutzerdefinierten JavaScript-Code aus.
Alternative: Nutzen Sie --remote-debugging-port für Chromium.
5. DYLD-Umgebungsvariablen (weitere Techniken)
Neben DYLD_INSERT_LIBRARIES können auch DYLD_LIBRARY_PATH oder DYLD_FRAMEWORK_PATH verwendet werden, um Bibliotheken umzuleiten.
export DYLD_LIBRARY_PATH=/pfad/zu/meinen/libs
./zielprogramm
Sicherheitshinweise
- Viele dieser Techniken erfordern Root-Rechte.
- Deaktivieren Sie SIP auf älteren Systemen nur für Testzwecke.
- Verwenden Sie diese Techniken nur in autorisierten Umgebungen (z. B. eigene Systeme, CTF-Wettbewerbe).