Skip to content

macOS.logarchive · tracev3 · ndjson

Unified Log Parser

Dekodieren Sie macOS-Unified-Logs — tracev3 aus einem .logarchive oder einem kopierten /private/var/db — oder öffnen Sie log-show-Exporte, filtern Sie dann nach Subsystem, Prozess und Zeit, bewerten Sie mit DFIR-Vorlagen und exportieren Sie. Läuft im Browser mit WebAssembly: Nichts wird hochgeladen.

Legen Sie ein .logarchive, einen diagnostics-Ordner oder einen log-show-Export ab

Ein .logarchive-Paket oder sein ZIP, /private/var/db/diagnostics zusammen mit /private/var/db/uuidtext, eine UAC- oder Velociraptor-Sammlung (ZIP, tar.gz) oder die Ausgabe von log show --style ndjson / json / default. Alles wird auf Ihrem Gerät dekodiert.

Das Beispiel ist synthetisch: ein erfundener Einbruch auf dem Mac FIN-MBP-03 am 14. September 2026.

Im Browser mit WebAssembly dekodiert — nichts wird hochgeladen

Unified-Log-Einträge liegen in binären .tracev3-Dateien, ihr Text aber nicht: Die Formatstrings stehen in den uuidtext- und dsc-Dateien. Sammeln Sie immer beides, dazu den Ordner timesync, der die Zeiten umrechnet. Ein .logarchive enthält alles.

  1. Ein .logarchive oder die Ordner diagnostics + uuidtext sammeln
  2. Paket, Ordner oder ZIP / tar.gz hier ablegen
  3. Lokal dekodiert — nichts verlässt den Browser

Auf dem Mac im Terminal mit einem Administratorkonto. log collect kopiert den ganzen Bestand (tracev3, uuidtext, dsc, timesync) in ein einziges .logarchive; ditto packt es, damit es als eine Datei bewegt und gehasht werden kann.

Terminal · admin
sudo log collect --output ~/Desktop/$(hostname -s).logarchive
ditto -c -k --keepParent ~/Desktop/$(hostname -s).logarchive ~/Desktop/$(hostname -s).logarchive.zip

Legen Sie den .logarchive-Ordner (oder das ZIP) auf dieser Seite ab.

Ein kleinerer Ausschnitt der letzten Tage (--last akzeptiert m, h oder d):

Terminal · admin
sudo log collect --last 3d --output ~/Desktop/$(hostname -s)_3d.logarchive

Oder kopieren Sie den Rohbestand ohne Apples Werkzeug (behält Dateien, die log collect nicht übernähme, etwa ältere Special-Dateien). Kopieren Sie beide Ordner:

Terminal · admin
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"

Stolperfallen

  • Ein .logarchive ist ein Ordner (ein macOS-Paket): Manche Dateiauswahlen können es nicht auswählen. Ziehen Sie es auf die Seite oder packen Sie es vorher mit ditto.
  • Mit <private> markierte Werte wurden beim Protokollieren geschwärzt; kein Parser kann sie wiederherstellen.
  • Die Formulierungen von Apples Meldungen ändern sich zwischen macOS-Versionen; eine Suche, die auf einer Version funktioniert, kann auf einer anderen Ereignisse verfehlen.
  • Sammeln Sie so früh wie möglich: Der Bestand rotiert, und sudo log erase löscht ihn.

Was sind macOS-Unified-Logs?

Seit macOS 10.12 Sierra schreiben der Kernel, Apples Daemons und jede App, die os_log nutzt, in ein gemeinsames Protokollsystem. logd speichert die Einträge in komprimierten binären .tracev3-Dateien unter /private/var/db/diagnostics; der Text jeder Meldung wird aus einem Formatstring in /private/var/db/uuidtext (pro Binärdatei) oder in den dsc-Dateien des Shared Cache und den mit dem Eintrag gespeicherten Werten zusammengesetzt.

Für Ermittler ist es die reichhaltigste zeitlich geordnete Spur auf einem Mac: Anmeldungen und sudo, Datenschutzentscheidungen (TCC), Gatekeeper und XProtect, launchd und Anmeldeobjekte, SSH und Bildschirmfreigabe, aktivierte Datenträger — jeder Eintrag mit Prozess, PID, Subsystem, Kategorie und mikrosekundengenauem Zeitstempel.

Was dieses Werkzeug liest

  • Ein .logarchive (aus log collect oder sysdiagnose), als Ordner oder ZIP, oder die rohen Ordner diagnostics + uuidtext von einem Mac oder Disk-Image, einschließlich UAC- (.tar.gz) und Velociraptor-Sammlungen (ZIP).
  • tracev3-Blöcke: Header, Katalog, LZ4-komprimierte Chunksets, Firehose (log, activity, trace, signpost, loss), Oversize-Strings, Statedump und Simpledump; bootrelative Mach-Zeiten per timesync-Datensätzen nach UTC umgerechnet (Intel- und Apple-Silicon-Zeitbasen).
  • Formatstrings, über uuidtext- und dsc-Dateien aufgelöst und wie bei log show dargestellt (printf-Konvertierungen, %{public}/%{private}, Decoder für errno, UUID und mask.hash).
  • Exporte von log show: --style ndjson und json (alle Felder) sowie die Textstile default, compact und syslog, mehrzeilige Meldungen inklusive.
  • Filter nach Freitext oder regulärem Ausdruck, Typ, Prozess, Subsystem, Kategorie und PID (mit Ausschlüssen), ein sekundengenauer Zeitraum mit Dichtestreifen, kuratierte DFIR-Triage-Regeln und Exporte als CSV, NDJSON (log-show-Feldnamen), JSON und Timesketch.

