web-dev-qa-db-fra.com

Est-ce que "NT AUTHORITY \ SYSTEM" est un utilisateur ou un groupe?

Sous Windows, l'utilisateur System s'affiche avec le symbole du groupe: enter image description here . (L'utilisation de l'API Win32 interne LookupAccountSid révèle également qu'il semble s'agir d'un groupe SidTypeGroup .)

D'autre part, les processus peuvent s'exécuter dans le system context comme dans un user context. De plus, les documents Microsoft le décrivent comme "utilisateur système" ou "compte système" et non comme "groupe système".

S'agit-il d'un utilisateur apparaissant en tant que groupe à des fins héritées du passé?

(Ou est-ce quelque chose Werner Heisenberg aurait été intéressé?)


Remarque: Qu'est-ce que l'utilisateur NT AUTHORITY\SYSTEM? est similaire mais ne répond pas à la question pourquoi il est affiché en tant que groupe et se comporte comme un utilisateur.

15
marsh-wiggle

Tout d’abord, le jeton d’accès contient beaucoup plus que l’identifiant de sécurité (SID) . Il suffit de "Exécuter en tant qu'administrateur" un programme pour voir dans le Gestionnaire des tâches que son utilisateur est soi-même et non pas un administrateur. Ce miracle est réalisé simplement en modifiant le jeton d'accès, et non en remplaçant le SID.

Deuxièmement, NT-AUTHORITY et SYSTEM ne sont ni des comptes ni des groupes, malgré ce que disent diverses autres sources (même au sein de Microsoft). Un SID a généralement un nom qui est affiché chaque fois que nécessaire. Un compte d'utilisateur contribuera son identifiant SID en tant qu'identificateur principal au jeton d'accès, qui déterminera également le nom affiché par divers utilitaires. Mais le jeton d'accès peut contenir des SID supplémentaires, par exemple pour tous les groupes auxquels appartient ce compte d'utilisateur. Lors de la vérification des autorisations, Windows recherchera tout SID dans le jeton d'accès disposant de cette autorisation.

Certains noms SID Windows connus auront des noms rapportés par Windows, bien qu'ils n'appartiennent pas à un compte.

Un identifiant de sécurité est défini par Wikipedia comme suit:

identifiant unique et immuable d'un utilisateur, d'un groupe d'utilisateurs ou d'une autre entité de sécurité .

Le SID n'a même pas besoin de définir un compte d'utilisateur ou un groupe. Il définit simplement un ensemble d'autorisations. L'article de Wikipedia ci-dessus ajoute:

Windows accorde ou refuse l'accès et les privilèges aux ressources en fonction des listes de contrôle d'accès (ACL), qui utilisent des identificateurs de sécurité pour identifier de manière unique les utilisateurs et leurs appartenances à des groupes. Lorsqu'un utilisateur se connecte à un ordinateur, un jeton d'accès est généré, qui contient les SID de l'utilisateur et du groupe, ainsi que le niveau de privilège de l'utilisateur. Lorsqu'un utilisateur demande l'accès à une ressource, le jeton d'accès est vérifié par rapport à la liste de contrôle d'accès afin d'autoriser ou de refuser une action particulière sur un objet particulier.

Le SID de NT-AUTHORITY\SYSTEM peut être ajouté à d'autres comptes. Par exemple, ceci est dit à propos du compte LocalSystem :

Le compte LocalSystem est un compte local prédéfini utilisé par le gestionnaire de contrôle de service. [...] Son jeton comprend les SID NT AUTHORITY\SYSTEM et BUILTIN\Administrators; ces comptes ont accès à la plupart des objets système.

On peut déjà voir dans le texte ci-dessus la confusion qui règne même dans la documentation Microsoft en ce qui concerne les SID système, qui ne sont pas exactement des comptes ni des groupes - qui ne sont qu'un ensemble de permissions. Cette confusion s'étend également à d'autres utilitaires et articles, de sorte que toute information retournée doit être soigneusement examinée.

L'article de Microsoft sur les identificateurs de sécurité connus dans les systèmes d'exploitation Windows détaille tous les SID du système, dont certains sont inclus ci-dessous:

image

Conclusion : NT-AUTHORITY\SYSTEM est le nom d'un ID de sécurité, qui n'est ni un groupe ni un compte. Il est affiché dans le Gestionnaire des tâches en tant que SYSTÈME s'il s'agit du SID principal d'un programme. J'appellerais tout au plus "un pseudo compte".

11
harrymc

IMHO votre observation est correcte. NT-AUTHORITY\SYSTEM est un groupe, vous pouvez donc vous y référer en tant que système groupe . Ce groupe existe depuis au moins Windows NT 4 et y a déjà fait partie:

Groupes spéciaux

[...]

Système - Le système d'exploitation.

Il existe également un compte appelé LocalSystem qui

[...] inclut l’autorité NT\SYSTEM [...]

vous pouvez donc appeler cela l'utilisateur système qui est membre du groupe SYSTEM.

SysInternals PsGetSid prend en charge la théorie des groupes pour SYSTEM:

C:\>PsGetsid.exe S-1-5-18

PsGetSid v1.44 - Translates SIDs to names and vice versa
Copyright (C) 1999-2008 Mark Russinovich
Sysinternals - www.sysinternals.com

Account for YOURPCNAMEHERE\S-1-5-18:
Well Known Group: NT-AUTHORITY\SYSTEM

Concernant le début d'un processus en groupe:

Pour gérer la sécurité, un processus obtient un jeton d'accès . Le jeton d'accès contient uniquement des SID. Je ne suis pas sûr s'il y a une vérification si le SID de l'utilisateur est vraiment un utilisateur ou un groupe. En principe, cela n'aurait pas d'importance: le SID définit ce qui peut être consulté. Peut-être que l'article de CodeProject peut aider à la mise en œuvre

7
Thomas Weller