Skip to content

Diario de transacciones NTFS · DFIR

NTFS $LogFile Parser

Creaciones, renombrados, borrados y cambios de marcas de tiempo recientes reconstruidos desde el diario de transacciones de NTFS — con cada registro en bruto a un clic. Analizado en tu navegador con WebAssembly — no se sube nada.

  • $LogFile
  • $MFT
  • LSN
  • redo / undo
  • Rust → WASM

Suelta aquí el $LogFile (y el $MFT del mismo volumen)

Añade el $MFT para convertir las referencias MFT en rutas completas. Las carpetas y las colecciones ZIP de triaje (KAPE, Velociraptor) funcionan tal cual — cada $LogFile se empareja con el $MFT que tiene al lado.

Un $LogFile y un $MFT sintéticos de una intrusión ficticia — sin datos reales.

100 % en el cliente: los archivos se analizan con WebAssembly en tu navegador y nunca se suben.

Cómo obtener tus datos

Guía completa de adquisición

$LogFile es un metaarchivo NTFS bloqueado: ni el Explorador ni copy pueden leerlo. Un solo comando lo recoge junto con el $MFT que da nombre a sus archivos.

  1. 1. Recoge $LogFile + $MFT
  2. 2. Suelta aquí la carpeta o el ZIP
  3. 3. Todo se queda en tu navegador

KAPE, dos targetsRecomendado

Símbolo del sistema como administrador (cmd.exe; PowerShell expandiría $LogFile) · KAPE en el equipo o en un USB · E: = tu disco externo.

cmd · admin
kape.exe --tsource C: --target $LogFile,$MFT --tdest E:\triage

Genera E:\triage\C\$LogFile y E:\triage\C\$MFT. Suelta aquí toda la carpeta E:\triage. Para otro volumen, vuelve a ejecutarlo con --tsource D:.

Trampas habituales

  • Una copia normal falla o sale llena de ceros porque el archivo está bloqueado. Usa una herramienta de acceso raw de las anteriores; la herramienta avisa de las copias llenas de ceros.
  • El log es circular: en un disco de sistema con actividad puede sobrescribirse en menos de una hora. Recógelo primero y escribe en otro disco, no en C:.
  • Toma el $MFT del mismo volumen en la misma recolección, y nunca ejecutes chkdsk en el volumen de la evidencia (puede reiniciar el log).

¿Qué es el $LogFile de NTFS?

$LogFile es el diario de transacciones de NTFS (entrada MFT 2). Antes de cambiar sus propios metadatos — un registro FILE, un índice de carpeta, un mapa de bits —, NTFS escribe un registro que describe el cambio dos veces: una operación redo (cómo aplicarlo) y una operación undo (cómo deshacerlo). Tras un fallo, Windows rehace o deshace esos registros para mantener el volumen coherente.

Para quien investiga, esos bytes redo y undo son oro: contienen los nombres de archivo, las carpetas padre, las referencias MFT y las marcas de tiempo de cada cambio de metadatos, antes y después. Con ellos se reconstruyen creaciones, borrados, renombrados y reescrituras de marcas de tiempo, incluso si el diario USN estaba desactivado o se vació.

Dónde se almacena

  • \$LogFile en la raíz de cada volumen NTFS (C:\$LogFile, D:\$LogFile…). Es un archivo de metadatos oculto: el Explorador y la copia normal no pueden abrirlo — hace falta un lector NTFS en bruto.
  • Tamaño por defecto: 64 MiB en los Windows actuales (configurable con chkdsk /L). Es circular: los registros nuevos sobrescriben los más antiguos, así que suele cubrir de minutos a pocas horas de actividad en un sistema cargado.
  • Estructura: dos páginas de reinicio (RSTR), luego 2 páginas de cola (formato 1.1, Windows XP a 7, y Windows 8+ tras un apagado limpio) o 32 páginas rápidas (formato 2.0, Windows 8+ con el volumen montado), y después el área circular de páginas de registros (RCRD), cada una protegida por una matriz de secuencia de actualización.

