← Volver al blog

$UsnJrnl y $MFT: emparejar journal con la tabla

· 2 min de lectura

El $MFT es una foto fija. Describe cómo es cada archivo ahora — sus metadatos, dónde están sus datos, su estado de asignación. Lo que no registra es la secuencia de cambios que produjo ese estado. Para eso NTFS mantiene un segundo artefacto: el Update Sequence Number Journal, $UsnJrnl.

Qué registra el $UsnJrnl

Cada vez que un archivo se crea, modifica, renombra o elimina, NTFS añade al $UsnJrnl un registro de tamaño fijo describiendo el evento. Los campos incluyen:

  • el USN (un entero de 64 bits estrictamente creciente);
  • el número de registro MFT del archivo cambiado;
  • el número de registro del directorio padre;
  • una máscara de razón: FILE_CREATE, DATA_OVERWRITE, RENAME_OLD_NAME, CLOSE, FILE_DELETE y muchas más;
  • un timestamp.

El resultado es un log cronológico de cualquier evento significativo del sistema de archivos desde que se creó o se rotó por última vez el journal. En un sistema típico, cubre días a semanas.

Dónde vive

$UsnJrnl es un archivo NTFS normal cuyos datos viven en el flujo nombrado $J. Se ubica en el directorio especial $Extend, junto a otros archivos de sistema como $LogFile y $Quota.

Se extrae con las mismas herramientas que el $MFT:

  • el target MFT de KAPE incluye $UsnJrnl;
  • FTK Imager lo exporta desde [volumen NTFS]/$Extend/$UsnJrnl:$J;
  • las herramientas de imagen de disco lo leen directamente desde los clusters en bruto.

Cómo complementa al $MFT

Crúzalos y emergen patrones que ninguno mostraría por sí solo:

  • Un archivo que no aparece en disco pero sí en $UsnJrnl — creado y eliminado entre instantáneas, pero conservado por el journal.
  • El orden exacto de los renombrados durante un ransomwareOPEN, DATA_OVERWRITE, RENAME_OLD_NAME, RENAME_NEW_NAME, CLOSE.
  • Si un archivo «modificado» fue realmente reescrito o solo tocado — las razones del $UsnJrnl distinguen sobreescritura de datos de cambio de metadatos.

Para la reconstrucción de línea de tiempo, el flujo suele ser: recorrer el $MFT para el estado actual y luego el $UsnJrnl para el historial de cambios que lo produjo.

Límites

El $UsnJrnl rota. Por defecto pesa 32 MB, lo que en un sistema con actividad cubre unos pocos días. Los eventos viejos caen del final. Si llegas a una investigación más de una semana después, espera huecos — y apóyate más en el slack del $MFT y en $LogFile.

Recursos externos