Lista de cuentas de usuario de Windows ocultas / virtuales

43

Estoy tratando de encontrar una manera de obtener una lista completa de las cuentas de usuario en un sistema Windows 7, incluidas las ocultas. El cuadro de diálogo Cuentas de usuario ( >control userpasswords2) solo muestra las cuentas de usuario normales, e incluso el editor de Grupos y usuarios locales solo muestra las cuentas de usuario normales y las cuentas estándar ocultas / deshabilitadas como Administrador e Invitado. El cuadro de diálogo Seleccionar usuarios o grupos tiene un botón Buscar ahora que combina usuarios y grupos, pero, por desgracia, tiene el mismo contenido que el LUG.

Estoy buscando una lista más completa que incluya cuentas de usuario "super-ocultas" / virtuales como TrustedInstaller (o para ser más precisos, NT Service \ TrustedInstaller: observe el "dominio" diferente).

Lo comprobé HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Winlogon\SpecialAccounts\UserList, pero la SpecialAccountsclave no existe.

También lo verifiqué HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\ProfileList, y aunque tiene las cuentas SystemProfile, LocalService y NetworkService enumeradas, no tiene otras (como TrustedInstaller y su tipo).

TrustedInstaller específicamente es un poco confuso porque es un usuario, un servicio y un archivo ejecutable. Lo estoy usando como ejemplo porque está "súper oculto" ya que no parece estar incluido en ningún tipo de lista de usuarios. (Como experimento, traté de buscar en el registro completo el "instalador de confianza" para ver si podía encontrar un lugar donde figurara como usuario, pero no encontré ninguno).

Para ser claros, lo que estoy buscando es una lista de todos cuentas que se pueden usar en un campo de entrada de usuario, como en diálogos de permisos o como runasargumento.

Synetech
fuente

Respuestas:

42

No creo que haya una lista definitiva de todas las cuentas posibles.

Hay diferentes tipos de nombres que puede usar en el campo de entrada del usuario, como en los cuadros de diálogo de permisos.

Primero están las Win32_Accounts estándar, para obtener una lista completa, abra una sesión de PowerShell y ejecute:

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

Estos son los usuarios habituales, los grupos y las cuentas integradas.

Desde Vista, hay una nueva clase de cuentas, llamadas cuentas virtuales, porque no aparecen en las herramientas de administración habituales. A veces también se llaman cuentas de servicio, y hay al menos tres tipos diferentes de estas:

  • Cuentas de servicio de Windows

Dado que Vista, cada servicio de Windows tiene una cuenta virtual asociada, incluso se ejecuta bajo una cuenta de usuario diferente e incluso si no se ejecuta en absoluto. Parece queNT Service\MSSQLSERVER

Para obtener una lista de esos usos:

get-service | foreach {Write-Host NT Service\$($_.Name)}
  • Grupos de aplicaciones IIS

Cada grupo de aplicaciones IIS que se ejecuta bajo ApplicationPoolIdentity se ejecuta bajo una cuenta especial llamada IIS APPPOOL\NameOfThePool

Suponiendo que tiene instaladas las herramientas de secuencias de comandos de administración de IIS, puede ejecutar:

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

En Server 2008+ y Windows 8+ tiene Hyper-V, cada máquina virtual crea su propia cuenta virtual, que se ve así: NT VIRTUAL MACHINE\1043F032-2199-4DEA-8E69-72031FAA50C5

para obtener una lista use:

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

Aunque estas cuentas no se aceptan en el cuadro de diálogo de permisos, puede usarlas con icacls.exe para establecer permisos.

También hay un grupo especial NT Virtual Machine\Virtual Machines, que no aparece en ningún otro lado. Todas las cuentas de máquinas virtuales son miembros de este grupo, por lo que puede usar esto para establecer permisos para todos los archivos de VM.

Estos nombres son específicos del idioma, por ejemplo, en alemán se llama NT Virtual Machine\Virtuelle Computer

  • Desktop Window Manager

