Skip to content

kMDItemWhereFroms vs. Quarantäne-Attribut unter macOS

Woher stammt diese Datei auf dem Mac? kMDItemWhereFroms lesen, mit Quarantäne-Daten vergleichen und ein fehlendes Quarantäne-Attribut einordnen.

Veröffentlicht am 6 Min. Lesezeit

TL;DR. kMDItemWhereFroms ist ein erweitertes Attribut mit einer binären Property List aus Zeichenketten, meist der Download-URL und der verweisenden Seite (bei Mail absender- und betreffartige Zeichenketten). Es beantwortet die Frage „Woher stammt diese Datei?“, trägt aber anders als das Quarantäne-Attribut und die Datenbank QuarantineEventsV2 keine Flags, keinen Agenten und keine UUID. Eine Datei, die noch ein WhereFroms hat, aber ihr Quarantäne-Attribut verloren hat, ist ein nützlicher Hinweis, kein Beweis für Manipulation.

Was kMDItemWhereFroms enthält

Der vollständige Attributname lautet com.apple.metadata:kMDItemWhereFroms. Browser und Mail setzen es beim Speichern einer Datei. Sein Wert ist eine binäre Property List mit einem Array aus Zeichenketten:

  • bei einem Browser-Download meist die Download-URL, gefolgt vom Referrer oder der Seite, von der aus er gestartet wurde;
  • bei einem Mail-Anhang absender- und betreffartige Zeichenketten.

Es sitzt auf der Datei selbst, neben com.apple.quarantine. Der Glossareintrag kMDItemWhereFroms liefert die Kurzdefinition.

Wie man es liest

Mit mdls

Auf einem laufenden System stellt Spotlight den Wert direkt bereit:

mdls -name kMDItemWhereFroms ~/Downloads/report.pdf

mdls fragt Spotlight ab und funktioniert daher auf dem laufenden Mac für Dateien, die Spotlight indiziert hat. Bei gesicherten Beweismitteln lesen Sie das Attribut selbst.

Mit xattr

xattr -p com.apple.metadata:kMDItemWhereFroms ~/Downloads/report.pdf
xattr -l -x ~/Downloads/report.pdf

Der erste Befehl gibt den Wert als Text aus. Da der Wert eine binäre Property List ist, wirkt die Ausgabe verstümmelt: Die URLs sind lesbar, aber mit Längen- und Typ-Bytes durchsetzt, die sich nicht darstellen lassen. xattr -l ohne -x hat dasselbe Problem. Der zweite Befehl gibt jedes Attribut als Hex-Dump aus und bewahrt so die exakten Bytes.

Für einen Verzeichnisbaum verwenden Sie das Listing aus der Sicherungsanleitung:

xattr -r -l -x ~/Downloads ~/Desktop ~/Documents ~/Library/LaunchAgents > ~/qcase/xattr_$(id -un).txt 2>/dev/null

Quarantine Parser dekodiert WhereFroms aus Hex-Listings exakt. Aus einer reinen Textdarstellung gelingt das nur näherungsweise, weil auf dem Weg ins Terminal Bytes verloren gegangen sein können. Wenn Sie die Wahl haben, sichern Sie mit -x.

Drei Einträge, drei verschiedene Fragen

WhereFroms, Quarantäne-Attribut und Datenbank überschneiden sich, doch jedes belegt etwas anderes.

kMDItemWhereFromscom.apple.quarantineQuarantineEventsV2
OrtErweitertes Attribut der DateiErweitertes Attribut der DateiSQLite-Datenbank pro Benutzer
InhaltURL und Referrer; bei Mail Absender und betreffartige ZeichenkettenFlags, Unix-Zeit in Hex, Agentenname, UUIDZeit, Agent, Bundle-ID, Daten- und Ursprungs-URL, Absender, Typnummer
AussageVon welcher URL oder Nachricht die Datei gespeichert wurdeDass die Datei für Gatekeeper markiert wurde, wann, von welcher App und ob sie freigegeben wurdeDass ein Download unter Quarantäne stattfand; kein lokaler Dateipfad oder -name
Übersteht das Löschen der DateiNeinNeinZeilen bleiben in der Regel erhalten
EntfernbarJa, wie jedes erweiterte AttributJa: xattr -d com.apple.quarantine oder xattr -cZeilen mit sqlite3, oder die ganze Datei

Die UUID im Quarantäne-Wert verbindet die Datei mit ihrer Datenbankzeile; siehe den Leitfaden zu den Flags. WhereFroms hat keinen solchen Schlüssel, daher beruht jede Verbindung zwischen einem WhereFroms-Wert und einer Datenbankzeile auf übereinstimmenden URLs und Zeiten. Denken Sie auch daran, dass viele reale Zeilen leere URL-Spalten haben und dass Werkzeuge wie curl, wget, scp, rsync oder git sich gar nicht an der Quarantäne beteiligen.

Das Muster „WhereFroms ohne Quarantäne“

