¿Es "NT AUTHORITY \ SYSTEM" un usuario o un grupo?

17

En Windows el usuario Systemse muestra con el símbolo del grupo: ingrese la descripción de la imagen aquí. (El uso de la API interna Win32 LookupAccountSid también revela que parece ser un grupo SidTypeGroup ).

Por otro lado, los procesos pueden ejecutarse de forma system contextsimilar en a user context. También los documentos de Microsoft lo describen como "usuario del sistema" o "cuenta del sistema", y no como "grupo del sistema".

¿Es un usuario que se muestra como grupo para fines heredados?

(¿O es algo en lo que Werner Heisenberg habría estado interesado?)


Nota: ¿Qué es el usuario NT AUTHORITY \ SYSTEM? es similar pero no responde la pregunta de por qué se muestra como grupo y se comporta como un usuario.

meneo de pantano
fuente
Esto tal vez responda su pregunta aquí: superuser.com/questions/471769/...
XsiSec
Tienes razón, mi mala disculpa
XsiSec
Los SID no tienen que ser ninguno de esos, ¿verdad?
user1686

Respuestas:

13

Primero, el token de acceso contiene mucho más que el identificador de seguridad (SID) . Uno solo tiene que "Ejecutar como administrador" un programa para ver en el Administrador de tareas que su usuario es uno mismo y no Administrador, y este milagro se logra simplemente modificando el token de acceso, no reemplazando el SID.

En segundo lugar, NT-AUTHORITY y SYSTEM no son cuentas ni grupos, a pesar de lo que dicen otras fuentes (incluso dentro de Microsoft). Un SID generalmente tiene un nombre que se muestra cuando es necesario. Una cuenta de usuario contribuirá con su SID como SID principal al token de acceso, que también determinará el nombre que muestran varias utilidades. Pero el token de acceso puede contener SID adicionales, por ejemplo, para todos los grupos a los que pertenece esa cuenta de usuario. Al verificar los permisos, Windows buscará cualquier SID en el token de acceso que tenga ese permiso.

Algunos SID de Windows conocidos tendrán nombres informados por Windows, aunque en realidad no pertenecen a ninguna cuenta.

Wikipedia define un identificador de seguridad como:

un identificador único e inmutable de un usuario, grupo de usuarios u otra entidad de seguridad .

El SID ni siquiera necesita definir una cuenta de usuario o un grupo. Simplemente define un conjunto de permisos. El artículo de Wikipedia anterior agrega:

Windows otorga o niega el acceso y los privilegios a los recursos basados ​​en listas de control de acceso (ACL), que usan SID para identificar de manera única a los usuarios y sus pertenencias a grupos. Cuando un usuario inicia sesión en una computadora, se genera un token de acceso que contiene los SID de usuario y grupo y el nivel de privilegio de usuario. Cuando un usuario solicita acceso a un recurso, el token de acceso se compara con la ACL para permitir o denegar una acción particular sobre un objeto en particular.

El SID de NT-AUTHORITY\SYSTEMse puede agregar a otras cuentas. Por ejemplo, esto se dice sobre la cuenta LocalSystem :

La cuenta LocalSystem es una cuenta local predefinida utilizada por el administrador de control de servicios. [...] Su token incluye NT AUTHORITY \ SYSTEM y BUILTIN \ Administrators SIDs; Estas cuentas tienen acceso a la mayoría de los objetos del sistema.

Ya se puede ver en el texto anterior la confusión que reina incluso en la documentación de Microsoft con respecto a los SID del sistema, que no son exactamente cuentas ni grupos, que son solo un conjunto de permisos. Esta confusión se extiende aún más a otras utilidades y artículos, por lo que cualquier información devuelta debe ser cuidadosamente examinada.

El artículo de Microsoft Los identificadores de seguridad conocidos en los sistemas operativos Windows detallan todos los SID del sistema, algunos de los cuales incluyo a continuación:

imagen

Conclusión : NT-AUTHORITY \ SYSTEM es el nombre de un ID de seguridad, que no es un grupo ni una cuenta. Se muestra en el Administrador de tareas como SISTEMA cuando es el SID principal de un programa. Lo máximo que lo llamaría es "una pseudo cuenta".

harrymc
fuente
1
Me ganaste mi amigo. Estaba a mitad de camino de escribir una respuesta similar cuando llegó su respuesta. Esta es la explicación adecuada. Es solo una colección de permisos y si se muestra como un grupo o como un usuario es incorrecto. Como la mayoría de las herramientas sólo pueden mostrar ya sea "usuario o 'grupo' que acaba de elegir uno o el otro grupo lo general, como los conjuntos de API Win32 SidTypeGroup en consecuencia y que es la mayoría de aplicaciones se obtienen su información de..
Tonny
¡Guauu! Comienzo una recompensa para recompensar una respuesta existente, ¿y qué sucede? Aparece una mejor respuesta. :-) Sin embargo, una pregunta: ¿la cuenta LocalSystem también tiene su propio SID ("cuenta") o simplemente usa el NT-AUTHORTY \ SYSTEM SID como su SID principal?
Heinzi
1
@Heinzi: LocalSystem es otra "pseudo cuenta". Uno puede ver esto en el enlace que dice: "Esta cuenta no es reconocida por el subsistema de seguridad, por lo que no puede especificar su nombre en una llamada a la función LookupAccountName".
harrymc 05 de
- which are just a set of permissions: ¿el que se refiere a las ID del sistema o a las cuentas o grupos ?
René Nyffenegger
@ RenéNyffenegger: Ambos.
harrymc
7

En mi humilde opinión, su observación es correcta. NT-AUTHORITY\SYSTEMes un grupo, por lo que podría referirse a él como el grupo del sistema . Este grupo existe desde Windows NT 4 al menos y ya ha sido un grupo allí:

Grupos especiales

[...]

Sistema: el sistema operativo.

También hay una cuenta llamada LocalSystem que

[...] incluye NT AUTHORITY \ SYSTEM [...]

así que podría llamar a esto el usuario del sistema que es miembro del grupo SYSTEM.

SysInternals PsGetSid apoya la teoría de grupo para 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

Con respecto al inicio de un proceso como grupo:

Para administrar la seguridad, un proceso obtiene un token de acceso . El token de acceso contiene solo SID. No estoy seguro de si hay una comprobación de si el SID del usuario es realmente un usuario o un grupo. En principio no importaría: el SID define a qué se puede acceder. Quizás el artículo de CodeProject pueda ayudar con la implementación

Thomas Weller
fuente