Aller au contenu
Categoria: Forensics9 min de lecture

Forensique macOS: UnifiedLogs, FSEvents et AULR en Pratique

Por Lucas Andrade ·

Comment Basilisk collecte les preuves sur macOS Sonoma et Sequoia avec UnifiedLogs, FSEvents et AULR sans piétiner la scène de l'incident.

Forensique macOS: UnifiedLogs, FSEvents et AULR en Pratique
Dans cet article

Un MacBook Pro M3 arrive sur la table, soupconne d executer un payload signe avec un Developer ID revoque. Le client veut des reponses en 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 perimetre legal, recoit le mot de passe FileVault par un canal verifie et enregistre un hash SHA-256 de l image initiale. Sur macOS moderne tu ne vas pas loin sans savoir que la pile de logging a mute radicalement depuis Sierra: les fichiers .log classiques ont cede la place au format binaire tracev3, et l ignorer jette quatre-vingts pour cent de la telemetrie disponible. Ce guide parcourt les trois piliers qu un intervenant macOS ne peut sauter: UnifiedLogs, FSEvents et Apple Unified Logging avec activity tracing.

Pourquoi le logging macOS a change et pourquoi ca compte#

Depuis macOS Sierra, Apple a remplace Apple System Log et les logs texte disperses par un pipeline unifie, structure et binaire qui ecrit des chunks compresses tracev3. L avantage pour le defenseur est enorme: tags de subsystem et de categorie, activity IDs qui cousent les evenements lies, et une retention qui peut remonter de plusieurs jours a semaines. L inconvenient est que grep sur du texte est mort; il te faut desormais un parser qui comprend le format et les tables de chaines uuidtext qui rehydratent les messages lisibles. Un intervenant qui copie /var/log et s arrete la n a presque rien capture. La vraie preuve vit dans un magasin binaire qu il faut collecter et parser deliberement, et c est exactement la friction que cet article supprime.

UnifiedLogs: collecte et parsing#

Les UnifiedLogs vivent sous /var/db/diagnostics et /var/db/uuidtext, pesant de 500 Mo a 4 Go selon l usage. Pour la capture a chaud nous lancons log collect --output incident.logarchive, qui fige l etat courant dans un bundle portable analysable hors machine. Pour le travail dead-box nous copions les repertoires bruts et les donnons a macos-UnifiedLogs de Mandiant, un parser Rust qui n exige plus un hote Apple correspondant. C etait autrefois un point de friction majeur: il fallait garder en ligne un Mac avec la version exacte du SO cible juste pour invoquer /usr/bin/log. Diffuse la sortie parsee en JSONL pour qu elle alimente directement ton pipeline d analyse. Pour le contexte defensif plus large, associe cette lecture a Durcissement macOS: Lockdown Mode, MDM et Reduction de Surface.

FSEvents: ce qui a change sur ce volume et quand#

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 numerotes compresses en gzip; chaque enregistrement porte un event ID monotone plus des flags create, rename ou delete. Reserve critique: FSEvents n enregistre ni le contenu ni l utilisateur qui a declenche le changement, seulement le chemin et l operation. Coupler FSEvents avec UnifiedLogs produit une chronologie fiable, car le log te dit quel processus a tourne tandis que FSEvents te dit quels fichiers il a touches. Des outils comme le FSEventsParser de David Cowen l avalent en secondes et emettent du CSV pret pour Timesketch, en echo au flux couvert dans Timeline Forensics sur Windows : Plaso, Log2Timeline et KAPE en Pratique. Utilise l ID monotone comme cle de tri quand les horodatages d horloge manquent.

AULR et la puissance des predicats#

AULR, plus precisement Apple Unified Logging avec Activity Tracing, superpose processus parent, thread ID et contexte de signpost. Les predicats sont ton couteau le plus tranchant: log show --predicate 'subsystem == "com.apple.securityd"' --last 24h fait remonter les tentatives XPC suspectes, tandis que le subsystem com.apple.TCC expose les invites micro et camera refusees ou accordees. Dans un cas reel de juin cette annee, une variante du stealer Atomic AMOS a laisse des empreintes dans com.apple.kextd en tentant de charger un KEXT sur un Mac avec SIP actif, echouant bruyamment. Sans ce predicat l evenement se noie dans des millions de lignes de bruit. Construis une petite bibliotheque de predicats pour la persistance, TCC, la signature de code et les subsystems reseau afin de ne jamais grepper a l aveugle dans un firehose.

Capture ethique et chaine de custody#

Cote capture ethique, Basilisk suit un runbook fixe: autorisation client ecrite, un write-blocker Thunderbolt pour l imaging quand c est faisable, hashes SHA-256 et SHA-3-512, et journaux de chaine de custody signes avec des cles materielles YubiKey. Quand le Mac est vivant et ne peut etre eteint nous nous appuyons sur aftriage de CrowdStrike ou la recette Velociraptor macos_artifact_collection, toujours en redirigeant la sortie vers un SSD externe APFS dedie. Cette rigueur reflete ce que nous avons explore dans DFIR sous Linux: Triage Vivant avec UAC et Velociraptor et se connecte a la discipline personnelle de OPSEC pour Chercheurs en Securite: Modele de Menace Personnel. Consigne chaque commande executee avec horodatage, car le rapport ne vaut que par sa reproductibilite.

