Skip to content

Cómo adquirir el $LogFile de NTFS (en vivo y en frío)

Copiar el $LogFile bloqueado de NTFS y su $MFT: comandos de KAPE, Velociraptor, FTK Imager, RawCopy, icat y ntfscat, y comprobaciones de que la copia sirve.

Publicado el 7 min de lectura

TL;DR. $LogFile es la entrada 2 de la MFT, en la raíz de cada volumen NTFS, y está bloqueado mientras el volumen está montado. En un equipo en vivo, usa KAPE (targets $LogFile + $MFT), Velociraptor (Windows.Triage.Targets con sus targets LogFile + MFT; Windows.KapeFiles.Targets en versiones antiguas), FTK Imager o RawCopy (/FileNamePath:C:2). Desde una imagen, usa icat image.dd 2 o ntfscat -i 2. Adquiérelo lo primero —es circular y tu propia actividad lo sobrescribe— y adquiere el $MFT del mismo volumen a la vez. Después comprueba que la copia empieza por RSTR, que tiene el tamaño que declara el área de reinicio y que no está llena de ceros.

El $LogFile es el artefacto más perecedero de un volumen NTFS. En una unidad de sistema con mucha actividad puede dar la vuelta en bastante menos de una hora. Cada comando que ejecutas en el equipo escribe metadatos, y cada escritura de metadatos pasa por el diario. El orden de adquisición y el destino importan aquí más que para casi cualquier otro archivo.

Qué hay que adquirir

ArchivoDóndeEntrada de la MFTPor qué
$LogFileRaíz de cada volumen NTFS (C:\$LogFile)2El propio diario de transacciones
$MFTRaíz del mismo volumen0Nombres y carpetas padre de cada entrada de la MFT a la que hace referencia el diario
$UsnJrnl:$J$Extend\$UsnJrnl, flujo $JvariableHistorial de cambios fechado para la correlación (opcional pero recomendado)

El diario suele rondar los 64 MiB en los volúmenes Windows actuales (el tamaño se puede configurar con chkdsk /L, así que compruébalo en lugar de suponerlo). Adquiere todos los volúmenes que importen, no solo C:. Los volúmenes extraíbles y de datos conservan el historial mucho más tiempo que la unidad de sistema.

Antes de empezar: protege el diario de ti mismo

  • Adquiérelo lo primero, antes del triaje que consume mucha memoria o escribe muchos archivos. dfir.ru midió que los registros antiguos se sobrescribían a los 16 minutos en una prueba con Windows 10 (How the $LogFile works?).
  • Escribe la salida en otro volumen (unidad USB, recurso de red). Escribir una colección en C: genera registros en el diario de C: por cada archivo que creas.
  • No ejecutes chkdsk en el volumen de la evidencia. Puede reiniciar o redimensionar el diario. Si una página de reinicio lleva la firma CHKD, chkdsk ha tocado el diario.
  • Adquiere $LogFile y $MFT en la misma pasada, del mismo volumen, y conserva la estructura de carpetas (C/, D/) para poder emparejar cada diario con su propio $MFT.

Equipo Windows en vivo

KAPE

El proyecto KapeFiles incluye los targets $LogFile.tkape y $MFT.tkape (además de $J.tkape para el diario USN):

kape.exe --tsource C: --target $LogFile,$MFT,$J --tdest E:\case42\kape

KAPE lee los archivos bloqueados mediante acceso en bruto y conserva la ruta de origen en el árbol de salida. Repite --tsource para cada volumen. Si usas un target compuesto, ábrelo y confirma que incluye $LogFile en lugar de fiarte del nombre.

Velociraptor

Windows.Triage.Targets, del proyecto Velociraptor Triage, adquiere los mismos archivos a escala. Marca sus targets LogFile y MFT en una recolección del servidor o en un recolector offline (Server Artifacts → Build offline collector), y revisa MaxFileSize para que no se omita un $MFT grande.

Las versiones antiguas de Velociraptor incluyen en su lugar el antiguo Windows.KapeFiles.Targets, con los targets $LogFile y $MFT. Puede usar los accessors ntfs, lazy_ntfs y mft; lazy_ntfs es más rápido pero depende de los datos del índice $I30, que no siempre están completos para los archivos de metadatos, así que el artefacto ofrece la opción DontBeLazy para volver al analizador NTFS completo (adquisición masiva de archivos en Velociraptor). Para los archivos de metadatos de NTFS, usa preferiblemente el accessor completo.

FTK Imager

File → Add Evidence Item → Logical Drive, selecciona el volumen, despliega [root], clic derecho sobre $LogFile y $MFT → Export Files. Exporta a una unidad externa. FTK Imager lee el volumen directamente, así que el bloqueo no le afecta.

RawCopy

