Quizá como analista forense muchas veces es el punto de partida de cualquier investigación de una máquina con sistema operativo Windows. El USN Journal (Update Sequence Number Journal) es un artefacto presente en los sistemas de ficheros NTFS que mantiene un registro de todos los cambios realizados en ficheros y carpetas. Microsoft introduce este fichero en Windows 2000 cuando publica NTFS 3.0. Es decir, que no es de ayer.
TL;DR
- ¿Qué es? Un registro del sistema de archivos NTFS que guarda cada creación, modificación, cambio de nombre o eliminación de archivos.
- Es un registro circular. Los datos antiguos se borran automáticamente para dejar espacio a los nuevos según la actividad del disco.
- ¿Dónde está? En la ruta oculta
C:\$Extend\$UsnJrnl.El flujo $J contiene los datos reales, mientras que $Max guarda la configuración. - Valor Forense: A diferencia de la MFT (que solo muestra el estado actual), el USN Journal permite ver el historial de acciones (ej. si un atacante borró archivos o un ransomware cambió extensiones).
- Extracción: Target de KAPE denominado $J
- Parseo: Con MFTECmd de Zimmerman
- ¿Qué mirar? Columna de timestamp, nombre del fichero y columna Update Reasons para identificar qué operación es:
- FileCreate: Creación fichero.
- FileDelete + Close: Eliminación fichero.
- DataOverwrite o DataExtend: Archivo modificado
- FileNameRename: Nombre de archivo modificado
Qué es
Cada vez que se crea, modifica o elimina un archivo o directorio, el sistema de archivos NTFS genera una entrada en el USN Journal. Esta entrada contiene información como:
- El nombre del archivo o directorio.
- La fecha y hora del cambio.
- El tipo de cambio (creación, modificación, eliminación).
- El ID del usuario que realizó el cambio.
- El ID del proceso que realizó el cambio.
$Extend
Para entender dónde se ubica el USN Journal debemos entender cómo se conforma NTFS en distintos volúmenes y qué es $Extend. Seguro que a muchos os suena esta imagen. Cuando abrimos el administrador de discos y vemos las particiones de un disco formateado con el sistema de ficheros NTFS:
$Extend es otra partición que tienen estos sistemas de ficheros, solo que se mantiene oculta. Es una partición que se usa como metadirectorio. Que almacena información necesaria para el funcionamiento del sistema de ficheros. Almacena el USN Journal. Pero no es lo único, hay otras cosas como:
| Archivo | Función |
$UsnJrnl | De lo que estamos hablando |
$Quota | Controla las cuotas de disco por usuario. |
$ObjId | Mapea IDs de objetos para el seguimiento de enlaces distribuidos. |
$Reparse | Gestiona los reparse points (puntos de montaje, enlaces simbólicos). |
$RmMetadata | Datos para el TxF (Transactional NTFS), para asegurar que las operaciones sean atómicas. |
Si montamos una partición de un disco con FTK, vamos a encontrar el $Extend en la raíz en forma de carpeta. Es la forma que tiene el sistema de ficheros de representar esta sección.
Dentro tenemos los ficheros que antes mencionábamos:
Lo vemos como vacío porque estamos viendo con FTK el sistema de ficheros activo. Si montamos una imagen de disco extraída de otro sistema, veremos el tamaño y el contenido.
$UsnJrnl
Si queremos ver el detalle del UsnJrnl de cada disco/partición podemos ejecutar en una cmd con permisos de administrador:
cmd> fsutil usn queryjournal C:
Esto nos sirve también para identificar que está activo. Si el resultado fuese un error, es que no lo está.
Ubicación y extracción
Es decir, podemos decir que el USN Journal se ubica en:
$Extend\$UsnJrnl
Aunque se ubica en una partición oculta en la raíz, a nivel sistema de ficheros de Windows lo podemos encontrar en una ruta oculta en:
C:\$Extend\$UsnJrnl
Pero dentro hay varios «flujos» de datos:
$Max: contiene la configuración, como el tamaño máximo que puede alcanzar, el tamaño asignado para el Usn Journal. Son los datos que se nos muestran en la salida de fsutil que veíamos arriba.$J: es el registro de datos en sí. Cada vez que un archivo se crea, elimina, mueve o modifica, se añade una entrada en $J- IMPORTANTE: $J es un archivo «sparse file». Esto significa que, aunque puede parecer que ocupa gigabytes de espacio, el sistema operativo solo consume espacio físico para los datos recientes, «purgando» lo antiguo para no llenar el disco.
Debemos entender que estos flujos de datos se almacenan anexos al fichero $UsnJrnl. Son un Alternate Data Stream (ADS). Pero es posible que con FTK no los veamos como un ADS normal. Esto es porque FTK detecta que, por la forma en que se asigna el espacio dinámicamente para $UsnJrnl, identifica que el archivo es de 0 bytes y por tanto no muestra los ADS.
Si vamos a las propiedades de $UsnJrnl vemos que en la cuenta de ADS muestra 2:
Lo mismo que decíamos antes. No vemos más porque estamos montando el disco C: que es donde el sistema operativo está corriendo. Vamos a pasar a ver cómo extraerlo para ver el contenido.
Extracción
Yo soy devoto de KAPE. Así que con esta herramienta podemos hacer la extracción. Nos vale con el target «$J».
Esto nos extrae ambos, el $J y el $Max
Por supuesto, estos ficheros en bruto no los podemos leer. Tenemos que usar una herramienta que nos los transforme en un formato entendible por un humano. Es lo que habitualmente llamamos parsear la evidencia.
Parsing y visualización
Una vez que extraemos el USN Jrnl no podemos visualizarlo así en bruto. Necesitamos transformarlo en un formato que sea legible por un humano.
Si para extraer soy devoto de Kape, para parsear, si se puede, soy devoto de Zimmerman. Para parsear el USNJrnl usamos la misma que para la MFT, MFTECmd.
El funcionamiento es sencillo:
.\MFTECmd.exe -f "C:\Ruta\A\Tu\Extraccion\$UsnJrnl_$J" --csv "C:\Destino\Analisis" --csvf UsnJournal_Parseado.csv
Este csv ya si que nos muestra información legible. Ahora vamos a ver qué información encontramos.
Qué nos aporta
Para abrir el csv yo suelo usar el Timeline Explorer de Zimmerman. Pero podéis usar la herramienta que queráis.
Antes de hacer la extracción, creé un fichero «nota.txt» en el escritorio. ¿Qué vemos en el USNJrnl?

