¿Qué es una Jump List de Windows? Una guía para principiantes
Una Jump List de Windows es un menú por aplicación de elementos usados recientemente, usados con frecuencia y anclados que Windows muestra desde la barra de tareas y el menú Inicio. Llegó en Windows 7 y el formato en disco no ha cambiado a través de Windows 10 y 11. Cada Jump List también es un archivo en disco que registra qué abrió un usuario con qué aplicación, cuándo y desde dónde. Ese último hecho es por lo que los analistas DFIR se preocupan por un artefacto que la mayoría de los usuarios nunca nombrarán.
Lo que ves en la UI
Haz clic derecho en cualquier icono de la barra de tareas, Notepad, Word, Explorer, Chrome, y el flyout que aparece es la Jump List de esa aplicación. El mismo menú aparece junto a los tiles anclados en el menú Inicio. Las secciones varían según la app: Anclados, Recientes, Frecuentes, más cualquier grupo definido por la aplicación (los Más visitados de Chrome, Documentos recientes de Word, Workspaces recientes de VS Code).
Hay dos autores escribiendo en la misma carpeta. Windows mismo rastrea elementos recientes y frecuentes para cada aplicación registrada. La aplicación también puede publicar sus propias categorías usando la API de shell ICustomDestinationList. Ambos acaban en disco en el mismo lugar, en dos formatos de archivo diferentes.
Cómo las construye Windows
Cada aplicación que quiere una Jump List registra una AppID, una cadena hexadecimal en minúsculas de 16 caracteres como 1b4dd67f29cb1962, calculada como un CRC64 truncado sobre la ruta del ejecutable. El mismo binario en la misma ruta produce la misma AppID en cada máquina, lo que hace que las listas de AppID publicadas sean útiles para el trabajo del analista.
Cada vez que el usuario abre un archivo a través de esa aplicación, la shell de Windows escribe un Windows Shell Link (.lnk) en el archivo de Jump List correspondiente. El LNK captura la ruta de destino, el tamaño del archivo, tres marcas temporales FILETIME, el número de serie del volumen, y a través de su TrackerDataBlock, el hostname NetBIOS de la máquina de origen y un GUID droid derivado de su dirección MAC.
Dos tipos de archivo, una carpeta
Ambos residen bajo %AppData%\Microsoft\Windows\Recent\ y usan la denominación <AppID>.<extension>:
- AutomaticDestinations (
*.automaticDestinations-ms), escrito por Windows. El contenedor es un OLE Compound File (MS-CFB, el mismo formato que un viejo.doc). Cada flujo numerado es un LNK incrustado; un flujo especialDestListlos ordena y registra marcas temporales de acceso por entrada, recuentos de acceso, IDs de entrada y el hostname fuente. - CustomDestinations (
*.customDestinations-ms), escrito por la aplicación. El contenedor es un blob binario plano: una cabecera, luego una secuencia de estructuras LNK agrupadas en categorías nombradas, terminadas por0xBABFFBAB.
Versión práctica: AutomaticDestinations es lo que Windows te dice que hizo el usuario. CustomDestinations es lo que la aplicación te dice que quería ofrecer.
Qué hay realmente dentro de una entrada
Decodificar una sola entrada de Jump List típicamente produce:
- La ruta de destino completa del archivo o URL abierto.
- Metadatos del archivo en el momento de la apertura, tamaño, tiempos MAC, atributos.
- El número de serie del volumen y el tipo de unidad, útil para huellas digitales de medios extraíbles.
- Un TrackerDataBlock que contiene el nombre NetBIOS de la máquina y un GUID droid derivado de la dirección MAC.
- Para AutomaticDestinations, la marca temporal de acceso y el recuento de accesos del flujo DestList.
- Argumentos de línea de comandos y directorio de trabajo si el LNK los llevaba.
Juntos esos campos convierten una Jump List en una línea de tiempo por usuario de interacción con archivos que sobrevive incluso después de eliminar el archivo original.
Por qué les importa a los analistas DFIR
Las Jump Lists responden una pregunta que pocos otros artefactos responden limpiamente: qué aplicación abrió qué archivo, en qué host, en qué momento. Corroboran ShellBags, Recent Items, Prefetch, AmCache e historial del navegador, y a menudo preservan referencias a archivos en unidades USB o recursos compartidos de red que ya no existen. El campo hostname en DestList es especialmente útil para el trabajo de movimiento lateral, la Jump List de una estación de trabajo recordará el nombre NetBIOS del servidor de staging mucho después de que el recurso compartido haya desaparecido.
Para ir más allá de la introducción y leer los bytes tú mismo, el siguiente post entendiendo las Jump Lists de Windows recorre ambos formatos en detalle.
Lecturas adicionales
- La referencia a nivel de byte para AutomaticDestinations y CustomDestinations.
- Una guía DFIR de campo.
- Artefactos hermanos: el parser LNK para accesos directos independientes, el parser de registro para las claves
UserAssistyRecentDocscorrespondientes.