21/05/2024

Système

A la découverte des SID sous Windows

I. Présentation

Dans ce tutoriel, nous allons parler des SID sous Windows ! Qu'est-ce qu'un SID ? Comment est constituée cette valeur ? Où peut-on récupérer une liste des SID ? Nous allons répondre à ces différentes questions.

Retrouvez cet article au format vidéo :

II. Qu'est-ce qu'un SID ?

Sous Windows, un SID pour Security IDentifier, est un identifiant de sécurité unique associé à chaque objet relatif à la sécurité (utilisateurs, groupes, ordinateurs, services, etc...) sur une machine Windows. Dans l'annuaire Active Directory, chaque objet est également associé à un SID unique.

Ainsi, chaque utilisateur dispose de son SID unique : pour Windows, cette valeur est plus fiable que d'utiliser le nom. Ceci est d'autant plus vrai que si l'on renomme un utilisateur ou un groupe, son nom va changer, mais son SID restera le même. Si vous supprimez un utilisateur et que vous le recréez avec le même nom, le nouveau compte aura un SID différent ! On peut aussi affirmer que sur une machine Windows, vous ne verrez jamais deux SIDs identiques !

Plus largement, chaque "principal", c'est-à-dire chaque élément capable de s'authentifier auprès du système d'exploitation Windows aura son propre SID, ce qui inclut les processus. Lorsqu'une autorisation est donnée, celle-ci donne lieu à un jeton d'accès qui contient le SID de l'utilisateur mais aussi le SID de tous les groupes dont il est membre. Ce jeton contient aussi la liste des autorisations. Par ailleurs, le SID est également utilisé pour déterminer le propriétaire d'un objet, notamment un fichier.

Vous l'aurez compris, les SID jouent un rôle clé sur un système d'exploitation Windows ou Windows Server.

Voici un exemple de SID :

S-1-5-21-1990400566-1867844161-3796721076-500

Mais, comment est constituée cette valeur ?

III. Quelle est la structure d'un SID ?

N'allez pas croire que le SID est constitué d'une suite aléatoire de chiffres précédée par un "S" ! Il respecte une structure stricte mais peut avoir une longueur variable. Prenons l'exemple ci-dessous :

S-1-5-21-1990400566-1867844161-3796721076-500

Nous pouvons décortiquer le SID de cette façon :

  • S-1 : préfixe commun des SID
  • -5 : autorité d'identification, ici Autorite NT
  • -21 : autorité secondaire
  • -1990400566-1867844161-3796721076 : identifiant du domaine ou de l'ordinateur (valeur unique sur chaque machine)
  • -500 : RID pour Relative ID ou identificateur relatif de l'objet. Entre deux utilisateurs locaux d'une même machine, il n'y a que le RID qui sera différent dans le SID.

Puisque le système Windows intègre des éléments par défaut, notamment les comptes "Administrateur" et "Invité", ils ont toujours le même RID. Ce sont des valeurs connues.

Nous savons que le SID du compte Administrateur d'une machine Windows ou Windows Server se terminera toujours par "500" car le RID 500 correspond à ce compte.

  • Voici le SID du compte Administrateur obtenu sur deux machines Windows 11 différentes :
S-1-5-21-1990400566-1867844161-3796721076-500
S-1-5-21-1581025232-2137823251-2609617269-500
  • Voici le SID du compte Invité obtenu sur deux machines Windows 11 différentes, où l'on voit que le RID "501" est commun :
S-1-5-21-1990400566-1867844161-3796721076-501
S-1-5-21-1581025232-2137823251-2609617269-501
  • Voici le SID du premier compte utilisé créé sur deux machines Windows 11 différentes :
S-1-5-21-1990400566-1867844161-3796721076-1001
S-1-5-21-1581025232-2137823251-2609617269-1001

Le premier utilisateur que vous créez sur une machine Windows, qu'il soit nommé "Florian", "Bobby" ou "Admin", aura le RID "1001". Cette valeur sera incrémentée pour les prochains utilisateurs créés (1002, 1003, etc.).

IV. Les SID communs ou Well-known SID

Bien que le SID de certains éléments comme le compte Administrateur soit prévisible, il ne sera pas unique d'une machine Windows à une autre (à moins que la machine soit clonée, mais dans ce cas, il est conseillé d'effectuer un SYSPREP). Malgré tout, sur toutes les machines Windows, un certain nombre de SID ont des valeurs fixes et prédéfinies à l'avance, ce qui signifie que ces SID seront communs sur toutes les installations de Windows. On les comptes par dizaines et on parle de Well-known SID.

C'est le cas de tous les groupes de sécurité appartenant au domaine Builtin (de la base SAM), notamment les groupes suivants :

  • S-1-5-32-544 pour Administrateurs
  • S-1-5-32-545 pour Utilisateurs
  • S-1-5-32-546 pour Invités
  • S-1-5-32-547 pour Utilisateurs avec pouvoir
  • Etc...

