# Security Account Manager

Le SAM (Security Account Manager ou gestionnaire des comptes de sécurité) est la base de données des comptes locaux sur Windows Server 2003, Windows XP, Windows 2000. C'est l'un des composants de la base de registre. Elle contient les mots de passe locaux.
L'utilitaire syskey de Microsoft est nécessaire si on veut se protéger contre un attaquant local (personne ayant un accès physique au local où se trouve le PC) ; cet utilitaire permet d'améliorer la sécurité sur la clé de chiffrement des mots de passe.

## Le service « Security Accounts Manager »

Les contrôles sur le SAM se font via le service Gestionnaire de comptes de sécurité, il fait partie des services nécessaires pour le bon fonctionnement de Windows. Son nom américain exact est Security Accounts Manager (avec un s à Account).
C'est l'un des composants qui est géré par l'exécutable lsass.exe.
Pour que ce service fonctionne, il est nécessaire que le service « Appel de procédures distantes » (RPC) soit démarré.
Si le service "Gestionnaire de comptes de sécurité" s'interrompt, Windows redémarre l'ordinateur.
Le service "Distributed Transaction Coordinator" utilise le service "Gestionnaire de comptes de sécurité".

## Chiffrement

La fonction de hachage utilisée pour les mots de passe est MD5 (Message Digest) (sur les dernières versions de Windows, en 2005).

## Emplacement physique

Le SAM est stocké physiquement dans le fichier %SystemRoot%\system32\Config\SAM. C'est un fichier de ruche inclus dans HKEY_LOCAL_MACHINE, lui-même inclus dans la base de registre.
L'emplacement physique du SAM utilisé lors du dernier boot est l'un des éléments conservés sous la clé hivelist dans la base de registre :
* hivelist est sous HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\.
* Le nom de la valeur est "\\REGISTRY\\MACHINE\\SAM"
* La valeur est "\\Device\\HarddiskVolume1\\WINDOWS\\system32\\config\\SAM"

## Bibliothèques DLL

Les bibliothèques DLL utilisés pour le SAM sont
* samlib.dll (bibliothèque SAM)
* samsrv.dll (serveur SAM)

## Particularité sur les mots de passe lors d'une restauration

L'outil de restauration rstrui.exe laisse intact les mots de passe locaux, pour éviter la confusion chez les utilisateurs après une restauration.

## Les 3 types de comptes

Il existe 3 types de comptes : utilisateur, ordinateur et groupe.

## Les informations de sécurité spécifique à un utilisateur

Les informations de sécurité spécifique à un utilisateur sont stockées dans 2 emplacements sous l'arborescence HKLM\SAM\SAM\Domains\Account\Users. L'une des entrées correspond à l'identifiant unique de l'utilisateur et l'autre à son nom. Cette deuxième entrée contient seulement l'identifiant unique.

## Énumération des comptes du SAM par un utilisateur anonyme

Pour des raisons de sécurité, il est conseillé d'interdire l'énumération de comptes et de partages dans le SAM aux utilisateurs anonymes sous Windows 2003 et XP. L'inconvénient est que cela pose des problèmes de compatibilité avec NT 4.
Cette fonctionnalité est paramétrée dans la base de registre par les 2 valeurs RestrictAnonymous et RestrictAnonymoussam, dans la clé HKEY_LOCAL_MACHINE\System\CurrentControlSet\LSA (LSA signifie ici Local Subsystem Authority, voir Lsass.exe).
Dans Windows 2003 et XP, ces 2 paramètres du registre sont modifiés via la console de management secpol.msc. Sur une version de Windows en français, cet utilitaire est appelé par défaut Stratégie de sécurité locale dans les outils d'administration. Lorsqu'on clique dessus, la fenêtre qui s'affiche s'appelle Paramètres de sécurité locaux. Les deux options relatives à l'énumération par un utilisateur anonyme sont dans Stratégies locales/Options de sécurité.

## Historique

Sur la première version de Windows NT, la sécurité du SAM était par défaut au minimum. Au fil des versions, la sécurité s'est améliorée, par exemple, passage du hachage de MD4 à MD5.
En parallèle, à partir du pack 3 de Windows NT, l'utilitaire syskey permet d'améliorer le chiffrement des mots de passe, ce qui assure une meilleure sécurité face à un attaquant local.
Initialement le SAM gérait les comptes locaux et les comptes de domaine, sous Windows NT. À partir de Windows 2000, les comptes de domaine sont gérés par Active Directory. Si l'administrateur système veut relancer Active Directory en mode restauration, il devra se connecter pour un compte qui fait partie de la SAM et non pas un compte d'Active Directory.
Sous Windows NT, la limite théorique sur la taille du SAM est de 40 000 comptes ; empiriquement, dans certains cas, il a été possible d'atteindre les 60 000 comptes. Sous Windows Server 2000 ou Windows Server 2003, cette limite n'a aucun intérêt pratique.