RawCopy, de Joakim Schicht, acepta un volumen más un número de registro de la MFT en lugar de una ruta. Su readme muestra C:0 para el $MFT; $LogFile es el registro 2:

RawCopy.exe /FileNamePath:C:2 /OutputPath:E:\case42 /OutputName:LogFile_C.bin
RawCopy.exe /FileNamePath:C:0 /OutputPath:E:\case42 /OutputName:MFT_C.bin

Ejecútalo como administrador. Vuelve a llamar a los archivos de salida $LogFile / $MFT o mantén un esquema de nombres claro; los analizadores que emparejan archivos por nombre (incluido el analizador de $LogFile en el navegador) buscan el $LogFile y el $MFT en la misma carpeta.

Equipo apagado o imagen de disco

The Sleuth Kit

icat extrae un archivo por su dirección de metadatos; en NTFS, la dirección es la entrada de la MFT. -o es el desplazamiento en sectores de la partición dentro de la imagen (página de manual de icat):

mmls image.dd                         # find the NTFS partition start sector
icat -o 2048 image.dd 2 > '$LogFile'
icat -o 2048 image.dd 0 > '$MFT'

ntfs-3g en Linux

ntfscat, de ntfs-3g, acepta un número de inodo con -i (página de manual de ntfscat). Conecta la imagen en solo lectura (por ejemplo con un dispositivo loop y --read-only) y después:

ntfscat -i 2 /dev/loop0p2 > '$LogFile'
ntfscat -i 0 /dev/loop0p2 > '$MFT'

No montes nunca el volumen de la evidencia en lectura-escritura «solo para copiar un archivo». Montarlo escribe en el diario.

Instantáneas de volumen (VSS)

Las instantáneas contienen copias más antiguas de los archivos de metadatos de NTFS, es decir, ventanas más antiguas del $LogFile. Extráelas de cada instantánea con las mismas herramientas de acceso en bruto (o adquiere las instantáneas con tu flujo de creación de imágenes) y analiza cada copia por separado. Etiqueta cada copia con la hora de creación de la instantánea.

Comprueba la copia antes de irte

Una copia en bruto fallida a menudo parece correcta: el archivo existe y tiene el tamaño esperado. Cuatro comprobaciones rápidas:

ComprobaciónCómoMala señal
FirmaLos 4 primeros bytesNo es RSTR (ni CHKD)
Sin relleno de cerosMira los primeros 4 KiBTodo ceros: falló el bloqueo o la lectura dispersa
TamañoCompáralo con el tamaño del diario en el área de reinicioMás corto: copia truncada
Emparejamiento$MFT del mismo volumen y del mismo momentoHoras de adquisición distintas
xxd -l 16 '$LogFile'      # expect 52 53 54 52  -> "RSTR"
sha256sum '$LogFile' '$MFT' > hashes.txt

El analizador de $LogFile hace las mismas comprobaciones al cargar los archivos: un archivo que empieza con ceros se indica con «probablemente el archivo estaba bloqueado o escribiéndose al copiarlo», una copia más corta que su tamaño declarado se marca como truncada, se avisa de una página de reinicio CHKD, y un $MFT sin $LogFile en la misma carpeta se explica en lugar de ignorarse en silencio.

Notas sobre la cadena de custodia

  • Anota el nombre y la versión de la herramienta, la línea de comandos, el volumen de origen, el destino y la hora de cada copia.
  • Calcula el hash en el equipo de adquisición y otra vez en el equipo de análisis.
  • Si adquiriste en un sistema en vivo, dilo en el informe: un $LogFile en vivo es un blanco móvil, y la página más reciente puede existir solo en el área de páginas de cola o rápidas (ver $LogFile 1.1 frente a 2.0: qué cambió en Windows 8).

Siguiente paso

Abre los archivos en el analizador de $LogFile en el navegador —no se sube nada— y sigue cómo analizar un $LogFile de NTFS paso a paso. Para los demás artefactos de la misma colección, el analizador del diario USN, el analizador de Prefetch y las herramientas para imágenes de disco hermanos cubren los siguientes pasos.

Preguntas frecuentes

¿Puedo copiar el $LogFile con el Explorador o con el comando copy?

No. $LogFile es un archivo de metadatos de NTFS que el sistema de archivos mantiene abierto mientras el volumen está montado, y está oculto para las API de archivos normales. Léelo mediante acceso NTFS en bruto (KAPE, Velociraptor, FTK Imager, RawCopy) o desde una imagen con icat o ntfscat.

¿Por qué adquirir el $MFT junto con el $LogFile?

Los registros del diario se refieren a los archivos por su número de entrada de la MFT. Los nombres solo aparecen en el diario cuando un archivo se crea, se renombra o se borra, así que sin el $MFT del mismo volumen muchas rutas quedan incompletas.

Artículos relacionados

Artículos relacionados