El proceso dvm.exe (Desktop Window Manager) se ejecuta bajo un usuario Windows Manager\DWM-1

Nuevamente, no puede usar este tipo de usuarios en los cuadros de diálogo de permisos. Tampoco es realmente posible enumerarlos porque existe uno para cada 'sesión de escritorio', por lo que cuando usa dos sesiones RDP, también tiene DWM-2y DWM-3además DVM-1. Por lo tanto, hay tantos como escritorios disponibles.

  • Nombres de computadora

En ciertos casos, también puede usar nombres de computadora en el cuadro de diálogo de permisos, generalmente cuando forma parte de un dominio de Active Directory.

  • Usuarios virtuales remotos de Windows

Al usar PowerShell y 'JEA (Just suficiente Administration)' y conectarse a un servidor con una sesión remota PS, se puede crear un usuario virtual temporal.

estos tienen el siguiente formato:

winrm virtual users\winrm va_x_computername_username

y un SID que comienza con S-1-5-94-

la 'x' es un número entero.

Estas cuentas se pueden usar al asignar permisos NTFS, pero no sé cómo enumerar todos estos posibles usuarios virtuales.

Mientras está en una sesión de JEA, puede usar whoamipara averiguar el nombre de la cuenta actual.

  • finalmente:

Incluso estas listas no le dan todas las cuentas posibles.

Por ejemplo, puede crear un grupo de aplicaciones y FooBarPoolluego eliminarlo nuevamente, aún puede usarlo IIS APPPOOL\FooBarPoolen el cuadro de diálogo de permisos, por lo que debe haber una lista interna en alguna parte.

Peter Hahndorf
fuente
¡Muy agradable! La primera consulta devolvió "usuarios" especiales everyone, como restricted, etc., y su discusión de NT Service\*cuentas explica otros como TrustedInstaller. También cubrió casos especiales más exóticos, pero parece que se tienen en cuenta todos los comunes.
Synetech
@Ahmed: ¿qué usuarios? Si tiene un problema, debe crear una nueva pregunta y describir su problema en detalle allí. Este no es el lugar para eso.
Peter Hahndorf
Disculpas, he eliminado mi comentario. Aquí está mi pregunta si tiene curiosidad.
Ahmed
2
Hola, el código de PowerShell para enumerar los usuarios del grupo de aplicaciones IIS no funcionó para mí, así que terminé usando en su Get-WebConfiguration system.applicationHost/applicationPools/addlugar.
Tahir Hassan
Si alguien está interesado en dónde se almacenan esas cuentas huérfanas de IISAppPool, escribí una publicación de blog sobre esto
Peter Hahndorf,
10

Esto se debe a que TrustedInstaller es un servicio y no un objeto "usuario". Con Vista, los Servicios ahora son los principales de seguridad y se les pueden asignar permisos.

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

surfasb
fuente
Si; eso es exactamente de lo que estoy hablando. Estoy buscando una lista completa de cosas a las que se les puede otorgar permisos, ya sean usuarios, servicios o lo que sea que tengan. ¿Existe una lista completa de "principios de seguridad"?
Synetech
No creo que haya una manera de aprovechar las ACL y encontrar una lista COMPLETA de principios de seguridad. No estoy seguro de por qué quiere una lista completa de principios de seguridad en primer lugar. Técnicamente, el Instalador de módulos de Windows (nombre del servicio TRUSTEDINSTALLER) se ejecuta bajo la cuenta del SISTEMA local.
surfasb
44
> No estoy seguro de por qué quieres una lista completa de principios de seguridad en primer lugar. Curiosidad. (¿Alguien tiene eso más en estos días ...?)
Synetech
Puede señalar esa curiosidad hacia la biblioteca MSDN.
surfasb
7
  1. Vaya a cualquier archivo en su disco duro, haga clic derecho y seleccione propiedades.
  2. Vaya a la pestaña de seguridad y haga clic Edit

    editar configuraciones de seguridad

  3. Hacer clic Add...
  4. Hacer clic Advanced...

    seleccionar usuarios o grupos

  5. Haga clic Object Types...y desmarque Groups, luego haga clicOK

    tipos de objeto

  6. Haga clic Find Now. Esto mostrará una lista de todos los usuarios regulares y usuarios del sistema incorporado ("principios de seguridad integrados", como Windows los llama).

    encuentra ahora

