Aller au contenu

Persistance

Ruches du registre

Fiche ruches du registre : SYSTEM, SOFTWARE, SAM, SECURITY, NTUSER.DAT, UsrClass.dat, journaux de transactions, RegBack, LastWrite et collecte.

Emplacement
C:\Windows\System32\config\
Prouve
Configuration, persistance, comptes et activité par utilisateur, avec dates d'écriture
Horodatages
LastWrite des clés en FILETIME, UTC (par clé, pas par valeur) ; dates dans les données de valeur variables selon l'artefact, parfois en heure locale
Rétention
Persistant ; cellules supprimées récupérables jusqu'à réutilisation ; RegBack vide depuis Windows 10 1803 ; copies anciennes dans VSS et Windows.old
Accès
Ruches chargées verrouillées : NTFS brut (KAPE) ou VSS avec .LOG1/.LOG2, ou reg save en admin ; ruches d'utilisateurs déconnectés copiables
Type
Registre
Windows
XPVista / 78 / 8.11011
Cible KAPE
RegistryHivesRegistryHivesSystemRegistryHivesUser
Velociraptor
Windows.Triage.Targets:RegistryHivesRegistryHivesSystemRegistryHivesUser

Présentation

Le registre Windows n'est pas un fichier unique : c'est un ensemble de ruches, chacune étant un fichier binaire au format regf que Windows charge sous une clé racine comme HKLM\SYSTEM ou HKEY_USERS\<SID>. Collecter ces fichiers donne la configuration du système, les logiciels installés, les services et pilotes, les comptes locaux, l'historique réseau et, via le NTUSER.DAT et le UsrClass.dat de chaque utilisateur, une grande partie des artefacts d'activité décrits ailleurs sur ce site. Cette page traite des fichiers eux-mêmes ; les clés ont leurs propres pages.

Emplacement

