Aller au contenu

Accès aux fichiersAnti-forensique

Horodatages APFS et snapshots locaux sous macOS

Horodatages APFS à la nanoseconde, date d'ajout au dossier et snapshots locaux Time Machine : la base des chronologies et de la récupération sur Mac.

Emplacement
/System/Volumes/Data
Prouve
Quand des fichiers ont été créés, modifiés et ajoutés à un dossier, et à quoi ressemblait le volume quelques heures plus tôt
Horodatages
Nanosecondes depuis le 1970-01-01 UTC (époque Unix)
Accès
Tout utilisateur pour stat sur ses propres fichiers ; root plus accès complet au disque pour monter des snapshots
Rétention
Horodatages jusqu'à écrasement ; snapshots locaux horaires conservés environ 24 heures
Collecte
UAC, Aftermath, tmutil, Disk image

Ce que c'est

APFS est le système de fichiers par défaut de macOS depuis 10.13 High Sierra pour les volumes de démarrage SSD. Chaque inode stocke quatre horodatages à la nanoseconde, et chaque entrée de répertoire stocke une valeur distincte de date d'ajout (Date Added). APFS fonctionne en copie sur écriture : il peut donc aussi conserver à moindre coût des snapshots en lecture seule d'un volume. Time Machine les utilise comme « snapshots locaux », et macOS en crée un avant d'installer des mises à jour.

Ensemble, ces éléments constituent la première couche de toute chronologie Mac, un moyen de tester les horodatages pour détecter une falsification, et parfois une copie d'un fichier modifié ou supprimé depuis. Le guide des snapshots et horodatages APFS détaille la structure des volumes et le comportement lors des copies ; cette page sert de référence rapide.

Où il se trouve

macOSOù regarderRemarques
10.15 Catalina et ultérieurVolume Data, monté sur /System/Volumes/DataFichiers utilisateur ; reliés par firmlinks à /Users, /Applications, /Library, /private
11 Big Sur et ultérieurLe volume système est un volume système scelléContenu fourni par Apple, rarement une preuve dans un dossier
10.13 et ultérieurSnapshots locaux sur chaque volume APFS sauvegardé par Time MachineNoms com.apple.TimeMachine.YYYY-MM-DD-HHMMSS.local
macOS récentSnapshots de mise à jourCréés avant l'installation des mises à jour de macOS
Toutes/usr/share/firmlinks sur le volume systèmeFait correspondre les chemins racine aux chemins du volume Data

Protection : stat fonctionne pour tout ce que l'utilisateur peut voir. Lister et monter des snapshots nécessite root, et lire des chemins protégés par TCC dans un snapshot monté exige toujours l'accès complet au disque. Hors ligne, un volume Data FileVault ou Apple silicon doit d'abord être déverrouillé.

Ce qu'il prouve

  • Quand un inode de fichier a été créé (naissance), quand son contenu a changé pour la dernière fois (mtime), quand ses métadonnées ont changé pour la dernière fois (ctime).
  • Quand un élément a été placé dans son dossier actuel (Date Added), indépendamment des horodatages propres au fichier.
  • Qu'un fichier existait, avec un contenu précis, au moment d'un snapshot.
  • Une falsification probable des horodatages (timestomping), lorsque ctime, les nanosecondes ou Date Added contredisent mtime et la date de naissance.

Il ne prouve pas :

  • Qu'un fichier a été lu. La date d'accès est mise à jour de façon paresseuse par défaut (voir ci-dessous).
  • Qui a effectué un changement. Les horodatages ne sont associés à aucun utilisateur ni processus.

Champs clés

Champ APFSstat / POSIXSignification
create_timest_birthtime (%SB)Création de l'inode
mod_timest_mtime (%Sm)Dernière modification du contenu
change_timest_ctime (%Sc)Dernier changement des attributs de l'inode (permissions, propriétaire, xattrs, horodatages, nom)
access_timest_atime (%Sa)Dernier accès, selon la politique atime
date_added (enregistrement de répertoire j_drec_val_t)Spotlight kMDItemDateAdded, « Date d'ajout » du FinderMoment où l'entrée a été ajoutée à son répertoire actuel
Nom et XID du snapshotdiskutil apfs listSnapshotsNom et identifiant de transaction ; les XID ordonnent les snapshots

Politique de date d'accès : sauf si le volume porte le drapeau APFS_FEATURE_STRICTATIME, APFS ne met à jour access_time lors d'une lecture que si la valeur stockée est plus ancienne que mod_time. Le volume Data est normalement monté sans strict atime : l'atime est donc une preuve faible de lecture.