Quarantine Parser meldet einen Befund, wenn eine Datei ein WhereFroms, aber kein Quarantäne-Attribut trägt, formuliert als „mögliches xattr -d“. Die Überlegung: Ein Browser, der WhereFroms schreibt, hinterlässt normalerweise auch ein Quarantäne-Attribut, und xattr -d com.apple.quarantine entfernt Letzteres, ohne Ersteres oder die Datenbank anzutasten.

Diese Erklärung ist plausibel, besonders bei ausführbaren Dateien, bei denen das Entfernen der Quarantäne Gatekeeper umgeht. Bevor Sie von Anti-Forensik sprechen, prüfen Sie Alternativen:

  • Teilweise kopierte Attribute. Ein Kopier-, Synchronisations- oder Übertragungsweg kann manche erweiterten Attribute behalten haben und andere nicht. Das Verhalten hängt vom Werkzeug und den beteiligten Dateisystemen ab.
  • Entpacken mit anderen Werkzeugen. Das Archivierungsprogramm überträgt den Quarantäne-Wert des Archivs auf die entpackten Dateien; Entpacker von Drittanbietern tun das möglicherweise nicht. Was sie mit anderen Attributen machen, ist werkzeugabhängig.
  • Alle Attribute zu löschen ist etwas anderes. xattr -c entfernt sämtliche Attribute, WhereFroms eingeschlossen, und erzeugt dieses Muster daher nicht.

Testen Sie das konkrete Werkzeug und die macOS-Version, wo es geht, und suchen Sie nach Bestätigung: eine Datenbankzeile, deren URL zum WhereFroms passt, oder eine aus freiem Speicher wiederhergestellte Zeile.

AppleDouble: Attribute auf Reisen

Erweiterte Attribute können die Originaldatei überdauern, wenn sie mit einer Kopie mitwandern.

._-Dateien auf exFAT, FAT und SMB

Auf Dateisystemen ohne erweiterte Attribute schreibt macOS eine AppleDouble-Begleitdatei namens ._<Name>, die die Attribute enthält. Kopiert ein Benutzer eine heruntergeladene Datei auf einen exFAT-USB-Stick oder eine SMB-Freigabe, kann die ._-Datei sowohl den Quarantäne-Wert als auch WhereFroms ans Ziel mitnehmen, selbst nachdem das Original auf dem Mac gelöscht wurde.

__MACOSX in Finder-ZIPs

Archive, die mit dem Finder-Befehl „Komprimieren“ erstellt wurden, enthalten Einträge __MACOSX/._<Name> mit denselben Daten. Velociraptor liefert MacOS.Forensics.AppleDoubleZip, um sie in großem Umfang auszulesen. Quarantine Parser liest Quarantäne- und WhereFroms-Attribute direkt aus AppleDouble-Dateien: Ziehen Sie die ._-Datei oder den Ordner __MACOSX zusammen mit den übrigen Beweismitteln hinein.

com.apple.provenance: vorhanden, aber opak

Auf aktuellen macOS-Versionen tragen viele Dateien zusätzlich com.apple.provenance, einen 11 Byte langen Wert. Er ist ein opaker Schlüssel in die ExecPolicy-Tabelle provenance_tracking, weder URL noch Zeitstempel. Quarantine Parser dekodiert ihn nicht. Notieren Sie sein Vorhandensein, ziehen Sie aber aus seinen Bytes allein keine Schlüsse.

Eine kompakte Referenz zu diesen Artefakten bietet das Cheat-Sheet zu Quarantäne-Ereignissen auf unserer Schwesterseite; beide Muster im Zusammenhang zeigt das Ermittlungsbeispiel Schritt für Schritt.

Häufige Fragen

Warum zeigt xattr -l für kMDItemWhereFroms unlesbaren Text?

Der Wert ist eine binäre Property List, kein Text. xattr -l gibt ihn aus, als wäre er Text, daher erscheinen die URLs vermischt mit nicht druckbaren Bytes. Verwenden Sie xattr -l -x für einen exakten Hex-Dump oder mdls -name kMDItemWhereFroms auf einem laufenden System.

Beweist eine Datei mit kMDItemWhereFroms, aber ohne Quarantäne-Attribut eine Manipulation?

Nein. Der Befund passt dazu, dass jemand xattr -d com.apple.quarantine ausgeführt hat, aber auch ein Kopier- oder Übertragungsweg, der manche erweiterten Attribute behält und andere nicht, könnte dasselbe Ergebnis erzeugen. Behandeln Sie ihn als Hinweis und testen Sie die beteiligten Werkzeuge und die macOS-Version.

Welcher der drei Einträge übersteht das Löschen der Datei?

In der Regel nur die Zeile in der Datenbank QuarantineEventsV2, da Zeilen meist erhalten bleiben, nachdem die heruntergeladene Datei gelöscht wurde. kMDItemWhereFroms und com.apple.quarantine sind erweiterte Attribute und verschwinden mit der Datei, es sei denn, anderswo existiert eine AppleDouble-Kopie.

Verwandte Artikel