Como adquirir uma hive SYSTEM do Windows para análise offline da ShimCache

6 min de leitura

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:

  1. Contornar o lock de forma limpa no host em execução (NTFS bruto, VSS ou cópia forense).
  2. Ler o ficheiro diretamente a partir de uma imagem de disco offline montada ou de uma VM pausada.
  3. 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 RegistryHives extrai 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, o esentutl /y /vss copia-o a partir de uma shadow copy temporária (volte a executá-lo para 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
    
    Não use robocopy /B no 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 /B com a imagem montada como E:.
  • 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 shadow só funciona no Windows Server; num cliente, o esentutl /y ... /vss (acima) cria-a e remove-a por si, ou crie-a num PowerShell elevado com Invoke-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

Artigos relacionados