Skip to content

.fseventsd sichern: tar, UAC, Aftermath, Velociraptor

So sichern Sie macOS-FSEvents-Logs, ohne ihre Änderungszeiten zu verlieren: ein tar-Befehl, UAC-Profile, Aftermath, Velociraptor und Disk-Images.

Veröffentlicht am 4 Min. Lesezeit

Kurzfassung. Archivieren Sie den ganzen Ordner, erhalten Sie die Änderungszeiten und schreiben Sie nichts auf das Beweismittel. Erteilen Sie auf einem laufenden Mac dem Terminal Festplattenvollzugriff (Full Disk Access) und führen Sie sudo tar -czf ~/Desktop/fseventsd.tar.gz -C /System/Volumes/Data .fseventsd aus. Das UAC-Profil ir_triage erledigt dasselbe im Rahmen einer umfassenderen Sicherung. Beide Archive lassen sich unverändert im FSEvents Parser ablegen. Die Kurzreferenz zu diesem Artefakt finden Sie im FSEvents-Spickzettel.

Was gesichert werden muss

PfadWarum
/System/Volumes/Data/.fseventsd/macOS 10.15 und neuer: Benutzeraktivität, Users/…, private/…, Library/…
/.fseventsd/macOS 10.14 und älter (Startvolume)
/Volumes/<name>/.fseventsd/Jedes externe Laufwerk, sofern vorhanden

Nehmen Sie jede Datei im Ordner mit: die Logs mit Hex-Namen, fseventsd-uuid und, falls vorhanden, no_log. Der Parser verwendet die Zeit von fseventsd-uuid als Untergrenze des ältesten Logs, und ein fehlendes no_log ist selbst eine Information (siehe no_log).

Die Änderungszeiten sind das Beweismittel. Das Zeitfenster eines Datensatzes ergibt sich aus den mtimes der Logdateien (warum). tar, ditto und cp -p erhalten sie; AirDrop, E-Mail und viele Cloud-Uploads nicht.

Laufender Mac: ein Befehl

Erteilen Sie dem Terminal zuerst Festplattenvollzugriff (Systemeinstellungen → Datenschutz & Sicherheit → Festplattenvollzugriff). Ohne ihn scheitert das Lesen des Ordners mit „Operation not permitted“, selbst als root.

sudo tar -czf ~/Desktop/fseventsd-$(hostname -s).tar.gz -C /System/Volumes/Data .fseventsd

Bei einem angeschlossenen externen Laufwerk archivieren Sie dessen eigenen Ordner auf dieselbe Weise:

sudo tar -czf ~/Desktop/fseventsd-EXFIL.tar.gz -C /Volumes/EXFIL .fseventsd

Lieber einen einfachen Ordner? Auch ditto erhält die Änderungszeiten, und eine Verzeichnisliste dokumentiert sie unabhängig davon:

sudo ditto /System/Volumes/Data/.fseventsd ~/Desktop/fseventsd
sudo ls -laT /System/Volumes/Data/.fseventsd > ~/Desktop/fseventsd-listing.txt

Unter macOS 10.14 und älter ersetzen Sie -C /System/Volumes/Data durch -C /.

fseventsd schreibt während der Sicherung weiter: Das neueste Log kann kurz sein oder noch im Speicher liegen. Das ist zu erwarten; ein guter Parser behält jeden vollständigen Datensatz und meldet den Rest.

UAC

UAC sichert /.fseventsd und /System/Volumes/*/.fseventsd über sein Artefakt files/logs/macos.yaml. Die Profile ir_triage und full enthalten es:

sudo ./uac -p ir_triage /Volumes/CASE

Um nur das Log-Artefakt zu sichern:

sudo ./uac -a ./artifacts/files/logs/macos.yaml /Volumes/CASE

Führen Sie es in einem Terminal mit Festplattenvollzugriff aus. Das Ergebnis ist ein tar.gz, das die Änderungszeiten erhält; der FSEvents Parser liest es als Stream und verarbeitet nur die .fseventsd-Dateien.

Aftermath

Aftermath von Jamf sichert .fseventsd standardmäßig nicht. Fügen Sie den Ordner explizit hinzu:

sudo ./aftermath --collect-dirs /System/Volumes/Data/.fseventsd -o /Volumes/CASE

Legen Sie das resultierende ZIP ab und prüfen Sie dann den Tab Quellen: Zeigt jedes Log dieselbe Änderungszeit, wurden die Zeiten nicht erhalten, und Sie sollten mit tar erneut sichern.

Velociraptor

Zwei Möglichkeiten:

  • Die Rohdateien sichern mit Generic.Collectors.File, Root / und einer collectionSpec, die /System/Volumes/Data/.fseventsd/* und /.fseventsd/* auflistet. Legen Sie das Sicherungs-ZIP ab und prüfen Sie wie oben die Zeiten im Tab „Quellen“.
  • Auf dem Endpoint analysieren mit MacOS.Forensics.FSEvents, das jeden Datensatz mit den Zeiten seiner Quelldatei ausgibt. Das eignet sich gut fürs Hunting über viele Macs hinweg; die Ausgabe ist allerdings eine Velociraptor-Ergebnistabelle, keine Dateien, die diese Seite liest. Die Standardwerte sind 10 MB für MaxFileSize und 600 Sekunden Timeout; erhöhen Sie beide bei großen Ordnern.

Disk-Images

Hängen Sie das Image schreibgeschützt und ohne Finder ein und archivieren Sie dann den Ordner des Data-Volumes:

hdiutil attach -readonly -nobrowse /cases/MBP01.dmg
sudo tar -czf ~/Desktop/fseventsd-image.tar.gz -C "/Volumes/Macintosh HD - Data" .fseventsd

Hängen Sie Beweismittel auf Ihrem Analyse-Mac niemals mit Schreibzugriff ein: Dessen eigenes fseventsd beginnt sonst, auf das Beweismittel-Volume zu protokollieren. Dasselbe gilt für USB-Laufwerke: Verwenden Sie einen Writeblocker. Bei E01-Images liest das FSEVENTS-Plugin von mac_apt den Ordner direkt und liefert eine nützliche Zweitmeinung.

Checkliste

  1. Festplattenvollzugriff für die sichernde App.
  2. Der ganze Ordner, einschließlich fseventsd-uuid und no_log.
  3. tar, ditto, cp -p oder UAC; mtimes erhalten.
  4. Externe Laufwerke über einen Writeblocker.
  5. Nach dem Laden im Tab „Quellen“ bestätigen, dass die mtimes original wirken.

FAQ

Warum sind die Änderungszeiten der Dateien für FSEvents so wichtig?

FSEvents-Datensätze haben keine Zeitstempel. Die Änderungszeit jeder Logdatei ist die einzige Uhr; eine Kopie, die diese Zeiten zurücksetzt, macht jeden Datensatz zeitlich unbestimmbar.

Sichert UAC den Ordner .fseventsd?

Ja. Das Artefakt files/logs/macos.yaml sichert /.fseventsd und /System/Volumes/*/.fseventsd, und die Profile ir_triage und full enthalten es. Das Ergebnis ist ein tar.gz, das die Änderungszeiten erhält.

Warum scheitert tar mit Operation not permitted?

Der Terminal-App fehlt der Festplattenvollzugriff (Full Disk Access). Erteilen Sie ihn unter Systemeinstellungen, Datenschutz & Sicherheit, Festplattenvollzugriff und führen Sie den Befehl dann erneut mit sudo aus.

Verwandte Artikel