Forensique macOS: UnifiedLogs, FSEvents et AULR en Pratique
Comment Basilisk collecte les preuves sur macOS Sonoma et Sequoia avec UnifiedLogs, FSEvents et AULR sans piétiner la scène de l'incident.
Un MacBook Pro M3 arrive sur la paillasse, soupconne d'avoir execute un payload signe par un Developer ID revoque. Le client veut des reponses sous 48 heures, le disque est chiffre par FileVault et l'utilisateur est en vacances dans un autre fuseau. Avant d'allumer le moindre outil, l'equipe Basilisk verrouille le cadre legal, recoit le mot de passe FileVault via un canal valide et consigne un hash SHA-256 de l'image initiale. Sur macOS moderne, on ne va pas loin sans comprendre que la pile de logs a mute depuis Sierra: les fichiers .log ont cede la place aux tracev3 binaires, et ignorer ce point fait perdre 80% de la telemetrie disponible.
Le UnifiedLogs vit sous /var/db/diagnostics et /var/db/uuidtext, entre 500 Mo et 4 Go selon l'usage. Pour la capture a chaud, nous lancons log collect --output incident.logarchive, ce qui fige l'etat courant dans un paquet portable. En post-mortem, nous copions les repertoires bruts et les confions a macos-UnifiedLogs de Mandiant, un parseur Rust qui n'exige plus un Mac compatible. Avant, il fallait garder une machine Apple a la version exacte de la cible pour invoquer /usr/bin/log. Pour le contexte defensif global, ce papier se lit en duo avec Durcissement macOS: Lockdown Mode, MDM et Reduction de Surface.
FSEvents est le deuxieme pilier et repond a la question 'qu'est-ce qui a change sur ce volume et quand'. Les logs sont dans /.fseventsd/ sous forme de fichiers gzip numerotes, chaque enregistrement contient un event ID monotone et des flags creation, renommage ou suppression. Detail critique: FSEvents n'enregistre ni le contenu ni l'utilisateur, seulement le chemin et l'operation. Croiser FSEvents avec UnifiedLogs donne une chronologie fiable. Des outils comme FSEventsParser de David Cowen traitent le tout en quelques secondes et exportent du CSV pret pour Timesketch, dans l'esprit du flux decrit dans Timeline Forensics sur Windows : Plaso, Log2Timeline et KAPE en Pratique, adapte au monde Apple.
L'AULR, ou plus precisement Apple Unified Logging avec Activity Tracing, ajoute le contexte de processus parent, thread ID et signpost. Les predicats sont votre meilleur scalpel: log show --predicate 'subsystem == "com.apple.securityd"' --last 24h fait remonter les tentatives XPC suspectes, et subsystem com.apple.TCC expose les prompts microphone et camera refuses ou acceptes. Dans un cas reel de juin cette annee, une variante du stealer Atomic AMOS a laisse des traces dans com.apple.kextd en tentant de charger un KEXT sur un Mac avec SIP actif, en echouant bruyamment. Sans ce predicat, l'evenement se noie dans des millions de lignes.
Cote capture ethique, Basilisk suit un runbook fige: autorisation ecrite du client, write-blocker Thunderbolt pour l'image disque quand c'est possible, hashes SHA-256 et SHA-3-512, et journaux de chain of custody signes par cles materielles YubiKey. Quand le Mac est vivant et qu'on ne peut pas l'eteindre, on utilise aftriage de CrowdStrike ou la recette macos_artifact_collection avec Velociraptor, en redirigeant toujours la sortie vers un SSD externe APFS dedie au cas. Cette rigueur fait echo a DFIR sous Linux: Triage Vivant avec UAC et Velociraptor et se relie a OPSEC pour Chercheurs en Securite: Modele de Menace Personnel, car enqueter sans se proteger revient a entrer dans une maison fumante sans masque.
L'analyse demarre en parallele: pendant que macos-UnifiedLogs produit du JSONL en arriere-plan, on inspecte les metadonnees Spotlight via mdls sur les fichiers suspects, on exporte KnowledgeC.db depuis CoreDuet pour cartographier les fenetres en focus, et on parcourt /private/var/db/CoreDuet/Knowledge pour correler l'usage du Terminal aux horaires anormaux. Tout converge vers un notebook Jupyter avec pandas ou l'on joint les PIDs UnifiedLogs aux chemins FSEvents. Si un comportement de loader emerge, il rime souvent avec les techniques de Analyse de Malware en Lab Isole: Setup Securise avec FlareVM et REMnux, reciblees du PE vers le Mach-O.
A retenir concretement: constituez aujourd'hui un logarchive de reference de votre propre Mac avec log collect et stockez-le a cote d'un snapshot APFS de /.fseventsd. La prochaine fois qu'un detail semblera bizarre, vous aurez un vrai diff temporel au lieu de suppositions. Cette baseline coute cinq minutes et evite des jours d'enquete reactive quand l'incident frappe vraiment.