macOS Bundles
Lernen & üben Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP-Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Grundlegende Informationen
Bundles in macOS dienen als Container für verschiedene Ressourcen, einschließlich Anwendungen, Bibliotheken und anderen erforderlichen Dateien, die sie im Finder als einzelne Objekte erscheinen lassen, wie die vertrauten *.app
-Dateien. Das am häufigsten verwendete Bundle ist das .app
-Bundle, obwohl auch andere Typen wie .framework
, .systemextension
und .kext
verbreitet sind.
Wesentliche Komponenten eines Bundles
Innerhalb eines Bundles, insbesondere innerhalb des <Anwendung>.app/Contents/
-Verzeichnisses, sind verschiedene wichtige Ressourcen untergebracht:
_CodeSignature: Dieses Verzeichnis speichert wichtige Code-Signaturdetails zur Überprüfung der Integrität der Anwendung. Sie können die Code-Signaturinformationen mit Befehlen wie überprüfen: %%%bash openssl dgst -binary -sha1 /Applications/Safari.app/Contents/Resources/Assets.car | openssl base64 %%%
MacOS: Enthält das ausführbare Binär der Anwendung, das bei Benutzerinteraktion ausgeführt wird.
Ressourcen: Ein Repository für die Benutzeroberflächenkomponenten der Anwendung, einschließlich Bilder, Dokumente und Schnittstellenbeschreibungen (nib/xib-Dateien).
Info.plist: Dient als Hauptkonfigurationsdatei der Anwendung, die für das System entscheidend ist, um die Anwendung angemessen zu erkennen und mit ihr zu interagieren.
Wichtige Schlüssel in Info.plist
Die Datei Info.plist
ist ein Eckpfeiler für die Anwendungskonfiguration und enthält Schlüssel wie:
CFBundleExecutable: Gibt den Namen der Hauptausführungsdatei an, die sich im Verzeichnis
Contents/MacOS
befindet.CFBundleIdentifier: Bietet einen globalen Bezeichner für die Anwendung, der von macOS umfangreich für die Anwendungsverwaltung verwendet wird.
LSMinimumSystemVersion: Gibt die minimale macOS-Version an, die für das Ausführen der Anwendung erforderlich ist.
Erkunden von Bundles
Um den Inhalt eines Bundles wie Safari.app
zu erkunden, kann der folgende Befehl verwendet werden: bash ls -lR /Applications/Safari.app/Contents
Diese Erkundung zeigt Verzeichnisse wie _CodeSignature
, MacOS
, Ressourcen
und Dateien wie Info.plist
, die jeweils einen einzigartigen Zweck von der Sicherung der Anwendung bis zur Definition ihrer Benutzeroberfläche und Betriebsparameter erfüllen.
Zusätzliche Bundle-Verzeichnisse
Über die üblichen Verzeichnisse hinaus können Bundles auch enthalten:
Frameworks: Enthält gebündelte Frameworks, die von der Anwendung verwendet werden. Frameworks sind wie dylibs mit zusätzlichen Ressourcen.
PlugIns: Ein Verzeichnis für Plug-Ins und Erweiterungen, die die Fähigkeiten der Anwendung verbessern.
XPCServices: Enthält XPC-Dienste, die von der Anwendung für die Kommunikation außerhalb des Prozesses verwendet werden.
Diese Struktur gewährleistet, dass alle erforderlichen Komponenten im Bundle eingeschlossen sind und eine modulare und sichere Anwendungsumgebung ermöglichen.
Für weitere detaillierte Informationen zu Info.plist
-Schlüsseln und deren Bedeutung bietet die Apple-Entwicklerdokumentation umfangreiche Ressourcen: Apple Info.plist Key Reference.
Lernen & üben Sie AWS-Hacking:HackTricks Training AWS Red Team Expert (ARTE)
Lernen & üben Sie GCP-Hacking:
HackTricks Training GCP Red Team Expert (GRTE)
Last updated