Warum es bei Ermittlungen zählt

  • Authentifizierung und Rechte: sudo-Befehle und -Fehlschläge, su, Autorisierungsrechte, SSH- und Bildschirmfreigabe-Sitzungen, neue lokale Konten.
  • Umgehung von Schutzmaßnahmen und Persistenz: TCC-Freigaben wie Festplattenvollzugriff für Terminal, Gatekeeper-Ausnahmen, entfernte Quarantäne, neue Launch-Agents, -Daemons, Anmeldeobjekte und Erweiterungen.
  • Kontext einer Exfiltration: von DiskArbitration aktivierte USB-Volumes, Netzwerk- und Dateiaktivität in denselben Minuten.
  • Anker der Zeitleiste: Mikrosekunden-Zeitstempel und Boot-UUIDs richten alle anderen macOS-Artefakte aus.

Grenzen, die man kennen sollte

  • Meldungen sind nur so vollständig wie die String-Dateien: Ohne uuidtext und dsc lässt sich der Text nicht darstellen (Einträge werden als unaufgelöst markiert). Ohne timesync sind die Zeiten ungefähr.
  • <private>-Werte wurden beim Protokollieren geschwärzt und lassen sich nicht wiederherstellen. Die meisten Info- und Debug-Meldungen werden nie auf die Platte geschrieben.
  • Der Bestand rotiert nach Größe und hält oft nur Tage. Das Fehlen von Einträgen beweist nicht, dass nichts passiert ist.
  • Die Darstellung folgt dem Open-Source-Parser macos-unifiedlogs, hier mit log show abgeglichen (rund 99 % der log-, activity- und state-Meldungen identisch); Signpost-Texte und einige Objektdecoder weichen ab. Prüfen Sie wichtige Einträge mit log show, bevor Sie sich in einem Bericht darauf stützen.
  • Alles liegt im Speicher Ihres Browsers: Sehr große Bestände (mehrere Millionen Einträge) brauchen eventuell die Importoptionen, um nur ein Zeitfenster zu laden.

So sammeln Sie sie

  • Auf dem Mac: sudo log collect --output host.logarchive (der ganze Bestand), dann das Paket oder sein ZIP ablegen.
  • Aus einem Image oder mit einem anderen Werkzeug: /private/var/db/diagnostics und /private/var/db/uuidtext mit ihrer Struktur kopieren (UAC macos_unified_logs, mac_apt UNIFIEDLOGEXPORT, Velociraptor Generic.Collectors.File).
  • Wenn Sie nur Apples Werkzeug haben: log show --archive host.logarchive --info --debug --timezone UTC --style ndjson > host.ndjson.

Häufige Fragen

Werden meine Protokolle irgendwohin hochgeladen?

Nein. Die Dateien werden von WebAssembly-Code in einem Web Worker Ihres Browsers gelesen. Nichts wird an einen Server gesendet; beim Schließen des Tabs wird alles vergessen.

Brauche ich dafür einen Mac?

Nein. Der tracev3-Decoder läuft in jedem aktuellen Browser unter Windows, Linux oder macOS. Sie brauchen nur die Dateien: ein .logarchive oder die Ordner diagnostics und uuidtext von einem Mac oder Disk-Image.

Warum sind manche Meldungen unvollständig oder als unaufgelöst markiert?

Der Text eines Eintrags stammt aus Formatstrings in den uuidtext- und dsc-Dateien. Fehlen diese in Ihrer Sammlung oder verweist der Eintrag auf einen String, den sie nicht enthalten, lässt sich die Meldung nicht vollständig darstellen. Sammeln Sie den Ordner uuidtext oder ein .logarchive, das ihn enthält.

Ist das Ergebnis identisch mit log show?

Sehr ähnlich, aber nicht garantiert. Der Decoder basiert auf Mandiants Open-Source-Parser macos-unifiedlogs mit Korrekturen für die Treue zu log show (Zahlenformat, UUIDs, errno und maskierte Hashes). Auf einem echten Archiv stimmten rund 99 % der Meldungen genau mit log show überein; Signposts und einige Objekttypen werden anders dargestellt. Bestätigen Sie für Beweiszwecke wichtige Einträge mit log show.

In welcher Zeitzone sind die Zeiten?

Einträge werden mithilfe der timesync-Datensätze aus der bootrelativen Mach-Zeit nach UTC umgerechnet. Der Schalter UTC / Lokal ändert nur die Anzeige; Exporte sind immer in UTC.

Wie große Bestände schafft es?

Mehrere Millionen Einträge, begrenzt durch den Speicher des Browser-Tabs. Für größere Bestände behalten Sie mit den Importoptionen nur ein Zeitfenster oder lassen beim Lesen Signposts, Info- oder Debug-Einträge aus.

Kann es die Ausgabe von log show lesen?

Ja: --style ndjson und json behalten alle Felder; die Textstile default, compact und syslog funktionieren ebenfalls, mit weniger Details. Nutzen Sie --timezone UTC, damit die Zeiten eindeutig sind (der Stil compact hat keinen UTC-Versatz).

Beweisen die Triage-Befunde eine Kompromittierung?

Nein. Es sind Vorlagen, die auf lesenswerte Einträge zeigen (sudo, TCC-Freigaben, Gatekeeper-Ausnahmen, neue Launch-Objekte, USB-Volumes …). Viele sind auf einem normalen Mac Routine; bewerten Sie sie im Zusammenhang.

Schritt für Schritt: .logarchive, diagnostics-Ordner oder log-show-Export im kostenlosen Unified Log Parser öffnen, Befunde sichten, filtern, exportieren.
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.
macOS Unified Logs mit log show exportieren (ndjson, json, Text), Zeitzonenfallen vermeiden, Parser vergleichen und CSV- oder Timesketch-Zeitleisten bauen.