FichierRisque : Ne pas toucher
SAM C:\Windows\System32\config\SAM
SAM : ruche du Registre HKLM\SAM, base des comptes et groupes locaux et de leurs empreintes de mots de passe. Verrouillée en cours d'exécution.
À quoi ça sert
SAM (Security Account Manager) est la ruche des comptes locaux. Windows la charge au démarrage et la présente sous HKEY_LOCAL_MACHINE\SAM. C’est elle qui répond quand vous ouvrez une session avec un compte local, ou quand net user ou lusrmgr.msc listent les utilisateurs de la machine. Les règles communes à toutes les ruches (verrouillage, copie, modification) sont sur la fiche du dossier System32\config.
Ce qu’il contient
- Les comptes locaux (identifiants relatifs comme 500 pour Administrateur, 501 pour Invité), les groupes locaux et les empreintes des mots de passe, chiffrées avec une clé tirée de la ruche
SYSTEM. - Sur un contrôleur de domaine, les comptes du domaine sont dans
ntds.dit. La SAM n’y garde que le compte de restauration des services d’annuaire (DSRM). - Les identifiants mis en cache des comptes de domaine ne sont pas ici : ils sont dans la ruche
SECURITY. - Les fichiers de transactions associés (
.LOG1,.LOG2) peuvent se trouver à côté.
Risques et bonnes pratiques
- La SAM et la ruche
SYSTEMsuffisent ensemble à extraire hors ligne les empreintes des comptes locaux. Chiffrez le disque (BitLocker), protégez l’accès physique et limitez les droits sur les sauvegardes, qui contiennent ces deux ruches. - La vulnérabilité CVE-2021-36934 (« HiveNightmare » ou « SeriousSAM ») rendait la SAM lisible par un utilisateur standard via les copies d’ombre. Corrigée depuis, elle se vérifie avec
icacls: le groupeBUILTIN\Usersne doit pas apparaître dans les droits du fichier. - Pour lister ou modifier les comptes locaux, passez par
Get-LocalUser,net useroulusrmgr.msc, jamais par la ruche.
Commandes utiles
# Droits du fichier : BUILTIN\Users ne doit pas y figurer (contrôle de la CVE-2021-36934)icacls "$env:windir\System32\config\SAM"
# Lister les comptes locaux (méthode supportée, sans lire la ruche)Get-LocalUser | Select-Object Name, Enabled, LastLogon, SID
# La ruche et ses fichiers associés (.LOG1, .LOG2, .regtrans-ms)Get-ChildItem -Force "$env:windir\System32\config" -Filter "SAM*" | Select-Object Name, Length, LastWriteTime
# Copie hors ligne de la ruche (en administrateur)reg save HKLM\SAM "$env:TEMP\sam.hiv"