Skip to content
KitploitKITPLOIT
ToolsExploitsBlog
Log in
Einreichen
ToolsExploitsBlog
Einreichen

Hacking-, PenTest- und Cybersicherheits-Tools für Ihr Sicherheitsarsenal!

Kitploit ist ein Verzeichnis von Hacking-, Cybersicherheits- und Pentesting-Tools. Entdecken Sie die neuesten Projekt-Updates, um Schwachstellen zu finden, Systeme zu analysieren, Tests zu automatisieren und Ihre Sicherheit zu stärken.

FeedsKontaktDatenschutz© 2026 Kitploit

Tool-Verzeichnis

Kategorien

Alle Kategorien anzeigen
Loading categories
macos_app_structure — Lehrreicher Deep Dive in macOS-App-Bundles, Plist-Dateien und das Prozessverhalten von launchd, mit Hinweisen zur offensiven Sicherheit beim Verpacken von Payloads als .app-Dateien und zur Umgehung von Prozessbaum-Überwachung. | Kitploit
Tools/GitHubGitHub/yo-yo-yo-jbo/macos_app_structure
PersistenzmechanismenIDS/IPS-UmgehungLernen & BildungRed TeamingPayload-Entwicklung
GitHubyo-yo-yo-jbo/macos_app_structure

macos_app_structure

Lehrreicher Deep Dive in macOS-App-Bundles, Plist-Dateien und das Prozessverhalten von launchd, mit Hinweisen zur offensiven Sicherheit beim Verpacken von Payloads als .app-Dateien und zur Umgehung von Prozessbaum-Überwachung.

Beliebteste

Alle anzeigen →

Entdecken Sie die meistgenutzten Tools unserer Community.

Alle Tools erkunden

Durchsuchen Sie unsere Tool-Sammlung

Alle Tools anzeigen →
Repository anzeigen
47218vor 2 MonatenVon Kitploit geprüft
Teilen

Einführung in macOS - macOS-App-Struktur

Der Wechsel zu macOS von Linux oder Windows kann sich anfühlen, als würde man in einem fremden neuen Land umherirren. Da Linux Open-Source ist und Windows gut dokumentiert und sehr beliebt ist (und macOS genau genommen keines von beidem ist), kann macOS manchmal herausfordernd sein. In diesem Blogbeitrag möchte ich einige der ersten Dinge besprechen, die einem auf macOS auffallen könnten - Apps, Apps überall!

Apps vs. Prozesse (Tasks?)

Wenn man aus der Windows- oder Linux-Welt kommt, mag das Konzept von Apps seltsam erscheinen. Wir alle wissen, dass Threads "Ausführungseinheiten" sind und Prozesse Container für Threads mit eigenem Adressraum sind -- was steckt schon mehr dahinter? Nun, Prozesse werden selten in einzelnen Dateien ausgeliefert. Sowohl unter Windows als auch unter Linux gibt es viele Dinge, die Code möglicherweise benötigt, um zu funktionieren, einige davon sind:

  • Ladbare Module (.dll, .so). Zum Beispiel die C-Laufzeitbibliothek (msvcr<version>.dll unter Windows, libc-<version>.so) sowie andere Abhängigkeiten.
  • Ressourcen. Zum Beispiel haben ausführbare Dateien unter Windows ein Format namens PE, das Verzeichnisse besitzt - eines davon ist das Ressourcenverzeichnis (sogar gewissermaßen hier dokumentiert), das Ressourcen (Bilder, Zeichenketten und andere) enthalten kann. Ressourcen können natürlich auch dynamisch von der Festplatte geladen werden.
  • Digitale Signaturen. Diese sind unter Linux weniger verbreitet (obwohl sie in gewisser Form existieren - zum Beispiel in Debian-Paketen), aber wichtig. Unter Windows können sie in der PE-Datei selbst enthalten sein (lies hier) oder in Katalogdateien (d. h. extern).
  • Konfiguration. Unter Linux sind das Dateien (wie deine vertrauenswürdigen .bashrc-Dateien), und unter Windows verteilen sie sich auf Dateien (z. B. xml, ini, json) und die Windows-Registry.
  • Andere ausführbare Dateien.

Nun, macOS legt großen Wert auf Application Bundles. Die Idee ist, (fast) alles, was das Programm zum Ausführen benötigt, in einer Verzeichnisstruktur zu bündeln - einschließlich Ressourcen, Lokalisierungsinformationen usw. Natürlich kann nicht alles sauber verpackt werden (wie zum Beispiel die C-Laufzeitbibliothek) - aber es bedeutet dennoch, dass die Dinge ordentlich gebündelt werden - keine Notwendigkeit, eine riesige Registry zu durchforsten oder Handbuchseiten für obskure Konfigurationsdateipfade zu lesen. Application Bundles sind einfach Verzeichnisse, die auf .app enden - auch wenn die Benutzeroberfläche die .app-Erweiterung (und die Tatsache, dass es sich um ein Verzeichnis handelt) verbirgt. Aus der Perspektive eines Angreifers ist das interessant - da ein Application Bundle beliebige Symbole haben und die .app-Erweiterung verbergen kann, könnte das Ausliefern von Malware erreicht werden, indem man einen ahnungslosen Benutzer dazu bringt, auf eine solche App zu klicken. Denke zum Beispiel an eine Resume.app-Datei mit einem PDF-Symbol.

