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
Outils
Comparer tous les outils- Disk Image ParserNavigateur
- libfsapfsBibliothèque · open source
- statCLI · intégré à macOS
- mac_aptCLI · open source
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
| macOS | Où regarder | Remarques |
|---|---|---|
| 10.15 Catalina et ultérieur | Volume Data, monté sur /System/Volumes/Data | Fichiers utilisateur ; reliés par firmlinks à /Users, /Applications, /Library, /private |
| 11 Big Sur et ultérieur | Le volume système est un volume système scellé | Contenu fourni par Apple, rarement une preuve dans un dossier |
| 10.13 et ultérieur | Snapshots locaux sur chaque volume APFS sauvegardé par Time Machine | Noms com.apple.TimeMachine.YYYY-MM-DD-HHMMSS.local |
| macOS récent | Snapshots de mise à jour | Créés avant l'installation des mises à jour de macOS |
| Toutes | /usr/share/firmlinks sur le volume système | Fait 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 APFS | stat / POSIX | Signification |
|---|---|---|
create_time | st_birthtime (%SB) | Création de l'inode |
mod_time | st_mtime (%Sm) | Dernière modification du contenu |
change_time | st_ctime (%Sc) | Dernier changement des attributs de l'inode (permissions, propriétaire, xattrs, horodatages, nom) |
access_time | st_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 Finder | Moment où l'entrée a été ajoutée à son répertoire actuel |
| Nom et XID du snapshot | diskutil apfs listSnapshots | Nom 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_triageexécutetmutil listlocalsnapshotsettmutil listlocalsnapshotdateset construit un bodyfile des horodatages de fichiers. - Aftermath avec
--deepparcourt 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 localsnapshotcré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 :
fsapfsinfoinspecte un conteneur et peut écrire un bodyfile de toutes les entrées de fichiers ;fsapfsmountmonte 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
mactimede 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.
touchet 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
.000000000au 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'aucuntouchne 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
Artefacts liés
Guides détaillés
Glossaire
- APFS (Apple File System)Anglais
- APFS SnapshotAnglais
- Sealed System Volume (SSV)Anglais