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
Outils
Comparer tous les outilsPré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 ruche | Chemin | Monté sous |
|---|---|---|
SYSTEM | C:\Windows\System32\config\SYSTEM | HKLM\SYSTEM (services, USB, interfaces réseau, jeux de contrôle) |
SOFTWARE | C:\Windows\System32\config\SOFTWARE | HKLM\SOFTWARE (programmes installés, clés Run, profils réseau) |
SAM | C:\Windows\System32\config\SAM | HKLM\SAM (comptes locaux, voir SAM) |
SECURITY | C:\Windows\System32\config\SECURITY | HKLM\SECURITY (stratégie d'audit, secrets LSA, ouvertures de session de domaine en cache) |
DEFAULT | C:\Windows\System32\config\DEFAULT | HKU\.DEFAULT (profil utilisé par le compte LocalSystem) |
NTUSER.DAT | Vista+ : C:\Users\<user>\NTUSER.DAT ; XP : C:\Documents and Settings\<user>\NTUSER.DAT | HKU\<SID> = HKCU |
UsrClass.dat | Vista+ : C:\Users\<user>\AppData\Local\Microsoft\Windows\UsrClass.dat | HKU\<SID>_Classes (ShellBags, associations de fichiers) |
| Profils de service | C:\Windows\System32\config\systemprofile\, C:\Windows\ServiceProfiles\LocalService\ et NetworkService\ (NTUSER.DAT) | Ruches des comptes de service intégrés |
| Autres ruches | Amcache.hve, Syscache.hve, BCD (\Boot\BCD ou \EFI\Microsoft\Boot\BCD), COMPONENTS, DRIVERS, ELAM | Chargées à la demande |
| Sauvegardes | C:\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
| Structure | Champ | Signification |
|---|---|---|
| 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 base | Nom interne, date de dernière écriture | Cette 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é |
| Valeur | Nom, type (REG_SZ, REG_BINARY, REG_DWORD…), données | Les valeurs n'ont pas d'horodatage propre |
| Cellule | Signe de la taille | Né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
| Horodatage | Positionné quand | Format | Pièges |
|---|---|---|---|
| LastWrite de la clé | Une valeur de la clé ou sa liste de sous-clés change | FILETIME, UTC | Porte sur la clé, pas sur chaque valeur ; mises à jour, maintenance et nettoyeurs réécrivent des clés en masse |
| Dates contenues dans les données | Dé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 disque | NTFS, UTC | Avec 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 siEnablePeriodicBackup(DWORD 1) est défini sousHKLM\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.oldaprè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 deRegistryHivesSystem,RegistryHivesUser,RegistryHivesMSIXApps), fichiers.LOG*et copies RegBack compris.RegistryHivesOther,Amcache,SyscacheetBCDcollectent les autres ruches. - Velociraptor (
Windows.Triage.Targets) :RegistryHives,RegistryHivesSystem,RegistryHivesUser(mêmes noms ;RegistryHivesOtherexiste aussi).Windows.Registry.NTUser.Uploadremonte les ruches utilisateur par accès NTFS brut. - Commandes natives : les ruches chargées sont verrouillées.
reg saveexporte 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-logsreconstruit une ruche sale à partir de ses journaux. - Velociraptor : l'accesseur
raw_reget les artefacts registre interrogent les ruches sur les postes en fonctionnement ; le parseurwinregde Plaso verse les clés dans une super-chronologie.
Conseils d'investigation
- Collectez toujours chaque ruche avec ses fichiers
.LOG1/.LOG2et 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 viaHKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileListpour 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 dansNTUSER.DAT.
Artefacts liés
- Ruche SAM et comptes utilisateursFiche ruche SAM : comptes locaux, RID, dernière connexion et changement de mot de passe, compteurs, groupes, ProfileList et ID d'événements liés aux comptes.
- Amcache.hveFiche Amcache.hve : clés d'inventaire des fichiers et programmes, SHA-1, métadonnées PE, horodatages, et pourquoi une entrée ne prouve pas l'exécution.
- Syscache.hveFiche Syscache.hve : la ruche de Windows 7 / Server 2008 R2 dans System Volume Information qui relie identifiants MFT et SHA-1, et ses limites.
- ShellBagsFiche ShellBags : clés BagMRU et Bags dans UsrClass.dat et NTUSER.DAT, shell items, horodatages des dossiers, dossiers supprimés et USB, analyse avec SBECmd.
- Clichés instantanés de volume (VSS)Fiche clichés instantanés VSS : fichiers de stockage dans System Volume Information, copie sur écriture, suppression par rançongiciel, montage et analyse.
- Services WindowsFiche services Windows : valeurs de la clé Services (ImagePath, Start, Type, ServiceDll), événements 7045 et 4697, traces de PsExec et pièges.
Termes du glossaire
- Ruche du RegistreUn fichier sur disque qui supporte une partie du Registre Windows, comme `SYSTEM`, `SOFTWARE` ou `NTUSER.DAT`.
- Journaux de transactions du Registre (.LOG1/.LOG2)Les fichiers .LOG1 et .LOG2 de chaque ruche consignent les écritures en attente ; depuis Windows 8.1, ils peuvent contenir des données absentes de la ruche.
- LastWrite d'une clé de RegistreL'unique FILETIME stocké dans chaque clé de Registre, qui indique en UTC la dernière modification de la clé ou de l'une de ses valeurs.
- NTUSER.DATLa ruche du Registre propre à chaque utilisateur, stockée dans son profil et chargée comme HKEY_CURRENT_USER, riche en traces d'activité.
- UsrClass.datLa seconde ruche du Registre par utilisateur, mappée sur HKCU\Software\Classes, qui contient les ShellBags, le MUICache et des objets COM.