Skip to content

knowledgeC.db : emplacement et collecte des flux Biome

Où se trouvent knowledgeC.db et les flux Biome sous macOS, et comment les collecter avec Terminal, UAC, Velociraptor ou une image disque sans perdre le WAL.

Publié le 8 min de lecture

En bref. Le knowledgeC.db utilisateur se trouve dans ~/Library/Application Support/Knowledge/, celui du système dans /private/var/db/CoreDuet/Knowledge/, et les flux Biome utilisateur dans ~/Library/Biome/streams/. Accordez l'« Accès complet au disque » à Terminal ou au collecteur, copiez chaque base avec son -wal et son -shm, copiez le dossier Biome entier, calculez l'empreinte de tout, et n'ouvrez jamais les originaux. UAC et Velociraptor peuvent aider mais ont chacun leurs lacunes ; pour les magasins système protégés par SIP, faites une image du disque ou du volume Data plutôt que de désactiver SIP.

Pour savoir ce que contiennent ces magasins, commencez par le guide d'analyse forensique de knowledgeC.db. Des fiches de référence rapide pour les deux artefacts figurent dans les aide-mémoire de forensique macOS : knowledgeC.db et Biome SEGB.

Ce qu'il faut collecter

MagasinCheminProtection
knowledgeC, système/private/var/db/CoreDuet/Knowledge/knowledgeC.db + -wal, -shmRoot, restreint par SIP
knowledgeC, utilisateur~/Library/Application Support/Knowledge/knowledgeC.db + -wal, -shmTCC : Accès complet au disque
Biome, flux utilisateur~/Library/Biome/streams/restricted/<Stream>/local/ et ~/Library/Biome/streams/public/<Stream>/local/TCC : Accès complet au disque
Biome, synchronisé depuis d'autres appareils…/<Stream>/remote/<device UUID>/Idem
Biome, fichiers expirés…/<Stream>/local/tombstone/Idem
Biome, flux système/private/var/db/biome/streams/Propriété de _biome, restreint par SIP

Sous iOS, le magasin Biome utilisateur est /private/var/mobile/Library/Biome/ ; cet article traite de macOS.

La ligne -wal n'est pas facultative. knowledgeC fonctionne en mode WAL, et les événements récents ne sont souvent validés que dans le WAL ; pourquoi, et comment l'exploiter, est expliqué dans knowledgeC.db-wal : retrouver les événements récents. Pour Biome, collectez remote/ et tombstone/ même si vous ne comptez pas les utiliser : les enregistrements distants doivent être identifiés pour pouvoir être exclus, et les fichiers tombstone contiennent des données expirées que les parseurs ignorent souvent.

Accès : TCC, Accès complet au disque et SIP

Deux protections s'appliquent, et elles sont différentes.

  • TCC protège les copies utilisateur. Un processus auquel l'Accès complet au disque n'a pas été accordé se voit refuser l'accès à ces dossiers, même s'il s'exécute en root. Accordez-le à Terminal (Réglages Système, Confidentialité et sécurité, Accès complet au disque) ou à votre collecteur, puis redémarrez l'app.
  • SIP protège les magasins système. UAC indique qu'il ne collecte /private/var/db/CoreDuet/Knowledge/knowledgeC.db et /private/var/db/biome à chaud que lorsque SIP est désactivé. Désactiver SIP implique un redémarrage en mode de récupération et une modification du système examiné, ce qui est difficile à justifier. Préférez une image complète du disque ou du volume Data, et extrayez-en les chemins.

Option 1 : une copie à chaud avec Terminal

Avec l'Accès complet au disque accordé à Terminal et un dossier de destination déjà créé sur votre support de collecte :

cp -p ~/Library/Application\ Support/Knowledge/knowledgeC.db* <dest>/
ditto ~/Library/Biome <dest>/Biome_user
shasum -a 256 <dest>/knowledgeC.db*

