Análisis forense de Jump Lists: un recorrido práctico DFIR
Las Jump Lists ofrecen al analista DFIR un registro por aplicación y por usuario del acceso a archivos: la ruta de destino completa de cada elemento abierto, el FILETIME de último acceso y un contador monótono de accesos, el nombre de host NetBIOS del equipo que originalmente contenía el archivo, el estado de anclaje, la identidad de la aplicación a través de su AppID, y un ID de volumen que puede vincular una entrada a una unidad extraíble concreta. Todo lo siguiente es el flujo de trabajo para extraer esos datos y llevarlos a un informe.
Qué evidencias aportan las Jump Lists
- Ruta de destino del elemento abierto (local, UNC o extraíble).
- Marca de tiempo de último acceso (FILETIME, UTC) y un contador de accesos por entrada.
- Nombre de host NetBIOS de origen registrado en el momento del acceso.
- Estado de anclaje — si el usuario ancló este elemento a la Jump List.
- AppID, que identifica de forma determinista la aplicación que lo lanzó.
- ID de volumen y etiqueta de volumen del LNK incrustado, útiles para la correlación con medios extraíbles.
- Tiempos MAC y tamaño del archivo de destino tal como se observaron cuando se escribió el LNK.
Un flujo DFIR en 5 pasos
- Adquirir. Extrae
%AppData%\Microsoft\Windows\Recent\AutomaticDestinationsy la carpeta hermanaCustomDestinationsde cada perfil de usuario. Trabaja desde una imagen forense o una copia VSS — los archivos en vivo suelen estar bloqueados por Explorer. KAPE tiene un target para esto; si no,robocopy /bdesde una copia sombra montada funciona. - Triaje. Lista los AppIDs (nombres de archivo sin la extensión) y asígnalos a aplicaciones. Usa como referencia la lista de AppIDs incluida con JLECmd de Eric Zimmerman; cualquier AppID sin asignar merece un análisis más detallado, porque las aplicaciones personalizadas y portátiles generan sus propios AppIDs.
- Analizar. Extrae cada flujo LNK numerado y las filas de
DestList. JLECmd produce CSV; Plaso/log2timelineemite eventos de línea de tiempo; Autopsy los muestra en sus resultados de ingesta. Para una revisión puntual sin sacar el artefacto de la estación del analista, suelta el archivo en el parser en el navegador — se ejecuta del lado del cliente y nunca sube nada. - Correlacionar. Alinea las marcas de tiempo de acceso de DestList con
la línea de tiempo de la sesión interactiva del usuario: Security log
4624/4634para inicio y cierre de sesión, la clave de registroUserAssistpara lanzamientos GUI, y Prefetch para ejecución de procesos. Los artefactos de memoria vía Volatility pueden confirmar que la aplicación estaba realmente residente en ese momento. - Informar. Cita cada hallazgo por archivo fuente, número de flujo y
ID de entrada DestList — por ejemplo,
1b4dd67f29cb1962.automaticDestinations-ms, flujo7, entrada DestList0x12. La reproducibilidad es lo que sostiene el hallazgo.
Evidencia entre hosts: el campo hostname
Cada fila de DestList lleva el nombre de host NetBIOS del equipo desde el que se abrió el archivo de destino. En una estación de trabajo que monta recursos compartidos desde varios servidores, este campo revela qué servidor contenía cada documento abierto — sin necesidad de los logs del propio servidor. En investigaciones de movimiento lateral, una Jump List en un host comprometido contiene con frecuencia el nombre del servidor de staging del atacante mucho después de que el recurso compartido haya sido desmontado.
Errores comunes
- FILETIME son intervalos de 100 nanosegundos desde 1601-01-01 UTC.
Convertirlo a epoch Unix requiere restar
11644473600segundos tras dividir por10^7; los errores de un día de desfase son la fuente más común de líneas de tiempo erróneas. - Las versiones de DestList difieren entre Windows 7 (versión
1) y Windows 10+ (versión3y4). Los tamaños de fila y los offsets de campos cambian — los parsers antiguos se desalinearán silenciosamente en hosts más nuevos. - Algunas aplicaciones (Office, Explorer) anclan elementos agresivamente y aumentan los contadores de accesos por indexación en segundo plano, por lo que un contador alto no es por sí solo prueba de interacción repetida del usuario.
- La Configuración de la barra de tareas tiene un interruptor "Mostrar elementos abiertos recientemente". Desactivarlo trunca los archivos por AppID. Los archivos se recrean en el próximo uso, por lo que DestLists inesperadamente cortas son un indicador a tener en cuenta.
Suelta un archivo Jump List en la página principal del parser para ver todo esto sin enviar datos a ningún sitio.