Skip to content

QuarantineEventsV2 sichern: UAC, Aftermath, Velociraptor

So sichern Sie macOS QuarantineEventsV2 mit -wal und -journal, Quarantäne-xattrs und .LastGKReject – von Hand oder mit UAC, Aftermath und Velociraptor.

Veröffentlicht am 5 Min. Lesezeit

TL;DR. Auf einem laufenden Mac besteht die schnellste Sicherung aus drei Befehlen in einem Terminal mit Festplattenvollzugriff: ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2* kopieren (das * nimmt die -wal- und -journal-Dateien mit), die Quarantäne-Attribute mit xattr -r -l -x ausgeben und .LastGKReject sichern, falls vorhanden. UAC, Aftermath und Velociraptor sichern alle die Datenbank; keines davon sichert die Werte der Quarantäne-Attribute, ergänzen Sie das xattr-Listing also selbst. Erst Hashes bilden, dann mit Kopien arbeiten.

Was gesichert werden sollte

Eine vollständige Quarantäne-Sicherung besteht aus drei Teilen:

  1. Die Datenbank jedes Benutzers: QuarantineEventsV2 samt ihren Begleitdateien -wal und -journal. Diese können kürzlich festgeschriebene Änderungen und ältere Seitenkopien enthalten, und genau dort überleben gelöschte Einträge (siehe gelöschte Einträge wiederherstellen).
  2. Die Attributwerte der Dateien in den relevanten Ordnern: com.apple.quarantine und kMDItemWhereFroms. Sie tragen die UUID, die eine Datei mit ihrer Datenbankzeile verknüpft.
  3. .LastGKReject, der Eintrag, den Gatekeeper über das zuletzt abgelehnte Objekt führt. Er kann fehlen oder vorhanden, aber leer sein.

Am einfachsten: von Hand auf einem laufenden Mac kopieren

Öffnen Sie Terminal, stellen Sie sicher, dass es Festplattenvollzugriff hat, und führen Sie die folgenden Befehle aus. Ergänzen Sie sudo, wenn Sie Ordner anderer Benutzer lesen müssen.

Aktueller Benutzer

mkdir -p ~/qcase
cp -p ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2* ~/qcase/
xattr -r -l -x ~/Downloads ~/Desktop ~/Documents ~/Library/LaunchAgents > ~/qcase/xattr_$(id -un).txt 2>/dev/null

cp -p erhält Zeitstempel und Rechte; das abschließende * kopiert die Datenbank zusammen mit einer eventuellen -wal- oder -journal-Datei. Das Listing xattr -r -l -x hält jedes erweiterte Attribut als Hex-Dump fest, der die exakten Bytes bewahrt. ~/Library/LaunchAgents steht absichtlich in der Liste: Eine heruntergeladene Datei in einem Autostart-Ordner gehört zu den Ansatzpunkten, die man prüfen sollte.

Alle Benutzer

Als root, um die Datenbank jedes Benutzers in einen eigenen Ordner zu kopieren:

