Liste des comptes d'utilisateurs Windows masqués / virtuels

44

J'essaie de trouver un moyen d'obtenir une liste complète des comptes d'utilisateurs sur un système Windows 7, y compris les comptes cachés. La boîte de dialogue Comptes d'utilisateurs ( >control userpasswords2) affiche uniquement les comptes d'utilisateur normaux. Même l' éditeur Editeur d' utilisateurs et groupes locaux n'affiche que les comptes d'utilisateur normaux et les comptes cachés / désactivés standard tels que Administrateur et Invité. La boîte de dialogue Sélectionner des utilisateurs ou des groupes comporte un bouton Rechercher maintenant qui regroupe des utilisateurs et des groupes, mais hélas, son contenu est identique à celui du LUG.

Je recherche une liste plus complète incluant des comptes d’utilisateur «super cachés» / virtuels, tels que TrustedInstaller (ou, pour être plus précis, NT Service \ TrustedInstaller - notez les différents «domaines»).

J'ai vérifié HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList, mais la SpecialAccountsclé n'existe pas.

J'ai également vérifié HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList, et même si les comptes SystemProfile, LocalService et NetworkService sont répertoriés, il n'en a pas d'autres (comme TrustedInstaller et ses semblables).

TrustedInstaller est particulièrement déroutant car il s’agit d’un utilisateur, d’un service et d’un fichier exécutable. Je l'utilise comme exemple car il est «super caché» en ce sens qu'il ne semble pas figurer dans une liste d'utilisateurs. (A titre expérimental, j’ai essayé de chercher dans le registre entier «d confiance» pour savoir si je pouvais trouver un endroit où il est répertorié comme utilisateur, mais je n’en ai trouvé aucun.)

Pour être clair, je cherche une liste de tous les comptes pouvant être utilisés dans un champ de saisie utilisateur, par exemple dans les boîtes de dialogue des autorisations ou en tant runasqu'argument.

Synetech
la source

Réponses:

43

Je ne pense pas qu'il existe une liste ultime de tous les comptes possibles.

Vous pouvez utiliser différents types de noms dans le champ de saisie utilisateur, tels que dans les boîtes de dialogue des autorisations.

En premier lieu, les comptes Win32_Accounts standard. Pour obtenir la liste complète, ouvrez une session PowerShell et exécutez:

get-wmiobject -class "win32_account" -namespace "root\cimv2" | sort caption | format-table caption, __CLASS, FullName

Ce sont les utilisateurs habituels, les groupes et les comptes intégrés.

Depuis Vista, il existe une nouvelle classe de comptes, appelés comptes virtuels, car ils n'apparaissent pas dans les outils de gestion habituels. On appelle parfois aussi des comptes de service, et il en existe au moins trois types différents:

  • Comptes de service Windows

Depuis Vista, chaque service Windows est associé à un compte virtuel, même s’il s’exécute sous un compte utilisateur différent et même s’il ne fonctionne pas du tout. Ça ressemble àNT Service\MSSQLSERVER

Pour obtenir une liste de ces utilisations:

get-service | foreach {Write-Host NT Service\$($_.Name)}
  • Pools d'applications IIS

Chaque pool d'applications IIS qui s'exécute sous ApplicationPoolIdentity s'exécute sous un compte spécial appelé IIS APPPOOL\NameOfThePool

En supposant que les outils de script de gestion IIS soient installés, vous pouvez exécuter:

