Où Windows stocke les fichiers Jump List (Win 7, 10, 11)
TL;DR — Les Jump Lists résident dans deux répertoires par utilisateur sous
le profil Roaming : %AppData%\Microsoft\Windows\Recent\AutomaticDestinations\
et %AppData%\Microsoft\Windows\Recent\CustomDestinations\. Ces chemins sont
identiques sous Windows 7, 8, 10 et 11.
Emplacement AutomaticDestinations
Fichiers écrits par le shell lui-même lorsqu'un utilisateur ouvre un document :
%AppData%\Microsoft\Windows\Recent\AutomaticDestinations\
Une fois résolu, cela donne
C:\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\.
Chaque fichier est nommé <AppID>.automaticDestinations-ms, par exemple
<AppID>.automaticDestinations-ms où <AppID> est une chaîne hexadécimale de
16 caractères. Le fichier lui-même est un OLE Compound File dont les flux
numérotés sont des structures LNK, ordonnés par un flux DestList.
Emplacement CustomDestinations
Fichiers écrits par l'application via l'API ICustomDestinationList pour ses
éléments épinglés et ses catégories personnalisées (« Tasks », « Recent », etc.) :
%AppData%\Microsoft\Windows\Recent\CustomDestinations\
Même convention de nommage : <AppID>.customDestinations-ms. Le format est une
séquence plate de structures LNK précédée d'un petit en-tête — et non un OLE
Compound File.
Par utilisateur vs par machine
Les deux répertoires sont par utilisateur et suivent le profil itinérant
(ils se situent sous AppData\Roaming, pas Local). Il n'existe pas de
stockage Jump List à l'échelle de la machine. Sur un hôte en cours d'exécution,
vous pouvez résoudre l'utilisateur courant avec echo %AppData% ; sur une
image montée, parcourez \Users\ et associez chaque dossier de profil à son
SID via HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList\<SID>
si vous devez rattacher l'activité à un compte.
Sur une image forensique
Montez l'image et récupérez l'intégralité de l'arborescence Recent par
utilisateur :
\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\AutomaticDestinations\
\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\CustomDestinations\
\Users\<username>\AppData\Roaming\Microsoft\Windows\Recent\
Le dossier parent Recent\ contient également des raccourcis .lnk
classiques — une corroboration utile mais un artefact distinct. Les deux
sous-dossiers *Destinations existent sans changement depuis Windows 7, donc
le même script de collecte fonctionne sous Windows 7, 8.1, 10 et 11. Sur un
système en cours d'exécution, attendez-vous à ce que explorer.exe maintienne
des handles ouverts ; collectez depuis une Volume Shadow Copy
(\\?\GLOBALROOT\Device\HarddiskVolumeShadowCopyN\…) ou travaillez depuis une
image.
À quoi ressemble un AppID
Le préfixe du nom de fichier est une chaîne hexadécimale en minuscules de 16
caractères — par exemple 1b4dd67f29cb1962. Il s'agit d'un hash CRC64 tronqué
calculé sur le chemin de l'exécutable de l'application (et, dans certains cas,
sur des données d'identification supplémentaires), de sorte que le même binaire
au même chemin produit le même AppID sur chaque machine. C'est cette stabilité
qui rend les listes d'AppID publiées utiles : Quick Access et d'autres éléments
épinglés par le shell utilisent des AppID stables et bien connus que les
analystes reconnaissent à vue. Déplacez ou renommez l'exécutable et l'AppID
change, laissant l'ancien fichier Jump List orphelin dans le dossier.
Pour la disposition octet par octet de ces fichiers sur disque, voir le détail du format de fichier.