O que Análise do Registro do Windows para Artefatos faz?
Quando Usar
- Ao investigar atividades de usuário em um sistema Windows durante um incidente
- Para identificar mecanismos de autorun/persistência usados por malware
- Ao rastrear software instalado, dispositivos USB e conexões de rede
- Durante investigações de ameaças internas para reconstruir ações do usuário
- Para correlacionar timestamps do registro com outros artefatos forenses
Pré-requisitos
- Imagem forense ou arquivos de hive extraídos
- RegRipper, Registry Explorer (Eric Zimmerman) ou python-registry
- Acesso aos locais dos hives do registro (SAM, SYSTEM, SOFTWARE, NTUSER.DAT, UsrClass.dat)
- Compreensão da estrutura do Registro do Windows (hives, chaves, valores)
- SIFT Workstation ou ambiente de análise forense
Fluxo de Trabalho
Etapa 1: Extrair Hives do Registro da Imagem Forense
# Montar a imagem forense como somente leitura
mkdir /mnt/evidence
mount -o ro,loop,offset=$((2048*512)) /cases/case-2024-001/images/evidence.dd /mnt/evidence
# Copiar hives do sistema
cp /mnt/evidence/Windows/System32/config/SAM /cases/case-2024-001/registry/
cp /mnt/evidence/Windows/System32/config/SYSTEM /cases/case-2024-001/registry/
cp /mnt/evidence/Windows/System32/config/SOFTWARE /cases/case-2024-001/registry/
cp /mnt/evidence/Windows/System32/config/SECURITY /cases/case-2024-001/registry/
cp /mnt/evidence/Windows/System32/config/DEFAULT /cases/case-2024-001/registry/
# Copiar hives específicos do usuário
cp /mnt/evidence/Users/*/NTUSER.DAT /cases/case-2024-001/registry/
cp /mnt/evidence/Users/*/AppData/Local/Microsoft/Windows/UsrClass.dat /cases/case-2024-001/registry/
# Copiar logs de transação (para recuperação de hives sujos)
cp /mnt/evidence/Windows/System32/config/*.LOG* /cases/case-2024-001/registry/logs/
# Hash de todos os hives extraídos
sha256sum /cases/case-2024-001/registry/* > /cases/case-2024-001/registry/hive_hashes.txt
Etapa 2: Analisar com RegRipper para Extração Automatizada de Artefatos
# Instalar RegRipper
git clone https://github.com/keydet89/RegRipper3.0.git /opt/regripper
# Executar RegRipper contra NTUSER.DAT (perfil do usuário)
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
-f ntuser > /cases/case-2024-001/analysis/ntuser_report.txt
# Executar contra o hive SYSTEM
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
-f system > /cases/case-2024-001/analysis/system_report.txt
# Executar contra o hive SOFTWARE
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SOFTWARE \
-f software > /cases/case-2024-001/analysis/software_report.txt
# Executar contra o hive SAM (contas de usuário)
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SAM \
-f sam > /cases/case-2024-001/analysis/sam_report.txt
# Executar plugins específicos
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
-p userassist > /cases/case-2024-001/analysis/userassist.txt
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
-p usbstor > /cases/case-2024-001/analysis/usbstor.txt
Etapa 3: Extrair Entradas de Persistência e Autorun
# Usando python-registry para extração direcionada
pip install python-registry
python3 << 'PYEOF'
from Registry import Registry
# Abrir hive SOFTWARE
reg = Registry.Registry("/cases/case-2024-001/registry/SOFTWARE")
# Verificar chaves Run (inicialização automática)
autorun_paths = [
"Microsoft\\Windows\\CurrentVersion\\Run",
"Microsoft\\Windows\\CurrentVersion\\RunOnce",
"Microsoft\\Windows\\CurrentVersion\\RunServices",
"Microsoft\\Windows\\CurrentVersion\\Policies\\Explorer\\Run",
"Wow6432Node\\Microsoft\\Windows\\CurrentVersion\\Run"
]
for path in autorun_paths:
try:
key = reg.open(path)
print(f"\n=== {path} (Última Modificação: {key.timestamp()}) ===")
for value in key.values():
print(f" {value.name()}: {value.value()}")
except Registry.RegistryKeyNotFoundException:
pass
# Verificar serviços instalados
key = reg.open("Microsoft\\Windows NT\\CurrentVersion\\Svchost")
print(f"\n=== Grupos Svchost ===")
for value in key.values():
print(f" {value.name()}: {value.value()}")
PYEOF
# Verificar NTUSER.DAT para autorun específico do usuário
python3 << 'PYEOF'
from Registry import Registry
reg = Registry.Registry("/cases/case-2024-001/registry/NTUSER.DAT")
user_autorun = [
"Software\\Microsoft\\Windows\\CurrentVersion\\Run",
"Software\\Microsoft\\Windows\\CurrentVersion\\RunOnce",
"Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\StartupApproved\\Run"
]
for path in user_autorun:
try:
key = reg.open(path)
print(f"\n=== {path} (Última Modificação: {key.timestamp()}) ===")
for value in key.values():
print(f" {value.name()}: {value.value()}")
except Registry.RegistryKeyNotFoundException:
pass
PYEOF
Etapa 4: Analisar Artefatos de Atividade do Usuário
# Extrair dados do UserAssist (histórico de execução de programas com codificação ROT13)
python3 << 'PYEOF'
from Registry import Registry
import codecs, struct, datetime
reg = Registry.Registry("/cases/case-2024-001/registry/NTUSER.DAT")
ua_path = "Software\\Microsoft\\Windows\\CurrentVersion\\Explorer\\UserAssist"
key = reg.open(ua_path)
for guid_key in key.subkeys():
count_key = guid_key.subkey("Count")
print(f"\n=== {guid_key.name()} ===")
for value in count_key.values():
decoded_name = codecs.decode(value.name(), 'rot_13')
data = value.value()
if len(data) >= 16:
run_count = struct.unpack('<I', data[4:8])[0]
focus_count = struct.unpack('<I', data[8:12])[0]
timestamp = struct.unpack('<Q', data[60:68])[0] if len(data) >= 68 else 0
if timestamp > 0:
ts = datetime.datetime(1601,1,1) + datetime.timedelta(microseconds=timestamp//10)
print(f" {decoded_name}: Execuções={run_count}, Foco={focus_count}, Último={ts}")
else:
print(f" {decoded_name}: Execuções={run_count}, Foco={focus_count}")
PYEOF
# Extrair Documentos Recentes (listas MRU)
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
-p recentdocs > /cases/case-2024-001/analysis/recentdocs.txt
# Extrair URLs digitadas (navegador)
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
-p typedurls > /cases/case-2024-001/analysis/typedurls.txt
# Extrair caminhos digitados no Explorer
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/NTUSER.DAT \
-p typedpaths > /cases/case-2024-001/analysis/typedpaths.txt
Etapa 5: Extrair Informações do Sistema e Rede
# Nome do computador e versão do SO do hive SYSTEM
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
-p compname > /cases/case-2024-001/analysis/system_info.txt
# Interfaces de rede e configuração
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
-p nic2 >> /cases/case-2024-001/analysis/system_info.txt
# Histórico de redes sem fio
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SOFTWARE \
-p networklist > /cases/case-2024-001/analysis/network_history.txt
# Configuração de fuso horário
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
-p timezone > /cases/case-2024-001/analysis/timezone.txt
# Horário de desligamento
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SYSTEM \
-p shutdown > /cases/case-2024-001/analysis/shutdown.txt
# Software instalado a partir das chaves Uninstall
perl /opt/regripper/rip.pl -r /cases/case-2024-001/registry/SOFTWARE \
-p uninstall > /cases/case-2024-001/analysis/installed_software.txt
Conceitos-Chave
| Conceito | Descrição |
|---|---|
| Hive do Registro | Arquivo binário que armazena uma seção do registro (SAM, SYSTEM, SOFTWARE, NTUSER.DAT) |
| MRU (Usados Recentemente) | Listas que rastreiam arquivos, comandos e termos de pesquisa acessados recentemente |
| UserAssist | Entradas de registro codificadas em ROT13 que rastreiam a execução de programas com timestamps |
| ShimCache | Cache de compatibilidade de aplicativos que registra programas executados |
| AmCache | Histórico detalhado de execução incluindo hashes SHA-1 de executáveis |
| BAM/DAM | Moderador de Atividade de Fundo/Área de Trabalho que rastreia execução de programas no Win10+ |
| Last Write Time | Timestamp em chaves do registro indicando quando foram modificadas pela última vez |
| Logs de transação | Arquivos de diário que permitem recuperar o estado do registro após desligamento inadequado |
Ferramentas e Sistemas
| Ferramenta | Propósito |
|---|---|
| RegRipper | Extração automatizada de artefatos do registro com arquitetura de plugins |
| Registry Explorer | Ferramenta GUI de Eric Zimmerman para análise interativa do registro |
| python-registry | Biblioteca Python para análise programática de hives do registro |
| RECmd | Ferramenta de linha de comando de Eric Zimmerman para análise do registro |
| yarp | Yet Another Registry Parser para análise baseada em Python |
| AppCompatCacheParser | Analisador dedicado de ShimCache/AppCompatCache |
| AmcacheParser | Ferramenta dedicada de análise do AmCache.hve |
| ShellBags Explorer | Ferramenta especializada para análise de artefatos ShellBag |
Cenários Comuns
Cenário 1: Investigação de Persistência de Malware Extrair hives SOFTWARE e NTUSER.DAT, verificar todas as chaves Run/RunOnce em busca de entradas não autorizadas, examinar serviços por adições suspeitas, verificar chaves de registro de tarefas agendadas, correlacionar timestamps de autorun com a linha do tempo de execução do malware.
Cenário 2: Reconstrução de Atividade do Usuário Analisar UserAssist para histórico de execução de programas, examinar RecentDocs para arquivos acessados, verificar TypedPaths para navegação no Explorer, extrair ShellBags para padrões de acesso a pastas, construir uma linha do tempo da atividade do usuário ao redor da janela do incidente.
Cenário 3: Detecção de Software Não Autorizado Analisar chaves Uninstall para todos os aplicativos instalados, comparar com a linha de base de software aprovado, verificar BAM/DAM para programas executados recentemente que não estão na lista aprovada, examinar AppCompatCache para evidências de execução mesmo após a desinstalação.
Cenário 4: Investigação de Exfiltração de Dados via USB Extrair entradas USBSTOR do hive SYSTEM para dispositivos conectados, correlacionar números de série dos dispositivos com MountedDevices, verificar MountPoints2 do NTUSER.DAT para acesso do usuário a mídias removíveis, examinar logs SetupAPI para timestamps de primeira conexão.
Formato de Saída
Resumo da Análise do Registro:
Sistema: DESKTOP-ABC123 (Windows 10 Pro Build 19041)
Fuso Horário: Eastern Standard Time (UTC-5)
Último Desligamento: 2024-01-18 23:45:12 UTC
Entradas de Autorun:
HKLM Run: 5 entradas (1 suspeita: "updater.exe" -> C:\ProgramData\svc\updater.exe)
HKCU Run: 3 entradas (todas legítimas)
Serviços: 142 entradas (2 desconhecidas: "WinDefSvc", "SysMonAgent")
Atividade do Usuário (NTUSER.DAT):
Programas UserAssist: 234 entradas
Documentos Recentes: 89 entradas
URLs Digitadas: 45 entradas
Caminhos Digitados: 12 entradas
Dispositivos USB Conectados:
- Kingston DataTraveler (Serial: 0019E06B4521) - Primeira: 2024-01-10, Última: 2024-01-18
- WD My Passport (Serial: 575834314131) - Primeira: 2024-01-15, Última: 2024-01-15
Software Instalado: 127 aplicativos
Achados Suspeitos: 3 itens sinalizados para revisão