"NT AUTHORITY \ SYSTEM" é um usuário ou grupo?

17

No Windows, o usuário Systemé exibida com o símbolo do grupo: insira a descrição da imagem aqui. (O uso da API Win32 interna LookupAccountSid também revela que parece ser um grupo SidTypeGroup .)

Por outro lado, os processos podem ser executados da system contextmesma maneira em a user context. Os documentos da Microsoft também o descrevem como "usuário do sistema" ou "conta do sistema" e não como "grupo do sistema".

É um usuário para finalidades herdadas exibido como grupo?

(Ou é algo em que Werner Heisenberg estaria interessado?)


Nota: O que é o usuário NT AUTHORITY \ SYSTEM? é semelhante, mas não responde à pergunta por que é exibido como grupo e se comporta como um usuário.

marsh-wiggle
fonte
Talvez isso responda a sua? pergunta aqui: superuser.com/questions/471769/…
XsiSec 19/04/2016
Você está certo meu mau desculpas
XsiSec
Os SIDs não precisam ser um desses, precisam?
user1686

Respostas:

13

Primeiro, o token de acesso contém muito mais que o identificador de segurança (SID) . Só é necessário "Executar como administrador" um programa para ver no Gerenciador de Tarefas que seu usuário é ele mesmo e não o Administrador, e esse milagre é alcançado apenas pela modificação do token de acesso, não substituindo o SID.

Segundo, NT-AUTHORITY e SYSTEM não são contas nem grupos, apesar do que dizem várias outras fontes (mesmo dentro da Microsoft). Um SID geralmente tem um nome que é exibido sempre que necessário. Uma conta de usuário contribuirá com seu SID como principal SID para o token de acesso, que também determinará o nome exibido por vários utilitários. Mas o token de acesso pode conter SIDs adicionais, por exemplo, para todos os grupos aos quais pertence essa conta de usuário. Ao verificar as permissões, o Windows procurará qualquer SID no token de acesso que tenha essa permissão.

Alguns SIDs conhecidos do Windows terão nomes relatados pelo Windows, embora não pertençam a nenhuma conta.

Um identificador de segurança é definido pela Wikipedia como:

um identificador único e imutável de um usuário, grupo de usuários ou outro objeto de segurança .

O SID nem precisa definir uma conta de usuário ou um grupo. Apenas define um conjunto de permissões. O artigo da Wikipedia acima acrescenta:

O Windows concede ou nega acesso e privilégios a recursos com base em ACLs (listas de controle de acesso), que usam SIDs para identificar exclusivamente usuários e membros de seus grupos. Quando um usuário faz login no computador, é gerado um token de acesso que contém SIDs de usuário e grupo e nível de privilégio do usuário. Quando um usuário solicita acesso a um recurso, o token de acesso é verificado na ACL para permitir ou negar uma ação específica em um objeto específico.

O SID de NT-AUTHORITY\SYSTEMpode ser adicionado a outras contas. Por exemplo, isso é dito sobre a conta LocalSystem :

A conta LocalSystem é uma conta local predefinida usada pelo gerente de controle de serviço. [...] Seu token inclui os SIDs NT AUTHORITY \ SYSTEM e BUILTIN \ Administrators; essas contas têm acesso à maioria dos objetos do sistema.

Já se pode ver no texto acima a confusão que reina mesmo na documentação da Microsoft em relação aos SIDs do sistema, que não são exatamente contas nem grupos - que são apenas um conjunto de permissões. Essa confusão se estende ainda a outros utilitários e artigos; portanto, qualquer informação retornada deve ser cuidadosamente examinada.

O artigo da Microsoft Identificadores de segurança conhecidos nos sistemas operacionais Windows detalha todos os SIDs do sistema, alguns dos quais eu incluo abaixo:

imagem

Conclusão : NT-AUTHORITY \ SYSTEM é o nome de um ID de segurança, que não é um grupo nem uma conta. Ele é exibido no Gerenciador de tarefas como SYSTEM quando é o principal SID de um programa. O máximo que eu chamaria de "pseudo conta".

harrymc
fonte
1
Você me venceu, meu amigo. Eu estava no meio da escrita de uma resposta semelhante quando a sua resposta chegou. Esta é a explicação correta. É apenas uma coleção de permissões e se é exibido como um grupo ou como um usuário está errado. Como a maioria das ferramentas pode mostrar apenas "usuário ou" grupo ", elas apenas escolhem um ou outro. Geralmente, agrupe como a API WIn32 define o SidTypeGroup de acordo e é para isso que a maioria dos aplicativos obtém suas informações.
Tonny
Uau! Começo uma recompensa para recompensar uma resposta existente, e o que acontece? Uma resposta melhor aparece. :-) Porém, uma pergunta: a conta LocalSystem também possui seu próprio SID ("account") ou simplesmente usa o NT-AUTHORTY \ SYSTEM SID como seu principal SID?
Heinzi #
1
@ Heinzi: LocalSystem é outra "pseudo conta". Pode-se ver isso no link que diz: "Esta conta não é reconhecida pelo subsistema de segurança, portanto, você não pode especificar seu nome em uma chamada para a função LookupAccountName".
precisa saber é
- which are just a set of permissions: o que se refere às IDs do sistema ou às contas ou grupos ?
René Nyffenegger 4/06/19
@ RenéNyffenegger: Ambos.
harrymc
7

IMHO sua observação está correta. NT-AUTHORITY\SYSTEMé um grupo, portanto, você pode se referir a ele como o grupo do sistema . Este grupo existe desde o Windows NT 4, pelo menos, e já foi um grupo lá:

Grupos Especiais

[...]

Sistema - O sistema operacional.

Há também uma conta chamada LocalSystem que

[...] inclui o NT AUTHORITY \ SYSTEM [...]

para que você possa chamar esse usuário do sistema que é membro do grupo SYSTEM.

SysInternals PsGetSid suporta a teoria de grupos 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

Em relação ao início de um processo como um grupo:

Para gerenciar a segurança, um processo obtém um token de acesso . O token de acesso contém apenas SIDs. Não tenho certeza se há uma verificação se o SID do usuário é realmente um usuário ou um grupo. Em princípio, isso não importaria: o SID define o que pode ser acessado. Talvez o artigo do CodeProject possa ajudar na implementação

Thomas Weller
fonte