Come acquisire un hive SYSTEM di Windows per l'analisi offline dello ShimCache

5 min di lettura

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:

  1. Aggirare il lock pulitamente sull'host in esecuzione (NTFS grezzo, VSS o copia forense).
  2. Leggere il file direttamente da un'immagine disco offline montata o da una VM in pausa.
  3. 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 RegistryHives tira 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 /vss lo copia da una shadow copy temporanea (rieseguilo per SYSTEM.LOG1 e SYSTEM.LOG2):
    reg save HKLM\SYSTEM C:\out\SYSTEM.hiv /y
    esentutl /y C:\Windows\System32\config\SYSTEM /vss /d C:\out\SYSTEM
    
    Non usare robocopy /B sul 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 /B con l'immagine montata come E:.
  • 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 shadow funziona 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 con Invoke-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

Articoli correlati