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.
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.tmpwird zwischen 10:09:55 und 10:23:18 erstellt, dann incom.example.updater.plistumbenannt, 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 nachcom.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-helperundDownloads/tools/com.example.updater.plistverlieren zwischen 09:58:40 und 10:09:55 ein Attribut, nachdem sie mit einem solchen entpackt wurden. Das Entfernen voncom.apple.quarantineist eine naheliegende Erklärung; FSEvents kann das Attribut nicht benennen (Quarantäne-Attribut). - Versteckter Ordner.
Users/dana.whitlock/Library/Caches/.syncwird mit 48 Tabellen, CSVs und PDFs angelegt. - Externes Volume EXFIL.
Volumes/EXFILwird auf dem Data-Volume ein- und ausgehängt; auf dem Stick erhältexfil/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/*undDownloads/tools.ziptauchen 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.zipund klicken Sie auf Alle Datensätze dieses Pfads zeigen: Das Archiv entsteht durch eine Umbenennung austools.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/.syncmit den Chips Created und Removed undexfilauf dem EXFIL-Volume nur mit Created. - Der Browserbesuch auf
transfer.examplehinterlässt in FSEvents nur Schreibvorgänge anSafari/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.