Die Verzeichnisstruktur eines Application Bundle kann leicht untersucht werden, offensichtlich anhand der integrierten App Calculator:

jbo@McJbo ~ % cd /System/Applications/Calculator.app
jbo@McJbo Calculator.app % ll
total 0
drwxr-xr-x   3 root  wheel    96 Mar 17 21:34 .
drwxr-xr-x  43 root  wheel  1376 Mar 17 21:34 ..
drwxr-xr-x   9 root  wheel   288 Mar 17 21:34 Contents
jbo@McJbo Calculator.app % cd Contents
jbo@McJbo Contents % ll
total 16
drwxr-xr-x    9 root  wheel   288 Mar 17 21:34 .
drwxr-xr-x    3 root  wheel    96 Mar 17 21:34 ..
-rw-r--r--    1 root  wheel  2147 Mar 17 21:34 Info.plist
drwxr-xr-x    3 root  wheel    96 Mar 17 21:34 MacOS
-rw-r--r--  204 root  wheel     8 Mar 17 21:34 PkgInfo
drwxr-xr-x    4 root  wheel   128 Mar 17 21:34 PlugIns
drwxr-xr-x   54 root  wheel  1728 Mar 17 21:34 Resources
drwxr-xr-x    3 root  wheel    96 Mar 17 21:34 _CodeSignature
-rw-r--r--    1 root  wheel   461 Mar 17 21:34 version.plist
jbo@McJbo Contents % cd MacOS
jbo@McJbo MacOS % ll
total 344
drwxr-xr-x  3 root  wheel      96 Mar 17 21:34 .
drwxr-xr-x  9 root  wheel     288 Mar 17 21:34 ..
-rwxr-xr-x  1 root  wheel  540912 Mar 17 21:34 Calculator
jbo@McJbo MacOS %

Wie du sehen kannst, ist Calculator.app ein Verzeichnis. Darunter befindet sich ein einzelnes Element - ein weiteres Verzeichnis namens Contents. Unter Contents befinden sich mehrere Elemente:

  • Info.plist - enthält Metadaten über die App. Mehr dazu später.
  • MacOS - enthält die Haupt-Executable der App (wie in der dritten Verzeichnisauflistung zu sehen ist).
  • PkgInfo - optional. Eine Binärdatei, die Paketinformationen enthält.
  • PlugIns - optional. Ein Verzeichnis, das Plugins für die App enthalten kann. Calculator hat zwei - eines für "Basic and Scientific" und eines für "Hexadecimal" (ich weiß wirklich nicht, warum sie diese Trennung vorgenommen haben, und es ist mir auch egal).
  • Resources - optional. Wie der Name vermuten lässt, enthält es Ressourcen. Du findest dort möglicherweise mehrere Elemente, darunter eine .icns-Datei mit Symbolen sowie Verzeichnisse mit dem Suffix .lprroj, die mit der Lokalisierung zusammenhängen.
  • _CodeSignature - optional. Wie der Name vermuten lässt - enthält Informationen zur Codesignierung.
  • version.plist - optional, enthält Versionsinformationen.

Beachte, dass es nur sehr wenige Elemente gibt, die offiziell erforderlich sind. Tatsächlich können wir unsere erste eigene App erstellen, ohne auch nur etwas zu kompilieren! Aber zuerst müssen wir die Datei Info.plist besprechen.

Property-List-Dateien

Je mehr man sich macOS ansieht, desto mehr dieser seltsamen Dateien findet man. Sie sind nichts weiter als hochtrabend bezeichnete Konfigurationsdateien. Sie haben immer eine .plist-Erweiterung, die nur eine Kurzform ihres formalen Namens ist: Property list-Dateien. Leider gibt es drei verschiedene plist-Formate, die von Apple gepflegt werden:

  • Ein xml-Format, das für Menschen lesbar ist.
  • Ein json-Format, das nicht weit verbreitet ist.
  • Ein binäres Format, das normalerweise am Text bplist als Magic erkennbar ist.

Glücklicherweise gibt es ein Dienstprogramm namens plutil, das alle Formate unterstützt. Um eine plist-Datei auszugeben, verwende einfach plutil -p. Zum Beispiel:

jbo@McJbo Contents % plutil -p Info.plist | head -n 20
{
  "BuildMachineOSBuild" => "22A380007"
  "CFBundleDevelopmentRegion" => "English"
  "CFBundleExecutable" => "Calculator"
  "CFBundleGetInfoString" => "10.14, Copyright © 2000-2018, Apple Inc."
  "CFBundleHelpBookFolder" => "Calculator.help"
  "CFBundleHelpBookName" => "com.apple.Calculator.help"
  "CFBundleIconFile" => "AppIcon"
  "CFBundleIconName" => "AppIcon"
  "CFBundleIdentifier" => "com.apple.calculator"
  "CFBundleInfoDictionaryVersion" => "6.0"
  "CFBundleName" => "Calculator"
  "CFBundlePackageType" => "APPL"
  "CFBundleShortVersionString" => "10.16"
  "CFBundleSignature" => "????"
  "CFBundleSupportedPlatforms" => [
    0 => "MacOSX"
  ]
  "CFBundleVersion" => "223"
  "CTIgnoreUserFonts" => 1
jbo@McJbo Contents %
Tool herunterladen