47 votes

Liste des comptes utilisateurs Windows cachés / virtuels

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. Les Comptes d'utilisateurs dialogue ( >control userpasswords2 ) n'affiche que les comptes d'utilisateurs normaux, et même l'option Utilisateur local et groupes n'affiche que les comptes d'utilisateurs normaux et les comptes standard cachés/désactivés tels que Administrateur et Invité. L'éditeur Sélectionner des utilisateurs ou des groupes La boîte de dialogue dispose d'un Trouver maintenant qui combine les utilisateurs et les groupes, mais hélas, il a le même contenu que le LUG.

Je suis à la recherche d'une liste plus complète qui inclurait les comptes d'utilisateurs virtuels ou "super-cachés" comme TrustedInstaller (ou pour être plus précis, Service NT \TrustedInstaller -(remarquez la différence de "domaine").

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

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

TrustedInstaller en particulier est un peu déroutant parce qu'il s'agit d'un utilisateur, d'un service et d'un fichier exécutable. Je l'utilise comme exemple parce qu'il est "super caché" en ce sens qu'il ne semble pas figurer dans une quelconque liste d'utilisateurs. (À titre expérimental, j'ai essayé de rechercher "trustedinstaller" dans l'ensemble du registre pour voir si je pouvais trouver un endroit où il est répertorié en tant qu'utilisateur, mais je n'en ai trouvé aucun).

Pour être clair, je cherche une liste de tous les comptes qui peuvent être utilisés dans un champ de saisie de l'utilisateur, par exemple dans les boîtes de dialogue relatives aux autorisations ou en tant que champ de saisie de l'utilisateur. runas argument.

50voto

Daemin Points 5651

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

Il existe différents types de noms que vous pouvez utiliser dans le champ de saisie de l'utilisateur, par exemple dans les boîtes de dialogue relatives aux autorisations.

Pour obtenir une 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

Il s'agit des utilisateurs habituels, des groupes et des comptes intégrés.

Depuis Vista, il existe une nouvelle catégorie de comptes, appelés comptes virtuels, car ils n'apparaissent pas dans les outils de gestion habituels. Ils sont parfois appelés 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 d'utilisateur différent et que le service est exécuté sous un autre compte d'utilisateur. même s'il ne s'exécute pas du tout. Cela ressemble à NT Service\MSSQLSERVER

Pour obtenir une liste de ces derniers, utilisez :

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

Chaque pool d'applications IIS qui fonctionne sous l'ApplicationPoolIdentity fonctionne sous un compte spécial appelé IIS APPPOOL\NameOfThePool

Si vous avez installé les outils de script de gestion IIS, vous pouvez lancer le programme :

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

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

pour obtenir une liste d'utilisation :

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

Bien que ces comptes ne soient pas acceptés dans la boîte de dialogue des autorisations, vous pouvez les utiliser avec icacls.exe pour définir les autorisations.

Il existe également un groupe spécial NT Virtual Machine\Virtual Machines qui n'apparaît pas ailleurs. Tous les comptes de machines virtuelles sont membres de ce groupe, vous pouvez donc l'utiliser pour définir les autorisations pour tous les fichiers de machines virtuelles.

Ces noms sont spécifiques à chaque langue, par exemple en allemand il s'agit de NT Virtual Machine\Virtuelle Computer

  • Gestionnaire de fenêtres 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'utilisateurs dans les boîtes de dialogue d'autorisation. Il n'est pas non plus possible de les énumérer car il en existe un pour chaque "session de bureau" ; ainsi, lorsque vous utilisez deux sessions RDP, vous avez également DWM-2 y DWM-3 en plus de DVM-1 . Il y en a donc autant qu'il y a d'ordinateurs de bureau disponibles.

  • Noms d'ordinateurs

Dans certains cas, vous pouvez également utiliser des noms d'ordinateurs 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

Lorsque vous utilisez PowerShell et "JEA (Just enough Administration)" et que vous vous connectez à un serveur avec une session distante 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 des autorisations NTFS, mais je ne sais pas comment dresser la liste de tous ces utilisateurs virtuels possibles.

Lors d'une session JEA, vous pouvez utiliser whoami pour connaître l'intitulé du compte courant.

  • enfin :

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

Par exemple, vous pouvez créer un pool d'applications FooBarPool puis le supprimer à nouveau, vous pouvez toujours utiliser IIS APPPOOL\FooBarPool dans la boîte de dialogue des autorisations, il doit donc y avoir une liste interne quelque part.

11voto

Thad Points 725

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

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

8voto

Christian Points 1102
  1. Accédez à n'importe quel fichier sur votre disque dur, cliquez avec le bouton droit de la souris et sélectionnez Propriétés.

  2. Allez dans l'onglet sécurité et cliquez sur Edit

    edit security settings

  3. Cliquez sur Add...

  4. Cliquez sur Advanced...

    select users or groups

  5. Cliquez sur Object Types... et décochez Groups puis cliquez sur OK

    object types

  6. Cliquez sur Find Now . Cette opération permet de dresser la liste de tous les utilisateurs ordinaires et des utilisateurs système intégrés ("principes de sécurité intégrés", comme Windows les appelle).

    find now

Il convient de noter qu'il n'y a pas de todos qui apparaissent sur cette page peuvent être utilisés dans une commande Run-As, bien qu'ils puissent tous être utilisés dans une boîte de dialogue de permissions.

5voto

M.S. Dousti Points 561

À 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 aux TrustedInstaller service. Vous pouvez visualiser le SID attribué à n'importe quel service à l'aide de la fonction sc showsid commandement :

UTILISATION : 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.

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 Instrumentation de gestion de Windows ( 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 で、ここで 80 est affecté à SECURITY_SERVICE_ID_BASE_RID sous-autorité. De plus, cette affectation est déterministe : aucun RID n'est utilisé et le SID sera le même dans tous les systèmes (voir les références à la fin de ce billet pour plus d'informations).

À titre d'exemple, j'attribuerai à la NT Service\Winmgmt service, permission d'écriture sur un fichier :

enter image description here

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

enter image description here

Cliquez ensuite sur OK, puis attribuez le droit d'écriture :

enter image description here

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" :D

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

1voto

user3109641 Points 11

Vous pouvez utiliser l'API NetQueryDisplayInformation, en la combinant avec une vérification bit à bit sur le drapeau d'information de l'utilisateur. J'ai exactement le même besoin et j'ai donc préparé un exemple de code (modifié à partir de la requête GROUP de MSDN).

Les drapeaux utilisateur que j'ai utilisés sont UF_NORMAL_ACCOUNT UF_ACCOUNTDISABLE UF_PASSWD_NOTREQD ---> cela permet de s'assurer que nous obtenons un compte humain, et que ce compte humain nécessite toujours un mot de passe.

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

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X