Skip to content

knowledgeC vs. Biome: wo macOS App-Nutzung speichert

knowledgeC.db oder Biome? Wie sich die Aktivitätsspeicher von macOS unterscheiden, welche Streams sich entsprechen und was aktuelle Versionen erwarten lassen.

Veröffentlicht am 6 Min. Lesezeit

Kurz gesagt. macOS speichert Aktivität an zwei Orten. knowledgeC.db ist eine SQLite-Datenbank mit einer Zeile pro Ereignisintervall; Biome ist ein Baum aus Stream-Ordnern mit SEGB-Dateien voller Protobuf-Datensätze. Unter aktuellen Versionen ist der App-Fokus in Biomes App.InFocus zu erwarten, nicht in knowledgeCs /app/inFocus, während Zustände wie Sperre und Hintergrundbeleuchtung weiterhin aus knowledgeC gelesen werden. Sichern und untersuchen Sie in jedem Fall beide, halten Sie synchronisierte Datensätze anderer Geräte getrennt und werten Sie einen leeren Stream als „hier nicht aufgezeichnet“, nicht als Löschung.

Wenn Sie die Datenbank selbst noch nicht kennen, beginnen Sie mit dem Leitfaden zur forensischen Analyse von knowledgeC.db.

Zwei Speicher, zwei Konzepte

knowledgeCBiome
ContainerEine SQLite-Datenbank je Bereich (Core-Data-Speicher)Ein Ordner je Stream mit SEGB-Dateien
DatensatzEine Zeile in ZOBJECT mit Beginn und EndeEin Datensatz mit Status, Zeitstempeln, einer CRC und einer Protobuf-Nutzlast
Stream-NamenPfade, zum Beispiel /app/inFocusNamen mit Punkten, zum Beispiel App.InFocus
ZeitMac Absolute Time, UTCMac Absolute Time als Double in den Datensätzen
Lokaler VersatzZSECONDSFROMGMT je ZeileNicht unter den öffentlich dekodierten Feldern
Andere GeräteZeilen anderer Geräte, unterscheidbar über ZSOURCE.ZDEVICEIDEigene Ordner remote/<device UUID>/
LöschungZeilen werden entfernt; jüngste Entfernungen zeigt das WALDatensätze als gelöscht markiert (Status 3), Daten können erhalten bleiben; abgelaufene Dateien in tombstone/
DekodierungDokumentierte Spalten, stabil genug für SQLNutzlastfelder aus Reverse Engineering der Community

Praktisch bedeutet das: Die beiden Speicher verlangen unterschiedliche Arbeitsweisen. knowledgeC wird mit SQL auf einer Kopie abgefragt, und die -wal muss mitgesichert werden. Biome braucht einen SEGB-Parser, dann einen Protobuf-Decoder je Stream, und Felder, die kein öffentlicher Decoder abdeckt, bleiben unbekannt. Den Aufbau auf Byte-Ebene beschreibt das Dateiformat Biome SEGB.

Intervalle und Übergänge

Eine knowledgeC-Zeile ist bereits ein Intervall: ZSTARTDATE bis ZENDDATE. Ein Biome-Datensatz in App.InFocus ist ein Übergang: Eine App ist zu einem bestimmten Zeitpunkt in den Fokus gekommen (Status 1) oder hat ihn verloren (Status 0). Um Dauern zu erhalten, muss ein Parser jeden „in“-Datensatz mit dem folgenden „out“-Datensatz derselben App paaren.

KnowledgeC Parser übernimmt diese Paarung: Ein In-Fokus-Datensatz endet mit dem nächsten Außer-Fokus-Datensatz für dieselbe Bundle-ID, vom selben Benutzer und derselben Herkunft, innerhalb von 24 Stunden. Ein „in“ ohne passendes „out“ wird ohne Dauer angezeigt statt mit einer geschätzten. Denken Sie daran, wenn eine gesamte Fokuszeit kurz wirkt: Das letzte Intervall vor einem Herunterfahren oder einem Absturz kann offen sein.

Stream für Stream

Die folgende Tabelle stellt Streams nebeneinander, die dieselbe Art von Aktivität aufzeichnen. Sie ist ein funktionaler Vergleich für Ermittler, keine von Apple dokumentierte Migrationstabelle; die Bedeutung der Felder auf der Biome-Seite stammt aus dem BIOME-Plugin von mac_apt und aus iLEAPP.

AktivitätknowledgeC-StreamBiome-StreamHinweise
App im Fokus/app/inFocusApp.InFocusBiome: Status 1 in / 0 out, Bundle-ID, Versionsstrings
App in Benutzung/app/usageScreenTime.AppUsageBiome: Status und Bundle-ID
Webnutzung je App/app/webUsageApp.WebUsageBiome: URL, Domain, Bundle-ID
Safari/safari/historySafari.*Biome: Domain
Mitteilungen/notification/usageNotification.UsageBiome: App, Titel, Untertitel
Sperre, Hintergrundbeleuchtung, Stromversorgung/device/isLocked, /display/isBacklit, /device/isPluggedInkeiner in der dekodierten ListeAus knowledgeC lesen
WLANkeinerDevice.Wireless.WiFiSSID und Status Verbinden / Trennen
BluetoothkeinerDevice.Wireless.BluetoothAdresse, Name, Produkt-ID, Status
Suche in den SystemeinstellungenkeinerSystemSettings.SearchTermsEingegebener Suchbegriff
Ausgewählte MenübefehlekeinerApp.MenuItemVon Unit 42 unter macOS Tahoe 26 dokumentiert; keine öffentliche Feldzuordnung