Horodatages

Tous les horodatages APFS, y compris date_added, sont des compteurs 64 bits de nanosecondes depuis le 1970-01-01 00:00:00 UTC. Le Finder n'affiche que des secondes entières ; stat peut en montrer davantage.

# Readable birth, modify, change, access
stat -f "B:%SB M:%Sm C:%Sc A:%Sa" -t "%Y-%m-%d %H:%M:%S %z" report.pdf

# Raw nanosecond value to a date (divide by 1e9)
date -u -r $(( 1759133456123456789 / 1000000000 ))

Les noms des snapshots locaux intègrent une date et une heure : considérez-les comme l'heure de création approximative, et confirmez le fuseau horaire du système examiné avant de vous y fier.

Rétention

  • Les horodatages de fichier persistent jusqu'au prochain changement du même type ; ctime change lors de presque toute modification de métadonnées.
  • Snapshots locaux Time Machine : Apple indique un snapshot du disque de démarrage environ toutes les heures, chacun conservé 24 heures, plus un pour la dernière sauvegarde réussie, conservé jusqu'à ce que l'espace soit nécessaire. Un espace libre insuffisant peut les purger plus tôt.
  • Les snapshots n'existent que si Time Machine (ou un autre logiciel utilisant les snapshots) est actif : beaucoup de Mac n'en ont aucun.

Collecte

Relevez d'abord l'état des snapshots, car il évolue de lui-même :

tmutil listlocalsnapshots /
tmutil listlocalsnapshotdates /
diskutil apfs listSnapshots /System/Volumes/Data

Montez un snapshot en lecture seule et copiez ce dont vous avez besoin (root, accès complet au disque) :

sudo mkdir /tmp/snap
sudo mount_apfs -o rdonly -s com.apple.TimeMachine.2026-09-28-101500.local /System/Volumes/Data /tmp/snap
sudo ditto /tmp/snap/Users/alice/Downloads /Volumes/CASE/MBP01/snap_Downloads
sudo umount /tmp/snap
  • UAC ir_triage exécute tmutil listlocalsnapshots et tmutil listlocalsnapshotdates et construit un bodyfile des horodatages de fichiers.
  • Aftermath avec --deep parcourt le système de fichiers pour relever les dates de naissance, de modification et d'accès ; son exécution par défaut couvre les répertoires courants.
  • tmutil localsnapshot crée un nouveau snapshot pour figer le volume avant une longue collecte logique. Cela modifie le système : documentez-le.
  • Analyse à froid : faites une image du conteneur entier ; les outils qui comprennent les groupes de volumes APFS exposent alors les deux volumes et les snapshots.

Analyse

  • libfsapfs : fsapfsinfo inspecte un conteneur et peut écrire un bodyfile de toutes les entrées de fichiers ; fsapfsmount monte un volume depuis une image. Les volumes chiffrés acceptent une option de mot de passe ou de clé de récupération.
# -o takes the byte offset of the APFS container inside the image
fsapfsinfo -o <container_offset_bytes> -B /cases/MBP01/apfs.body /cases/MBP01.raw
  • The Sleuth Kit prend en charge APFS (couche pool) pour lister le contenu au niveau de l'image.
  • mac_apt ouvre les images APFS (y compris des volumes System et Data montés séparément) et, avec un mot de passe ou une clé de récupération, les volumes chiffrés ; ses plugins rapportent ensuite les horodatages par artefact.
  • Convertissez les bodyfiles en chronologie avec vos outils habituels (par exemple mactime de The Sleuth Kit).

Conseils d'investigation

  • Une date de naissance antérieure à Date Added est normale pour les téléchargements et les copies : le fichier existait d'abord ailleurs.
  • touch et les outils similaires ne peuvent pas définir ctime. Un mtime ancien associé à un ctime récent demande une explication.
  • Les horodatages définis à partir d'une valeur saisie ont souvent une partie nanoseconde nulle. Un groupe de valeurs .000000000 au milieu de voisins normaux est un fort indice de timestomping.
  • Recoupez avec FSEvents (InodeMetaMod), la Date Added de Spotlight et les événements de quarantaine, qu'aucun touch ne réécrit.
  • Dédupliquez les doublons liés aux firmlinks (/Users/... contre /System/Volumes/Data/Users/...) par inode, pas par chemin.
  • La copie live lit les fichiers et peut modifier l'atime. Préférez l'imagerie, ou collectez depuis un snapshot monté.
  • Pour un historique plus long que celui des snapshots locaux, examinez les sauvegardes Time Machine sur des destinations externes ou réseau.

Voir aussi