Get-WebConfiguration system.applicationHost/applicationPools/* /* | where {$_.ProcessModel.identitytype -eq 'ApplicationPoolIdentity'} | foreach {Write-Host IIS APPPOOL\$($_.Name)}
  • Machines virtuelles Hyper-V

Sur le serveur 2008+ et Windows 8+, vous avez Hyper-V, chaque ordinateur virtuel crée son propre compte virtuel, qui ressemble à ceci: NT VIRTUAL MACHINE\1043F032-2199-4DEA-8E69-72031FAA50C5

pour obtenir une liste, utilisez:

get-vm | foreach {Write-Host NT VIRTUAL MACHINE\$($_.Id) - $($_.VMName)}

Même si ces comptes ne sont pas acceptés dans la boîte de dialogue des autorisations, vous pouvez les utiliser avec icacls.exe pour définir des autorisations.

Il y a aussi un groupe spécial NT Virtual Machine\Virtual Machines, qui ne se présente pas ailleurs. Tous les comptes de machine virtuelle sont membres de ce groupe. Vous pouvez donc l'utiliser pour définir des autorisations pour tous les fichiers de machine virtuelle.

Ces noms sont spécifiques à une langue. Par exemple, en allemand, il est nommé NT Virtual Machine\Virtuelle Computer

  • Gestionnaire de fenêtre de bureau

Le processus dvm.exe (Desktop Window Manager) s’exécute sous un utilisateur Windows Manager\DWM-1

Là encore, vous ne pouvez pas utiliser ce type d’utilisateur dans les boîtes de dialogue des autorisations. Il n'est pas vraiment possible de les énumérer non plus, car il en existe une pour chaque "session de bureau". Par conséquent, lorsque vous utilisez deux sessions RDP, vous en avez également DWM-2et DWM-3en plus DVM-1. Donc, il y en a autant qu'il y a de bureaux disponibles.

  • Noms d'ordinateur

Dans certains cas, vous pouvez également utiliser des noms d'ordinateur dans la boîte de dialogue des autorisations, généralement lorsque vous faites partie d'un domaine Active Directory.

  • Utilisateurs virtuels de Windows Remoting

Lors de l'utilisation de PowerShell et de 'JEA (administration juste suffisante)' et de la connexion à un serveur avec une session à distance PS, un utilisateur virtuel temporaire peut être créé.

ceux-ci ont le format suivant:

winrm virtual users\winrm va_x_computername_username

et un SID qui commence par S-1-5-94-

le 'x' est un nombre entier.

Ces comptes peuvent être utilisés lors de l'attribution d'autorisations NTFS, mais je ne sais pas comment répertorier tous ces utilisateurs virtuels possibles.

Pendant une session JEA, vous pouvez utiliser whoamile nom du compte actuel.

  • enfin:

Même ces listes ne vous donnent pas tous les comptes possibles.

Par exemple, vous pouvez créer un pool d'applications, FooBarPoolpuis le supprimer à nouveau. Vous pouvez toujours l'utiliser IIS APPPOOL\FooBarPooldans la boîte de dialogue des autorisations. Il doit donc exister une liste interne quelque part.

Peter Hahndorf
la source
Très agréable! La première requête a retourné « utilisateurs » spéciaux comme everyone, restricted, etc., et la discussion des NT Service\*comptes explique d' autres comme TrustedInstaller. Vous avez également couvert des cas spéciaux plus exotiques, mais il semble que tous les cas courants soient pris en compte.
Synetech
@Ahmed - quels utilisateurs? Si vous avez un problème, vous devriez créer une nouvelle question et décrire votre problème en détail. Ce n'est pas l'endroit pour ça.
Peter Hahndorf
Toutes mes excuses, j'ai supprimé mon commentaire. Voici ma question si curieux.
Ahmed
3
Bonjour, le code PowerShell permettant de répertorier les utilisateurs du pool d'applications IIS ne fonctionnait pas pour moi. J'ai donc fini par l'utiliser Get-WebConfiguration system.applicationHost/applicationPools/add.
Tahir Hassan
1
Très bonne réponse. Vous trouverez
CJBS du
10

En effet, TrustedInstaller est un service et non un objet "utilisateur". Avec Vista, les services sont désormais des entités de sécurité et des autorisations peuvent être attribuées.

http://technet.microsoft.com/en-us/magazine/2007.06.acl.aspx

surfasb
la source
Oui; c'est exactement ce dont je parle. Je recherche une liste complète des éléments auxquels des autorisations peuvent être accordées, qu'il s'agisse d'utilisateurs, de services ou autres. Existe-t-il une liste complète des «responsables de la sécurité»?
Synetech
Je ne pense pas qu'il soit possible de puiser dans les ACL et de trouver une liste COMPLETE de principes de sécurité. Je ne suis pas sûr de savoir pourquoi vous voulez une liste complète des principaux de sécurité. Techniquement, le programme d'installation de modules Windows (nom de service de TRUSTEDINSTALLER) s'exécute sous le compte système local.
surfasb
4
> Je ne sais pas pourquoi vous voulez une liste complète des entités de sécurité. Curiosité. (Est-ce que quelqu'un a plus ça ces jours-ci…?)
Synetech
Vous pouvez diriger cette curiosité vers la bibliothèque MSDN.
surfasb
7
  1. Accédez à n’importe quel fichier de votre disque dur, cliquez avec le bouton droit de la souris et sélectionnez Propriétés.
  2. Allez sur l'onglet sécurité et cliquez sur Edit

    modifier les paramètres de sécurité

  3. Cliquez sur Add...
  4. Cliquez sur Advanced...

    sélectionner des utilisateurs ou des groupes

  5. Cliquez Object Types...et décochez Groups, puis cliquez surOK

    types d'objet

  6. Cliquez sur Find Now. Ceci listera tous les utilisateurs réguliers et les utilisateurs du système intégré ("principes de sécurité intégrés", comme les appelle Windows).

    trouve maintenant

Notez que tous les comptes apparaissant sur cette page ne peuvent pas être utilisés dans une commande Run-As, bien qu'ils puissent tous l'être dans une boîte de dialogue d'autorisations.

ne pas penser
la source
4
Je connais ce dialogue et je l’ai déjà mentionné dans la question: «trouver maintenant». Notez que bien que "l'utilisateur" SYSTEMsoit (ou du moins devrait l'être), TrustedInstaller ne l' est pas .
Synetech
Désolé, je pensais que vous faisiez référence au find nowbouton du panneau de configuration Utilisateurs et groupes, qui est similaire mais légèrement différent. À ma connaissance, le seul compte qui n'apparaît pas ici est TrustedInstaller. En effet, Microsoft s’efforce de vous empêcher de faire quoi que ce soit avec / avec le compte TrustedInstaller. Je vous ferai savoir si je pense à d'autres moyens de le faire.
nhinkle
C'est pourquoi je demande. Je me demande quels autres utilisateurs non documentés existent…
Synetech,
Il existe un article Microsoft TechNet contenant des informations sur la plupart d'entre eux, mais TrustedInstaller n'y est pas. support.microsoft.com/kb/243330
nhinkle
1
N'oubliez pas de configurer Locations...votre ordinateur si vous êtes dans un domaine (mais souhaitez uniquement utiliser votre ordinateur).
n611x007
4

À partir de Windows Vista, les services sont traités comme des utilisateurs. C'est-à-dire qu'un identifiant de sécurité (SID) est attribué à chaque service. Ceci n'est pas spécifique au service TrustedInstaller . Vous pouvez afficher le SID attribué à n'importe quel service à l'aide de la sc showsidcommande:

USAGE: sc showsid [nom]

DESCRIPTION : Affiche la chaîne SID du service correspondant à un nom arbitraire. Le nom peut être celui d'un service existant ou non existant.

Notez qu'il n'est pas nécessaire que le service existe sur le système. Exemples:

C:\> sc showsid TrustedInstaller
NAME: TrustedInstaller
SERVICE SID: S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464

ou, pour le service Windows Management Instrumentation ( Winmgmt):

C:\> sc showsid Winmgmt
NAME: Winmgmt
SERVICE SID: S-1-5-80-3750560858-172214265-3889451188-1914796615-4100997547

et, enfin, pour un faux service:

C:\> sc showsid FakeService
NAME: FakeService
SERVICE SID: S-1-5-80-3664595232-2741676599-416037805-3299632516-2952235698

Notez que tous les SID commencent par S-1-5-80, où 80est attribué à une SECURITY_SERVICE_ID_BASE_RIDsous-autorité. De plus, cette affectation est déterministe: aucun RID n’est utilisé et le SID sera le même sur tous les systèmes (voir les références à la fin de ce post pour plus d’informations).

À titre d'exemple, je vais attribuer le NT Service\Winmgmtservice, l'autorisation d'écriture à un fichier:

entrez la description de l'image ici

Windows souligne le nom Winmgmt, confirmant qu'il s'agit d'une identité valide:

entrez la description de l'image ici

Maintenant, cliquez sur OK, puis attribuez l'autorisation d'écriture:

entrez la description de l'image ici

Cela confirme que tout nom de service peut être utilisé comme identité d'utilisateur. Par conséquent, je ne les appellerais pas des comptes "cachés au souper": D

Pour plus d'informations, veuillez lire les articles suivants:

MS Dousti
la source
1
Très intéressant. Merci pour l'information!
Synetech
1

Vous pouvez utiliser l'API NetQueryDisplayInformation, combiner avec la vérification au niveau du bit sur l'indicateur d'informations utilisateur. J'ai exactement les mêmes exigences, je prépare donc un exemple de code (modifié à partir d'une requête MSDN GROUP).

Les indicateurs utilisateur que j'ai utilisés sont UF_NORMAL_ACCOUNT UF_ACCOUNTDISABLE UF_PASSWD_NOTREQD ---> nous garantissons que nous obtenons un compte humain. Ce compte humain requiert toujours un mot de passe.

code de travail à: http://www.cceye.com/list-system-normal-user-account-only/

utilisateur3109641
la source
Veuillez développer votre réponse pour qu'elle contienne directement des informations pertinentes pour la question à traiter. Si ce lien cesse de fonctionner, votre réponse ne sera pas aussi utile.
Mxx