Skip to content

FSEvents-Untersuchung: Exfiltration auf einem Mac

Ein fiktiver macOS-Einbruch, allein mit FSEvents nachvollzogen: ein Download, ein LaunchAgent, Festplattenvollzugriff, ein Staging-Ordner, ein USB-Stick.

Veröffentlicht am 4 Min. Lesezeit

Kurzfassung. Allein mit den .fseventsd-Logs eines Laptops und eines USB-Sticks lässt sich zeigen, dass zwischen etwa 10:05 und 10:50 UTC jemand tools.zip heruntergeladen und entpackt, ein erweitertes Attribut entfernt, einen LaunchAgent geschrieben, eine TCC-Änderung ausgelöst, 48 Finanzdokumente in einem versteckten Ordner gesammelt, sie auf einen Stick namens EXFIL geschrieben und den Staging-Ordner gelöscht hat. Alles hier stammt aus dem synthetischen Beispiel des FSEvents Parser: Klicken Sie auf Beispiel laden, um mitzuverfolgen.

Der Fall

Dieser Fall setzt den fiktiven Einbruch fort, der auf der Windows-Workstation FIN-WKS-07 (Konto svc_backup) begann. Derselbe Angreifer nutzte am 2026-09-14 eine gestohlene Sitzung auf FIN-MBP-03, dem MacBook der Finanzmitarbeiterin dana.whitlock. Den Incident Respondern liegen zwei Archive vor: der .fseventsd-Ordner des Data-Volumes und der .fseventsd-Ordner eines USB-Sticks, der auf dem Schreibtisch gefunden und über einen Writeblocker gesichert wurde.

1. Logs laden

Legen Sie beide Archive ab (oder laden Sie das Beispiel). Der Tab Quellen zeigt zwei Volumes: das Data-Volume (sieben 3SLD-Logs) und EXFIL (ein Log). Die Zeitbasis lautet „Dateizeiten wirken original“: Die mtimes der Logs verteilen sich über den Vormittag, den Zeitfenstern ist also zu trauen. Die Historie des EXFIL-Volumes begann um 10:31:14, der Änderungszeit seiner fseventsd-uuid: Zu diesem Zeitpunkt hat fseventsd den Stick zum ersten Mal gesehen.

2. Zeitfenster festlegen

Geben Sie in der Zeitraumleiste 2026-09-14 10:00:00 → 10:55:00 UTC ein (das Beispiel bietet dafür eine Schaltfläche). Der Chip zeigt 770 von 1.068 Datensätzen, und die URL erhält #from=2026-09-14T10:00:00Z&to=2026-09-14T10:55:00Z. Alle Zählungen, Befunde und Exporte verwenden nun dieses Fenster. Behalten Sie das Standard-Zeitfeld Ungefähres Fenster (Überlappung) bei, um nichts zu übersehen (warum).

3. Befunde lesen

  • LaunchAgent geschrieben. ~/Library/LaunchAgents/com.example.updater.plist.tmp wird zwischen 10:09:55 und 10:23:18 erstellt, dann in com.example.updater.plist umbenannt, und seine Metadaten werden geändert. Siehe LaunchAgent.
  • TCC-Datenbank geändert. Die systemweite Library/Application Support/com.apple.TCC/TCC.db (und ihre -wal) wird im selben Fenster geändert, direkt nach com.apple.systempreferences.plist. Das passt dazu, dass Terminal Festplattenvollzugriff (Full Disk Access) erhielt; die Zeilen der TCC.db würden es bestätigen (TCC-Datenbank).
  • Erweiterte Attribute entfernt. Downloads/tools/sync-helper und Downloads/tools/com.example.updater.plist verlieren zwischen 09:58:40 und 10:09:55 ein Attribut, nachdem sie mit einem solchen entpackt wurden. Das Entfernen von com.apple.quarantine ist eine naheliegende Erklärung; FSEvents kann das Attribut nicht benennen (Quarantäne-Attribut).
  • Versteckter Ordner. Users/dana.whitlock/Library/Caches/.sync wird mit 48 Tabellen, CSVs und PDFs angelegt.
  • Externes Volume EXFIL. Volumes/EXFIL wird auf dem Data-Volume ein- und ausgehängt; auf dem Stick erhält exfil/ dieselben 48 Namen, jeweils mit einer AppleDouble-Begleitdatei ._.
  • Massenlöschung. 48 Löschungen in .sync, dann der Ordner selbst, zwischen 10:38:02 und 10:52:41.
  • Kurzlebige Dateien. Downloads/tools/* und Downloads/tools.zip tauchen in der geladenen Historie auf und verschwinden wieder.

Keiner dieser Befunde beweist für sich allein eine Absicht. Zusammen und in dieser Reihenfolge ergeben sie ein schlüssiges Bild.

4. Den Dateien folgen

  • Öffnen Sie die Löschung von tools.zip und klicken Sie auf Alle Datensätze dieses Pfads zeigen: Das Archiv entsteht durch eine Umbenennung aus tools.zip.download/tools.zip (dem Download-Bundle von Safari), erhält seine Attribute und wird am Ende entfernt. Der Tab Umbenennungen paart beide Seiten über ihre gemeinsame Node-ID.
  • Filtern Sie auf node: + die Node-ID des LaunchAgents, um den .tmp-Namen und den endgültigen Namen als ein Objekt zu sehen.
  • Der Pfadbaum zeigt Users/dana.whitlock/Library/Caches/.sync mit den Chips Created und Removed und exfil auf dem EXFIL-Volume nur mit Created.
  • Der Browserbesuch auf transfer.example hinterlässt in FSEvents nur Schreibvorgänge an Safari/History.db: Die Domain selbst steht in der History-Datenbank, nicht hier.

5. Exportieren und berichten

Exportieren Sie Datensätze (CSV) und Umbenennungspaare (CSV) für den Bericht, Timesketch (CSV) zum Zusammenführen mit anderen Timelines (jeder Datensatz wird zum Schreibzeitpunkt seiner Logdatei platziert und als Obergrenze gekennzeichnet) oder Alles (JSON). Die Dateinamen enthalten den Zeitraum, z. B. FIN-MBP-03_fsevents_2026-09-14T100000Z-2026-09-14T105500Z_records.csv.

Geben Sie im Bericht jedes Ereignis als Zeitfenster an, nennen Sie die Logdatei und halten Sie fest, was FSEvents nicht zeigt: keinen Benutzer, keinen Prozess, keinen Dateiinhalt.

Was die Schlussfolgerungen ändern würde

  • Hätte die Kopie die mtimes der Logs zurückgesetzt, bliebe nur die Reihenfolge.
  • Wäre der Stick nie gesichert worden, wären nur der Einhängepunkt sowie Staging und Löschung auf dem Mac sichtbar; die Liste der darauf geschriebenen Dateien würde fehlen.
  • Wäre der Mac vor dem Vorfall tagelang ungenutzt gewesen, könnte das erste Zeitfenster mehrere Tage umfassen.

Zur Sicherung siehe .fseventsd richtig sichern; zum Format 1SLD-, 2SLD- und 3SLD-Seiten.

Verwandte Artikel