„Keiner in der dekodierten Liste“ bedeutet, dass die öffentlichen Decoder keinen solchen Stream abdecken, nicht, dass Biome keinen enthalten kann. Listen Sie die Stream-Ordner in Ihrem Beweismaterial auf, statt Namen vorauszusetzen.

Was Sie je macOS-Version erwarten können

Die öffentliche Forschung liefert nur wenige feste Bezugspunkte; sie sind hier ohne Extrapolation zusammengefasst.

VersionWas bekannt ist
macOS 10.15 CatalinaBiome erscheint als eigenes Subsystem, laut einer einzigen Quelle (Howard Oakley)
macOS 12 Monterey und neuerBiome weit verbreitet
macOS 13 bis 15 (Ventura, Sonoma, Sequoia)Keine öffentliche Aufstellung der Streams je Version; unter aktuellen Versionen ist der App-Fokus in App.InFocus zu erwarten, und knowledgeC kann spärlich gefüllt sein
macOS 26 TahoeNeue Streams wie App.MenuItem (Unit 42)

Der SEGB-Container selbst hat sich von v1 zu v2 geändert. Unter iOS wird v1 für iOS 14 bis 16 und v2 ab iOS 17 berichtet; die entsprechende Grenze unter macOS ist nicht öffentlich dokumentiert, daher erkennen Werkzeuge die Version am Dateikopf. Wenn in einem Fall die genaue Version zählt, vergleichen Sie mit Testdaten desselben Builds.

Häufige Fehldeutungen

  • „knowledgeC ist leer, also wurde Aktivität gelöscht.“ Ein spärlich gefüllter Stream /app/inFocus ist auf einem aktuellen Mac zu erwarten. Prüfen Sie Biome und prüfen Sie, ob knowledgeC.db-wal gesichert wurde, bevor Sie Schlüsse ziehen.
  • „Die beiden Quellen widersprechen sich, also ist eine falsch.“ Verschiedene Streams zeichnen Verschiedenes mit unterschiedlichen Auslösern auf. Ein knowledgeC-Intervall in /app/usage und ein Biome-Intervall in App.InFocus für dieselbe App stimmen selten auf die Sekunde überein. Erklären Sie den Unterschied; wählen Sie nicht die bequemere Quelle.
  • „Dieser Datensatz stammt vom Mac.“ Biome-Ordner remote/<device UUID>/ und knowledgeC-Zeilen mit einer anderen ZDEVICEID stammen von anderen Geräten mit demselben Apple Account. Ein iPhone, das um 10:12 Karten öffnet, ist nicht der Mac, der Karten öffnet.
  • „Gelöscht heißt, der Benutzer hat es gelöscht.“ Biome-Datensätze mit Status 3 und Dateien in tombstone/ sind normale Artefakte des Lebenszyklus. Die Aufbewahrungsdauer wird in beiden Speichern in Wochen gemessen (etwa vier Wochen für knowledgeC laut Sarah Edwards, etwa 28 Tage für die meisten Biome-Streams laut iOS-Forschung). Messen Sie den ältesten Datensatz je Stream in Ihrem Beweismaterial.

Beide in einer Zeitleiste auswerten

  1. Sichern Sie beide Speicher mit ihren Begleitdateien: die knowledgeC-Dateien -wal und -shm sowie Biomes Ordner restricted/, public/, remote/ und tombstone/. Wie das geht, steht in knowledgeC.db: Speicherort und Sicherung.
  2. Rechnen Sie zuerst alles in UTC um. knowledgeC liefert Ihnen den Geräteversatz je Zeile; für Biome entnehmen Sie die Zeitzone aus knowledgeC oder anderen Artefakten.
  3. Trennen Sie lokal und remote, bevor Sie sortieren.
  4. Verwenden Sie die Sperr- und Beleuchtungsintervalle aus knowledgeC als Rahmen und die Fokus-Datensätze aus Biome darin.

In der synthetischen Beispielsammlung FIN-MBP-03 zeigt das Zeitfenster von 10:04 bis 10:49 UTC zum Beispiel den Mac entsperrt (knowledgeC, /device/isLocked), Terminal, Systemeinstellungen und Finder im Fokus (Biome App.InFocus) sowie Datensätze in App.MenuItem, die „Full Disk Access“ nennen. Datensätze zu Karten und Nachrichten von Danas iPhone liegen in denselben Minuten in remote/ und müssen aus der Aktivität des Macs ausgeschlossen werden. KnowledgeC Parser führt beide Speicher in einer Zeitleiste zusammen und kennzeichnet die Herkunft jeder Zeile. Was Ihnen auch die kombinierte Zeitleiste nicht sagen kann, ist, wer vor dem Mac saß; diese Argumentation behandelt wer saß an der Tastatur.

Verwandte Artikel

Verwandte Artikel

Was knowledgeC.db unter macOS aufzeichnet, wo sie liegt, wie ZOBJECT und Streams aufgebaut sind, wie Sie Zeitstempel umrechnen und was die Daten nicht beweisen.
Anleitung: knowledgeC.db mit -wal und Biome-SEGB-Streams im kostenlosen Browser-Parser laden, Zeitraum setzen, Sitzungen prüfen, Zeitleiste exportieren.
Wo knowledgeC.db und Biome-Streams unter macOS liegen und wie Sie sie mit Terminal, UAC, Velociraptor oder aus einem Abbild sichern, ohne das WAL zu verlieren.