TL;DR. No puedes copy C:\Windows\System32\config\SYSTEM mientras Windows está corriendo. El archivo está bloqueado. Usa FTK Imager, KAPE, reg save, un snapshot VSS o Velociraptor en un host vivo. Léelo directamente desde un disco offline montado para trabajo de máquina muerta. Cuando copies el archivo en bruto, coge siempre SYSTEM.LOG1 y SYSTEM.LOG2 junto a él. Sin ellos estás leyendo datos obsoletos. reg save no los necesita.
El error de adquisición más común que veo en la evidencia entrante es el analista que copió SYSTEM y se saltó los registros de transacciones. El segundo más común es el analista que probó xcopy en un host vivo, se llevó "The process cannot access the file because it is being used by another process" y se puso a buscar una copia recogida por el EDR de hace tres días. Ninguno tiene que pasar. Elige un método, úsalo correctamente y sigue adelante.
Por qué no puedes simplemente copiarlo
El kernel mantiene abierto el hive SYSTEM con acceso exclusivo mientras Windows está corriendo. Un copy normal devuelve el error de acceso denegado. Incluso si pasas el bloqueo y lees los bytes, el SO en ejecución mantiene escrituras de registro recientes en memoria hasta el siguiente apagado limpio, lo que significa que las entradas más útiles del ShimCache no están en el archivo que acabas de coger. El modelo de almacenamiento y volcado merece la pena leerlo antes de decidir qué método usar.
Tu objetivo es uno de:
- Saltarte el bloqueo limpiamente en el host en ejecución (NTFS crudo, VSS o copia forense).
- Leer el archivo directamente desde una imagen offline montada o una VM en pausa.
- Recuperar la copia en memoria de un volcado de RAM. La única forma de obtener entradas de la sesión activa.
Método 1: máquina muerta o disco offline montado
El camino más simple. Apaga o monta en solo lectura y copia:
<DriveLetter>:\Windows\System32\config\SYSTEM
<DriveLetter>:\Windows\System32\config\SYSTEM.LOG1
<DriveLetter>:\Windows\System32\config\SYSTEM.LOG2
Los tres archivos. Un parser robusto reproduce .LOG1 y .LOG2 antes de leer el hive principal, así no pierdes escrituras sin fusionar. Sáltatelos y estás leyendo una vista obsoleta.
Método 2: sistema vivo, copia de grado forense
Varias herramientas esquivan el bloqueo, cada una a su manera: FTK Imager y KAPE leen el archivo a nivel de volumen, reg save pasa por la API del registro, y esentutl /vss o un snapshot VSS leen desde una shadow copy:
- FTK Imager. GUI, gratis. "Obtain Protected Files" → "Custom" → selecciona
SYSTEM,SYSTEM.LOG1,SYSTEM.LOG2. Salida a un disco externo. - KAPE. Línea de comandos, scriptable. El target
RegistryHivessaca todos los hives relevantes más los logs:kape.exe --tsource C: --target RegistryHives --tdest C:\out reg save. Integrado en Windows, necesita un prompt elevado. Pide al kernel que escriba el hive cargado, así que el resultado es limpio y consistente y no necesita logs de transacciones. Si quieres el archivo en bruto,esentutl /y /vsslo copia desde una shadow copy temporal (ejecútalo otra vez paraSYSTEM.LOG1ySYSTEM.LOG2):
No usesreg save HKLM\SYSTEM C:\out\SYSTEM.hiv /y esentutl /y C:\Windows\System32\config\SYSTEM /vss /d C:\out\SYSTEMrobocopy /Ben el sistema vivo. El modo backup se salta las ACL de archivo, no el bloqueo exclusivo del kernel sobre un hive cargado, así que la copia falla con una violación de uso compartido. Resérvalo para una imagen montada o una shadow copy, p. ej.robocopy E:\Windows\System32\config C:\out SYSTEM SYSTEM.LOG1 SYSTEM.LOG2 /Bcon la imagen montada comoE:.- Snapshot VSS. Una shadow copy puntual de la que puedes leer. Útil cuando necesitas una vista consistente y no puedes tumbar el sistema.
vssadmin create shadowsolo funciona en Windows Server; en un cliente,esentutl /y ... /vss(arriba) la crea y la elimina por ti, o créala en un PowerShell elevado conInvoke-CimMethod -ClassName Win32_ShadowCopy -MethodName Create -Arguments @{Volume='C:\'}.
Los cuatro métodos producen una copia utilizable. FTK Imager y KAPE son lo que los revisores esperan ver referenciado en la sección de metodología de un informe. reg save sirve en un apuro sin instalar nada; indica en tu informe que escribe el contenido actual del hive y no una copia byte a byte del archivo, así que las celdas borradas y el slack no se conservan.
Método 3: imagen de memoria
El hive en disco solo contiene entradas persistidas en el último apagado limpio. En un host que no se ha reiniciado limpiamente desde el incidente, las entradas más recientes están en memoria y en ningún otro sitio.
Captura la memoria con WinPmem, Magnet RAM Capture o AVML. Luego extrae el hive SYSTEM o saca el ShimCache directamente con Volatility 3:
# Extraer el hive de registro
vol -f memory.raw windows.registry.hivelist
vol -f memory.raw windows.registry.hivedump --offset <addr>
# O saltarse el hive y leer el ShimCache directamente desde memoria
vol -f memory.raw windows.shimcachemem
Extraer el ShimCache de un volcado de memoria lo cubre en profundidad, incluido el camino de recolección en vivo con Velociraptor.
Método 4: triage en vivo a escala
Velociraptor lee el hive bloqueado mediante acceso NTFS directo y lo devuelve para análisis offline. Para recolección en toda la flota, recolecta Windows.Triage.Targets con el target RegistryHivesSystem (servidores antiguos: Windows.KapeFiles.Targets con RegistryHives). Trae el hive SYSTEM junto con sus logs de transacciones; descarga el ZIP de la colección y analízalo offline.
Para triage de registro más amplio más allá del ShimCache, mira el registry parser.
No te saltes los registros de transacciones
Las escrituras pendientes viven en SYSTEM.LOG1 y SYSTEM.LOG2 hasta el siguiente checkpoint. El delta puede incluir las entradas que más te importan. El AppCompatCacheParser de Eric Zimmerman reproduce los logs automáticamente, pero solo si están junto al hive. El Mandiant Shim Cache Parser y esta herramienta no reproducen nada: leen el archivo principal del hive tal cual. Con ellos, reproduce antes los logs con rla.exe (Registry Log Applier) de Eric Zimmerman o con Registry Explorer, y parsea el hive limpio.
Si recolectaste un hive hace meses sin los logs y necesitas saber qué falta: la respuesta es "lo más interesante". Re-adquiere si es posible.
Luego parsea
Suelta el hive SYSTEM en el Shimcache Parser. Acepta ese único archivo; si el hive está sucio, reproduce antes sus .LOG1 y .LOG2 con rla.exe o Registry Explorer. Corre por completo en tu navegador, sin paso de subida, y maneja todas las versiones de Windows de XP a Windows 11. Para los detalles de formato, mira la referencia del formato binario Windows 10/11.
Lectura adicional
- Microsoft Learn: Registry hives. referencia oficial para archivos de hive y registros de transacciones.
- KapeFiles de Eric Zimmerman. Targets y Modules para adquisición sistemática.
- Velociraptor
Windows.Registry.AppCompatCache. recolección en memoria en vivo. - Volatility 3 documentation. extracción de hive desde el lado de la memoria.