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.
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.ItemPathDisplay | Chemin d'affichage convivial de l'élément | Le chemin que vous citez. Inclut l'extension. Localisé si un nom localisé existe. Chemins UNC pour les partages. |
System.ItemUrl | Forme URL, avec schéma (file:, iehistory:, mapi:…) | Indique quel type d'élément c'est : fichier, historique web, courrier. |
System.ItemFolderPathDisplay | Partie dossier du chemin | Pratique pour regrouper des dossiers de préparation. |
System.FileName / System.ItemNameDisplay | Nom de fichier / nom affiché | Le nom affiché peut masquer l'extension. |
System.ComputerName | Nom de l'ordinateur où se trouve l'élément | Utile 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é | Signification | Notes forensiques |
|---|---|---|
System.ItemType | Type canonique, généralement l'extension (.exe, .zip) ou Directory | Des valeurs spéciales existent, comme ActivityHistoryItem pour les enregistrements d'activité. |
System.ItemTypeText | Type lisible (« Application », « Document texte ») | Localisé. Ne filtrez pas dessus. |
System.Kind | Caté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.FileAttributes | Attributs de fichier Win32 | Des attributs caché / système sur des fichiers utilisateur méritent un coup d'œil. |
Propriétaire et taille
| Propriété | Signification | Notes forensiques |
|---|---|---|
System.FileOwner | Le propriétaire du fichier, tel que connu par le système de fichiers | DOMAINE\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.Size | Taille en octets | Taille au moment de l'indexation. |
Temps
| Propriété | Signification | Notes forensiques |
|---|---|---|
System.DateCreated | Date de création de l'élément | Copiée depuis le système de fichiers à l'indexation. |
System.DateModified | Dernière modification | Idem. |
System.DateAccessed | Dernier accès | Idem, et la mise à jour du dernier accès sur NTFS est souvent désactivée ou grossière. |
System.Search.GatherTime | Moment où le gatherer a transmis pour la dernière fois les propriétés du document | L'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é | Signification | Notes forensiques |
|---|---|---|
System.Search.AutoSummary | Un résumé automatique du texte intégral du document | En 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és | Documents 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é | Signification | Notes forensiques |
|---|---|---|
System.Link.TargetUrl | URL cible d'un lien / élément d'historique | Sous Windows 11, Stroz Friedberg y a trouvé les URL visitées. |
System.ItemUrl en iehistory://{SID}/… | Élément d'historique web | Le 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.
| Motif | Lecture probable |
|---|---|
Gather time quelques secondes ou minutes après DateModified | L'indexeur a capté une modification récente. Normal pour des fichiers actifs. |
Gather time très postérieur à DateModified | Le fichier a été indexé plus tard : nouvel emplacement indexé, reconstruction de l'index, réindexation, ou lecteur reconnecté. |
DateCreated postérieur à DateModified | Typique 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écent | Timestomping 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étaire | Quelqu'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.Kindou les extensions. - Propriétés multivaluées.
System.Kindet 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.edbouWindows.dbprovient de recherches publiques. Dans le doute, regardez les octets bruts ; c'est pour cela que le parseur affiche toutes les propriétés brutes.