Skip to content

QuarantineEventsV2 · xattr · AppleDouble · .LastGKReject

Woher stammt diese Datei?

Legen Sie die QuarantineEventsV2-Datenbank eines Macs, xattr-Listings, AppleDouble-Dateien oder .LastGKReject ab. Sie erhalten eine einzige Download-Zeitleiste mit dekodierten Quarantäne-Flags, aus freiem Speicher wiederhergestellten Zeilen und Hinweisen, die einen zweiten Blick wert sind. Analyse im Browser per WebAssembly: Nichts wird hochgeladen.

Mac-Sammlung, QuarantineEventsV2-Datenbank oder xattr-Ausgabe hier ablegen

QuarantineEventsV2 (+ -wal / -journal), Listings von xattr -l / -r -l -x, AppleDouble-Dateien ._, .LastGKReject oder ein ganzer Ordner, ein ZIP oder ein UAC-tar.gz. Mehrere Benutzer gleichzeitig.

Das Beispiel ist synthetisch: ein fiktiver Laptop aus der Finanzabteilung, FIN-MBP-03, am 14. September 2026.

Im Browser analysiert — nichts wird hochgeladen

So erhalten Sie Ihre Daten

Vollständiger Sammelleitfaden

Die Downloadherkunft steckt in der QuarantineEventsV2-Datenbank jedes Benutzers und in erweiterten Attributen der Dateien selbst. Sammeln Sie beides: Die Datenbank belegt den Download, die Attribute verknüpfen ihn mit Dateien auf dem Datenträger.

  1. Mit Terminal kopieren oder mit UAC, Aftermath oder Velociraptor sammeln
  2. Ordner, ZIP oder tar.gz hier ablegen
  3. Lokal analysiert — nichts verlässt den Browser

Geben Sie Terminal auf dem Mac Festplattenvollzugriff (Systemeinstellungen › Datenschutz & Sicherheit) und fügen Sie dann diesen Block ein. Er kopiert Ihre Datenbank mit ihren -wal/-journal-Dateien, listet Quarantäne- und WhereFroms-Attribute in Downloads, Desktop, Documents und LaunchAgents als exakte Hex-Dumps auf und kopiert .LastGKReject, falls vorhanden.

Terminal · zsh / bash
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
for f in /private/var/db/.LastGKReject /private/var/db/SystemPolicyConfiguration/.LastGKReject; do
  [ -f "$f" ] && cp -p "$f" ~/qcase/"$(basename "$(dirname "$f")")_LastGKReject"
done

Alles landet in ~/qcase. Legen Sie diesen Ordner auf der Seite ab.

Alle Accounts auf dem Mac (Administratorpasswort, Terminal mit Festplattenvollzugriff): Datenbanken unter qcase/Users/<name>, ein Listing für alle Benutzerordner plus die LaunchAgents und LaunchDaemons des Systems.