Por columnas:
- Update Timestamp: la marca de tiempo de la acción.
- Name: nombre del fichero.
- Extension
- UpdateReasons: Aquí se registran las operaciones. Siempre vamos a tener una entrada para la operación y otra entrada para el cierre de la misma.
Combinaciones que debemos acostumbrarnos a ver:
- FileCreate: Indica la creación de un archivo.
- FileDelete + Close: Confirmación de que un archivo fue eliminado.
- DataOverwrite o DataExtend: Indican que el contenido del archivo fue modificado.
- FileNameRename: Modificación del nombre del fichero. Útil en casos de ransom donde hay cambio de extensión.
MFT vs USN Jrnl
Podemos simplificarlo en que la MFT es más estática. Nos dice qué hay en el disco. Mientras que el USN Jrnl nos dice los cambios que ha habido. Si un atacante modifica un fichero 3 veces, en la MFT solo veremos la marca de tiempo del último cambio. Y si se borra un archivo, en la MFT dejaremos de verlo. Ese es el gran valor forense que nos aporta el USN Jrnl, que tendremos este registro detallado de cambios.
El problema que nos presenta la Usn Jrnl es que es circular. Y que pasado un tiempo indeterminado que variará según la actividad del sistema y el tamaño asignado, se sobrescribirán datos antiguos.
Podemos ver por ejemplo la diferencia de tamaño del USNJrnl y el MFT parseado con MFTECmd:
Conclusiones
En mis investigaciones forenses suelo empezar por esta evidencia (a no ser que tenga muy claro lo que busco). Sobre todo en aquellas investigaciones donde la extracción se ha realizado muy cercana a la fecha de las acciones a investigar. Esta suele mostrar más detalle que la $MFT.
Es aquí donde me hago una idea de las acciones realizadas y ya «salto» a otros artefactos.










