macOS Unified Logs für die Forensik sichern
macOS Unified Logs mit log collect, Rohkopie von diagnostics und uuidtext, UAC, Velociraptor oder mac_apt sichern – ohne Lücken, die das Parsen stören.
Kurz gesagt. Sichern Sie den gesamten Speicher, nicht nur die .tracev3-Dateien: Der Meldungstext steht in uuidtext und dsc, und für die Zeitangaben braucht es timesync. Auf einem laufenden Mac erledigt sudo log collect all das in einem einzigen .logarchive. Aus einem Image oder mit einem Triage-Werkzeug kopieren Sie /private/var/db/diagnostics und /private/var/db/uuidtext mit ihrer Struktur. Jede der folgenden Methoden liefert etwas, das der Unified Log Parser direkt öffnet.
Was Sie am Ende brauchen
| Benötigt | Warum |
|---|---|
diagnostics/Persist, Special, Signpost, HighVolume | die Einträge (.tracev3) |
diagnostics/timesync | rechnet bootrelative Zeiten in UTC um |
uuidtext/00…FF | Formatstrings jedes Binarys |
uuidtext/dsc | Strings des dyld Shared Cache (die meisten Apple-Frameworks) |
Der Unified-Logs-Spickzettel auf Mac Forensics fasst Pfade und Aufbewahrungsdauer zusammen; dieser Artikel konzentriert sich darauf, eine vollständige Kopie zu erhalten.
Option 1: log collect (laufender Mac, empfohlen)
sudo log collect --output ~/Desktop/$(hostname -s).logarchive
ditto -c -k --keepParent ~/Desktop/$(hostname -s).logarchive ~/Desktop/$(hostname -s).logarchive.zip
log collect kopiert den Speicher, die String-Dateien und timesync in ein Bundle, dazu den Speicherpuffer (logdata.LiveData.tracev3). --last 3d, --start und --size begrenzen die Sicherung, wenn der vollständige Speicher zu groß ist; --predicate gibt es ebenfalls, kostet laut Apples eigenem Hilfetext aber Leistung und Arbeitsspeicher. Schreiben Sie nach Möglichkeit auf externe Medien und dokumentieren Sie Befehl und Uhrzeit in UTC.
Ein .logarchive ist ein macOS-Paket, also ein Ordner. Hashen Sie die enthaltenen Dateien oder packen Sie ihn mit ditto und hashen Sie die ZIP-Datei. Manche Dateiauswahldialoge verweigern die Auswahl eines Pakets; Ziehen auf die Parser-Seite funktioniert, ebenso die ZIP-Datei.
Option 2: die Rohordner kopieren
OUT=/Volumes/EVIDENCE/$(hostname -s)_ul
sudo mkdir -p "$OUT"
sudo ditto /private/var/db/diagnostics "$OUT/diagnostics"
sudo ditto /private/var/db/uuidtext "$OUT/uuidtext"
So bleiben auch Dateien erhalten, die log collect womöglich auslässt (ältere Special-Dateien außerhalb des Zeitfensters), und es ist kein Apple-Werkzeug beteiligt, was manche Teams bevorzugen. Während des Kopierens wird weiter in den Speicher geschrieben, die neueste Datei kann also unvollständig sein; der Parser meldet beschädigte Dateien, statt abzubrechen.
Option 3: Triage-Werkzeuge
UAC. Das Artefakt macos_unified_logs kopiert die tracev3-Dateien, den uuidtext-Ordner und timesync; das Profil ir_triage enthält es:
sudo ./uac -a ./artifacts/files/logs/macos_unified_logs.yaml /Volumes/EVIDENCE
UAC schreibt standardmäßig ein .tar.gz (-f zip für eine ZIP-Datei). Legen Sie es unverändert ab: Der Parser liest das Archiv als Stream und behält nur die Unified-Log-Dateien.
Velociraptor. Ein eingebautes Artefakt für macOS Unified Logs gibt es nicht; nutzen Sie Generic.Collectors.File mit Root / und den Globs private/var/db/diagnostics/** und private/var/db/uuidtext/**, in einem Hunt oder einem Offline-Collector, und legen Sie anschließend die ZIP-Datei der Sammlung ab.
Aftermath. Aftermath von Jamf kopiert den Speicher nicht; es sichert die Ergebnisse einer Reihe von log show-Prädikaten. Behalten Sie diese und erstellen Sie zusätzlich ein .logarchive.
mac_apt. Aus einem Image exportiert das Plugin UNIFIEDLOGEXPORT tracev3-, uuidtext- und dsc-Dateien nach Export/UNIFIEDLOGEXPORT.
Option 4: aus einem Disk-Image
Binden Sie das Data-Volume schreibgeschützt ein. Auf einem Mac kann log collect aus einem Offline-Speicher ein Archiv erstellen, sofern uuidtext neben diagnostics liegt:
sudo log collect --directory /Volumes/Image/private/var/db/diagnostics --output ~/case.logarchive
Unter Linux kopieren Sie beide Ordner mit ihrer Struktur, zum Beispiel cd /mnt/mac/private/var/db && zip -r ~/case_ul.zip diagnostics uuidtext.
Stolperfallen
- Fehlendes
uuidtext: der häufigste Fehler. Der Parser zeigt die Einträge an, markiert ihre Meldungen aber als unaufgelöst. - Zu spät gesichert: Der Speicher rotiert nach Größe, und
sudo log eraselöscht ihn. Sichern Sie vor allem anderen, was viele Protokolleinträge erzeugt. - Nur
log show-Text: Ein Export genügt für einen schnellen Blick, hängt aber von den verwendeten Optionen ab (--info,--debug,--signpost,--timezone). Siehe Exporte und Zeitleisten erstellen. - Abgeflachte Pfade: Werkzeuge, die Dateien ohne ihre Ordner kopieren, verlieren die UUID, die im Pfad jeder
uuidtext-Datei kodiert ist.
Nach der Sicherung folgen Sie der Browser-Anleitung oder springen direkt zu den Triage-Abfragen.