Informations système¶
De quoi s'agit-il¶
Les quatre ruches machine d'un système indiquent ce dont un analyste a besoin avant de lire sa chronologie :
- ses noms (NetBIOS, nom d'hôte DNS, domaine DNS) et le domaine ou groupe de travail auquel il appartient ;
- sa version de Windows, sa build et sa révision de mise à jour, ainsi que la date d'installation ou de dernière mise à niveau de Windows ;
- son fuseau horaire, qui vous indique les heures locales que le système a conservées ;
- la date de son dernier arrêt propre ;
- l'architecture de son processeur et ses pages de codes ;
- le dernier utilisateur qui s'est connecté, et les profils de chaque utilisateur qui s'est connecté ;
- ses SID : celui de l'ordinateur (les comptes locaux correspondent à ce SID suivi d'un RID) et celui de son domaine ;
- les versions de Windows à partir desquelles il a été mis à niveau.
parse-registry system-info écrit un enregistrement par système contenant toutes ces informations.
Meilleure conclusion : la configuration telle qu'elle était lorsque les ruches ont été collectées (ou écrites pour la dernière fois). Les horodatages des clés indiquent quand certaines de ses parties ont changé pour la dernière fois.
Emplacement¶
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
Collectez les quatre ruches avec leurs journaux de transactions. Chacune d'elles fournit à elle seule les informations qu'elle contient.
Précautions d'analyse¶
- Les horodatages du Registre sont en UTC ; le fuseau horaire sert pour tout le reste. Les horodatages des clés, les FILETIME et la plupart
des horodatages d'événements sont en UTC. Les journaux texte, certains journaux d'applications et les dates écrites dans des noms ou des chaînes
(comme
Source OS (Updated on …)) peuvent être en heure locale.Biasest le nombre de minutes entre l'heure standard locale et l'UTC (UTC = local + Bias).UtcOffsetetDaylightUtcOffsetdonnent les deux décalages, etTimeZoneDescriptionindique quand l'heure d'été commence et se termine. - Le fuseau horaire peut changer.
TimeZoneLastWrittenUTCest la dernière écriture de la clé. Windows réécrit également la clé de lui-même lorsqu'il met à jourActiveTimeBias(le décalage alors en vigueur) ; un horodatage récent ne prouve donc pas que quelqu'un a modifié le fuseau. Comparez avec les journaux d'événements : Security 4616 (l'heure système a été modifiée) et les événementsMicrosoft-Windows-Kernel-Generaldu journal System. StandardStartetDaylightStartsont desTIME_FIELDSdu noyau, et non desSYSTEMTIME. Le jour de la semaine est leur dernier champ, et non leur troisième (comme dans la valeurTZIdu fuseau dansSOFTWARE). Dans les fuseaux américains, les deux dispositions se lisent de la même façon, car le jour de la semaine est le dimanche (0). Juntei les décode en tant queTIME_FIELDS: un système public de l'île de Pâques (premier samedi à 22:00) montre la différence. Un mois égal à 0 signifie qu'il n'y a pas d'heure d'été.- Windows 11 indique « Windows 10 ».
ProductNameconserveWindows 10 …sous Windows 11. Les builds 22000 et ultérieures correspondent à Windows 11, et le résumé l'indique.CurrentVersionvaut6.3sous Windows 8.1, 10 et 11 ;VersionutiliseCurrentMajorVersionNumber(10) lorsqu'il est présent. InstallDateévolue avec les mises à niveau de fonctionnalités. Une mise à niveau sur place vers une nouvelle version (de 1809 à 21H2, par exemple) la réinitialise. La version remplacée par chaque mise à niveau, avec sa propreInstallDate, figure dansPreviousVersions(Setup\Source OS). La plus ancienne de cesInstallDateest la plus proche de l'installation d'origine. La date figurant dans le nom d'une cléSource OSn'indique pas son fuseau horaire.ShutdownTimecorrespond au dernier arrêt propre. Un plantage ou une coupure de courant ne la met pas à jour. Comparez-la avec les journaux d'événements (6006, 6008, 1074) et avec les heures des dernières écritures dans les ruches.LastLoggedOnUserest le dernier utilisateur de l'écran de connexion, et non chaque ouverture de session. Le Bureau à distance,runas, les services et les tâches planifiées ne la définissent pas tous.LogonUiLastWrittenUTCcorrespond approximativement au moment où elle a été définie pour la dernière fois.- Profils :
ProfileListrépertorie chaque utilisateur (et service) ayant eu un profil sur le système, y compris les comptes supprimés tant que leur profil n'a pas été retiré. Windows 10 et les versions ultérieures écriventLocalProfileLoadTimeetLocalProfileUnloadTime: approximativement la dernière connexion et la dernière déconnexion. - SID : les comptes locaux sont de la forme
MachineSid-<RID>, les comptes de domaineDomainSid-<RID>.MachineSidprovient de laSAM(sinon dePolAcDmSdansSECURITY). Les deux devraient correspondre ; lorsque ce n'est pas le cas,Problemsle signale, comme ce serait le cas pour des ruches provenant de systèmes différents.DomainSidest vide dans un groupe de travail. - Un répertoire, un système. Avec
-d, les ruches d'un même répertoire appartiennent à un même système. Les copiesRegBacket une seconde ruche du même type (SYSTEM.old) constituent des enregistrements distincts. Avec-f, les ruches fournies appartiennent à un même système, et les autres sont recherchées à côté d'elles. - Jeux de contrôle : seul le jeu de contrôle utilisé en dernier par Windows est lu.
parse-registry readaffiche les autres.
Analyser avec 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}'
Le résumé indique, pour chaque système : sa version de Windows, sa date d'installation, son fuseau horaire en
toutes lettres, le décalage en vigueur lors de la dernière écriture de la clé, son dernier arrêt, son domaine ou
groupe de travail, le dernier utilisateur qui s'est connecté, son SID, le nombre de ses profils et les versions à partir desquelles il
a été mis à niveau. auto-parse affiche également le fuseau horaire de chaque système lorsqu'il répertorie les systèmes qu'il a
trouvés.
Champs de sortie¶
| Champ | Interprétation |
|---|---|
Host, SourcePath, SoftwarePath, SamPath, SecurityPath |
L'hôte et les ruches lues (SourcePath est la ruche SYSTEM, sinon la première lue). |
CompName, Hostname, Domain |
Le nom NetBIOS (SYSTEM, sinon PolAcDmN de SECURITY), le nom d'hôte DNS et le domaine DNS (Tcpip\Parameters). |
PrimaryDomain, DNS-Domain |
Le domaine auquel l'ordinateur est joint, ou son groupe de travail (PolPrDmN), et le nom DNS du domaine (PolDnDDN). |
ProductName, Edition, DisplayVersion, Version, Build, Ubr, ServicePack, InstallationType |
CurrentVersion : le nom du produit tel qu'écrit, EditionID, DisplayVersion (sinon ReleaseId), la version majeure et mineure (sinon CurrentVersion), la build, la révision de build de mise à jour, CSDVersion, et Client, Server ou Server Core. |
InstallDateUTC, InstallTimeUTC |
InstallDate (à la seconde) et InstallTime (à 100 ns près, Windows 10 et versions ultérieures) : l'installation ou la dernière mise à niveau de fonctionnalités. |
RegisteredOwner, RegisteredOrganization, SystemRoot |
Tels qu'écrits. |
TimeZone, TimeZoneDescription |
TimeZoneKeyName (sinon StandardName), et le fuseau en toutes lettres avec ses décalages et ses dates d'heure d'été. |
UTC-Offset, DaylightUTC-Offset |
Le décalage de l'heure standard locale par rapport à l'UTC, et celui de l'heure d'été (vide en l'absence d'heure d'été). |
BiasMinutes, ActiveBiasMinutes, StandardBiasMinutes, DaylightBiasMinutes |
Bias, ActiveTimeBias (en vigueur lors de l'écriture de la clé), StandardBias, DaylightBias. |
StandardName, DaylightName |
Tels qu'écrits, souvent une référence de ressource (@tzres.dll,-112). |
StandardStart, DaylightStart |
Quand commencent l'heure standard et l'heure d'été, en toutes lettres (first Sunday of November, 02:00). |
DynamicDaylightTimeDisabled, RealTimeIsUniversal |
L'heure d'été dynamique est désactivée ; l'horloge matérielle est maintenue en UTC. |
TimeZoneLastWrittenUTC |
La dernière écriture de la clé du fuseau horaire. |
LastShutdownUTC |
ShutdownTime : le dernier arrêt propre. |
CurrentControlSet, ProcessorArchitecture, AnsiCodePage, OemCodePage |
Le jeu de contrôle lu, PROCESSOR_ARCHITECTURE, ACP et OEMCP. |
LastLoggedOnUser, LastLoggedOnSamUser, LastLoggedOnUserSID, LastLoggedOnDisplayName, LogonUiLastWrittenUTC |
Le dernier utilisateur de l'écran de connexion, et la dernière écriture de sa clé. |
MachineSID, DomainSID, MachineAccountSID |
Le SID de l'ordinateur, le SID de son domaine (PolPrDmS) et le SID du compte d'ordinateur dans le domaine (PolMachineAccountS). |
CompNameLastWrittenUTC, PrimaryDomainLastWrittenUTC, VersionLastWrittenUTC |
Le moment approximatif où l'ordinateur a été nommé pour la dernière fois, a rejoint un domaine ou un groupe de travail pour la dernière fois, et a été mis à jour pour la dernière fois (clé de CurrentVersion). |
PreviousVersions |
Chaque clé Source OS : la version, sa date d'installation et la date figurant dans le nom de la clé (JSON : un objet chacune). |
Profiles |
Chaque profil : SID, dossier, horodatage de la clé, dernier chargement et dernier déchargement (JSON : un objet chacun). |
TransactionLogStatus, LogsApplied |
Contexte de récupération du Registre, sur l'ensemble des quatre ruches. |
Problems |
Valeurs de type ou de taille incorrects (leurs octets sont conservés), et une SAM et une SECURITY dont les SID d'ordinateur diffèrent. |
Stratégie d'investigation¶
- Lisez d'abord le fuseau horaire : notez
UtcOffset, les dates d'heure d'été et si le fuseau a été modifié récemment. Convertissez avec lui les journaux en heure locale. - Notez la version, la build et la date d'installation. Consultez
PreviousVersionspour les mises à niveau, et comparez la date d'installation avec les horodatages les plus anciens du système de fichiers et des journaux d'événements. - Notez
LastShutdownUTC: une activité postérieure sans nouvel horodatage d'arrêt suggère un plantage, une coupure de courant ou une collecte à chaud. - Utilisez
MachineSidetDomainSidpour distinguer les comptes locaux des comptes de domaine dans les SID présents ailleurs (BAM,ProfileList, journaux d'événements), et les heures de chargement et de déchargement des profils pour les dernières connexions. - Corrélez les noms d'ordinateur et de domaine avec les journaux d'événements, ainsi qu'avec
CompNameLastWrittenUTCetPrimaryDomainLastWrittenUTCpour les changements de nom et les jonctions à un domaine.