Jump Lists¶
Que sont les Jump Lists¶
Les Jump Lists alimentent les menus affichés à partir des entrées d'application de la barre des tâches et du menu Démarrer. Les Jump Lists automatiques sont des historiques gérés par Windows des éléments utilisés par une application. Les Jump Lists personnalisées sont des catégories et des tâches définies par l'application. Les deux peuvent incorporer des structures LNK contenant des chemins de cible, des heures, un contexte de volume/réseau, des références MFT et des arguments de lancement.
Les enregistrements automatiques peuvent révéler des fichiers ou dossiers ouverts par une application, l'ordre/l'heure de dernière utilisation, le nombre d'interactions et l'état d'épinglage. Les listes personnalisées peuvent exposer des pages « récemment fermées » ou des tâches d'application — y compris des arguments de commande malveillants.
Meilleure conclusion : l'application propriétaire a enregistré ou exposé l'élément/la tâche dans sa Jump List. Le comportement diffère selon l'application ; corroborez l'exécution/l'accès effectif.
Emplacements et collecte¶
%APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations\*.automaticDestinations-ms
%APPDATA%\Microsoft\Windows\Recent\CustomDestinations\*.customDestinations-ms
Le préfixe hexadécimal du nom de fichier est un AppID. Collectez les deux répertoires et conservez le chemin du
profil utilisateur. Les listes automatiques sont des conteneurs OLE Compound File comportant un flux DestList et des flux LNK
numérotés ; les listes personnalisées utilisent leur propre format de catégories/liens.
Précautions d'analyse¶
- Les descriptions des AppID proviennent d'une table de correspondance connue ; un AppID inconnu n'est pas suspect en soi.
- Les champs
LastModified/ de dernière utilisation appartiennent à une entrée DestList ; les heures de la cible incorporée sont différentes. - Les nombres d'interactions n'existent que dans les versions prises en charge et ne représentent pas un nombre complet d'ouvertures.
- L'épinglage conserve des éléments au-delà de la récence normale ; un nettoyage ou les paramètres de l'application peuvent en supprimer d'autres.
- Une liste peut contenir des flux obsolètes/non rattachés ou des octets provenant d'une liste personnalisée antérieure plus longue.
- Les arguments et chemins des LNK incorporés sont contrôlés par l'attaquant. L'association à une application est un contexte, pas un gage de confiance.
Analyser avec Juntei¶
Usage: juntei parse-file jump-lists <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find automatic/custom destination files
-f, --file <FILE> Parse one Jump List
--code-page <CP> ANSI code page for embedded links
Output:
-o, --output <PATH> Directory of CSV tables, or JSON/JSONL file
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-file jump-lists -d evidence/ -o jump-list-csv
juntei parse-file jump-lists -f sample.automaticDestinations-ms -t jsonl | jq .
Avec auto-parse, les tables CSV sont FileAndFolderOpening/JumpLists-AutomaticDestinations.csv
et FileAndFolderOpening/JumpLists-CustomDestinations.csv, directement sous chaque ordinateur.
Le journal commun est JumpLists-logs.txt dans cette catégorie. Les manifestes listent les chemins exacts
dans OutputFiles. Les exports CSV autonomes conservent AutomaticDestinations.csv et
CustomDestinations.csv dans le répertoire que vous choisissez. Les exports automatiques JSON et JSONL sont
des fichiers uniques JumpLists.json ou JumpLists.jsonl ; la structure des enregistrements est inchangée.
Champs CSV AutomaticDestinations¶
| Groupe de champs | Champs et interprétation |
|---|---|
| Source | SourceFile, SourceCreated, SourceModified, SourceAccessed : le conteneur de la Jump List et ses horodatages du système de fichiers. |
| Application | AppId, AppIdDescription : AppID tiré du nom de fichier et correspondance avec une application connue. N'en déduisez pas l'identité à partir d'une empreinte inconnue. |
| Conteneur | HasSps, DestListVersion, LastUsedEntryNumber : structure/version du DestList et contexte de l'en-tête. |
| Ordre | MRU, EntryNumber : position d'utilisation la plus récente et identifiant hexadécimal de l'entrée/du flux. |
| Métadonnées d'utilisation | CreationTime, LastModified, InteractionCount, PinStatus, PinPosition : cycle de vie/utilisation/état d'épinglage du DestList. À interpréter selon la version. |
| Hôte/chemin | Hostname, MacAddress, Path, DisplayPath : emplacement de la cible et contexte de suivi. L'hôte/l'adresse MAC ne suffit pas à lui seul pour l'attribution. |
| Identifiants de suivi | FileBirthDroid, FileDroid, VolumeBirthDroid, VolumeDroid : permettent de corréler les cibles déplacées et le suivi des LNK incorporés. |
| Remarques | Notes : vous informe des flux non rattachés, des restes récupérés ou d'autres éléments de contexte du parseur. |
| LNK incorporé | TargetCreated, TargetModified, TargetAccessed, FileSize, RelativePath, WorkingDirectory, FileAttributes, HeaderFlags, DriveType, VolumeSerialNumber, VolumeLabel, LocalPath, CommonPath, TargetIDAbsolutePath, TargetMFTEntryNumber, TargetMFTSequenceNumber, MachineID, MachineMACAddress, TrackerCreatedOn, ExtraBlocksPresent, Args : à interpréter comme décrit dans Raccourcis LNK. |
| LNK supplémentaire | NetworkPath, Name, IconLocation : champs réseau et de présentation du raccourci incorporé. |
| Validation | Problems : flux manquants, troncature, désaccord entre les décomptes ou dommages des liens. |
Champs CSV CustomDestinations¶
La sortie personnalisée commence par SourceFile, SourceCreated, SourceModified, SourceAccessed, AppId,
AppIdDescription et EntryName (nom de catégorie ou Tasks), suivis de tous les champs LNK incorporés
listés ci-dessus, puis de Notes, NetworkPath, Name, IconLocation et Problems.
Les sorties JSON/JSONL conservent en outre l'en-tête DestList, le score/la somme de contrôle/le magasin de propriétés de chaque entrée,
DestListPropertyStore, les flux du fichier composé, les catégories personnalisées, les octets situés après la dernière catégorie,
ainsi que les champs imbriqués de chaque LNK incorporé.
Stratégie d'investigation¶
- Identifiez l'utilisateur et le profil source, puis faites correspondre l'AppID à une application avec prudence.
- Triez les entrées automatiques par
LastModifiedetMRU; séparez les éléments épinglés. - Examinez les chemins, les partages réseau, les numéros de série des volumes amovibles, les références MFT et les arguments.
- Inspectez
Noteset les liens non rattachés/restants — des éléments supprimés ou antérieurs peuvent y survivre. - Corrélez avec RecentDocs, les LNK autonomes du dossier Recent, Prefetch, SRUM,
$MFTet les journaux d'événements.