Informações do sistema¶
O que é¶
Os quatro hives de máquina de um sistema informam o que um analista precisa saber antes de ler sua linha do tempo:
- seus nomes (NetBIOS, nome de host DNS, domínio DNS) e o domínio ou grupo de trabalho a que pertence;
- sua versão, build e revisão de atualização do Windows, e quando o Windows foi instalado ou atualizado pela última vez;
- seu fuso horário, que indica os horários locais mantidos pelo sistema;
- quando foi desligado corretamente pela última vez;
- sua arquitetura de processador e suas páginas de código;
- o último usuário que entrou no sistema e os perfis de todos os usuários que já entraram;
- seus SIDs: o do computador (as contas locais são esse SID mais um RID) e o do seu domínio;
- as versões do Windows a partir das quais foi atualizado.
parse-registry system-info grava um registro por sistema com todas essas informações.
Melhor conclusão: a configuração como estava quando os hives foram coletados (ou gravados pela última vez). Os horários das chaves indicam quando partes dela mudaram pela última vez.
Localização¶
C:\Windows\System32\config\SYSTEM (the control set Windows used last: Select\Current)
ControlSet00N\Control\ComputerName\ComputerName ComputerName
ControlSet00N\Services\Tcpip\Parameters Hostname, Domain
ControlSet00N\Control\TimeZoneInformation TimeZoneKeyName, Bias, ActiveTimeBias, …
ControlSet00N\Control\Windows ShutdownTime
ControlSet00N\Control\Session Manager\Environment PROCESSOR_ARCHITECTURE
ControlSet00N\Control\Nls\CodePage ACP, OEMCP
Setup\Source OS (Updated on M/D/YYYY HH:MM:SS) the version before each upgrade
C:\Windows\System32\config\SOFTWARE
Microsoft\Windows NT\CurrentVersion ProductName, EditionID, DisplayVersion,
CurrentBuild, UBR, InstallDate, InstallTime, …
Microsoft\Windows NT\CurrentVersion\ProfileList one key per profile (SID)
Microsoft\Windows\CurrentVersion\Authentication\LogonUI LastLoggedOnUser, …
C:\Windows\System32\config\SAM
SAM\Domains\Account V: the computer's SID at its end
C:\Windows\System32\config\SECURITY
Policy\PolAcDmN, PolAcDmS the computer's name and SID
Policy\PolPrDmN, PolPrDmS its domain (or workgroup) and the domain's SID
Policy\PolDnDDN, PolDnTrN, PolDnDmG the domain's and forest's DNS names, GUID
Policy\PolMachineAccountS the computer account's SID in the domain
Colete os quatro hives com seus logs de transação. Qualquer um deles, sozinho, fornece o que contém.
Cuidados para o analista¶
- Os horários do Registro estão em UTC; o fuso horário serve para todo o resto. Os horários das chaves, os FILETIMEs e a maioria
dos horários de eventos estão em UTC. Logs de texto, alguns logs de aplicativos e datas gravadas em nomes ou cadeias de caracteres
(como
Source OS (Updated on …)) podem estar em horário local.Biasé o número de minutos do horário padrão local até o UTC (UTC = local + Bias).UtcOffseteDaylightUtcOffsetfornecem os dois deslocamentos, eTimeZoneDescriptioninforma quando o horário de verão começa e termina. - O fuso horário pode mudar.
TimeZoneLastWrittenUTCé a última gravação da chave. O Windows também regrava a chave por conta própria quando atualizaActiveTimeBias(o deslocamento em vigor naquele momento), então um horário recente não prova que alguém mudou o fuso. Compare com os logs de eventos: Security 4616 (a hora do sistema foi alterada) e os eventosMicrosoft-Windows-Kernel-Generaldo log System. StandardStarteDaylightStartsãoTIME_FIELDSdo kernel, nãoSYSTEMTIMEs. O dia da semana é o último campo, não o terceiro (como no valorTZIdo fuso emSOFTWARE). Nos fusos dos EUA, os dois layouts são lidos da mesma forma, porque o dia da semana é domingo (0). O Juntei os decodifica comoTIME_FIELDS: um sistema público da Ilha de Páscoa (primeiro sábado às 22:00) mostra a diferença. Um mês igual a 0 significa ausência de horário de verão.- O Windows 11 diz "Windows 10".
ProductNamemantémWindows 10 …no Windows 11. As builds 22000 e posteriores são Windows 11, e o resumo indica isso.CurrentVersioné6.3no Windows 8.1, 10 e 11;VersionusaCurrentMajorVersionNumber(10) quando ele existe. InstallDatemuda com as atualizações de recursos. Uma atualização in-place para uma nova versão (de 1809 para 21H2, por exemplo) o redefine. A versão que cada atualização substituiu, com seu próprioInstallDate, está emPreviousVersions(Setup\Source OS). OInstallDatemais antigo entre eles é o mais próximo da instalação original. A data no nome de uma chaveSource OSnão indica seu fuso horário.ShutdownTimeé o último desligamento correto. Uma falha ou uma queda de energia não o atualiza. Compare-o com os logs de eventos (6006, 6008, 1074) e com os horários das últimas gravações nos hives.LastLoggedOnUseré o último usuário da tela de entrada, não todos os logons. Área de Trabalho Remota,runas, serviços e tarefas agendadas nem sempre o definem.LogonUiLastWrittenUTCindica aproximadamente quando ele foi definido pela última vez.- Perfis:
ProfileListlista todos os usuários (e serviços) que tiveram um perfil no sistema, incluindo contas excluídas até que seu perfil seja removido. O Windows 10 e posteriores gravamLocalProfileLoadTimeeLocalProfileUnloadTime: aproximadamente a última entrada e a última saída. - SIDs: as contas locais são
MachineSid-<RID>, e as contas de domínio,DomainSid-<RID>.MachineSidvem doSAM(ou, na falta dele, dePolAcDmSdoSECURITY). Os dois devem coincidir; quando não coincidem,Problemsindica isso, como aconteceria com hives de sistemas diferentes.DomainSidfica vazio em um grupo de trabalho. - Um diretório, um sistema. Com
-d, os hives de um diretório são de um único sistema. Cópias deRegBacke um segundo hive do mesmo tipo (SYSTEM.old) geram registros próprios. Com-f, os hives fornecidos são de um único sistema, e os demais são procurados ao lado deles. - Conjuntos de controles: apenas o conjunto de controles que o Windows usou por último é lido.
parse-registry readmostra os outros.
Analisar com o Juntei¶
Usage: juntei parse-registry system-info <INPUT> [OPTIONS]
Input:
-d, --directory <DIR> Recursively find SYSTEM, SOFTWARE, SAM and SECURITY hives
-f, --file <FILE> A hive of one system; repeat for each
--no-logs Do not replay logs
Output:
-o, --output <FILE> Save records
-t, --output-type <TYPE> csv, json, or jsonl
juntei parse-registry system-info -d collection/ -o system-info.csv
juntei parse-registry system-info -f SYSTEM -f SOFTWARE -t jsonl \
| jq '{Host, TimeZoneDescription, ProductName, Build, LastShutdown}'
O resumo apresenta, para cada sistema: sua versão do Windows, quando foi instalado, seu fuso horário por
extenso, o deslocamento em vigor quando a chave foi gravada pela última vez, seu último desligamento, seu domínio ou
grupo de trabalho, o último usuário que entrou, seu SID, quantos perfis ele tem e as versões a partir das quais
foi atualizado. O auto-parse também exibe o fuso horário de cada sistema ao listar os sistemas que
encontrou.
Campos de saída¶
| Campo | Interpretação |
|---|---|
Host, SourcePath, SoftwarePath, SamPath, SecurityPath |
Host e os hives lidos (SourcePath é o hive SYSTEM ou, na falta dele, o primeiro lido). |
CompName, Hostname, Domain |
O nome NetBIOS (SYSTEM ou, na falta dele, PolAcDmN do SECURITY), o nome de host DNS e o domínio DNS (Tcpip\Parameters). |
PrimaryDomain, DNS-Domain |
O domínio ao qual o computador está ingressado, ou seu grupo de trabalho (PolPrDmN), e o nome DNS do domínio (PolDnDDN). |
ProductName, Edition, DisplayVersion, Version, Build, Ubr, ServicePack, InstallationType |
CurrentVersion: o nome do produto como gravado, EditionID, DisplayVersion (ou, na falta dele, ReleaseId), a versão principal e secundária (ou, na falta delas, CurrentVersion), a build, a revisão de build de atualização, CSDVersion e Client, Server ou Server Core. |
InstallDateUTC, InstallTimeUTC |
InstallDate (com precisão de segundos) e InstallTime (com precisão de 100 ns, Windows 10 e posteriores): a instalação ou a última atualização de recursos. |
RegisteredOwner, RegisteredOrganization, SystemRoot |
Como gravados. |
TimeZone, TimeZoneDescription |
TimeZoneKeyName (ou, na falta dele, StandardName) e o fuso por extenso, com seus deslocamentos e as datas do horário de verão. |
UTC-Offset, DaylightUTC-Offset |
O deslocamento do horário padrão local em relação ao UTC e o do horário de verão (vazio sem horário de verão). |
BiasMinutes, ActiveBiasMinutes, StandardBiasMinutes, DaylightBiasMinutes |
Bias, ActiveTimeBias (em vigor quando a chave foi gravada), StandardBias, DaylightBias. |
StandardName, DaylightName |
Como gravados, muitas vezes uma referência a recurso (@tzres.dll,-112). |
StandardStart, DaylightStart |
Quando o horário padrão e o horário de verão começam, por extenso (first Sunday of November, 02:00). |
DynamicDaylightTimeDisabled, RealTimeIsUniversal |
Horário de verão dinâmico desativado; o relógio de hardware mantém o UTC. |
TimeZoneLastWrittenUTC |
A última gravação da chave do fuso horário. |
LastShutdownUTC |
ShutdownTime: o último desligamento correto. |
CurrentControlSet, ProcessorArchitecture, AnsiCodePage, OemCodePage |
O conjunto de controles lido, PROCESSOR_ARCHITECTURE, ACP e OEMCP. |
LastLoggedOnUser, LastLoggedOnSamUser, LastLoggedOnUserSID, LastLoggedOnDisplayName, LogonUiLastWrittenUTC |
O último usuário da tela de entrada e a última gravação de sua chave. |
MachineSID, DomainSID, MachineAccountSID |
O SID do computador, o SID do seu domínio (PolPrDmS) e o SID da conta de computador no domínio (PolMachineAccountS). |
CompNameLastWrittenUTC, PrimaryDomainLastWrittenUTC, VersionLastWrittenUTC |
Aproximadamente quando o computador foi nomeado pela última vez, ingressou pela última vez em um domínio ou grupo de trabalho e foi atualizado pela última vez (a chave de CurrentVersion). |
PreviousVersions |
Cada chave Source OS: a versão, sua data de instalação e a data no nome da chave (JSON: um objeto para cada). |
Profiles |
Cada perfil: SID, pasta, horário da chave, último carregamento e descarregamento (JSON: um objeto para cada). |
TransactionLogStatus, LogsApplied |
Contexto de recuperação do Registro, considerando os quatro hives. |
Problems |
Valores do tipo ou tamanho errado (com seus bytes mantidos), e um SAM e um SECURITY cujos SIDs de computador diferem. |
Estratégia de investigação¶
- Leia primeiro o fuso horário: anote
UtcOffset, as datas do horário de verão e se o fuso foi alterado recentemente. Use-o para converter os logs em horário local. - Anote a versão, a build e a data de instalação. Verifique
PreviousVersionsem busca de atualizações e compare a data de instalação com os horários mais antigos do sistema de arquivos e dos logs de eventos. - Anote
LastShutdownUTC: atividade posterior a ele sem um novo horário de desligamento sugere uma falha, uma queda de energia ou uma coleta ao vivo. - Use
MachineSideDomainSidpara distinguir contas locais de contas de domínio nos SIDs encontrados em outros lugares (BAM,ProfileList, logs de eventos), e os horários de carregamento e descarregamento dos perfis para as últimas entradas. - Correlacione os nomes do computador e do domínio com os logs de eventos, e com
CompNameLastWrittenUTCePrimaryDomainLastWrittenUTCpara renomeações e ingressos em domínio.