Diario USN ($UsnJrnl:$J)¶
Qué es el Diario USN¶
NTFS registra los cambios de archivos y directorios en el diario de cambios Update Sequence Number (USN). Un registro puede describir la creación, la ampliación o sobrescritura de datos, cambios de atributos o de seguridad, el cambio de nombre, el cierre y la eliminación. Almacena una referencia de archivo, una referencia al directorio principal, el nombre, los motivos, los atributos, una marca de tiempo y un USN que aumenta de forma monótona.
El diario es excelente para reconstruir una ráfaga de operaciones de archivos de un atacante, especialmente cuando los archivos se eliminaron. Registra que los metadatos o el contenido cambiaron, no los bytes modificados.
Mejor conclusión: NTFS registró los motivos de cambio
indicados para el archivo referenciado en la marca de tiempo. Los motivos suelen acumularse hasta
un registro CLOSE.
Ubicación y recopilación¶
$J es un flujo con nombre de los metadatos de NTFS. Recopílelo con una herramienta forense con
acceso sin procesar (raw). Recopile también la $MFT del mismo volumen, porque los registros USN
almacenan referencias al archivo principal en lugar de rutas completas.
Precauciones para el analista¶
- El diario es circular y de tamaño limitado. Los registros antiguos se sobrescriben.
FILE_DELETEindica que NTFS procesó la eliminación; el contenido puede seguir siendo recuperable en otro lugar.- Un motivo como
DATA_OVERWRITEno revela los bytes ni el proceso o usuario responsable. - Se pueden combinar varios motivos en un mismo registro;
CLOSEsuele marcar el final de los cambios acumulados. - Las rutas se reconstruyen. Los directorios principales pueden haberse renombrado, eliminado o reutilizado.
- Los números de secuencia de las referencias de archivo importan. El número de entrada por sí solo puede vincularse a la generación equivocada.
- El carving puede recuperar registros válidos sin su contexto original en el diario; indique esa distinción en el informe.
Análisis con Juntei¶
Usage: juntei parse-ntfs usn-journal <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find $J files
-f, --file <FILE> Parse one $J, or any file with --carve
-m, --mft <FILE> Use the matching volume's $MFT for paths
--carve Search a disk image/unallocated file for records
Output:
-o, --output <PATH> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-ntfs usn-journal -f 'C/$Extend/$J' -m 'C/$MFT' -o usn.csv
juntei parse-ntfs usn-journal -d evidence/ -o usn-jsonl -t jsonl
juntei parse-ntfs usn-journal -f unallocated.bin --carve -o carved-usn.csv
Campos de salida CSV¶
| Campo | Interpretación |
|---|---|
Name |
Nombre del archivo o directorio almacenado en este registro USN. No es una ruta completa. |
Extension |
Extensión de conveniencia extraída de Name; no la utilice como un tipo de contenido fiable. |
EntryNumber, SequenceNumber |
Referencia NTFS del archivo. Utilice ambos para identificar la generación del registro. |
ParentEntryNumber, ParentSequenceNumber |
Referencia NTFS del directorio principal en el momento del cambio. |
ParentPath |
Ruta del directorio principal reconstruida por Juntei teniendo en cuenta el tiempo. Los marcadores de desconocido indican que no se pudo resolver la ascendencia. |
UpdateSequenceNumber |
Valor de orden USN. Útil para una ordenación estable y para pivotar con Amcache/MFT. |
UpdateTimestamp |
Marca de tiempo almacenada en los registros V2/V3. Valide las marcas de tiempo en contexto recuperado por carving igual que las de cualquier registro. |
UpdateReasons |
Uno o varios indicadores de cambio con nombre, unidos por |. Interprete las combinaciones y CLOSE en conjunto. |
FileAttributes |
Atributos NTFS registrados en el momento del cambio; los bits desconocidos permanecen en hexadecimal. |
OffsetToData |
Desplazamiento en bytes dentro de la entrada. Esencial para la validación y para los registros recuperados por carving. |
SourceFile |
Diario o imagen de entrada; distingue hosts y volúmenes. |
SourceInfo |
Indicadores de origen que describen cómo entró el cambio en el diario. Normalmente aportan contexto, no atribución. |
SecurityID |
Índice del identificador de seguridad NTFS del registro, no un SID de usuario. |
Version |
Versión del registro USN. Juntei escribe V2/V3 en CSV; JSON conserva las extensiones de seguimiento de rangos de V4. |
JSON/JSONL representa correctamente las referencias de 128 bits de V3 y conserva los registros de seguimiento de rangos de V4 y sus extensiones. Utilícelo cuando importen los campos de bajo nivel específicos de cada versión.
Estrategia de investigación¶
- Filtre por hora, nombre, extensión, ruta del directorio principal o referencia de archivo.
- Ordene por
UpdateSequenceNumberademás de por hora para ver el orden exacto del diario. - Empareje
RENAME_OLD_NAMEconRENAME_NEW_NAMEpara los movimientos y cambios de nombre. - Utilice
$MFTpara validar el estado de los registros, las rutas, los tamaños y las marcas de tiempo. - Correlacione la atribución de procesos con los registros de eventos, EDR, Prefetch, servicios/tareas o Defender.