← Volver al blog

Volume Shadow Copy y $MFT: recuperar MFTs antiguas

· 4 min de lectura

Respuesta corta: cada snapshot de Volume Shadow Copy contiene una copia congelada de $MFT del momento en que se tomó el snapshot. Montar un snapshot antiguo y exportar su $MFT permite comparar el sistema de archivos de hoy con el de hace una semana, recuperar archivos eliminados entre snapshots y observar cómo cambian los metadatos en el tiempo.

Qué captura VSS

El servicio Volume Shadow Copy (VSS) toma snapshots puntuales de un volumen NTFS. Cada snapshot es un delta copy-on-write: cuando un bloque está a punto de ser modificado, el original se preserva primero en la shadow copy. El snapshot refleja por tanto el volumen exactamente como estaba en el momento de la creación, incluida la Master File Table.

En un endpoint Windows típico los snapshots se toman automáticamente — normalmente antes de un Windows Update, a veces por Restaurar sistema, a menudo por software de copia de seguridad de terceros. Una estación de trabajo puede tener fácilmente media docena de snapshots que se remontan semanas atrás.

Por qué importa para el forense

La $MFT viva es una observación. Un volumen con cinco snapshots te da seis observaciones: hoy más cinco históricas. Cada $MFT histórica registra el estado del volumen en ese momento, incluidos:

  • Archivos que existían entonces y desde entonces se han eliminado — recuperables íntegramente.
  • Archivos que existen ahora pero estaban ausentes entonces — demostrando cuándo se introdujeron.
  • Registros cuyas marcas de tiempo difieren de las de hoy, exponiendo renombrados, movimientos y timestomping ocurridos entre snapshots.

Los snapshots son especialmente útiles en casos de ransomware: si VSS no ha sido eliminado (algunos ransomware lo intentan — véase patrones de ransomware en la MFT), uno de los snapshots antiguos contendrá la $MFT precifrado y, a menudo, los datos originales de los archivos.

Listar los snapshots

Desde una PowerShell elevada:

vssadmin list shadows

Cada entrada muestra una ruta Shadow Copy Volume parecida a \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy7. Esa ruta es montable.

Desde una imagen forense, usa libvshadow. La herramienta vshadowinfo enumera los snapshots dentro de una imagen .dd o .E01; vshadowmount los expone como volúmenes virtuales separados.

vshadowinfo disk.dd
vshadowmount disk.dd /mnt/shadows

Tras el montaje obtienes vss1, vss2, ... como archivos separados, cada uno analizable como un volumen NTFS.

Extraer $MFT de un snapshot

Una vez montado un snapshot (sistema vivo o vía vshadowmount), $MFT reside en el mismo desplazamiento que en el volumen padre — la raíz del snapshot. Recupérala con las mismas herramientas que la viva:

  • fsutil (sistema vivo): fsutil file queryextents \\?\GLOBALROOT\Device\HarddiskVolumeShadowCopy7\$Mft
  • FTK Imager: añade el dispositivo de shadow copy como evidencia, navega hasta $MFT, exporta.
  • icat de The Sleuth Kit (imagen): icat -o <offset> vss1 0 > mft_vss1.bin (el inode 0 siempre es $MFT).
  • KAPE con el target MFT ejecutado contra cada snapshot montado.

Véase extraer $MFT para la mecánica sobre sistema vivo.

Comparar dos MFT

El análisis útil más barato es un diff. Analiza ambos archivos $MFT a CSV (una fila por registro), ordena por número de registro y haz diff:

mft_dump -o csv mft_today.bin   > today.csv
mft_dump -o csv mft_vss3.bin    > vss3.csv
diff <(sort today.csv) <(sort vss3.csv) > changes.diff

Lo que estás buscando:

  • Registros presentes en vss3 pero ausentes o marcados como eliminados en today — archivos eliminados en el intervalo.
  • Registros presentes en today pero ausentes en vss3 — archivos introducidos en el intervalo.
  • Registros cuyas marcas de tiempo $STANDARD_INFORMATION han retrocedido — posible timestomping (el snapshot es la verdad de terreno).
  • Registros cuya referencia parental $FILE_NAME ha cambiado — archivo movido a otro directorio.

El mismo diff al nivel de $UsnJrnl es aún más rico; combínalo con el diff MFT para una vista completa.

Límites

  • Los snapshots pueden eliminarse. vssadmin delete shadows /all es un barrido en una línea y figura en todos los playbooks de ransomware. Los snapshots ya desalojados se han perdido — VSS conserva un máximo fijo (64 por defecto).
  • Los snapshots no son puntos arbitrarios en el tiempo. Obtienes lo que se planificó o lo que disparó un instalador. Rara vez hay un snapshot exactamente en el momento de un incidente.
  • Los datos residentes en una $MFT más antigua no se preservan más allá del snapshot. Si el archivo existía en un snapshot y era pequeño, ese snapshot tiene los bytes residentes. No esperes recuperar los datos desde ningún snapshot tomado después de la eliminación.

Preguntas frecuentes

¿Puedo leer un snapshot VSS desde Linux?

Sí — libvshadow es multiplataforma. Monta la imagen con vshadowmount y cualquier herramienta compatible con NTFS lee los volúmenes de snapshot como archivos ordinarios.

¿Los snapshots incluyen archivos de sistema como $MFT?

Sí. Un snapshot VSS captura cada bloque del volumen en el momento del snapshot, incluidos los archivos de metadatos al inicio de $MFT.

¿Cuántos snapshots conserva Windows?

Hasta 64 por volumen por defecto. El ajuste es MaxShadowCopies en el registro y rara vez se personaliza. En servidores con software de copia de seguridad, el límite efectivo suele ser el que conserva el software de copia.

¿Los datos de shadow copy resisten al borrado?

Resisten a la eliminación de archivos individuales en el volumen vivo — para eso están. No resisten a vssadmin delete shadows, a un borrado completo del disco ni a daños físicos del medio.

Recursos externos