TL;DR. Não pode dar copy a C:\Windows\System32\config\SYSTEM enquanto o Windows está a correr. O ficheiro está bloqueado. Use o FTK Imager, KAPE, reg save, uma snapshot VSS, ou o Velociraptor num host vivo. Em trabalho de dead-box, leia-o diretamente de um disco offline montado. Quando copiar o ficheiro em bruto, apanhe sempre SYSTEM.LOG1 e SYSTEM.LOG2 juntamente com ele. Sem eles está a ler dados desatualizados. O reg save não precisa deles.
O erro de aquisição mais comum que vejo em prova recebida é o analista que copiou SYSTEM e ignorou os logs de transação. O segundo mais comum é o analista que tentou xcopy num host vivo, recebeu "The process cannot access the file because it is being used by another process" e foi à procura de uma cópia recolhida pelo EDR com três dias. Nenhum precisa de acontecer. Escolha um método, use-o corretamente e siga em frente.
Porque não pode simplesmente copiá-lo
O kernel mantém a hive SYSTEM aberta com acesso exclusivo sempre que o Windows está a correr. Um copy simples devolve o erro de acesso negado. Mesmo que contorne o lock e leia os bytes, o SO em execução mantém escritas recentes do registo em memória até ao próximo clean shutdown, o que significa que as entradas da ShimCache mais úteis não estão no ficheiro que acabou de apanhar. O modelo de armazenamento e flush vale a leitura antes de decidir que método usar.
O seu objetivo é um destes:
- Contornar o lock de forma limpa no host em execução (NTFS bruto, VSS ou cópia forense).
- Ler o ficheiro diretamente a partir de uma imagem de disco offline montada ou de uma VM pausada.
- Recuperar a cópia em memória de um dump de RAM. É a única forma de obter entradas da sessão ativa.
Método 1: dead-box ou disco offline montado
O caminho mais simples. Desligue ou monte só de leitura e copie:
<LetraDeUnidade>:\Windows\System32\config\SYSTEM
<LetraDeUnidade>:\Windows\System32\config\SYSTEM.LOG1
<LetraDeUnidade>:\Windows\System32\config\SYSTEM.LOG2
Os três ficheiros. Um parser robusto reproduz .LOG1 e .LOG2 antes de ler a hive principal, para não perder escritas ainda não fundidas. Salte-os e estará a ler uma vista desatualizada.
Método 2: sistema vivo, cópia de grau forense
Várias ferramentas contornam o lock, cada uma à sua maneira: o FTK Imager e o KAPE leem o ficheiro ao nível do volume, o reg save passa pela API do registo, e o esentutl /vss ou uma snapshot VSS leem a partir de uma shadow copy:
- FTK Imager. GUI, gratuito. "Obtain Protected Files" → "Custom" → selecione
SYSTEM,SYSTEM.LOG1,SYSTEM.LOG2. Saída para uma drive externa. - KAPE. Linha de comandos, scriptable. O target
RegistryHivesextrai todas as hives relevantes mais os logs:kape.exe --tsource C: --target RegistryHives --tdest C:\out reg save. Incluído no Windows, precisa de um prompt elevado. Pede ao kernel que escreva a hive carregada, pelo que o resultado é limpo e consistente e não precisa dos logs de transação. Se quiser antes o ficheiro em bruto, oesentutl /y /vsscopia-o a partir de uma shadow copy temporária (volte a executá-lo paraSYSTEM.LOG1eSYSTEM.LOG2):
Não usereg save HKLM\SYSTEM C:\out\SYSTEM.hiv /y esentutl /y C:\Windows\System32\config\SYSTEM /vss /d C:\out\SYSTEMrobocopy /Bno sistema vivo. O modo de backup contorna as ACL de ficheiro, não o lock exclusivo do kernel sobre uma hive carregada, pelo que a cópia falha com uma violação de partilha. Guarde-o para uma imagem montada ou uma shadow copy, p. ex.robocopy E:\Windows\System32\config C:\out SYSTEM SYSTEM.LOG1 SYSTEM.LOG2 /Bcom a imagem montada comoE:.- Snapshot VSS. Uma shadow copy point-in-time a partir da qual pode ler. Útil quando precisa de uma vista consistente e não pode desligar o sistema. O
vssadmin create shadowsó funciona no Windows Server; num cliente, oesentutl /y ... /vss(acima) cria-a e remove-a por si, ou crie-a num PowerShell elevado comInvoke-CimMethod -ClassName Win32_ShadowCopy -MethodName Create -Arguments @{Volume='C:\'}.
Os quatro métodos produzem uma cópia utilizável. O FTK Imager e o KAPE são o que os revisores esperam ver referenciado na secção de metodologia de um relatório. O reg save serve num aperto sem instalar nada; registe no relatório que escreve o conteúdo atual da hive e não uma cópia byte a byte do ficheiro, pelo que células apagadas e slack não são preservados.
Método 3: imagem de memória
A hive em disco contém apenas as entradas persistidas no último clean shutdown. Num host que não tenha sido limpamente reiniciado desde o incidente, as entradas mais recentes estão em memória e em mais lado nenhum.
Capture memória com WinPmem, Magnet RAM Capture ou AVML. Depois extraia a hive SYSTEM ou puxe a ShimCache diretamente com o Volatility 3:
# Extrair a hive de registo
vol -f memory.raw windows.registry.hivelist
vol -f memory.raw windows.registry.hivedump --offset <addr>
# Ou saltar a hive e ler a ShimCache diretamente da memória
vol -f memory.raw windows.shimcachemem
Extrair a ShimCache de um dump de memória cobre isto a fundo, incluindo o caminho de recolha viva via Velociraptor.
Método 4: triagem viva à escala
O Velociraptor lê a hive bloqueada via acesso NTFS direto e devolve-a para análise offline. Para recolha em todo o parque, recolha Windows.Triage.Targets com o target RegistryHivesSystem (servidores mais antigos: Windows.KapeFiles.Targets com RegistryHives). Traz a hive SYSTEM juntamente com os seus logs de transação; descarregue o ZIP da recolha e analise-o offline.
Para triagem de registo mais ampla além da ShimCache, veja o registry parser.
Não saltar os logs de transação
As escritas pendentes vivem em SYSTEM.LOG1 e SYSTEM.LOG2 até ao próximo checkpoint. O delta pode incluir precisamente as entradas que mais lhe interessam. O AppCompatCacheParser de Eric Zimmerman reproduz os logs automaticamente, mas apenas se estiverem junto à hive. O Shim Cache Parser da Mandiant e esta ferramenta não reproduzem nada: leem o ficheiro principal da hive tal como está. Para estes, reproduza primeiro os logs com o rla.exe (Registry Log Applier) de Eric Zimmerman ou com o Registry Explorer, e analise a hive limpa.
Se recolheu uma hive há meses sem os logs e quer saber o que falta: a resposta é "o pedaço mais interessante". Volte a adquirir se possível.
E depois analise
Largue a hive SYSTEM no Shimcache Parser. Aceita esse único ficheiro; se a hive estiver dirty, reproduza primeiro o .LOG1 e o .LOG2 com o rla.exe ou o Registry Explorer. Corre inteiramente no seu browser, sem passo de upload, e lida com todas as versões do Windows do XP ao Windows 11. Para os detalhes do formato, veja a referência do formato binário Windows 10/11.
Leitura adicional
- Microsoft Learn: Registry hives, referência oficial para ficheiros de hive e logs de transação.
- KapeFiles de Eric Zimmerman, Targets e Modules para aquisição sistemática.
- Velociraptor
Windows.Registry.AppCompatCache, recolha viva em memória. - Documentação do Volatility 3, extração de hive pelo lado da memória.