Ainsi que les groupes dynamiques dont les membres sont gérés par le système Windows. Voici quelques exemples :

  • S-1-1-0 pour Tout le monde
  • S-1-5-11 pour les Utilisateurs authentifiés
  • S-1-2-0 pour identifier les utilisateurs connectés en local (physique)
  • S-1-2-1 pour identifier les utilisateurs connectés à partir d'une console

Par ailleurs, certains SID permettent d'en savoir plus sur le type de session. Nous pourrons visualiser ces valeurs dans les jetons d'accès des utilisateurs. Voici la liste :

  • S-1-5-2 pour une connexion via une session réseau (accès à un partage SMB, par exemple)
  • S-1-5-3 pour une tâche planifiée
  • S-1-5-4 pour une session interactive
  • S-1-5-6 pour un service
  • S-1-5-7 pour une connexion en tant qu'anonyme (anonymous logon)
  • S-1-5-14 pour une session interactive distante (RDP / Bureau à distance, par exemple)

A partir de votre session Windows, exécutez la commande suivante dans une console pour afficher le SID de l'utilisateur ainsi que tous les SID associés à son jeton et la liste des autorisations. Au-delà du SID de l'utilisateur, cette commande va afficher un ensemble de SID, notamment des Well-known SID.

whoami /all

Par exemple :

Jeton SID whoami Windows

D'ailleurs, la dernière ligne fait référence au SID "S-1-16-8192" pour le nom "Etiquette obligatoire\Niveau obligatoire moyen". En fait, ceci correspond au niveau d'intégrité : plus l'accès est critique / sensible, plus la valeur est élevée. Voici les valeurs possibles :

  • S-1-16-0 pour le niveau non approuvé
  • S-1-16-4096 pour le niveau faible
  • S-1-16-8192 pour le niveau moyen
  • S-1-16-12288 pour le niveau élevé
  • S-1-16-16384 pour le niveau système
  • S-1-16-20480 pour le niveau de processus protégé

La documentation de Microsoft référence tous les Well-known SID sur une page :

V. Où trouver les SID sous Windows ?

Sur une machine Windows, il y a plusieurs commandes disponibles pour obtenir des informations sur les SID. Au-delà de la commande whoami évoquée précédemment, il y a aussi les commandes suivantes.

  • Dresser la liste de tous les comptes utilisateurs locaux avec le nom et le SID
Get-CimInstance -Class win32_UserAccount | Format-Table Name,SID
Windows SID avec Get-CimInstance
  • Dresser la liste de tous les groupes locaux avec le nom et le SID
Get-CimInstance -Class win32_Group | Format-Table Name,SID
Lister les groupes avec le SID sous Windows
  • Obtenir le SID d'un utilisateur spécifique, par exemple le compte "Administrateur"
(Get-LocalUser -Name "Administrateur" | Select-Object SID).SID.Value

VI. Conclusion

Suite à la lecture de cet article, vous en savez plus sur la notion de SID ! Que ce soit sur Windows XP, Windows 7, Windows 10, ou encore Windows 11, sans oublier les différentes versions de Windows Server, les SID sont au cœur du fonctionnement de Windows.

Dans un prochain article, nous allons parler des SID dans le contexte d'un annuaire Active Directory ! Dans l'Active Directory, chaque objet est associé à un SID, mais où est-il stocké ? Comment est-il généré ? Etc... Nous répondrons à un ensemble de questions.

author avatar
Florian BURNEL Co-founder of IT-Connect
Ingénieur système et réseau, cofondateur d'IT-Connect et Microsoft MVP "Cloud and Datacenter Management". Je souhaite partager mon expérience et mes découvertes au travers de mes articles. Généraliste avec une attirance particulière pour les solutions Microsoft et le scripting. Bonne lecture.
Partagez cet article Partager sur Twitter Partager sur Facebook Partager sur Linkedin Envoyer par mail

3 commentaires sur “A la découverte des SID sous Windows

  • N’allait pas croire que le SID est …

    Roooh… n’allait… VRAIMENT ?

    Répondre
  • Article comme toujours intéressant et fort bien expliqué.

    petite coquille de correction :
    « N’allait pas croire que le SID est constituée d’une suite aléatoire de chiffres précédée par un « S » ! Bien qu’il peut avoir une longueur variable, il respecte une structure stricte. Prenons l’exemple ci-dessous :  »
    j’aurais plutôt dis :

    N’allez pas croire que le SID est constitué d’une suite aléatoire de chiffres précédée par un « S » ! il respecte une structure stricte mais peut avoir une longueur variable. Prenons l’exemple ci-dessous :

    je ne me pose pas en chantre de la langue française mais il me semble que cela serait mieux avec ma proposition.

    Merci encore pour vos articles toujours riche d’enseignement.

    SaM

    Répondre
    • Hello SaM,

      Merci beaucoup! Heureusement que je me suis relu… Parfois, deux fois ce ne serait pas de trop!
      Je vais mettre à jour l’article en intégrant votre formulation. 🙂

      A+
      Florian

      Répondre

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur comment les données de vos commentaires sont utilisées.