macOS Sensitive Locations & Interesting Daemons
Last updated
Last updated
Lernen & üben Sie AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Lernen & üben Sie GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Das Schattenpasswort wird mit der Konfiguration des Benutzers in Plists gespeichert, die sich in /var/db/dslocal/nodes/Default/users/
befinden.
Der folgende Einzeiler kann verwendet werden, um alle Informationen über die Benutzer (einschließlich Hash-Informationen) zu dumpen:
Skripte wie dieses hier oder dieses hier können verwendet werden, um den Hash in hashcat Format zu transformieren.
Eine alternative Einzeiler, die die Anmeldeinformationen aller Nicht-Dienstkonten im hashcat-Format -m 7100
(macOS PBKDF2-SHA512) ausgibt:
Eine weitere Möglichkeit, die ShadowHashData
eines Benutzers zu erhalten, ist die Verwendung von dscl
: sudo dscl . -read /Users/`whoami` ShadowHashData
Diese Datei wird nur verwendet, wenn das System im Einbenutzermodus läuft (also nicht sehr häufig).
Beachten Sie, dass beim Verwenden der Sicherheits-Binärdatei, um die entschlüsselten Passwörter zu dumpen, mehrere Aufforderungen den Benutzer bitten, diese Operation zuzulassen.
Basierend auf diesem Kommentar juuso/keychaindump#10 (Kommentar) scheint es, dass diese Tools in Big Sur nicht mehr funktionieren.
Ein Tool namens keychaindump wurde entwickelt, um Passwörter aus macOS-Schlüsselbunden zu extrahieren, hat jedoch Einschränkungen bei neueren macOS-Versionen wie Big Sur, wie in einer Diskussion angegeben. Die Verwendung von keychaindump erfordert, dass der Angreifer Zugriff erlangt und die Berechtigungen auf root eskaliert. Das Tool nutzt die Tatsache aus, dass der Schlüsselbund standardmäßig beim Benutzer-Login zur Bequemlichkeit entsperrt ist, sodass Anwendungen darauf zugreifen können, ohne das Passwort des Benutzers wiederholt eingeben zu müssen. Wenn ein Benutzer jedoch beschließt, seinen Schlüsselbund nach jeder Verwendung zu sperren, wird keychaindump unwirksam.
Keychaindump zielt auf einen bestimmten Prozess namens securityd ab, der von Apple als Daemon für Autorisierungs- und kryptografische Operationen beschrieben wird und entscheidend für den Zugriff auf den Schlüsselbund ist. Der Extraktionsprozess umfasst die Identifizierung eines Master Key, der aus dem Login-Passwort des Benutzers abgeleitet ist. Dieser Schlüssel ist entscheidend für das Lesen der Schlüsselbunddatei. Um den Master Key zu finden, scannt keychaindump den Speicherheap von securityd mit dem Befehl vmmap
und sucht nach potenziellen Schlüsseln in Bereichen, die als MALLOC_TINY
gekennzeichnet sind. Der folgende Befehl wird verwendet, um diese Speicherorte zu inspizieren:
Nach der Identifizierung potenzieller Master-Schlüssel durchsucht keychaindump die Heaps nach einem spezifischen Muster (0x0000000000000018
), das einen Kandidaten für den Master-Schlüssel anzeigt. Weitere Schritte, einschließlich Deobfuskation, sind erforderlich, um diesen Schlüssel zu nutzen, wie im Quellcode von keychaindump dargelegt. Analysten, die sich auf dieses Gebiet konzentrieren, sollten beachten, dass die entscheidenden Daten zum Entschlüsseln des Schlüsselspeichers im Speicher des securityd-Prozesses gespeichert sind. Ein Beispielbefehl zum Ausführen von keychaindump ist:
Chainbreaker kann verwendet werden, um die folgenden Arten von Informationen aus einem OSX-Schlüsselbund auf forensisch einwandfreie Weise zu extrahieren:
Gehashtes Schlüsselbund-Passwort, geeignet zum Knacken mit hashcat oder John the Ripper
Internet-Passwörter
Generische Passwörter
Private Schlüssel
Öffentliche Schlüssel
X509-Zertifikate
Sichere Notizen
Appleshare-Passwörter
Mit dem Schlüsselbund-Entsperrpasswort, einem Master-Schlüssel, der mit volafox oder volatility erhalten wurde, oder einer Entsperrdatei wie SystemKey, wird Chainbreaker auch Klartext-Passwörter bereitstellen.
Ohne eine dieser Methoden zum Entsperren des Schlüsselbunds zeigt Chainbreaker alle anderen verfügbaren Informationen an.
Befolgen Sie diese Schritte, um einen Speicherauszug durchzuführen.
Wenn Sie das Passwort des Benutzers kennen, können Sie es verwenden, um Keychains, die dem Benutzer gehören, zu dumpen und zu entschlüsseln.
Die kcpassword-Datei ist eine Datei, die das Login-Passwort des Benutzers enthält, jedoch nur, wenn der Systembesitzer die automatische Anmeldung aktiviert hat. Daher wird der Benutzer automatisch angemeldet, ohne nach einem Passwort gefragt zu werden (was nicht sehr sicher ist).
Das Passwort wird in der Datei /etc/kcpassword
mit dem Schlüssel 0x7D 0x89 0x52 0x23 0xD2 0xBC 0xDD 0xEA 0xA3 0xB9 0x1F
xored. Wenn das Passwort des Benutzers länger als der Schlüssel ist, wird der Schlüssel wiederverwendet.
Das macht es ziemlich einfach, das Passwort wiederherzustellen, zum Beispiel mit Skripten wie diesem.
Sie finden die Benachrichtigungsdaten in $(getconf DARWIN_USER_DIR)/com.apple.notificationcenter/
Die meisten interessanten Informationen befinden sich in blob. Sie müssen also diesen Inhalt extrahieren und in menschlich lesbare Form transformieren oder strings
verwenden. Um darauf zuzugreifen, können Sie Folgendes tun:
Die Notizen der Benutzer befinden sich in ~/Library/Group Containers/group.com.apple.notes/NoteStore.sqlite
In macOS-Apps befinden sich die Einstellungen in $HOME/Library/Preferences
und in iOS sind sie in /var/mobile/Containers/Data/Application/<UUID>/Library/Preferences
.
In macOS kann das CLI-Tool defaults
verwendet werden, um die Einstellungsdatei zu ändern.
/usr/sbin/cfprefsd
beansprucht die XPC-Dienste com.apple.cfprefsd.daemon
und com.apple.cfprefsd.agent
und kann aufgerufen werden, um Aktionen wie das Ändern von Einstellungen durchzuführen.
Die Datei /System/Library/OpenDirectory/permissions.plist
enthält Berechtigungen, die auf Knotenattribute angewendet werden, und ist durch SIP geschützt.
Diese Datei gewährt bestimmten Benutzern Berechtigungen anhand der UUID (und nicht uid), sodass sie auf spezifische sensible Informationen wie ShadowHashData
, HeimdalSRPKey
und KerberosKeys
unter anderem zugreifen können:
Der Hauptdaemon für Benachrichtigungen ist /usr/sbin/notifyd
. Um Benachrichtigungen zu empfangen, müssen sich Clients über den Mach-Port com.apple.system.notification_center
registrieren (überprüfen Sie sie mit sudo lsmp -p <pid notifyd>
). Der Daemon ist konfigurierbar mit der Datei /etc/notify.conf
.
Die für Benachrichtigungen verwendeten Namen sind eindeutige umgekehrte DNS-Notationen, und wenn eine Benachrichtigung an einen von ihnen gesendet wird, erhalten die Client(s), die angegeben haben, dass sie damit umgehen können, diese.
Es ist möglich, den aktuellen Status zu dumpen (und alle Namen zu sehen), indem das Signal SIGUSR2 an den notifyd-Prozess gesendet und die generierte Datei gelesen wird: /var/run/notifyd_<pid>.status
:
Das Distributed Notification Center, dessen Hauptbinary /usr/sbin/distnoted
ist, ist eine weitere Möglichkeit, Benachrichtigungen zu senden. Es stellt einige XPC-Dienste zur Verfügung und führt einige Überprüfungen durch, um zu versuchen, die Clients zu verifizieren.
In diesem Fall können Anwendungen sich für Themen registrieren. Der Client generiert ein Token, indem er die Server von Apple über apsd
kontaktiert.
Dann haben die Anbieter ebenfalls ein Token generiert und können sich mit den Servern von Apple verbinden, um Nachrichten an die Clients zu senden. Diese Nachrichten werden lokal von apsd
empfangen, das die Benachrichtigung an die wartende Anwendung weiterleitet.
Die Einstellungen befinden sich in /Library/Preferences/com.apple.apsd.plist
.
Es gibt eine lokale Datenbank von Nachrichten, die sich in macOS in /Library/Application\ Support/ApplePushService/aps.db
und in iOS in /var/mobile/Library/ApplePushService
befindet. Sie hat 3 Tabellen: incoming_messages
, outgoing_messages
und channel
.
Es ist auch möglich, Informationen über den Daemon und die Verbindungen zu erhalten, indem man:
Dies sind Benachrichtigungen, die der Benutzer auf dem Bildschirm sehen sollte:
CFUserNotification
: Diese API bietet eine Möglichkeit, ein Pop-up mit einer Nachricht auf dem Bildschirm anzuzeigen.
Das Bulletin Board: Dies zeigt in iOS ein Banner, das verschwindet und im Benachrichtigungszentrum gespeichert wird.
NSUserNotificationCenter
: Dies ist das iOS-Bulletin-Board in MacOS. Die Datenbank mit den Benachrichtigungen befindet sich in /var/folders/<user temp>/0/com.apple.notificationcenter/db2/db
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)