Skip to content

Limites et anti-forensique de Windows Timeline

Là où s'arrêtent les preuves Windows Timeline : expiration, paramètres, historique effacé, lignes supprimées, WAL manquant, limites des parseurs, falsification.

Publié le 6 min de lecture

En bref. Les preuves Timeline s'épuisent de six façons prévisibles : expiration (30 jours ; 12 heures pour le presse-papiers), paramètres (collecte désactivée par l'utilisateur ou une stratégie), effacement (effacer l'historique, entrées retirées), suppression du fichier, WAL manquant, et limites du parseur (pas de carving des pages libres ni des trames WAL périmées). Chacune laisse des traces quelque part : lignes de suppression dans ActivityOperation, date de création de la base dans la table Metadata, journal USN, clichés instantanés, paramètres du registre. L'absence de lignes Timeline ne prouve jamais, à elle seule, qu'il ne s'est rien passé.

Savoir où un artefact s'arrête, c'est ce qui distingue un constat d'une supposition. Voici la liste pour Windows Timeline, avec la contre-vérification de chaque point.

Limites naturelles

Expiration

Chaque ligne a un ExpirationTime. kacos2000 l'a mesuré à exactement 2 592 000 secondes (30 jours) après LastModifiedTime pour les activités normales, et à 43 200 secondes (12 heures) pour le contenu du presse-papiers (kacos2000). Une activité régulièrement mise à jour repousse son expiration ; une ouverture de fichier ponctuelle d'il y a six semaines a disparu de la table active.

Contre-vérification : clichés instantanés et sauvegardes du profil ; SRUM, qui a sa propre rétention, indépendante ; Jump Lists et fichiers LNK, qui n'ont pas de champ d'expiration temporelle.

Couverture

Timeline enregistre l'activité visible par l'utilisateur (applications, fichiers, pages), pas chaque processus (Microsoft Support). Un outil lancé depuis un service, une tâche planifiée ou un shell distant sans fenêtre de bureau n'a aucune raison d'y apparaître. Les types d'activité eux-mêmes sont des observations de chercheurs, pas une spécification publique : plusieurs numéros restent inexpliqués (kacos2000/WindowsTimeline).

Contre-vérification : Prefetch, AmCache, événements de création de processus dans EVTX.

Windows 11

La vue Timeline a été retirée de Windows 11 (Microsoft Support) et ce que la base reçoit encore varie. Voir Windows 11 Timeline : ActivitiesCache.db est-il encore utile ?

L'heure

Les horodatages sont des secondes Unix en UTC, fixées par l'horloge locale. Une horloge système fausse produit des heures fausses ; la base ne contient aucune source de temps indépendante. Le userTimezone du payload enregistre le fuseau au moment de la création de l'activité (Microsoft Graph), ce qui aide quand un portable a voyagé.

Anti-forensique délibérée

ActionEffet sur ActivitiesCache.dbTraces laissées
Désactiver « Stocker mon historique d'activités sur cet appareil »Les nouvelles activités ne sont plus enregistréesÉtat du paramètre dans la ruche utilisateur ; un trou dans les lignes alors que les autres artefacts continuent
Stratégie de groupe / MDM (EnableActivityFeed, PublishUserActivities)Publication des activités utilisateur désactivée (CSP Privacy)Valeurs de stratégie dans la ruche SOFTWARE
« Effacer l'historique des activités »Lignes supprimées pour le compte (Microsoft Support)Pages libérées dans la base, trames WAL, un début de chronologie soudain
Retirer une entrée (Timeline de Windows 10)Entrée copiée dans ActivityOperation avec un statut supprimé (kacos2000)Une opération de suppression en attente avec son propre CreatedTime
Supprimer le fichier de baseWindows le recréeEntrées du journal USN ; le DatabaseInstanceIdUpdateTime de la table Metadata, que kacos2000 identifie comme la date de création de la base (kacos2000)
Modifier la base avec un client SQLiteLignes modifiées ou suppriméesDépend des réglages : le contenu supprimé peut rester dans l'espace libre sauf si secure_delete est actif (PRAGMA SQLite) ou si le fichier a été reconstruit avec VACUUM (VACUUM SQLite)

L'opération de suppression est un cadeau

Le nettoyage le plus courant, retirer une entrée gênante, est aussi le plus visible. La table ActivityOperation conserve l'opération avec le type d'opération 3, l'Id de l'activité et l'heure à laquelle la suppression a été mise en file. Dans le Windows Timeline Parser, ces lignes sont marquées Suppression et datées par leur heure de création, pas par l'heure de début de l'activité visée : elles se placent dans la chronologie au moment du nettoyage.

kacos2000 décrit une subtilité : pour les comptes Microsoft, les entrées au statut supprimé ne restent dans ActivityOperation que jusqu'à leur synchronisation, après quoi elles repassent dans Activity jusqu'à expiration (kacos2000). La synchronisation cloud de l'historique ayant pris fin pour les comptes Microsoft en 2021 et pour les comptes Entra ID à partir de janvier 2024 (Microsoft Support), ce comportement sur les systèmes actuels mérite d'être testé plutôt que supposé. Vérifiez aussi ActivityStatus dans Activity.

Signes d'une base réinitialisée

  • La ligne la plus ancienne est bien plus récente que le profil, alors que SRUM et Prefetch montrent une activité plus ancienne pour le même utilisateur.
  • La date de création dans la table Metadata est récente.
  • Le journal USN montre ActivitiesCache.db supprimé puis recréé (parseur USN).
  • Un cliché instantané de volume contient une base plus volumineuse et plus ancienne.

Échecs de collecte (ceux qu'on s'inflige)

ÉchecConséquenceCorrection
WAL non collectéActivité la plus récente absente, lignes mises à jour affichant d'anciennes valeursCollecter ActivitiesCache.db* (acquisition)
Base et WAL de moments différentsTrames incohérentes ; un parseur prudent ignore le WALCollecter les deux en une passe ou depuis un cliché instantané
Originaux ouverts avec un client SQLiteWAL reporté puis supprimé à la fermeture (sqlite.org)Hacher, puis travailler sur des copies
Un seul dossier de compte collectéActivité d'un autre type de compte manquéeCollecter tout le dossier ConnectedDevicesPlatform

Limites des parseurs (y compris celui-ci)

Être explicite sur l'outil fait partie de la rigueur sur la preuve. Aujourd'hui, le Windows Timeline Parser :

  • Analyse les lignes actives d'Activity, ActivityOperation et Activity_PackageId, avec les transactions WAL validées appliquées.
  • Ne carve pas les enregistrements supprimés dans les freeblocks, les pages de la freelist ou les trames WAL d'une génération de sel antérieure. Il indique pourquoi la lecture du WAL s'est arrêtée (par exemple « appartient à une génération WAL plus ancienne ») mais n'extrait pas ces trames.
  • N'analyse pas les tables Metadata, ActivityAssetCache ni AppSettings.
  • Présente la colonne Group (Copy / Paste) dans l'export JSON, pas dans le tableau.
  • Charge chaque base dans la mémoire du navigateur.
  • A été testé sur de vrais fichiers SQLite construits selon le schéma documenté ; recoupez les constats critiques avec un second parseur (comparatif des parseurs).

Pour la récupération des enregistrements supprimés, des outils de recherche SQLite comme bring2lite analysent les freelists et le WAL (Meng et Baier, 2019), et kacos2000 publie des outils de carving du presse-papiers (kacos2000/WindowsTimeline).

FAQ

Un utilisateur peut-il supprimer son historique Windows Timeline ?

Oui. Windows propose un bouton pour effacer l'historique des activités, les utilisateurs pouvaient retirer des entrées individuelles de Timeline sous Windows 10, et le paramètre de stockage de l'historique peut être désactivé. Retirer une entrée laisse une opération de suppression en attente dans ActivityOperation, qui constitue elle-même une preuve.

Combien de temps Windows Timeline conserve-t-il l'activité ?

Chaque ligne porte un ExpirationTime. Les chercheurs l'ont mesuré à 30 jours après la dernière modification pour les activités normales et à 12 heures pour le contenu du presse-papiers.

Articles liés

Articles liés

Comment le mode WAL de SQLite cache l'activité la plus récente de Windows Timeline dans ActivitiesCache.db-wal, et comment l'analyser sans rien altérer.
Référence des champs d'ActivitiesCache.db : ActivityType 5, 6, 10 et 16, JSON AppId, clés du payload comme activeDurationSeconds et toutes les colonnes de date.
Guide complet de l'analyse forensique de Windows Timeline : ce que contient ActivitiesCache.db, où le trouver, pourquoi le -wal compte et comment l'exploiter.