TL;DR. Non puoi fare copy di C:\Windows\System32\config\SYSTEM mentre Windows è in esecuzione. Il file è bloccato. Usa FTK Imager, KAPE, reg save, uno snapshot VSS o Velociraptor su un host vivo. Leggilo direttamente da un disco offline montato per lavoro su macchina spenta. Quando copi il file grezzo, prendi sempre SYSTEM.LOG1 e SYSTEM.LOG2 insieme a esso. Senza di essi stai leggendo dati obsoleti. reg save non ne ha bisogno.
L'errore di acquisizione di gran lunga più comune che vedo nelle prove in arrivo è l'analista che ha copiato SYSTEM e ha saltato i log di transazione. Il secondo più comune è l'analista che ha provato xcopy su un host vivo, si è preso "The process cannot access the file because it is being used by another process" e si è messo a cercare una copia raccolta dall'EDR di tre giorni fa. Nessuno dei due deve succedere. Scegli un metodo, usalo correttamente e vai avanti.
Perché non puoi semplicemente copiarlo
Il kernel tiene aperto l'hive SYSTEM con accesso esclusivo finché Windows è in esecuzione. Un copy normale restituisce l'errore access denied. Anche se aggiri il lock e leggi i byte, il sistema operativo in esecuzione tiene le scritture di registro recenti in memoria fino al prossimo shutdown pulito, il che significa che le voci dello ShimCache più utili non sono nel file che hai appena preso. Vale la pena leggere il modello di memorizzazione e flush prima di decidere quale metodo usare.
Il tuo obiettivo è uno di:
- Aggirare il lock pulitamente sull'host in esecuzione (NTFS grezzo, VSS o copia forense).
- Leggere il file direttamente da un'immagine disco offline montata o da una VM in pausa.
- Recuperare la copia in memoria da un dump RAM. L'unico modo per ottenere voci dalla sessione attiva.
Metodo 1: macchina spenta o disco offline montato
Il percorso più semplice. Spegni o monta in sola lettura e copia:
<DriveLetter>:\Windows\System32\config\SYSTEM
<DriveLetter>:\Windows\System32\config\SYSTEM.LOG1
<DriveLetter>:\Windows\System32\config\SYSTEM.LOG2
Tutti e tre i file. Un parser robusto rigioca .LOG1 e .LOG2 prima di leggere l'hive principale, così non perdi scritture non ancora fuse. Saltali e stai leggendo una vista obsoleta.
Metodo 2: sistema vivo, copia di livello forense
Diversi strumenti aggirano il lock, ognuno a modo suo: FTK Imager e KAPE leggono il file a livello di volume, reg save passa dall'API del registro, e esentutl /vss o uno snapshot VSS leggono da una shadow copy:
- FTK Imager. GUI, gratuito. "Obtain Protected Files" → "Custom" → seleziona
SYSTEM,SYSTEM.LOG1,SYSTEM.LOG2. Output su un drive esterno. - KAPE. Riga di comando, scriptabile. Il target
RegistryHivestira tutti gli hive rilevanti più i log:kape.exe --tsource C: --target RegistryHives --tdest C:\out reg save. Integrato in Windows, richiede un prompt con privilegi elevati. Chiede al kernel di scrivere l'hive caricato, quindi il risultato è pulito e coerente e non servono i log di transazione. Se invece vuoi il file grezzo,esentutl /y /vsslo copia da una shadow copy temporanea (rieseguilo perSYSTEM.LOG1eSYSTEM.LOG2):
Non usarereg save HKLM\SYSTEM C:\out\SYSTEM.hiv /y esentutl /y C:\Windows\System32\config\SYSTEM /vss /d C:\out\SYSTEMrobocopy /Bsul sistema vivo. La modalità backup scavalca le ACL dei file, non il lock esclusivo del kernel su un hive caricato, quindi la copia fallisce con una violazione di condivisione. Tienilo per un'immagine montata o una shadow copy, ad es.robocopy E:\Windows\System32\config C:\out SYSTEM SYSTEM.LOG1 SYSTEM.LOG2 /Bcon l'immagine montata comeE:.- Snapshot VSS. Una shadow copy puntuale da cui puoi leggere. Utile quando hai bisogno di una vista coerente e non puoi spegnere il sistema.
vssadmin create shadowfunziona solo su Windows Server; su un client,esentutl /y ... /vss(sopra) la crea e la rimuove per te, oppure creala in un PowerShell con privilegi elevati conInvoke-CimMethod -ClassName Win32_ShadowCopy -MethodName Create -Arguments @{Volume='C:\'}.
Tutti e quattro i metodi producono una copia utilizzabile. FTK Imager e KAPE sono ciò che i revisori si aspettano di vedere citato nella sezione metodologia di un report. reg save funziona in caso di necessità senza installare nulla; annota nel report che scrive il contenuto attuale dell'hive e non una copia byte per byte del file, quindi celle cancellate e slack non vengono preservati.
Metodo 3: immagine di memoria
L'hive su disco contiene solo le voci persistite all'ultimo shutdown pulito. Su un host che non è stato riavviato in modo pulito dall'incidente, le voci più recenti sono in memoria e da nessun'altra parte.
Cattura la memoria con WinPmem, Magnet RAM Capture o AVML. Poi estrai l'hive SYSTEM o tira lo ShimCache direttamente con Volatility 3:
# Estrarre l'hive di registro
vol -f memory.raw windows.registry.hivelist
vol -f memory.raw windows.registry.hivedump --offset <addr>
# Oppure saltare l'hive e leggere lo ShimCache direttamente dalla memoria
vol -f memory.raw windows.shimcachemem
Estrarre lo ShimCache da un dump di memoria lo tratta in profondità, incluso il percorso di raccolta live con Velociraptor.
Metodo 4: triage live su larga scala
Velociraptor legge l'hive bloccato tramite accesso NTFS diretto e lo restituisce per l'analisi offline. Per la raccolta su tutta la flotta, raccogli Windows.Triage.Targets con il target RegistryHivesSystem (server più vecchi: Windows.KapeFiles.Targets con RegistryHives). Recupera l'hive SYSTEM insieme ai suoi log di transazione; scarica lo ZIP della raccolta e analizzalo offline.
Per un triage di registro più ampio oltre lo ShimCache, vedi il registry parser.
Non saltare i log di transazione
Le scritture in sospeso vivono in SYSTEM.LOG1 e SYSTEM.LOG2 fino al prossimo checkpoint. Il delta può includere proprio le voci che ti interessano di più. L'AppCompatCacheParser di Eric Zimmerman rigioca i log automaticamente, ma solo se si trovano accanto all'hive. Il Mandiant Shim Cache Parser e questo strumento non rigiocano nulla: leggono il file principale dell'hive così com'è. Per questi, rigioca prima i log con rla.exe (Registry Log Applier) di Eric Zimmerman o con Registry Explorer, e parsa l'hive pulito.
Se hai raccolto un hive mesi fa senza i log e devi sapere cosa manca: la risposta è "la parte più interessante". Ri-acquisisci se possibile.
Poi parsalo
Trascina l'hive SYSTEM nello Shimcache Parser. Accetta quel solo file; se l'hive è dirty, rigioca prima i suoi .LOG1 e .LOG2 con rla.exe o Registry Explorer. Gira interamente nel tuo browser, senza step di upload, e gestisce ogni versione di Windows da XP a Windows 11. Per i dettagli del formato, vedi la referenza del formato binario Windows 10/11.
Letture aggiuntive
- Microsoft Learn: Registry hives. riferimento ufficiale per i file hive e i log di transazione.
- KapeFiles di Eric Zimmerman. Targets e Modules per un'acquisizione sistematica.
- Velociraptor
Windows.Registry.AppCompatCache. raccolta live in memoria. - Documentazione Volatility 3. estrazione hive lato memoria.