Le * récupère knowledgeC.db, knowledgeC.db-wal et knowledgeC.db-shm en une seule fois ; -p conserve les dates de modification et les permissions. ditto copie l'arborescence Biome avec sa structure de dossiers, indispensable pour distinguer local, remote et tombstone. Calculez l'empreinte de chaque fichier copié, pas seulement de la base, et consignez la commande, l'heure et le compte utilisé. Répétez l'opération pour chaque utilisateur concerné.

La copie est faite alors que CoreDuet peut encore écrire. C'est acceptable pour un triage : copiez les trois fichiers knowledgeC en une seule commande, afin que le fichier principal et son WAL soient aussi proches que possible dans le temps.

Option 2 : UAC

UAC dispose d'un fichier d'artefact pour chaque magasin :

sudo ./uac -a ./artifacts/files/system/knowledgec.yaml -a ./artifacts/files/system/biome.yaml /tmp

Les profils ir_triage et full incluent les deux via files/system/*. Connaissez leurs lacunes avant de vous y fier :

Artefact UACCollecteManque
knowledgec.yamlknowledgeC.db pour les deux cheminsLes fichiers -wal et -shm ; la copie système, sauf si SIP est désactivé
biome.yaml~/Library/Biome/streams/restricted/*/local pour chaque utilisateur ; /private/var/db/biome uniquement avec SIP désactivéLes dossiers public/, remote/ et tombstone/

Après une exécution d'UAC, ajoutez donc manuellement les fichiers WAL et les dossiers Biome manquants (option 1), et accordez aussi l'Accès complet au disque au processus UAC.

Option 3 : Velociraptor

Velociraptor ne propose aucune cible de triage macOS intégrée pour knowledgeC ou Biome. Utilisez la recherche de fichiers générique avec l'envoi des fichiers activé :

velociraptor artifacts collect MacOS.Search.FileFinder --args 'SearchFilesGlob=/Users/*/Library/Application Support/Knowledge/knowledgeC.db*' --args Upload_File=Y --output knowledgec.zip
velociraptor artifacts collect MacOS.Search.FileFinder --args 'SearchFilesGlob=/Users/*/Library/Biome/streams/**' --args Upload_File=Y --output biome.zip

Le glob qui se termine par knowledgeC.db* embarque les fichiers WAL et SHM. Le client Velociraptor a lui aussi besoin de l'Accès complet au disque ; sur un parc géré, déployez-le avec un profil MDM de préférences de confidentialité (PPPC) avant d'en avoir besoin. L'artefact Exchange MacOS.Applications.KnowledgeC analyse les lignes sur place, ce qui est utile pour une recherche à l'échelle des postes mais ne remplace pas la collecte des fichiers. Consultez la documentation de Velociraptor pour lancer des collectes depuis le serveur.

Option 4 : une image du disque ou du volume Data

Une image est le moyen le plus propre d'obtenir les magasins système sans toucher à SIP, et elle préserve tout ce dont vous pourriez avoir besoin plus tard. Depuis l'image montée, ou avec un outil comme mac_apt qui exporte des fichiers à partir d'une image, extrayez :

  • /private/var/db/CoreDuet/Knowledge/ (le dossier entier, pour que les fichiers WAL suivent) ;
  • /private/var/db/biome/ ;
  • pour chaque utilisateur, Library/Application Support/Knowledge/ et Library/Biome/.

Montez l'image en lecture seule et extrayez les fichiers dans votre dossier d'affaire avant toute analyse.

Les outils qui ne les collectent pas

Aftermath (Jamf) ne collecte ni knowledgeC ni Biome. Si c'était votre outil de première intervention, retournez chercher ces fichiers avec l'une des options ci-dessus.

Vérifier la collecte

Avant de quitter les lieux, vérifiez que chaque copie de knowledgeC a son -wal à côté d'elle, et que la copie Biome contient un dossier streams avec des sous-dossiers de flux. Une analyse rapide de la copie Biome avec mac_apt en mode artefact seul confirme que les fichiers sont lisibles :