for u in /Users/*; do
  f="$u/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2"
  [ -f "$f" ] || continue
  d="$HOME/qcase/$(basename "$u")"
  sudo mkdir -p "$d" && sudo cp -p "$f"* "$d/"
done

Wiederholen Sie das xattr-Listing für jeden Benutzer, dessen Ordner relevant sind.

Die letzte Gatekeeper-Ablehnung

Die Datei .LastGKReject lag in Apples Quellen unter zwei verschiedenen Pfaden, probieren Sie also beide:

for f in /private/var/db/.LastGKReject /private/var/db/SystemPolicyConfiguration/.LastGKReject; do
  [ -f "$f" ] && sudo cp -p "$f" ~/qcase/"$(basename "$(dirname "$f")")_LastGKReject"
done

Nur die letzte Ablehnung wird aufbewahrt, und die Datei kann fehlen. Sie kann auch existieren, ohne eine Ablehnung zu enthalten: Auf einem echten System mit macOS 26.6 fehlte /private/var/db/.LastGKReject, während /private/var/db/SystemPolicyConfiguration/.LastGKReject eine kleine XML-Property-List mit einem leeren Dictionary war. Quarantine Parser meldet diesen Fall als „keine Ablehnung erfasst“. Was die Datei enthält, erklärt .LastGKReject als Gatekeeper-Beweismittel.

UAC

UAC (Unix-like Artifacts Collector, github.com/tclahr/uac) bringt das Artefakt files/system/quarantine_events.yaml mit, das %user_home%/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 sichert. Die Profile ir_triage und full enthalten es, weil sie files/system/* einschließen.

sudo ./uac -p ir_triage /tmp
sudo ./uac -a ./artifacts/files/system/quarantine_events.yaml /tmp

Der erste Befehl führt das gesamte Triage-Profil aus, der zweite nur dieses Artefakt. Die Ausgabe heißt standardmäßig uac-<hostname>-macos-<timestamp>.tar.gz (-f zip für ein ZIP). UAC sichert keine xattr-Werte; führen Sie daher zusätzlich den obigen Befehl xattr -r -l -x aus.

Aftermath

Aftermath (Jamf, github.com/jamf/aftermath) wird so gestartet:

sudo ./aftermath

Die Ausgabe landet standardmäßig in /tmp; mit -o wählen Sie einen anderen Ort. Aftermath kopiert die Datenbank jedes Benutzers nach Artifacts/raw/lsquarantine_<username>, ohne die -wal. Seine Dateimetadaten listen xattr-Namen und kMDItemWhereFroms auf, nicht die Quarantäne-Werte. Auch hier gilt: Ergänzen Sie ein xattr-Listing, wenn die Attributwerte wichtig sind.

Velociraptor

Zwei Wege, je nach Bedarf:

  • Auswertung auf dem Endpunkt. Das Artefakt MacOS.System.QuarantineEvents fragt die Datenbank auf dem Endpunkt ab und liefert die Spalten DownloadTime, DownloadURL, Origin, AgentName, AgentBundle, User und EventUUID. Sein Standard-Glob ist /Users/*/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2. Das geht schnell, aber Sie erhalten nur, was die Abfrage zurückgibt: keinen freien Speicher, keine Begleitdateien.
  • Rohdateien. Verwenden Sie Generic.Collectors.File mit Root / und einem Glob wie Users/*/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2*. Das abschließende * nimmt die Begleitdateien mit, und Sie behalten den freien Speicher, den die Wiederherstellung braucht.

Wenn Sie mit ZIPs aus dem Finder zu tun haben, liest MacOS.Forensics.AppleDoubleZip die darin enthaltenen AppleDouble-Einträge unter __MACOSX.

mac_apt und Plaso

Das mac_apt-Plugin QUARANTINE wertet sowohl die Datenbank als auch .LastGKReject aus. Auf einem gemounteten Image:

python mac_apt.py -o out MOUNTED /Volumes/evidence QUARANTINE

Für eine einzelne Datei:

python mac_apt_artifact_only.py -i com.apple.LaunchServices.QuarantineEventsV2 -o out QUARANTINE

Plaso hat außerdem ein SQLite-Plugin ls_quarantine, nützlich, wenn die Datenbank in eine umfassendere Super-Timeline einfließen soll.

Stolperfallen

Festplattenvollzugriff und TCC

Die Datenschutzmechanismen von macOS (TCC) können Terminal daran hindern, Benutzerordner zu lesen. Erteilen Sie dem verwendeten Terminal vor der Sicherung Festplattenvollzugriff; sonst gehen Fehler leicht unter, vor allem wenn 2>/dev/null sie verschluckt. Prüfen Sie, dass die kopierten Dateien nicht leer sind.

WAL- und Journal-Begleitdateien

Eine ohne ihre -wal kopierte Datenbank kann festgeschriebene Änderungen verpassen, die noch nicht per Checkpoint in die Hauptdatei übernommen wurden, und die älteren Seitenkopien gehen ebenfalls verloren. Auf dem beobachteten System mit macOS 26.6 lief die Datenbank im Rollback-Journal-Modus, die wahrscheinlichere Begleitdatei ist also eine -journal. Sichern Sie, was vorhanden ist.

AppleDouble auf exFAT

Wurden Dateien auf exFAT-, FAT- oder SMB-Volumes kopiert, speichert macOS ihre erweiterten Attribute in AppleDouble-Dateien ._name. Sichern Sie auch diese ._-Dateien: Sie können den Quarantäne-Wert und WhereFroms einer Datei enthalten, die den Mac verlassen hat.

Erst die Hashes

Bilden Sie Hashes der gesicherten Dateien vor jeder Analyse und arbeiten Sie mit Kopien. Schon das Öffnen einer Datenbank mit sqlite3 kann sie verändern (siehe gelöschte Einträge wiederherstellen).

Erweiterte Attribute unterwegs verloren

Erweiterte Attribute überstehen nicht jeden Transport. Beim Kopieren auf Medien ohne xattr-Unterstützung oder mit Werkzeugen, die sie verwerfen, gehen die Werte verloren. Das Text-Listing xattr -r -l -x ist der sicherste Träger: Es ist eine gewöhnliche Datei und übersteht jeden Transport.

Die Sicherung laden

Quarantine Parser akzeptiert das UAC-.tar.gz, das Aftermath-Archiv oder den Aftermath-Ordner und Velociraptor-Collection-ZIPs unverändert, außerdem ausgewertete Ergebnisse von MacOS.System.QuarantineEvents im Format JSON Lines und Ihren eigenen Ordner ~/qcase. Alles läuft im Browser. Auf der Startseite gibt es zudem eine kopierfertige Anleitung, So kommen Sie an Ihre Daten. Was die gesicherten Daten bedeuten, erklären QuarantineEventsV2 forensisch auswerten und com.apple.quarantine-Flags; eine Kurzreferenz finden Sie auf macforensics.app.

Häufige Fragen

Braucht das Terminal Festplattenvollzugriff, um QuarantineEventsV2 zu kopieren?

Kopieren Sie aus einem Terminal mit Festplattenvollzugriff und ergänzen Sie sudo für die Ordner anderer Benutzer. Ohne diesen Zugriff können die Datenschutzmechanismen von macOS (TCC) das Lesen von Benutzerordnern verhindern und Ihnen eine unvollständige Sicherung hinterlassen.

Sichert UAC die Quarantäne-Attribute?

Nein. Das UAC-Artefakt quarantine_events kopiert die Datenbank QuarantineEventsV2, aber UAC sichert keine xattr-Werte. Erfassen Sie die com.apple.quarantine-Werte separat mit xattr -r -l -x für die relevanten Ordner.

Warum auch die -wal- und -journal-Dateien kopieren?

Sie können Änderungen enthalten, die noch nicht in der Hauptdatei stehen, sowie ältere Seitenkopien, in denen gelöschte Einträge überleben. Das abschließende Sternchen im cp-Befehl kopiert sie zusammen mit der Datenbank.

Kann Quarantine Parser eine UAC- oder Velociraptor-Sicherung direkt lesen?

Ja. Legen Sie das UAC-.tar.gz, das Aftermath-Archiv oder den Aftermath-Ordner oder ein Velociraptor-Collection-ZIP unverändert ab. Alles wird in Ihrem Browser verarbeitet, nichts wird hochgeladen.

Verwandte Artikel