macOS Incident Forensik: UnifiedLogs, FSEvents und AULR im Einsatz
Wie Basilisk auf macOS Sonoma und Sequoia mit UnifiedLogs, FSEvents und AULR Beweise sichert, ohne den Tatort zu zerstoeren.
Ein MacBook Pro M3 landet auf dem Tisch, im Verdacht, ein Payload mit widerrufener Developer ID ausgefuehrt zu haben. Der Kunde will Antworten in 48 Stunden, die Platte ist mit FileVault verschluesselt, und der Nutzer ist im Urlaub in einer anderen Zeitzone. Bevor irgendein Tool startet, klaert das Basilisk Team den rechtlichen Rahmen, empfaengt das FileVault Passwort ueber einen gepruegten Kanal und protokolliert einen SHA-256 Hash des Initial-Images. Auf modernem macOS kommt man nicht weit ohne zu wissen, dass sich der Logging Stack seit Sierra drastisch geaendert hat: klassische .log Dateien wurden durch binaere tracev3 ersetzt, und das zu ignorieren kostet 80% der verfuegbaren Telemetrie.
UnifiedLogs liegen unter /var/db/diagnostics und /var/db/uuidtext und wiegen je nach Nutzung 500 MB bis 4 GB. Fuer Live Capture starten wir log collect --output incident.logarchive, was den aktuellen Zustand in ein portables Bundle einfriert. Bei Dead Box Analysen kopieren wir die rohen Verzeichnisse und uebergeben sie macos-UnifiedLogs von Mandiant, einem Rust Parser, der keinen passenden Apple Host mehr verlangt. Frueher musste ein Mac mit exakt der Zielversion betriebsbereit gehalten werden, nur um /usr/bin/log zu rufen. Fuer den defensiven Kontext lest diesen Artikel parallel zu macOS-Hardening: Lockdown Mode, MDM und Angriffsflaechenreduktion.
FSEvents ist die zweite Saeule und beantwortet die Frage 'was hat sich auf diesem Volume wann geaendert'. Die Logs liegen in /.fseventsd/ als nummerierte gzip Dateien; jeder Eintrag enthaelt eine monotone Event ID plus Flags fuer Create, Rename oder Delete. Wichtige Einschraenkung: FSEvents speichert weder Inhalt noch den ausloesenden Nutzer, nur Pfad und Operation. Die Kombination mit UnifiedLogs ergibt eine belastbare Timeline. Tools wie David Cowens FSEventsParser kauen das in Sekunden durch und liefern Timesketch-fertiges CSV, im Geist des Workflows aus Timeline Forensics unter Windows: Plaso, Log2Timeline und KAPE in der Praxis, auf die Apple Welt umgemuenzt.
AULR, genauer Apple Unified Logging mit Activity Tracing, ergaenzt Parent Prozess, Thread ID und Signpost Kontext. Praedikate sind dein schaerfstes Werkzeug: log show --predicate 'subsystem == "com.apple.securityd"' --last 24h zeigt verdaechtige XPC Versuche, und subsystem com.apple.TCC offenbart Mikrofon und Kamera Prompts, die abgelehnt oder erlaubt wurden. In einem realen Fall im Juni dieses Jahres hinterliess eine Atomic AMOS Stealer Variante Spuren in com.apple.kextd beim Versuch, ein KEXT auf einem Mac mit aktivem SIP zu laden und laut zu scheitern. Ohne dieses Praedikat ertrinkt das Ereignis in Millionen Zeilen.
Auf der ethischen Capture Seite folgt Basilisk einem fixen Runbook: schriftliche Kundenautorisierung, Thunderbolt Write Blocker fuer das Disk Image wenn moeglich, SHA-256 und SHA-3-512 Hashes sowie Chain-of-Custody Logs signiert mit YubiKey Hardware Keys. Wenn der Mac lebt und nicht heruntergefahren werden kann, nutzen wir CrowdStrikes aftriage oder das macos_artifact_collection Rezept fuer Velociraptor und schreiben die Ausgabe immer auf eine dedizierte APFS SSD. Diese Disziplin spiegelt das wider, was wir in DFIR unter Linux: Live-Triage mit UAC und Velociraptor gezeigt haben, und verbindet sich mit OPSEC fuer Security-Researcher: Persoenliches Bedrohungsmodell, denn ohne Schutz zu ermitteln ist wie ohne Maske in ein qualmendes Haus zu gehen.
Die Analyse laeuft parallel: waehrend macos-UnifiedLogs im Hintergrund JSONL streamt, inspizieren wir Spotlight Metadaten per mdls auf verdaechtigen Dateien, exportieren KnowledgeC.db aus CoreDuet um fokussierte Fenster zu mappen, und durchlaufen /private/var/db/CoreDuet/Knowledge um Terminal Nutzung mit ungewoehnlichen Zeiten zu korrelieren. Alles fliesst in ein Jupyter Notebook mit pandas, in dem wir UnifiedLogs PIDs gegen FSEvents Pfade joinen. Taucht Loader Verhalten auf, reimt es sich meist auf die Techniken aus Malware-Analyse im Isolierten Lab: Sicheres Setup mit FlareVM und REMnux, vom PE auf Mach-O umgestellt.
Praktisches Takeaway: bau dir heute ein Baseline Logarchive deines eigenen Mac mit log collect und leg es neben einen APFS Snapshot von /.fseventsd. Beim naechsten komischen Verhalten hast du einen echten zeitlichen Diff statt Vermutungen. Diese Baseline kostet fuenf Minuten und erspart dir Tage reaktiver Ermittlung, wenn der Vorfall tatsaechlich klopft.