Tenga en cuenta que no todas las cuentas que aparecen en esta página se pueden usar en un comando Ejecutar como, aunque todas se pueden usar en un diálogo de permisos.

nhinkle
fuente
44
Estoy familiarizado con ese diálogo, y ya lo mencioné en la pregunta: "buscar ahora". Tenga en cuenta que mientras el "usuario" SYSTEMestá (o al menos debería estar) allí, TrustedInstaller no lo está .
Synetech
Lo sentimos, pensé que te referías al find nowbotón en el panel de control de Usuarios y Grupos, que es similar pero ligeramente diferente. Que yo sepa, la única cuenta que no aparece aquí es TrustedInstaller. Esto se debe a que Microsoft hace todo lo posible para evitar que usted haga algo a / con la cuenta TrustedInstaller. Te haré saber si pienso en alguna otra forma de hacer esto.
nhinkle
Por eso estoy preguntando; Me pregunto qué otros usuarios indocumentados existen ...
Synetech
Hay un artículo de Microsoft TechNet con información sobre la mayoría de ellos, pero TrustedInstaller no está allí. support.microsoft.com/kb/243330
nhinkle
1
no olvide configurarlo Locations...en su computadora si está en un dominio (pero solo quiere su computadora).
n611x007
4

A partir de Windows Vista, los servicios se tratan como usuarios. Es decir, se asigna un Identificador de seguridad (SID) a cada servicio. Esto no es específico del servicio TrustedInstaller . Puede ver el SID asignado a cualquier servicio utilizando el sc showsidcomando:

USO: sc showsid [nombre]

DESCRIPCIÓN : Muestra la cadena SID del servicio correspondiente a un nombre arbitrario. El nombre puede ser el de un servicio existente o inexistente.

Tenga en cuenta que no es necesario que el servicio exista en el sistema. Ejemplos:

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

o, para el servicio Instrumental de administración de Windows ( Winmgmt):

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

y, finalmente, para un servicio falso:

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

Tenga en cuenta que todos los SID comienzan con S-1-5-80, donde 80se asigna a la SECURITY_SERVICE_ID_BASE_RIDsub autoridad. Además, esta asignación es determinista: no se utilizan RID y el SID será el mismo en todos los sistemas (consulte las referencias al final de esta publicación para obtener más información).

Como ejemplo, asignaré el NT Service\Winmgmtservicio, escribo permiso para algún archivo:

ingrese la descripción de la imagen aquí

Windows subraya el nombre Winmgmty confirma que es una identidad válida:

ingrese la descripción de la imagen aquí

Ahora, haga clic en Aceptar y luego asigne el permiso de escritura:

ingrese la descripción de la imagen aquí

Esto confirma que cualquier nombre de servicio puede usarse como identidad de usuario. Por lo tanto, no los llamaría cuentas "ocultas en la cena": D

Para obtener más información, lea los siguientes artículos:

MS Dousti
fuente
1
Muy interesante. ¡Gracias por la información!
Synetech
1

Puede usar la API NetQueryDisplayInformation, combinar con la comprobación de bit a bit en el indicador de información del usuario. Tengo exactamente el mismo requisito, por lo que cocino un código de muestra (modificado de la consulta GRUPO MSDN).

El indicador de usuario que utilicé es UF_NORMAL_ACCOUNT UF_ACCOUNTDISABLE UF_PASSWD_NOTREQD ---> esto garantiza que obtengamos una cuenta humana, la cuenta humana siempre requiere contraseña.

código de trabajo en: http://www.cceye.com/list-system-normal-user-account-only/

usuario3109641
fuente
Expanda su respuesta para contener directamente información relevante a la pregunta en cuestión. Si este enlace deja de funcionar, su respuesta no será tan útil.
Mxx