ShellBags vs fichiers LNK, Jump Lists et RecentDocs
Quatre artefacts d'activité comparés : ce qu'enregistrent ShellBags, fichiers LNK, Jump Lists et RecentDocs, ce qu'ils prouvent et leurs angles morts.
TL;DR. Les ShellBags répondent à « quels dossiers cet utilisateur a-t-il parcourus ? ». Les fichiers LNK et les Jump Lists répondent à « quels fichiers (et dossiers) a-t-il ouverts, avec quelle application, et quand ? ». RecentDocs répond à « qu'a-t-il ouvert récemment, par extension ? » sous une forme compacte dans le registre. Les quatre sont propres à chaque utilisateur et utilisent le même format de shell item. Ce sont des témoins complémentaires : les ShellBags donnent l'étendue côté dossiers, les autres la profondeur côté fichiers.
Quand je relis une chronologie d'activité utilisateur, l'erreur structurelle la plus fréquente consiste à utiliser l'un de ces artefacts à la place d'un autre : « pas de fichier LNK, donc l'utilisateur n'y est jamais allé », ou « les ShellBags montrent le dossier, donc l'utilisateur a ouvert le tableur ». Cet article pose ce que chacun peut contenir.
Vue d'ensemble
| ShellBags | Fichiers LNK | Jump Lists | RecentDocs | |
|---|---|---|---|---|
| Stockage | UsrClass.dat + NTUSER.DAT, Shell\BagMRU | %APPDATA%\Microsoft\Windows\Recent\*.lnk | ...\Recent\AutomaticDestinations\*.automaticDestinations-ms, CustomDestinations\*.customDestinations-ms | NTUSER.DAT Software\Microsoft\Windows\CurrentVersion\Explorer\RecentDocs |
| Unité enregistrée | Dossier | Fichier ou dossier cible | Élément par application (AppID) | Nom de fichier ou de dossier, par extension |
| Créé par | La navigation/sélection de dossiers dans l'Explorateur et les boîtes de dialogue | L'ouverture d'un fichier via le shell | L'ouverture d'éléments avec une application qui utilise les jump lists | Le suivi des « documents récents » du shell (SHAddToRecentDocs) |
| Dates clés | LastWrite de clé, dernière interaction dérivée du MRU, dates MAC du dossier | Création/modification du LNK, dates MAC de la cible | Dernier accès par entrée dans DestList | LastWrite de clé + ordre MRUListEx |
| Contexte supplémentaire | Référence MFT du dossier, chemin UNC, chemin d'archive | Numéro de série du volume, type de lecteur, nom NetBIOS, adresse MAC de la machine (bloc tracker) | Identité de l'application, nombre d'accès sur les versions récentes, données LNK embarquées | Ordre d'utilisation par extension |
| Prouve l'accès à un fichier | Non | Oui | Oui | Oui |
| Survit à la suppression de la cible | Oui | Oui | Oui | Oui |
Références de structure : MS-SHLLINK pour les LNK, le format Jump lists de libyal, et le format des shell items de libfwsi, commun aux quatre. Le poster SANS Windows Forensic Analysis les classe sous « ouverture de fichiers/dossiers ».
Quand les ShellBags l'emportent
- Parcourir sans ouvrir. Un utilisateur qui explore un partage pour voir ce qu'il contient, ou vérifie qu'une copie vers une clé USB est terminée, n'ouvre souvent rien. Seuls les ShellBags s'en souviennent.
- L'étendue au niveau des dossiers. Chaque parent de chaque chemin parcouru est enregistré. Vous voyez la structure d'un lecteur amovible exploré par l'utilisateur, pas seulement le fichier ouvert.
- La longévité. Les fichiers LNK de
Recentsont purgés et les entrées de Jump Lists vieillissent par application. Les ShellBags persistent bien plus longtemps sur un profil ordinaire (sous réserve des limites décrites dans limites des ShellBags). - Les dossiers supprimés. La référence MFT du shell item permet de tester si l'enregistrement du dossier a été réutilisé. Voir dossiers supprimés.
Quand les fichiers LNK et les Jump Lists l'emportent
- La preuve au niveau du fichier. Ils nomment le fichier ouvert. Les ShellBags en sont incapables.
- L'identité du périphérique. Les fichiers LNK contiennent le numéro de série du volume et le type de lecteur de la cible, ce qui relie un fichier ouvert à un volume USB précis. Un ShellBag ne donne qu'une lettre de lecteur.
- Le contexte applicatif. Une Jump List est propre à un AppID : vous savez que le fichier a été ouvert, par exemple, dans le gestionnaire ZIP par défaut ou dans un client Bureau à distance.
- De meilleures dates pour le fichier. La date de création du LNK approche la première ouverture, sa date de modification la dernière ouverture (via ce raccourci).
Quand RecentDocs aide
RecentDocs est un index compact, par utilisateur, des éléments ouverts récemment, avec une sous-clé par extension et une sous-clé Folder, chacune avec son propre MRUListEx. Il sert à trier « ce qui a été ouvert le plus récemment » par type et à repérer des extensions inhabituelles pour l'utilisateur (.ps1, .7z, .kdbx). Il stocke des noms, pas des chemins complets : associez-le aux fichiers LNK pour le chemin. Des listes voisines sous ComDlg32 (OpenSavePidlMRU, LastVisitedPidlMRU) enregistrent les fichiers et dossiers utilisés dans les boîtes de dialogue Ouvrir/Enregistrer, par extension et par application.
Les utiliser ensemble : un schéma type
Une séquence hypothétique, qui prolonge l'échantillon fictif du site (le nom de fichier et les détails LNK sont inventés pour l'illustration) :
- Les ShellBags placent l'utilisateur dans
\\FILESRV01\Finance\Boardà 10:36 (dérivé du MRU). - Les LNK/Jump Lists montrent
Q3_board_pack.pdfouvert depuis ce partage à 10:37. - La sous-clé
.pdfde RecentDocs contient le même nom en position 0. - Les ShellBags montrent ensuite
E:\exfil\finance_2026parcouru à 10:45 ; un fichier LNK pointant vers un fichier de ce dossier porte le numéro de série du volume E:, que vous rapprochez de l'historique des périphériques USB de la ruche SYSTEM et des journaux d'événements (parseur EVTX).
Chaque artefact couvre les angles morts des autres. L'absence de l'un ne rend pas le récit faux ; elle vous indique où chercher ensuite.
Interpréter l'absence
- ShellBag présent, pas de LNK. Le dossier a été parcouru ; soit aucun fichier n'a été ouvert via le shell, soit le LNK a été purgé ou supprimé. Ce n'est pas une preuve d'accès à un fichier.
- LNK présent, pas de ShellBag pour son dossier. Le fichier a pu être ouvert depuis un chemin jamais parcouru (un lien dans un e-mail, une ligne de commande, la liste récente d'une application), ou les ShellBags ont été nettoyés.
- Aucun des deux. Envisagez une activité en console ou scriptée, un autre compte, ou de l'anti-forensique. Les artefacts d'exécution comme Prefetch, Amcache et la base SRUM peuvent montrer quels outils ont tourné.
FAQ
Quel artefact prouve qu'un fichier a été ouvert, les ShellBags ou les fichiers LNK ?
Les fichiers LNK, les Jump Lists et RecentDocs enregistrent les fichiers ouverts. Les ShellBags n'enregistrent que les dossiers parcourus ou sélectionnés.
Pourquoi extraire les ShellBags si j'ai déjà les fichiers LNK ?
Parce que les utilisateurs parcourent de nombreux dossiers sans y ouvrir de fichier, et que les ShellBags conservent ces dossiers, y compris sur des supports amovibles et des partages, bien après la rotation ou la suppression des fichiers LNK.