python3 mac_apt_artifact_only.py -i case/Biome_user/streams -o out -c BIOME

Ou déposez le dossier d'affaire entier dans KnowledgeC Parser : il associe chaque base à son WAL, avertit lorsqu'une base en mode WAL arrive sans lui, et affiche l'enregistrement le plus ancien et le plus récent de chaque flux.

Pièges courants

ProblèmeCauseSolution
Accès refusé lors de la copieTerminal ou le collecteur n'a pas l'Accès complet au disqueL'accorder, redémarrer l'app
Aucun événement récent-wal non collecté (comportement par défaut d'UAC)Copier knowledgeC.db*
Base modifiée après la collecteOriginal ouvert sur place, WAL intégré par un checkpointNe jamais ouvrir les originaux ; travailler sur des copies
Enregistrements attribués au Mac alors qu'ils venaient d'un téléphoneremote/ aplati ou ignoréConserver la structure des dossiers
Magasins système absentsSIP activé pendant une collecte à chaudExtraire à partir d'une image du disque ou du volume Data
Données anciennes absentestombstone/ non collectéCopier le dossier Biome entier

Intégrité

Calculez l'empreinte des fichiers tels que collectés, consignez les outils et les commandes, et travaillez sur des copies. N'ouvrez jamais le knowledgeC.db original avec sqlite3 ou un navigateur SQLite graphique : ouvrir une base en mode WAL peut déclencher un checkpoint, qui écrit les pages du WAL dans le fichier principal et peut réinitialiser le WAL que vous vouliez examiner. La même prudence s'applique à vos propres copies : conservez un jeu intact dont l'empreinte a été calculée, et analysez une deuxième copie.

Étape suivante

Chargez la collecte dans KnowledgeC Parser, ou lisez son guide de collecte qui reprend les mêmes étapes en version courte.

Questions fréquentes

Où est stocké knowledgeC.db sous macOS ?

La copie système est /private/var/db/CoreDuet/Knowledge/knowledgeC.db et la copie propre à chaque utilisateur est ~/Library/Application Support/Knowledge/knowledgeC.db. Les deux sont en mode WAL : collectez knowledgeC.db-wal et knowledgeC.db-shm avec chaque base.

Faut-il désactiver SIP pour collecter knowledgeC et Biome ?

Pas pour les copies utilisateur : l'Accès complet au disque accordé à Terminal ou au collecteur suffit. Le knowledgeC.db système et /private/var/db/biome ne sont collectés à chaud qu'avec SIP désactivé, d'après UAC. Préférez une image complète du disque ou du volume Data, et extrayez-les de celle-ci plutôt que de désactiver SIP.

UAC collecte-t-il le fichier WAL de knowledgeC ?

Non. L'artefact knowledgec d'UAC ne collecte que knowledgeC.db, sans les fichiers -wal et -shm, et son artefact biome ne prend que restricted/*/local. Copiez séparément les fichiers WAL et les autres dossiers Biome.

Quels dossiers Biome faut-il collecter ?

Le dossier ~/Library/Biome complet de chaque utilisateur si vous le pouvez. Au minimum, prenez streams/restricted et streams/public, y compris les sous-dossiers local, remote/<device UUID> et local/tombstone de chaque flux, ainsi que /private/var/db/biome/streams pour le magasin système.

Articles liés

Articles liés

Ce que knowledgeC.db enregistre sous macOS, où il se trouve, comment lire ZOBJECT et ses flux, convertir ses horodatages et ce que ces données ne prouvent pas.
knowledgeC.db ou Biome ? Les différences entre ces deux sources d'activité macOS, la correspondance de leurs flux et ce qu'on trouve sur les versions récentes.
Pas à pas : charger knowledgeC.db, son -wal et les flux SEGB de Biome dans un parseur gratuit, filtrer une période, étudier les sessions et exporter.