Jump Lists¶
Qué son las Jump Lists¶
Las Jump Lists respaldan los menús que se muestran desde las entradas de aplicaciones de la barra de tareas y del menú Inicio. Las Jump Lists automáticas son historiales gestionados por Windows de los elementos que ha utilizado una aplicación. Las Jump Lists personalizadas son categorías y tareas definidas por la aplicación. Ambas pueden incrustar estructuras LNK con rutas de destino, horas, contexto de volumen y de red, referencias MFT y argumentos de inicio.
Los registros automáticos pueden revelar archivos o carpetas abiertos por una aplicación, el orden y la hora del último uso, el recuento de interacciones y el estado de anclaje. Las listas personalizadas pueden mostrar páginas «cerradas recientemente» o tareas de la aplicación, incluidos argumentos de comando maliciosos.
Mejor conclusión: la aplicación propietaria registró o expuso el elemento o la tarea en su Jump List. El comportamiento varía según la aplicación; corrobore la ejecución o el acceso reales.
Ubicaciones y recopilación¶
%APPDATA%\Microsoft\Windows\Recent\AutomaticDestinations\*.automaticDestinations-ms
%APPDATA%\Microsoft\Windows\Recent\CustomDestinations\*.customDestinations-ms
El prefijo hexadecimal del nombre de archivo es un AppID. Recopile ambos directorios y conserve la ruta del perfil
de usuario. Las listas automáticas son contenedores OLE Compound File con un flujo DestList y flujos LNK
numerados; las listas personalizadas utilizan su propio formato de categorías y vínculos.
Precauciones para el analista¶
- Las descripciones de AppID proceden de una tabla de correspondencias conocida; un AppID desconocido no es sospechoso por sí mismo.
- Los campos
LastModifiedy de último uso pertenecen a una entrada de DestList; las horas del destino incrustado son distintas. - Los recuentos de interacciones solo existen en las versiones compatibles y no son un recuento completo de aperturas.
- El anclaje conserva los elementos más allá de la recencia normal; la limpieza o la configuración de la aplicación pueden eliminar otros.
- Una lista puede contener flujos obsoletos o no vinculados, o bytes de una lista personalizada anterior y más larga.
- Los argumentos y las rutas de los LNK incrustados están controlados por el atacante. La asociación con una aplicación es contexto, no garantía de confianza.
Análisis con 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 .
Con auto-parse, las tablas CSV son FileAndFolderOpening/JumpLists-AutomaticDestinations.csv
y FileAndFolderOpening/JumpLists-CustomDestinations.csv, directamente bajo cada equipo.
El registro compartido es JumpLists-logs.txt en esa categoría. Los manifiestos enumeran las rutas exactas
en OutputFiles. Las exportaciones CSV independientes conservan AutomaticDestinations.csv y
CustomDestinations.csv en el directorio que elija. Las exportaciones automáticas JSON y JSONL son
archivos únicos JumpLists.json o JumpLists.jsonl; la estructura de los registros no cambia.
Campos CSV de AutomaticDestinations¶
| Grupo de campos | Campos e interpretación |
|---|---|
| Origen | SourceFile, SourceCreated, SourceModified, SourceAccessed: el contenedor de la Jump List y sus horas del sistema de archivos. |
| Aplicación | AppId, AppIdDescription: AppID del nombre de archivo y correspondencia con una aplicación conocida. No deduzca la identidad a partir de un hash desconocido. |
| Contenedor | HasSps, DestListVersion, LastUsedEntryNumber: estructura y versión de DestList y contexto del encabezado. |
| Orden | MRU, EntryNumber: posición de uso más reciente e identificador hexadecimal de la entrada o del flujo. |
| Metadatos de uso | CreationTime, LastModified, InteractionCount, PinStatus, PinPosition: ciclo de vida, uso y estado de anclaje en DestList. Interprételos según la versión. |
| Host y ruta | Hostname, MacAddress, Path, DisplayPath: ubicación del destino y contexto de seguimiento. El host o la MAC no bastan como única base de atribución. |
| Identificadores de seguimiento | FileBirthDroid, FileDroid, VolumeBirthDroid, VolumeDroid: correlacionan destinos movidos y el seguimiento del LNK incrustado. |
| Notas | Notes: informa de flujos no vinculados, restos recuperados u otro contexto del analizador. |
| LNK incrustado | TargetCreated, TargetModified, TargetAccessed, FileSize, RelativePath, WorkingDirectory, FileAttributes, HeaderFlags, DriveType, VolumeSerialNumber, VolumeLabel, LocalPath, CommonPath, TargetIDAbsolutePath, TargetMFTEntryNumber, TargetMFTSequenceNumber, MachineID, MachineMACAddress, TrackerCreatedOn, ExtraBlocksPresent, Args: interprételos como se describe en Accesos directos LNK. |
| LNK adicional | NetworkPath, Name, IconLocation: campos de red y de presentación del acceso directo incrustado. |
| Validación | Problems: flujos ausentes, truncamiento, recuentos discrepantes o vínculos dañados. |
Campos CSV de CustomDestinations¶
La salida personalizada empieza por SourceFile, SourceCreated, SourceModified, SourceAccessed, AppId,
AppIdDescription y EntryName (nombre de la categoría o Tasks), seguidos de todos los campos de LNK incrustado
indicados arriba, y después Notes, NetworkPath, Name, IconLocation y Problems.
Además, JSON/JSONL conserva el encabezado de DestList, la puntuación, la suma de comprobación y el almacén de propiedades de cada entrada,
DestListPropertyStore, los flujos del archivo compuesto, las categorías personalizadas, los bytes posteriores a la última categoría
y los campos anidados de cada LNK incrustado.
Estrategia de investigación¶
- Identifique el usuario y el perfil de origen, y después asocie el AppID con una aplicación con cautela.
- Ordene las entradas automáticas por
LastModifiedyMRU; separe los elementos anclados. - Revise las rutas, los recursos compartidos de red, los números de serie de volúmenes extraíbles, las referencias MFT y los argumentos.
- Inspeccione
Notesy los vínculos no vinculados o sobrantes: allí pueden sobrevivir elementos eliminados o anteriores. - Correlacione con RecentDocs, los LNK independientes de Recent, Prefetch, SRUM,
$MFTy los registros de eventos.