Skip to content

Les propriétés de l'index Windows Search expliquées

System.ItemPathDisplay, System.Search.GatherTime, System.Search.AutoSummary et les autres propriétés Windows Search qui comptent dans une enquête forensique.

Publié le 6 min de lecture

En bref. Chaque élément de l'index Windows Search est un sac de propriétés du shell Windows, identifié par un WorkId. Une douzaine d'entre elles portent l'essentiel de la valeur forensique : System.ItemPathDisplay (chemin complet), System.Size, System.FileOwner, System.DateCreated / DateModified / DateAccessed (horodatages du système de fichiers vus à l'indexation), System.Search.GatherTime (moment où l'indexeur a traité l'élément), System.Search.AutoSummary (un extrait du contenu), System.ItemType et System.Kind (la nature de l'élément), et des propriétés d'URL pour l'historique web. Microsoft documente la signification de chaque propriété, pas la façon dont la base la stocke. Toutes les dates sont des FILETIME en UTC.

D'où viennent les propriétés

Le système de propriétés de Windows définit des noms canoniques comme System.ItemPathDisplay, chacun avec un identifiant de format et un identifiant de propriété (une PROPERTYKEY). L'indexeur applique les gestionnaires de propriétés à chaque fichier et stocke les valeurs. Dans Windows.edb, chaque propriété est une colonne nommée comme 4447-System_ItemPathDisplay. Dans Windows.db, c'est une ligne dont le ColumnId renvoie au nom via SystemIndex_1_PropertyStore_Metadata. La comparaison des formats montre les deux structures.

Le préfixe numérique est propre à chaque base. Fiez-vous au nom. Les pages de référence de Microsoft donnent la signification et le type de chaque nom, par exemple System.ItemPathDisplay.

Les propriétés qui comptent

Identité et emplacement

PropriétéSignification (Microsoft)Notes forensiques
System.ItemPathDisplayChemin d'affichage convivial de l'élémentLe chemin que vous citez. Inclut l'extension. Localisé si un nom localisé existe. Chemins UNC pour les partages.
System.ItemUrlForme URL, avec schéma (file:, iehistory:, mapi:…)Indique quel type d'élément c'est : fichier, historique web, courrier.
System.ItemFolderPathDisplayPartie dossier du cheminPratique pour regrouper des dossiers de préparation.
System.FileName / System.ItemNameDisplayNom de fichier / nom affichéLe nom affiché peut masquer l'extension.
System.ComputerNameNom de l'ordinateur où se trouve l'élémentUtile quand les index de plusieurs machines sont mélangés dans une affaire.

Les exemples de Microsoft pour System.ItemPathDisplay incluent un chemin local, un chemin UNC et un chemin de boîte aux lettres : l'index couvre plus que les fichiers locaux.

Nature

PropriétéSignificationNotes forensiques
System.ItemTypeType canonique, généralement l'extension (.exe, .zip) ou DirectoryDes valeurs spéciales existent, comme ActivityHistoryItem pour les enregistrements d'activité.
System.ItemTypeTextType lisible (« Application », « Document texte »)Localisé. Ne filtrez pas dessus.
System.KindCatégorie déduite de l'extension : document, program, folder, link, webhistory…Microsoft associe les extensions aux catégories dans la clé de registre KindMap. Multivaluée.
System.FileAttributesAttributs de fichier Win32Des attributs caché / système sur des fichiers utilisateur méritent un coup d'œil.

Propriétaire et taille

PropriétéSignificationNotes forensiques
System.FileOwnerLe propriétaire du fichier, tel que connu par le système de fichiersDOMAINE\utilisateur ou MACHINE\utilisateur. Le champ d'attribution le plus solide de l'index, mais propriétaire ne veut pas dire auteur : un administrateur qui copie un fichier peut en devenir propriétaire.
System.SizeTaille en octetsTaille au moment de l'indexation.

Temps

PropriétéSignificationNotes forensiques
System.DateCreatedDate de création de l'élémentCopiée depuis le système de fichiers à l'indexation.
System.DateModifiedDernière modificationIdem.
System.DateAccessedDernier accèsIdem, et la mise à jour du dernier accès sur NTFS est souvent désactivée ou grossière.
System.Search.GatherTimeMoment où le gatherer a transmis pour la dernière fois les propriétés du documentL'horloge de l'indexeur lui-même. Ce n'est pas un horodatage du système de fichiers : le timestomping du fichier ne le modifie pas.

Les quatre sont des FILETIME : des intervalles de 100 nanosecondes depuis le 1er janvier 1601, en UTC. Dans Windows.db, le parseur les lit comme des valeurs little-endian sur 8 octets, conformément aux recherches publiques, et conserve les octets bruts à côté de la date décodée.

Contenu

PropriétéSignificationNotes forensiques
System.Search.AutoSummaryUn résumé automatique du texte intégral du documentEn pratique, le début du texte. Stroz Friedberg rapporte jusqu'à 1 024 octets sous Windows 11.
System.Title, System.Author, System.Subject…Métadonnées documentaires issues des gestionnaires de propriétésDocuments Office, PDF et e-mails portent des métadonnées supplémentaires à lire dans la liste des propriétés brutes.

Web et activité

PropriétéSignificationNotes forensiques
System.Link.TargetUrlURL cible d'un lien / élément d'historiqueSous Windows 11, Stroz Friedberg y a trouvé les URL visitées.
System.ItemUrl en iehistory://{SID}/…Élément d'historique webLe SID rattache l'entrée à un utilisateur.
Propriétés ActivityHistory (StartTime, EndTime, AppId)Enregistrements d'historique d'activitéPrésentes quand System.ItemType vaut ActivityHistoryItem, d'après les mêmes travaux.

Lire les horodatages ensemble

Le gather time est le champ auquel un attaquant pense rarement, et il rend les autres plus utiles.

MotifLecture probable
Gather time quelques secondes ou minutes après DateModifiedL'indexeur a capté une modification récente. Normal pour des fichiers actifs.
Gather time très postérieur à DateModifiedLe fichier a été indexé plus tard : nouvel emplacement indexé, reconstruction de l'index, réindexation, ou lecteur reconnecté.
DateCreated postérieur à DateModifiedTypique d'un fichier copié ou extrait avec sa date de modification d'origine préservée. Cherchez la source.
DateModified très ancien sur un exécutable déposé dans un dossier modifiable par l'utilisateur, gather time récentTimestomping possible ou extraction d'archive. Vérifiez le journal USN et la MFT.
Gather time après la dernière ouverture de session connue du propriétaireQuelqu'un ou quelque chose d'autre a écrit à cet emplacement, ou l'indexeur a rattrapé son retard.

Le Windows Search Index Parser signale les éléments « indexés récemment » : indexés après leur dernière modification et dans les 24 heures précédant l'indexation la plus récente de la même base. Sur une machine saisie peu après un incident, cela met en évidence ce qui a changé lors de la dernière journée d'activité.

Pièges

  • Les valeurs sont des instantanés. Tout sauf le gather time décrit le fichier au moment de son indexation. Un fichier modifié ensuite et jamais réindexé affiche des valeurs périmées.
  • Localisation. Noms affichés et libellés de type changent avec la langue du système. Filtrez plutôt sur System.ItemType, System.Kind ou les extensions.
  • Propriétés multivaluées. System.Kind et quelques autres contiennent plusieurs valeurs (« program; executable »). Un parseur qui ne garde que la première peut perdre de l'information.
  • Absent ne veut pas dire zéro. Une propriété absente signifie qu'aucun gestionnaire ne l'a renseignée. Pas « vide » ni « faux ».
  • Stockage non documenté. Microsoft documente les propriétés, pas la base. L'encodage d'une valeur dans Windows.edb ou Windows.db provient de recherches publiques. Dans le doute, regardez les octets bruts ; c'est pour cela que le parseur affiche toutes les propriétés brutes.

Articles liés

Articles liés