Activité utilisateurExécutionRéseau
Flux Biome SEGB : focus et activité des apps sous macOS
Biome stocke des flux d'activité macOS comme App.InFocus dans des fichiers SEGB d'enregistrements protobuf, successeurs de nombreux flux knowledgeC.db.
- Emplacement
- ~/Library/Biome/streams/restricted/<Stream>/local/
- Prouve
- Quelles applications étaient au premier plan, quels sites ont été visités, quels appareils et réseaux ont été connectés, avec une heure par enregistrement
- Horodatages
- Temps absolu Mac (Cocoa) en doubles dans les enregistrements SEGB ; noms de fichiers en temps Cocoa exprimé en microsecondes
- Accès
- Accès complet au disque (flux utilisateur) ; flux système restreints par SIP
- Rétention
- Quelques semaines pour la plupart des flux (environ 28 jours, chiffre issu de recherches sur iOS) ; les fichiers expirés passent dans tombstone
- Collecte
- UAC, mac_apt, Disk image
Outils
Comparer tous les outilsCe que c'est
Biome est le framework plus récent d'Apple pour enregistrer le contexte et les événements de « pattern of life ». Il a progressivement repris de nombreux flux qui vivaient auparavant dans knowledgeC.db, dont le premier plan des applications. Chaque flux est un dossier de fichiers binaires SEGB, nommés d'après la valeur magique SEGB. Chaque enregistrement SEGB porte un état, un ou deux horodatages, un CRC et une charge utile, en général un message protocol buffer propre au flux.
Biome serait apparu comme sous-système distinct vers macOS Catalina, selon une seule source (Howard Oakley), et il est largement utilisé depuis macOS 12 Monterey. Il reste actif sur toutes les versions actuelles, avec de nouveaux flux ajoutés au fil du temps (par exemple App.MenuItem, documenté par Unit 42 sur macOS Tahoe 26).
Où il se trouve
| Portée | Chemin | Protection |
|---|---|---|
| Flux utilisateur | ~/Library/Biome/streams/restricted/<Stream>/local/ et ~/Library/Biome/streams/public/<Stream>/local/ | Protégés par TCC, nécessitent l'accès complet au disque |
| Synchronisés depuis d'autres appareils | .../<Stream>/remote/<device UUID>/ | Idem |
| Fichiers expirés | .../<Stream>/local/tombstone/ | Idem |
| État de synchronisation utilisateur | ~/Library/Biome/sync/ (base SQLite) | Idem |
| Flux système | /private/var/db/biome/streams/ | Appartient à _biome ; UAC indique ne le collecter en live qu'avec SIP désactivé |
Les dossiers de flux contiennent aussi des fichiers de verrou et de métadonnées. Les noms de flux sont pointés, par exemple App.InFocus ; certaines sources montrent un préfixe _DKEvent. sur iOS. Listez les dossiers plutôt que de supposer les noms.
Ce qu'il prouve
Flux que le plugin Biome de mac_apt décode sous macOS :
| Flux | Ce qu'il montre |
|---|---|
App.InFocus | Application passée au premier plan ou sortie du premier plan (statut 1 / 0), nom et version du produit |
App.WebUsage | URL, domaine et bundle ID de l'application utilisée |
Safari.* | Domaines visités dans Safari |
ScreenTime.AppUsage | Bundle ID de l'application avec statut de premier plan ou non |
Notification.Usage | Application, titre et sous-titre des notifications |
Device.Wireless.WiFi | SSID avec statut de connexion ou de déconnexion |
Device.Wireless.Bluetooth | Adresse de l'appareil, nom et identifiant du produit, connexion ou déconnexion |
SystemSettings.SearchTerms | Termes saisis dans la recherche des Réglages Système |
D'autres flux existent, par exemple App.MenuItem (macOS Tahoe 26), qui enregistre les éléments de menu sélectionnés par l'utilisateur, comme l'a documenté Unit 42. mac_apt n'a pas de décodeur dédié pour ces flux et se contente d'un décodage protobuf générique sans schéma.
Biome ne prouve pas qui était au clavier, et la signification des charges utiles provient de la rétro-ingénierie communautaire, pas de la documentation Apple. Considérez les champs non décodés comme inconnus.
Champs clés
Couche d'enregistrement SEGB, telle qu'implémentée dans ccl-segb :
| Format | En-tête | Champs par enregistrement |
|---|---|---|
| SEGB v1 | En-tête de 56 octets, magic SEGB dans les 4 derniers octets, offset de fin des données dans les 4 premiers | longueur, état, timestamp1, timestamp2, CRC32, charge utile |
| SEGB v2 | En-tête de 32 octets commençant par SEGB, nombre d'entrées, date de création ; un bloc final d'entrées de 16 octets (offset de fin, état, horodatage) en fin de fichier indexe les enregistrements | CRC32 sur la charge utile, charge utile (l'état et l'horodatage viennent du bloc final) |
États d'enregistrement : 1 écrit, 3 supprimé, 4 vide ou inutilisé. Les enregistrements supprimés peuvent encore contenir des données. Un CRC incohérent signale un enregistrement partiellement écrit ou endommagé.
Sur iOS, SEGB v1 est documenté pour iOS 14 à 16 et v2 à partir d'iOS 17. La frontière sous macOS n'est pas documentée publiquement ; les outils détectent le format d'après l'en-tête.
Horodatages
- Les horodatages des enregistrements sont en temps absolu Mac stocké en doubles : secondes depuis le 2001-01-01 UTC. Ajoutez
978307200pour obtenir un temps Unix. - Les noms de fichiers SEGB sont des entiers que mac_apt interprète comme du temps Cocoa en microsecondes, ce qui donne une date approximative de création du fichier.
- Certaines charges utiles contiennent des champs supplémentaires dont le sens dépend du flux ; décodez flux par flux avant de traiter une valeur comme une heure.
# File name 781234567000000 (microseconds) -> UTC
date -u -r $(( 781234567000000 / 1000000 + 978307200 ))
Rétention
Les recherches sur iOS indiquent que la plupart des flux conservent leurs enregistrements actifs environ 28 jours, certains (par exemple Device.Metadata et Location.Visit) étant gardés plusieurs mois. Les fichiers SEGB expirés passent dans tombstone/, que mac_apt ignore par défaut mais qui mérite un examen manuel. Mesurez la rétention sur votre preuve à partir de l'enregistrement le plus ancien de chaque flux.
Collecte
# Terminal needs Full Disk Access
ditto ~/Library/Biome case/Biome_user
find case/Biome_user/streams -maxdepth 2 -type d | sort
- L'artefact
biomed'UAC collecte~/Library/Biome/streams/restricted/*/localpour chaque utilisateur et/private/var/db/biome(ce dernier uniquement avec SIP désactivé, selon UAC). Pensez à ajouter manuellementpublic/etremote/. - Pour le magasin système, privilégiez une image complète du disque ou du volume Data plutôt que de désactiver SIP.
- Ne modifiez pas les fichiers SEGB sur place ; calculez leur empreinte avant l'analyse.
Analyse
- Le plugin
BIOMEde mac_apt lit les flux utilisateur et système (restrictedetpublic) depuis une image ou, en mode artefact seul, depuis un dossierstreams, et décode les flux listés ci-dessus :
python3 mac_apt_artifact_only.py -i case/Biome_user/streams -o out -c BIOME
- ccl-segb affiche les enregistrements bruts d'un fichier SEGB v1 ou v2 :
python3 ccl_segb_cli.py "case/Biome_user/streams/restricted/App.InFocus/local/<file>"
Les charges utiles non couvertes par un parseur peuvent être décodées sans schéma avec un outil protobuf comme blackboxprotobuf (utilisé par mac_apt), puis interprétées manuellement. Certains champs contiennent des property lists NSKeyedArchiver.
KnowledgeC Parser décode dans le navigateur les fichiers SEGB v1 et v2, avec des décodeurs dédiés pour des flux comme App.InFocus, App.WebUsage et ScreenTime.AppUsage et un décodage protobuf sans schéma pour les autres ; rien n'est envoyé.
Conseils d'investigation
- Examinez à la fois knowledgeC.db et Biome dans chaque dossier : sur les versions actuelles de macOS, les données de premier plan sont attendues dans
App.InFocus, pas dans knowledgeC. Voir knowledgeC et Biome. - Séparez
localderemote/<device UUID>: les fichiers distants proviennent d'autres appareils du même compte Apple et ne doivent pas être attribués au Mac examiné. - Examinez les enregistrements à l'état supprimé et les fichiers de
tombstone/; les parseurs ignorent souvent les deux. Device.Wireless.WiFietDevice.Wireless.Bluetoothcomplètent les fichiers de préférences Wi-Fi et Bluetooth avec les heures de connexion et de déconnexion.ScreenTime.AppUsageetNotification.Usagerecoupent Temps d'écran et la base des notifications ; leurs divergences méritent d'être expliquées.- Validez les champs décodés sur des données de test issues du même build de macOS avant de vous appuyer dessus dans un rapport.
Voir aussi
Artefacts liés
Guides détaillés
Glossaire
- BiomeAnglais
- Mac Absolute TimeAnglais
- knowledgeC.dbAnglais
- TCC (Transparency, Consent, and Control)Anglais