Por qué importa en una investigación

  • Creaciones de archivos y carpetas (InitializeFileRecordSegment + AddIndexEntry), borrados (DeleteIndexEntry + DeallocateFileRecordSegment) y renombrados o movimientos, con la entrada MFT y el número de secuencia.
  • Timestomping: un UpdateResidentValue sobre $STANDARD_INFORMATION lleva la marca de tiempo antigua y la nueva — una fecha de creación reescrita a 2019 se ve como tal.
  • Contenido de archivos pequeños, a veces: los datos guardados dentro del registro FILE (residentes, hasta ~700 bytes) pueden aparecer en los datos redo/undo — a veces incluso de notas o scripts borrados un minuto después. En Windows recientes muchas modificaciones solo registran que hubo un cambio, así que trata el contenido recuperado como un extra, no como algo seguro.
  • Complementa $UsnJrnl:$J (historial más largo, pero solo motivos y nombres) y el $MFT (solo el estado actual): el $LogFile da los valores antes / después.

Limitaciones

  • Retención corta: el diario es circular, solo queda la actividad reciente. Recógelo pronto.
  • Los registros no llevan hora. Las horas mostradas salen de los valores $FILE_NAME / $STANDARD_INFORMATION de los datos; los eventos sin hora toman la del evento fechado más cercano y se marcan con ≈.
  • Los nombres solo se conocen si aparecen en el diario; sin el $MFT, algunas rutas empiezan por [MFT #n] o faltan.
  • El contenido no residente de los archivos nunca está en el $LogFile (solo metadatos). La agrupación por transacción, el complemento $UsnJrnl y el slack de $I30 aún no se usan.
  • El analizador está validado con diarios sintéticos construidos según el formato publicado (Linux ntfs3, libfsntfs) — verifica los hallazgos importantes con una segunda herramienta.

Cómo obtener los archivos

  • KAPE: los targets $LogFile y $MFT (o !SANS_Triage) los recogen en bruto de cada volumen. Velociraptor: Windows.Triage.Targets con sus targets LogFile y MFT (antes Windows.KapeFiles.Targets), o el accesor NTFS.
  • Desde una imagen de disco: FTK Imager (exportar desde [root]) o The Sleuth Kit: icat -f ntfs image.dd 2 > '$LogFile' e icat … 0 > '$MFT'.
  • Toma el $LogFile y el $MFT del mismo volumen a la vez, y conserva la estructura de carpetas (C/, D/…) para que cada diario se empareje con su $MFT.

Preguntas frecuentes

¿Se sube mi $LogFile a algún sitio?

No. El analizador está escrito en Rust compilado a WebAssembly y se ejecuta en un Web Worker de tu navegador. No hay ningún punto de subida; el $MFT se lee por bloques y solo se guardan los nombres de archivo y sus padres.

¿Por qué añadir el $MFT?

Los registros apuntan a entradas MFT, y el nombre de un archivo solo se registra cuando se crea, se renombra o se borra. El $MFT nombra el resto de entradas y todas las carpetas padre, así que las rutas quedan completas (\Windows\System32\… en lugar de [MFT #44]).

¿Cómo detecta el timestomping?

Cada actualización de $STANDARD_INFORMATION en el diario lleva el valor antiguo y el nuevo. Se marcan una fecha de creación reescrita, una marca de tiempo que retrocede, un valor en segundos exactos o una creación anterior a la de $FILE_NAME — indicios que hay que verificar, no pruebas.

¿Admite diarios de Windows 8, 10 y 11?

Sí: el formato 2.0 (32 páginas rápidas, usado con el volumen montado en Windows 8 y posteriores) y el 1.1 (Windows antiguos, o tras un apagado limpio). La página más reciente, a menudo solo presente en el área de cola / páginas rápidas de una captura en vivo, se usa si es más nueva que su copia circular.

¿En qué se diferencia de LogFileParser o NTFS Log Tracker?

Mismos datos de origen, sin instalación: funciona en el navegador, muestra cada registro en bruto junto a los eventos reconstruidos, resuelve rutas con el $MFT y exporta CSV / JSON. Esas herramientas son más maduras — úsalas para confirmar los hallazgos clave.