Systeminformationen¶
Was es ist¶
Die vier Maschinen-Hives eines Systems enthalten das, was Analysten wissen müssen, bevor sie seine Zeitleiste lesen:
- seine Namen (NetBIOS, DNS-Hostname, DNS-Domäne) und die Domäne oder Arbeitsgruppe, der es angehört;
- seine Windows-Version, den Build und die Update-Revision sowie den Zeitpunkt, zu dem Windows installiert oder zuletzt per Upgrade aktualisiert wurde;
- seine Zeitzone, aus der hervorgeht, welche lokalen Zeiten das System geführt hat;
- wann es zuletzt ordnungsgemäß heruntergefahren wurde;
- seine Prozessorarchitektur und Codepages;
- den Benutzer, der sich zuletzt angemeldet hat, und die Profile aller Benutzer, die sich angemeldet haben;
- seine SIDs: die des Computers (lokale Konten bestehen aus dieser plus einer RID) und die seiner Domäne;
- die Windows-Versionen, von denen aus ein Upgrade durchgeführt wurde.
parse-registry system-info schreibt pro System einen Datensatz mit all diesen Angaben.
Bestmögliche Schlussfolgerung: Die Konfiguration, wie sie zum Zeitpunkt der Sicherung der Hives (oder ihres letzten Schreibvorgangs) bestand. Die Schlüsselzeitstempel geben an, wann sich Teile davon zuletzt geändert haben.
Speicherort¶
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
Sichern Sie die vier Hives mit ihren Transaktionsprotokollen. Jeder von ihnen liefert auch allein die Angaben, die er enthält.
Hinweise für die Analyse¶
- Registry-Zeitstempel sind UTC; die Zeitzone gilt für alles andere. Schlüsselzeitstempel, FILETIMEs und die meisten
Ereigniszeitstempel sind UTC. Textprotokolle, manche Anwendungsprotokolle sowie Datumsangaben in Namen oder Zeichenfolgen
(etwa
Source OS (Updated on …)) können lokal sein.Biasist die Anzahl Minuten von der lokalen Standardzeit zu UTC (UTC = local + Bias).UtcOffsetundDaylightUtcOffsetgeben die beiden Offsets an, undTimeZoneDescriptiongibt an, wann die Sommerzeit beginnt und endet. - Die Zeitzone kann sich ändern.
TimeZoneLastWrittenUTCist der letzte Schreibzugriff auf den Schlüssel. Windows schreibt den Schlüssel auch selbstständig neu, wenn esActiveTimeBias(den zu diesem Zeitpunkt geltenden Offset) aktualisiert; ein jüngerer Zeitpunkt beweist daher nicht, dass jemand die Zeitzone geändert hat. Vergleichen Sie mit den Ereignisprotokollen: Security 4616 (Systemzeit geändert) und denMicrosoft-Windows-Kernel-General-Ereignissen im System-Protokoll. StandardStartundDaylightStartsindTIME_FIELDSdes Kernels, keineSYSTEMTIMEs. Der Wochentag ist ihr letztes Feld, nicht ihr drittes (wie imTZI-Wert der Zone inSOFTWARE). In US-Zeitzonen ergeben beide Layouts dasselbe, weil der Wochentag Sonntag (0) ist. Juntei dekodiert sie alsTIME_FIELDS: Ein öffentlich verfügbares System von der Osterinsel (erster Samstag um 22:00 Uhr) zeigt den Unterschied. Ein Monat 0 bedeutet keine Sommerzeit.- Windows 11 meldet sich als „Windows 10“.
ProductNameenthält unter Windows 11 weiterhinWindows 10 …. Builds ab 22000 sind Windows 11, und die Zusammenfassung weist dies aus.CurrentVersionist unter Windows 8.1, 10 und 116.3;VersionverwendetCurrentMajorVersionNumber(10), sofern vorhanden. InstallDateverschiebt sich mit Funktionsupgrades. Ein direktes Upgrade auf ein neues Release (z. B. von 1809 auf 21H2) setzt es zurück. Das Release, das das jeweilige Upgrade ersetzt hat, steht mit eigenemInstallDateinPreviousVersions(Setup\Source OS). Ihr frühestesInstallDatekommt der ursprünglichen Installation am nächsten. Das Datum im Namen einesSource OS-Schlüssels gibt keine Zeitzone an.ShutdownTimeist das letzte ordnungsgemäße Herunterfahren. Ein Absturz oder Stromausfall aktualisiert es nicht. Vergleichen Sie es mit den Ereignisprotokollen (6006, 6008, 1074) und den Zeitpunkten der letzten Schreibzugriffe auf die Hives.LastLoggedOnUserist der letzte Benutzer des Anmeldebildschirms, nicht jede Anmeldung. Remotedesktop,runas, Dienste und geplante Aufgaben setzen ihn nicht alle.LogonUiLastWrittenUTCgibt ungefähr an, wann er zuletzt gesetzt wurde.- Profile:
ProfileListführt jeden Benutzer (und Dienst) auf, der auf dem System ein Profil hatte, einschließlich gelöschter Konten, bis ihr Profil entfernt wird. Ab Windows 10 schreibt WindowsLocalProfileLoadTimeundLocalProfileUnloadTime: ungefähr die letzte Anmeldung und Abmeldung. - SIDs: Lokale Konten sind
MachineSid-<RID>, DomänenkontenDomainSid-<RID>.MachineSidstammt aus demSAM(andernfalls ausPolAcDmSinSECURITY). Die beiden sollten übereinstimmen; ist dies nicht der Fall, meldetProblemsdies, wie es bei Hives unterschiedlicher Systeme zu erwarten wäre.DomainSidist in einer Arbeitsgruppe leer. - Ein Verzeichnis, ein System. Mit
-dgehören die Hives in einem Verzeichnis zu einem System.RegBack-Kopien und ein zweiter Hive derselben Art (SYSTEM.old) bilden eigene Datensätze. Mit-fgehören die angegebenen Hives zu einem System, und die übrigen werden daneben gesucht. - Steuerungssätze: Nur der Steuerungssatz, den Windows zuletzt verwendet hat, wird gelesen.
parse-registry readzeigt die übrigen.
Mit Juntei parsen¶
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}'
Die Zusammenfassung gibt für jedes System an: seine Windows-Version, den Installationszeitpunkt, seine Zeitzone in
Worten, den beim letzten Schreiben des Schlüssels geltenden Offset, das letzte Herunterfahren, seine Domäne oder
Arbeitsgruppe, den letzten angemeldeten Benutzer, seine SID, die Anzahl seiner Profile und die Versionen, von denen aus ein Upgrade
erfolgte. auto-parse gibt außerdem die Zeitzone jedes Systems aus, wenn es die gefundenen Systeme
auflistet.
Ausgabefelder¶
| Feld | Interpretation |
|---|---|
Host, SourcePath, SoftwarePath, SamPath, SecurityPath |
Host und die gelesenen Hives (SourcePath ist der SYSTEM-Hive, andernfalls der erste gelesene). |
CompName, Hostname, Domain |
Der NetBIOS-Name (SYSTEM, andernfalls PolAcDmN aus SECURITY), der DNS-Hostname und die DNS-Domäne (Tcpip\Parameters). |
PrimaryDomain, DNS-Domain |
Die Domäne, der der Computer beigetreten ist, oder seine Arbeitsgruppe (PolPrDmN), und der DNS-Name der Domäne (PolDnDDN). |
ProductName, Edition, DisplayVersion, Version, Build, Ubr, ServicePack, InstallationType |
CurrentVersion: der Produktname wie geschrieben, EditionID, DisplayVersion (andernfalls ReleaseId), Haupt- und Nebenversion (andernfalls CurrentVersion), der Build, die Update Build Revision, CSDVersion sowie Client, Server oder Server Core. |
InstallDateUTC, InstallTimeUTC |
InstallDate (auf die Sekunde) und InstallTime (auf 100 ns, ab Windows 10): Installation oder letztes Funktionsupgrade. |
RegisteredOwner, RegisteredOrganization, SystemRoot |
Wie geschrieben. |
TimeZone, TimeZoneDescription |
TimeZoneKeyName (andernfalls StandardName) sowie die Zeitzone in Worten mit ihren Offsets und Sommerzeitdaten. |
UTC-Offset, DaylightUTC-Offset |
Der Offset der lokalen Standardzeit gegenüber UTC und der der Sommerzeit (leer ohne Sommerzeit). |
BiasMinutes, ActiveBiasMinutes, StandardBiasMinutes, DaylightBiasMinutes |
Bias, ActiveTimeBias (zum Zeitpunkt des Schreibens des Schlüssels geltend), StandardBias, DaylightBias. |
StandardName, DaylightName |
Wie geschrieben, oft ein Ressourcenverweis (@tzres.dll,-112). |
StandardStart, DaylightStart |
Wann Standard- und Sommerzeit beginnen, in Worten (first Sunday of November, 02:00). |
DynamicDaylightTimeDisabled, RealTimeIsUniversal |
Dynamische Sommerzeit deaktiviert; die Hardwareuhr läuft in UTC. |
TimeZoneLastWrittenUTC |
Der letzte Schreibzugriff auf den Zeitzonenschlüssel. |
LastShutdownUTC |
ShutdownTime: das letzte ordnungsgemäße Herunterfahren. |
CurrentControlSet, ProcessorArchitecture, AnsiCodePage, OemCodePage |
Der gelesene Steuerungssatz, PROCESSOR_ARCHITECTURE, ACP und OEMCP. |
LastLoggedOnUser, LastLoggedOnSamUser, LastLoggedOnUserSID, LastLoggedOnDisplayName, LogonUiLastWrittenUTC |
Der letzte Benutzer des Anmeldebildschirms und der letzte Schreibzugriff auf seinen Schlüssel. |
MachineSID, DomainSID, MachineAccountSID |
Die SID des Computers, die SID seiner Domäne (PolPrDmS) und die SID des Computerkontos in der Domäne (PolMachineAccountS). |
CompNameLastWrittenUTC, PrimaryDomainLastWrittenUTC, VersionLastWrittenUTC |
Ungefähr, wann der Computer zuletzt benannt wurde, zuletzt einer Domäne oder Arbeitsgruppe beigetreten ist und zuletzt aktualisiert wurde (Schlüssel von CurrentVersion). |
PreviousVersions |
Jeder Source OS-Schlüssel: die Version, ihr Installationsdatum und das Datum im Namen des Schlüssels (JSON: jeweils ein Objekt). |
Profiles |
Jedes Profil: SID, Ordner, Schlüsselzeitstempel, letztes Laden und Entladen (JSON: jeweils ein Objekt). |
TransactionLogStatus, LogsApplied |
Kontext der Registry-Wiederherstellung über alle vier Hives. |
Problems |
Werte mit falschem Typ oder falscher Größe (ihre Bytes bleiben erhalten) sowie SAM und SECURITY mit abweichenden Computer-SIDs. |
Untersuchungsstrategie¶
- Lesen Sie zuerst die Zeitzone: Notieren Sie
UtcOffset, die Sommerzeitdaten und ob die Zeitzone kürzlich geändert wurde. Rechnen Sie Protokolle in lokaler Zeit damit um. - Notieren Sie Version, Build und Installationsdatum. Prüfen Sie
PreviousVersionsauf Upgrades und vergleichen Sie das Installationsdatum mit den ältesten Zeitstempeln im Dateisystem und in den Ereignisprotokollen. - Notieren Sie
LastShutdownUTC: Aktivität danach ohne neuen Herunterfahrzeitpunkt deutet auf einen Absturz, einen Stromausfall oder eine Live-Sicherung hin. - Verwenden Sie
MachineSidundDomainSid, um in SIDs an anderen Stellen (BAM,ProfileList, Ereignisprotokolle) lokale von Domänenkonten zu unterscheiden, und die Lade- und Entladezeiten der Profile für die letzten Anmeldungen. - Korrelieren Sie Computer- und Domänennamen mit den Ereignisprotokollen sowie mit
CompNameLastWrittenUTCundPrimaryDomainLastWrittenUTC, um Umbenennungen und Domänenbeitritte zu erkennen.