Collecter les journaux unifiés macOS pour l'analyse
Collecter les journaux unifiés macOS avec log collect, une copie brute de diagnostics et uuidtext, UAC, Velociraptor ou mac_apt, sans lacunes.
En bref. Collectez l'intégralité du magasin, pas seulement les fichiers .tracev3 : le texte des messages se trouve dans uuidtext et dsc, et les heures ont besoin de timesync. Sur un Mac actif, sudo log collect fait tout cela en une seule .logarchive. Depuis une image ou avec un outil de triage, copiez /private/var/db/diagnostics et /private/var/db/uuidtext en conservant leur arborescence. Chacune des méthodes ci-dessous produit un résultat que Unified Log Parser ouvre directement.
Ce que vous devez obtenir
| Nécessaire | Pourquoi |
|---|---|
diagnostics/Persist, Special, Signpost, HighVolume | les entrées (.tracev3) |
diagnostics/timesync | convertit les heures relatives au démarrage en UTC |
uuidtext/00…FF | chaînes de format de chaque binaire |
uuidtext/dsc | chaînes du cache partagé dyld (la plupart des frameworks Apple) |
La fiche sur les journaux unifiés de Mac Forensics résume les chemins et la rétention ; cet article se concentre sur l'obtention d'une copie complète.
Option 1 : log collect (Mac actif, recommandé)
sudo log collect --output ~/Desktop/$(hostname -s).logarchive
ditto -c -k --keepParent ~/Desktop/$(hostname -s).logarchive ~/Desktop/$(hostname -s).logarchive.zip
log collect copie le magasin, les fichiers de chaînes et timesync dans un seul paquet, ainsi que le tampon en mémoire (logdata.LiveData.tracev3). Les options --last 3d, --start et --size limitent la collecte lorsque le magasin complet est trop volumineux ; --predicate existe aussi mais, selon l'aide d'Apple elle-même, pèse sur les performances et la mémoire. Écrivez sur un support externe quand c'est possible, et consignez la commande ainsi que l'heure en UTC.
Une .logarchive est un paquet macOS, c'est-à-dire un dossier. Calculez l'empreinte des fichiers qu'il contient, ou compressez-le avec ditto et calculez celle du ZIP. Certains sélecteurs de fichiers refusent de sélectionner un paquet ; le faire glisser sur la page du parseur fonctionne, tout comme le ZIP.
Option 2 : copier les dossiers bruts
OUT=/Volumes/EVIDENCE/$(hostname -s)_ul
sudo mkdir -p "$OUT"
sudo ditto /private/var/db/diagnostics "$OUT/diagnostics"
sudo ditto /private/var/db/uuidtext "$OUT/uuidtext"
Cette méthode conserve des fichiers que log collect peut laisser de côté (des fichiers Special plus anciens, hors de la fenêtre temporelle) et ne fait appel à aucun outil Apple, ce que certaines équipes préfèrent. Le magasin est en cours d'écriture pendant la copie : le fichier le plus récent peut donc être incomplet ; le parseur signale les fichiers endommagés au lieu d'échouer.
Option 3 : outils de triage
UAC. L'artefact macos_unified_logs copie les fichiers tracev3, le dossier uuidtext et timesync, et le profil ir_triage l'inclut :
sudo ./uac -a ./artifacts/files/logs/macos_unified_logs.yaml /Volumes/EVIDENCE
UAC produit par défaut un .tar.gz (-f zip pour un ZIP). Déposez-le tel quel : le parseur lit l'archive en flux et ne conserve que les fichiers des journaux unifiés.
Velociraptor. Il n'existe pas d'artefact intégré pour les journaux unifiés macOS ; utilisez Generic.Collectors.File avec Root / et les globs private/var/db/diagnostics/** et private/var/db/uuidtext/**, dans une chasse ou un collecteur hors ligne, puis déposez le ZIP de collecte.
Aftermath. Aftermath de Jamf ne copie pas le magasin ; il enregistre les résultats d'un ensemble de prédicats log show. Conservez-les, et prenez aussi une .logarchive.
mac_apt. Depuis une image, le plugin UNIFIEDLOGEXPORT exporte les fichiers tracev3, uuidtext et dsc dans Export/UNIFIEDLOGEXPORT.
Option 4 : depuis une image disque
Montez le volume Data en lecture seule. Sur un Mac, log collect peut reconstituer une archive à partir d'un magasin hors ligne, à condition que uuidtext se trouve à côté de diagnostics :
sudo log collect --directory /Volumes/Image/private/var/db/diagnostics --output ~/case.logarchive
Sous Linux, copiez les deux dossiers en conservant leur arborescence, par exemple cd /mnt/mac/private/var/db && zip -r ~/case_ul.zip diagnostics uuidtext.
Pièges à éviter
uuidtextmanquant : l'erreur la plus fréquente. Le parseur affiche les entrées mais marque leurs messages comme non résolus.- Collecter trop tard : le magasin tourne en fonction de sa taille, et
sudo log erasele supprime. Collectez avant toute action qui génère beaucoup de journaux. - Uniquement le texte de
log show: un export suffit pour un premier coup d'œil, mais il dépend des options utilisées (--info,--debug,--signpost,--timezone). Voir exporter et construire des chronologies. - Chemins aplatis : les outils qui copient les fichiers sans leurs dossiers perdent l'UUID encodé dans le chemin de chaque fichier
uuidtext.
Une fois la collecte faite, suivez le tutoriel dans le navigateur ou passez directement aux requêtes de triage.