Terminal · admin
for u in /Users/*; do
  f="$u/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2"
  sudo test -f "$f" || continue
  d=~/qcase/Users/"$(basename "$u")"
  mkdir -p "$d" && sudo sh -c 'cp -p "$1"* "$2/"' _ "$f" "$d"
done
sudo sh -c 'xattr -r -l -x /Users/*/Downloads /Users/*/Desktop /Users/*/Documents /Users/*/Library/LaunchAgents /Library/LaunchAgents /Library/LaunchDaemons 2>/dev/null' > ~/qcase/xattr_all_users.txt
sudo chown -R "$(id -un)" ~/qcase

Stolperfallen

  • Ohne Festplattenvollzugriff können Kopien aus Terminal mit „Operation not permitted“ fehlschlagen (Desktop, Documents, Downloads und Teile von ~/Library sind durch TCC geschützt).
  • Öffnen Sie die Originaldatenbank nie mit sqlite3 oder einer GUI: Dabei kann ein WAL-Checkpoint ausgelöst oder Seiten neu geschrieben und gelöschte Datensätze zerstört werden. Hashen, kopieren, dann die Kopie analysieren.
  • zip und cp auf Nicht-Mac-Medien verwerfen erweiterte Attribute; behalten Sie das xattr-Listing oder verwenden Sie ditto, wenn Sie die Attribute selbst benötigen.
  • Zeiten sind in UTC: Die Datenbank verwendet Mac Absolute Time, das Attribut hexadezimale Unix-Sekunden; beides wird für Sie umgerechnet.

Was ist QuarantineEventsV2?

Wenn eine App, die an der Dateiquarantäne teilnimmt (Safari, Chrome, Mail, Nachrichten, AirDrop, Sandbox-Apps), eine heruntergeladene Datei schreibt, versieht macOS sie mit dem erweiterten Attribut com.apple.quarantine, und Launch Services fügt der SQLite-Datenbank QuarantineEventsV2 des Benutzers eine Zeile hinzu: Zeitpunkt, herunterladende App, Daten-URL, Ursprungsseite, bei Mail der Absender.

Das Attribut wandert mit der Datei; die Datenbankzeile bleibt in der Regel erhalten, nachdem die Datei gelöscht wurde. Die UUID am Ende des Attributs verknüpft beide. Zusammen beantworten sie die erste Frage vieler Mac-Untersuchungen: Woher stammt diese Datei, wann kam sie, und wurde sie geöffnet?

Was dieses Tool liest

  • ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 (Tabelle LSQuarantineEvent) mit den Begleitdateien -wal (committete Frames angewendet, Prüfsummen verifiziert) und -journal; die lsquarantine_<user>-Kopien von Aftermath; mehrere Benutzer gleichzeitig.
  • com.apple.quarantine-Werte aus der Ausgabe von xattr -p, xattr -l, xattr -r -l und xattr -r -l -x, eingefügt oder als Textdateien; kMDItemWhereFroms-Werte in denselben Listings.
  • AppleDouble-Dateien ._ (exFAT-, FAT- und SMB-Volumes sowie __MACOSX-Ordner von Finder-ZIPs), die eine Kopie der Attribute enthalten.
  • .LastGKReject (letzte Gatekeeper-Ablehnung: Zeitpunkt, Zielpfad aus dem Lesezeichen, XProtectMalwareType) und Ergebnisse von Velociraptor MacOS.System.QuarantineEvents.
  • Ordner, ZIPs und tar.gz-Sammlungen wie UAC-Archive, Aftermath-Ausgaben und Velociraptor-Collection-ZIPs.

Was es beantwortet

  • Welche Apps was heruntergeladen haben, von welcher URL und Seite und wann — als eine Zeitleiste, pro Agent und pro Domain.
  • Welche Dateien auf dem Datenträger zu welchem Download gehören (Verknüpfung über die UUID), einschließlich jeder Datei, die aus einem Archiv in Quarantäne entpackt wurde.
  • Welche Objekte der Benutzer über Gatekeeper freigegeben hat (Flag 0x0040) und welches Objekt Gatekeeper zuletzt abgelehnt hat.
  • Ob Zeilen gelöscht wurden: Datensätze, die noch in freiem Speicher, Freelist-Seiten, älteren WAL-Frames oder im Rollback-Journal liegen, werden wiederhergestellt und gekennzeichnet.
  • Hinweise, die einen Blick wert sind: Archive, Disk-Images, Installer und Skripte von selten gesehenen Domains, Filesharing- und Paste-Dienste, heruntergeladene Dateien in LaunchAgents-Ordnern, WhereFroms ohne Quarantäne.

Grenzen

  • Die Datenbank speichert nicht den lokalen Dateinamen; nur die UUID im xattr verknüpft eine Datei mit ihrer Zeile. Downloads mit curl, wget, scp oder git hinterlassen überhaupt keine Quarantänespur.
  • Apple dokumentiert die Flag-Bits nicht. Die Namen stammen aus Open-Source-Deklarationen (WebKit, Apples Security- und copyfile-Code); unbekannte Bits werden als unbekannt angezeigt.
  • Zeilen ohne URL und Attribut-UUIDs ohne Zeile sind unter aktuellen macOS-Versionen häufig und für sich genommen nicht verdächtig.
  • Die Wiederherstellung gelöschter Zeilen hängt von den SQLite-Einstellungen und späteren Schreibvorgängen ab: Keine zu finden, beweist nichts. Wiederhergestellte Zeilen können unvollständig sein.
  • Befunde sind Hinweise für Analysten, keine Urteile. Zeitstempel werden in UTC oder in der Zeitzone Ihres Browsers angezeigt.

So sammeln Sie die Daten

  • Am schnellsten: Der Terminal-Block oben (Festplattenvollzugriff) kopiert die Datenbank mit ihren -wal/-journal-Dateien, listet Quarantäne-Attribute mit xattr -r -l -x auf und kopiert .LastGKReject.
  • UAC: Artefakt files/system/quarantine_events.yaml, enthalten in den Profilen ir_triage und full. Aftermath: Rohkopien in Artifacts/raw/lsquarantine_<user>. Velociraptor: MacOS.System.QuarantineEvents oder Generic.Collectors.File für die Rohdateien.
  • Hashen Sie die Dateien zuerst und arbeiten Sie mit Kopien; öffnen Sie die Originaldatenbank nie mit sqlite3, das sie verändern kann.

FAQ

Werden meine Dateien hochgeladen?

Nein. Der Parser ist in Rust geschrieben, nach WebAssembly kompiliert und läuft in einem Web Worker in Ihrem Browser. Datenbanken, Listings und Archive verlassen nie Ihren Rechner; beim Schließen des Tabs sind sie vergessen.

Wo liegt die QuarantineEventsV2-Datenbank?

Unter ~/Library/Preferences/com.apple.LaunchServices.QuarantineEventsV2 jedes Benutzers. Kopieren Sie sie zusammen mit einer daneben liegenden -wal- und -journal-Datei aus einem Terminal mit Festplattenvollzugriff, oder sammeln Sie sie mit UAC, Aftermath oder Velociraptor.

Wie verknüpfe ich eine Datei mit ihrem Download-Eintrag?

Lesen Sie ihr Attribut com.apple.quarantine (xattr -p com.apple.quarantine Datei). Das letzte Feld ist eine UUID; die passende Zeile mit LSQuarantineEventIdentifier enthält URL, Ursprungsseite und Agent. Legen Sie hier die Datenbank und ein xattr-Listing ab, dann wird die Verknüpfung für Sie hergestellt.

Was bedeutet das Quarantäne-Flag 0083 oder 00c3?

Das erste Feld ist ein hexadezimales Bitfeld, das Apple nicht dokumentiert. 0x0001 wird meist als Download gelesen, 0x0002 als von einer Sandbox-App geschrieben, 0x0080 als Translocation und 0x0040 als vom Benutzer über Gatekeeper freigegeben; 00c3 ist also 0083 plus Freigabe. Prüfen Sie das auf einem System mit derselben macOS-Version, bevor Sie sich darauf verlassen.

Lassen sich gelöschte Quarantäne-Ereignisse wiederherstellen?

Manchmal. Wird eine Zeile gelöscht, lässt SQLite ihre Bytes in der Regel im freien Speicher, bis dieser wiederverwendet wird. Das Tool carvt diese Datensätze sowie ältere Kopien im WAL oder im Rollback-Journal und kennzeichnet sie als wiederhergestellt. Keine zu finden, beweist nichts.