Correler l ensemble d artefacts plus large#

Les trois piliers sont le squelette; la chair est le reste de l ensemble d artefacts. Inspecte les metadonnees Spotlight via mdls sur les fichiers suspects, exporte KnowledgeC.db de CoreDuet pour cartographier les fenetres au premier plan, et parcours /private/var/db/CoreDuet/Knowledge pour correler l usage du Terminal avec une activite hors heures. Pour la persistance, enumere LaunchAgents et LaunchDaemons dans les domaines utilisateur et systeme, verifie les enregistrements BTM (Background Task Management) et diffuse les profils de configuration installes. Quand un comportement de loader apparait, il rime souvent avec les techniques de Analyse de Malware en Lab Isole: Setup Securise avec FlareVM et REMnux, alors bascule un echantillon dans un sandbox plutot que de le detoner sur l hote de preuve.

Construire la chronologie#

L analyse demarre en parallele: pendant que macos-UnifiedLogs diffuse du JSONL en arriere-plan, nous chargeons le CSV FSEvents et la sortie du log dans un notebook Jupyter avec pandas et joignons les PID UnifiedLogs aux chemins FSEvents sur une fenetre temporelle partagee. Le but est une super-chronologie unique ou le demarrage d un processus, la creation d un fichier, une invite TCC et une connexion reseau s alignent a la seconde et racontent une histoire coherente. Pousse le frame fusionne dans Timesketch pour la revue collaborative et le tagging, et utilise des vues sauvegardees pour isoler la fenetre d intrusion suspectee. Une chronologie qui survit au contre-interrogatoire est une ou chaque ligne cite son artefact source, alors garde la colonne de provenance remplie des le premier import plutot que de la reconstruire plus tard sous la pression du delai.

Anti-forensique et pieges courants#

Les attaquants connaissent aussi ces artefacts. Un intrus capable peut effacer les UnifiedLogs avec un helper signe, falsifier l heure systeme pour brouiller l ordre, ou operer entierement en memoire pour eviter FSEvents. Guette les trous: une fenetre tracev3 suspectement propre, une sequence FSEvents avec un saut dans les event IDs, ou un log qui redemarre brutalement suggerent une falsification plutot qu une innocence. Le piege auto-inflige le plus courant est cote analyste: demarrer la preuve, laisser Spotlight reindexer, ou monter en lecture-ecriture et ainsi ecrire de nouveaux FSEvents qui polluent la chronologie meme que tu es venu lire. Monte toujours en lecture seule et travaille depuis une image, jamais l original.

Une checklist d intervenant#

Condense l engagement en une checklist reproductible: confirmer l autorisation ecrite et le perimetre; obtenir la cle FileVault par un canal verifie; imager avec write-blocker et hasher en SHA-256; lancer log collect et copier /.fseventsd/; parser avec macos-UnifiedLogs et FSEventsParser; extraire KnowledgeC, TCC, LaunchAgents et BTM; construire la super-chronologie en pandas et Timesketch; verifier les trous anti-forensiques; et signer la chaine de custody a chaque etape. Garde la checklist dans le dossier du cas et coche au fur et a mesure, car une cle FileVault manquee ou une image non hashee peut annuler tout l engagement, aussi bonne que soit l analyse qui suit.

FAQ: puis-je analyser les UnifiedLogs sans un Mac correspondant?#

Oui. Cela exigeait autrefois un hote Apple avec la meme version du SO pour appeler /usr/bin/log, une vraie contrainte pour le travail dead-box. Le macos-UnifiedLogs de Mandiant est un parser Rust autonome qui lit les repertoires bruts tracev3 et uuidtext sur n importe quelle plateforme, donc tu peux traiter une image sur une station Linux. Note tout de meme la version du SO cible, car les formats de message changent parfois entre versions et connaitre la version t aide a interpreter correctement les entrees ambigues.

FAQ: combien de temps les UnifiedLogs conservent-ils les donnees?#

Cela depend du volume et de la pression disque plutot que d une fenetre fixe; un logging intense peut comprimer la retention a deux jours tandis qu une machine calme peut garder des semaines. Cette variance est exactement pourquoi tu collectes tot: des qu un incident est soupconne, lance log collect et snapshotte /.fseventsd/ avant que l activite normale ne fasse tourner les plus vieux chunks. La retention n est pas une garantie, c est une course, et l intervenant qui capture au jour zero detient des preuves que celui qui attend une semaine n a tout simplement pas.

Takeaway pratique: construis aujourd hui une logarchive de reference de ton propre Mac avec log collect et range-la a cote d un snapshot APFS de /.fseventsd. La prochaine fois que quelque chose te semble anormal tu auras un vrai diff temporel au lieu de suppositions. Cette reference coute cinq minutes et t epargne des jours d investigation reactive quand l incident frappe vraiment, transformant un sprint de 48 heures en panique en une comparaison calme contre un socle connu et propre.

Related posts

Nenhum comentário ainda

Seja o primeiro a comentar.

Deixe seu comentário

Entre com sua conta Canverly para comentar. Você pode usar a mesma conta em qualquer site da rede.

Entrar com Canverly