Fichier de rucheCheminMonté sous
SYSTEMC:\Windows\System32\config\SYSTEMHKLM\SYSTEM (services, USB, interfaces réseau, jeux de contrôle)
SOFTWAREC:\Windows\System32\config\SOFTWAREHKLM\SOFTWARE (programmes installés, clés Run, profils réseau)
SAMC:\Windows\System32\config\SAMHKLM\SAM (comptes locaux, voir SAM)
SECURITYC:\Windows\System32\config\SECURITYHKLM\SECURITY (stratégie d'audit, secrets LSA, ouvertures de session de domaine en cache)
DEFAULTC:\Windows\System32\config\DEFAULTHKU\.DEFAULT (profil utilisé par le compte LocalSystem)
NTUSER.DATVista+ : C:\Users\<user>\NTUSER.DAT ; XP : C:\Documents and Settings\<user>\NTUSER.DATHKU\<SID> = HKCU
UsrClass.datVista+ : C:\Users\<user>\AppData\Local\Microsoft\Windows\UsrClass.datHKU\<SID>_Classes (ShellBags, associations de fichiers)
Profils de serviceC:\Windows\System32\config\systemprofile\, C:\Windows\ServiceProfiles\LocalService\ et NetworkService\ (NTUSER.DAT)Ruches des comptes de service intégrés
Autres ruchesAmcache.hve, Syscache.hve, BCD (\Boot\BCD ou \EFI\Microsoft\Boot\BCD), COMPONENTS, DRIVERS, ELAMChargées à la demande
SauvegardesC:\Windows\System32\config\RegBack\Voir Rétention

Chaque ruche est accompagnée de journaux de transactions : <ruche>.LOG1 et <ruche>.LOG2 (double journalisation depuis Vista ; nouveau format de journal depuis Windows 8.1). HKLM\HARDWARE est construite au démarrage et n'a pas de fichier. Sur un système en fonctionnement, HKLM\SYSTEM\CurrentControlSet\Control\hivelist associe chaque ruche chargée à son fichier.

Ce que l'artefact prouve

  • Configuration et état : nom de machine, fuseau horaire, logiciels installés, services et pilotes, interfaces et profils réseau, périphériques USB, partages.
  • Persistance : clés Run, services, cache des tâches planifiées, entrées IFEO et Winlogon, détournements COM dans UsrClass.dat.
  • Comptes : utilisateurs et groupes locaux dans la SAM, identifiants de domaine en cache et stratégies dans SECURITY.
  • Activité utilisateur : UserAssist, RecentDocs, ShellBags, listes MRU, chemins saisis, tous rattachés à un compte puisqu'ils se trouvent dans sa ruche.
  • Preuves d'exécution via ShimCache (SYSTEM), BAM (SYSTEM) et UserAssist (NTUSER).
  • L'horodatage LastWrite d'une clé ne dit pas quelle valeur a changé, ni pourquoi ; beaucoup de clés sont réécrites par Windows lui-même.

Champs clés

StructureChampSignification
Bloc de base (en-tête)Signature regf, numéros de séquence primaire et secondaireÉgaux = ruche propre ; différents = ruche « sale », les journaux doivent être rejoués
Bloc de baseNom interne, date de dernière écritureCette date n'est plus mise à jour à partir de Windows 8.1
Nœud de cléNom, horodatage LastWrite, listes de sous-clés et de valeurs, sécuritéUn par clé
ValeurNom, type (REG_SZ, REG_BINARY, REG_DWORD…), donnéesLes valeurs n'ont pas d'horodatage propre
CelluleSigne de la tailleNégatif = allouée ; positif = cellule libre pouvant encore contenir des clés ou valeurs supprimées

CurrentControlSet n'existant que sur un système actif, lisez hors ligne HKLM\SYSTEM\Select\Current pour savoir quel ControlSet00x était utilisé.

Horodatages

HorodatagePositionné quandFormatPièges
LastWrite de la cléUne valeur de la clé ou sa liste de sous-clés changeFILETIME, UTCPorte sur la clé, pas sur chaque valeur ; mises à jour, maintenance et nettoyeurs réécrivent des clés en masse
Dates contenues dans les donnéesDéfinies par chaque artefact (UserAssist, BAM, ShimCache…)FILETIME ou autre, généralement UTCÀ interpréter artefact par artefact ; certaines sont en heure locale
Dates du fichier de ruche ($SI)Écriture du fichier sur disqueNTFS, UTCAvec le format de journal de Windows 8.1+, des changements peuvent rester jusqu'à une heure dans .LOG1/.LOG2 avant d'atteindre la ruche

Rétention et effacement

  • Journaux de transactions et ruches sales : une ruche copiée depuis un système actif ou planté est souvent sale. Les derniers changements peuvent n'exister que dans .LOG1/.LOG2 : collectez-les toujours et laissez l'outil les rejouer.
  • RegBack : avant Windows 10 1803, une tâche planifiée copiait les ruches système dans config\RegBack, un instantané plus ancien bien utile. Depuis 1803, les fichiers existent toujours mais font 0 octet, sauf si EnablePeriodicBackup (DWORD 1) est défini sous HKLM\SYSTEM\CurrentControlSet\Control\Session Manager\Configuration Manager.
  • Clés et valeurs supprimées : la suppression marque les cellules comme libres ; leur contenu subsiste jusqu'à réutilisation et peut être récupéré avec Registry Explorer, yarp et outils similaires. Les journaux de transactions peuvent aussi contenir d'anciennes versions de pages.
  • Copies plus anciennes : clichés instantanés, Windows.old après une mise à niveau, points de restauration XP (System Volume Information\_restore*\RP*\snapshot\_REGISTRY_*).
  • Les nettoyeurs (outils de type CCleaner) et les attaquants suppriment des clés ou valeurs MRU ; le LastWrite de la clé parente marque alors l'heure du nettoyage.

Collecte

  • Cible KAPE : RegistryHives (composée de RegistryHivesSystem, RegistryHivesUser, RegistryHivesMSIXApps), fichiers .LOG* et copies RegBack compris. RegistryHivesOther, Amcache, Syscache et BCD collectent les autres ruches.
  • Velociraptor (Windows.Triage.Targets) : RegistryHives, RegistryHivesSystem, RegistryHivesUser (mêmes noms ; RegistryHivesOther existe aussi). Windows.Registry.NTUser.Upload remonte les ruches utilisateur par accès NTFS brut.
  • Commandes natives : les ruches chargées sont verrouillées. reg save exporte une clé chargée vers un nouveau fichier (droits administrateur requis) ; il ne copie ni le fichier d'origine ni ses journaux, préférez donc une copie brute ou issue d'un cliché quand c'est possible :
reg save HKLM\SYSTEM E:\case\SYSTEM.hiv /y
reg save HKLM\SOFTWARE E:\case\SOFTWARE.hiv /y
esentutl.exe /y /vss C:\Windows\System32\config\SYSTEM /d E:\case\SYSTEM
reg query "HKLM\SYSTEM\CurrentControlSet\Control\hivelist"

Les ruches des utilisateurs non connectés ne sont pas verrouillées et se copient directement.

Outils d'analyse

  • Registry Explorer (Eric Zimmerman) : interface graphique avec rejeu des journaux, signets sur les clés forensiques et récupération des clés et valeurs supprimées.
  • RECmd (Eric Zimmerman) : traitement par lots en ligne de commande, par exemple RECmd.exe -d E:\case\Registry --bn BatchExamples\DFIRBatch.reb --nl false --csv E:\out.
  • RegRipper (Harlan Carvey) : rapports texte à base de plugins, rip.exe -r SOFTWARE -f software.
  • yarp (Maxim Suhanov, open source) : bibliothèque et outils Python avec rejeu des journaux, récupération des données supprimées et carving de ruches.
  • regipy (open source) : bibliothèque et outil Python ; regipy-process-transaction-logs reconstruit une ruche sale à partir de ses journaux.
  • Velociraptor : l'accesseur raw_reg et les artefacts registre interrogent les ruches sur les postes en fonctionnement ; le parseur winreg de Plaso verse les clés dans une super-chronologie.

Conseils d'investigation

  • Collectez toujours chaque ruche avec ses fichiers .LOG1/.LOG2 et vérifiez si elle est sale avant de vous fier aux résultats ; RegRipper ne rejoue pas lui-même les journaux, rejouez-les d'abord (Registry Explorer, RECmd ou regipy).
  • Associez chaque NTUSER.DAT à son SID via HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList pour attribuer l'activité au bon compte.
  • Comparez les ruches actuelles avec celles des clichés instantanés ou de RegBack pour repérer de nouveaux services, des clés Run ou des entrées MRU supprimées.
  • Triez les clés par LastWrite autour de la fenêtre de l'incident : une grappe d'écritures dans des emplacements de persistance est une piste rapide, à confirmer par le contenu des valeurs.
  • Récupérez les clés supprimées : les attaquants effacent souvent leur valeur Run ou leur clé de service après usage, et la cellule libre peut encore la contenir.
  • N'oubliez pas UsrClass.dat : les ShellBags et les détournements COM par utilisateur s'y trouvent, pas dans NTUSER.DAT.

Artefacts liés

Termes du glossaire

Guides

Tous les artefacts sur une page : aide-mémoire