Les utilisateurs de Windows peuvent bénéficier de divers privilèges
Les privilèges déterminent le type d'opérations système qu'un compte utilisateur peut effectuer. Un administrateur attribue des privilèges aux comptes d'utilisateurs et de groupes. Les privilèges de chaque utilisateur incluent ceux accordés à l'utilisateur et aux groupes auxquels l'utilisateur appartient.
Il y a actuellement 35 privilèges. Certains des plus intéressants sont:
- SeSystemtimePrivilege : requis pour modifier l'heure du système.
- SeTimeZonePrivilege : requis pour ajuster le fuseau horaire associé à l'horloge interne de l'ordinateur
- SeBackupPrivilege : ce privilège oblige le système à accorder tout contrôle d'accès en lecture à n'importe quel fichier, quelle que soit la liste de contrôle d'accès (ACL) spécifiée pour le fichier.
- SeCreatePagefilePrivilege : requis pour créer un fichier d' échange .
- SeRemoteShutdownPrivilege : requis pour arrêter un système à l'aide d'une demande réseau.
- SeDebugPrivilege : requis pour déboguer et ajuster la mémoire d'un processus appartenant à un autre compte.
Mais celui qui m'intéresse est:
- SeShutdownPrivilege : requis pour arrêter un système local.
Je remarque que je ne pas vraiment avoir ce privilège. À partir d'une invite de commande élevée:
>whoami /priv
PRIVILEGES INFORMATION
----------------------
Privilege Name Description State
=============================== ========================================= ========
SeIncreaseQuotaPrivilege Adjust memory quotas for a process Disabled
SeSecurityPrivilege Manage auditing and security log Disabled
SeTakeOwnershipPrivilege Take ownership of files or other objects Disabled
...
SeShutdownPrivilege Shut down the system Disabled
...
Cela est confirmé lors de l'utilisation de Process Explorer pour examiner le jeton de sécurité d'un processus élevé s'exécutant en tant que moi:
Et pourtant, je peux arrêter le système. Pourquoi?
La stratégie de groupe dit que je devrais l'avoir
Si vous utilisez le composant logiciel enfichable Éditeur de stratégie de sécurité locale ( secpol.msc
), vous pouvez voir que je devrais avoir le privilège:
secpol.msc
L' explication du privilège:
Arrêtez le système
Ce paramètre de sécurité détermine quels utilisateurs connectés localement à l'ordinateur peuvent arrêter le système d'exploitation à l'aide de la commande Arrêter. Une mauvaise utilisation de ce droit d'utilisateur peut entraîner un déni de service.
Par défaut sur les postes de travail: administrateurs, opérateurs de sauvegarde, utilisateurs.
Par défaut sur les serveurs: administrateurs, opérateurs de sauvegarde.
Par défaut sur les contrôleurs de domaine: administrateurs, opérateurs de sauvegarde, opérateurs de serveur, opérateurs d'impression.
Je suis un utilisateur . Parfois, je suis administrateur et parfois je ne suis pas administrateur .
La question devrait peut-être être de savoir pourquoi je n'ai pas le privilège.
Mais la réalité est que je n'ai pas le privilège; et pourtant, une fois connecté localement, je peux arrêter le système local.
Pourquoi?
@Mehrdad a eu une bonne réponse, qu'il a supprimée, qui, je pense, mérite l'attention et répond à la question de manière claire et succincte:
Vous avez le privilège. Il est simplement désactivé par défaut. Si vous n'aviez pas le privilège, il ne serait pas du tout répertorié .
Notez queSE_PRIVILEGE_REMOVED
c'est différent de manquerSE_PRIVILEGE_ENABLED
ouSE_PRIVILEGE_ENABLED_BY_DEFAULT
.
Lecture bonus
la source
Réponses:
Vous avez l'autorisation, mais elle est désactivée . C'est ce que PowerShell vous dit.
Pour arrêter le système, vous utilisez la fonction Win32API appelée
InitiateSystemShutdown
ouExitWindowsEx
:Ces fonctions notent:
Comme vous pouvez le voir, Windows vérifie les privilèges de thread (tout thread a un jeton avec des privilèges). Si vous appelez
ExitWindowsEx
sans le privilège SE_SHUTDOWN_NAME , la fonction échouera avec l'erreur:Les threads que vous créez par défaut héritent de vos privilèges; mais un programme peut activer un privilège désactivé qui lui a été accordé en utilisant
AdjustTokenPrivileges
:Changer les privilèges dans un jeton dit:
Alors, pourquoi ce privilège est-il désactivé par défaut? Pour vous assurer qu'aucun programme ne peut arrêter Windows par accident. Les candidatures doivent le demander explicitement.
Il y a un livre ancien mais très bon: https://www.amazon.com/Programming-Windows-Security-Keith-Brown/dp/0201604426/ sur tout ça.
la source
C'est parce que votre utilisateur appartient à un groupe qui a ce privilège activé.
Pour voir par vous-même quel (s) groupe (s):
secedit /export /areas USER_RIGHTS /cfg OUTFILE.CFG
.SeShutdownPrivilege
entrée. Vous verrez (devriez) voir quelques / quelques SID pour les utilisateurs et / ou les groupes qui ont ce privilège activé.J'ai donc trois courts SID répertoriés. Les SID courts sont généralement des comptes / groupes de niveau ordinateur. Par exemple, l'un d'eux l'est
S-1-5-32-545
.En utilisant PowerShell, nous pouvons déterminer quel compte / groupe que SID représente:
Cela revient
BUILTIN\Users
.Étant donné que vous êtes un utilisateur de cet ordinateur, vous êtes automatiquement membre de ce groupe, ce qui signifie que vous pouvez arrêter l'ordinateur.
Les deux autres que j'ai sont
S-1-5-32-544
, etS-1-5-32-551
. Ce sont leBUILTIN\Administrators
groupe standard et leBUILTIN\Backup Operators
groupe. Quel alignement avec les groupes que vous voyez dans lasecpol.msc
boîte de dialogue.la source