NT AUTHORITY \ SYSTEM - это пользователь или группа?

17

В Windows пользователь Systemотображается с символом группы: введите описание изображения здесь. (Использование внутреннего Win32 API LookupAccountSid также показывает, что это, похоже, группа SidTypeGroup .)

С другой стороны, процессы могут выполняться system contextаналогично в user context. Также документы Microsoft описывают его как «системный пользователь» или «системная учетная запись», а не как «системная группа».

Это пользователь, который для каких-либо устаревших целей отображается как группа?

(Или это было бы интересно Вернеру Гейзенбергу ?)


Примечание. Что такое пользователь NT AUTHORITY \ SYSTEM? похоже, но не отвечает на вопрос, почему он отображается как группа и ведет себя как пользователь.

болотно-покачивания
источник
Это может быть ответ на ваш? вопрос здесь: superuser.com/questions/471769/…
XsiSec
Вы правы, мои плохие извинения
XsiSec
SID не должны быть ни одним из них, не так ли?
user1686

Ответы:

13

Во-первых, токен доступа содержит гораздо больше, чем идентификатор безопасности (SID) . Нужно только «Запустить от имени администратора» программу, чтобы увидеть в диспетчере задач, что ее пользователь является самим собой, а не администратором, и это чудо достигается просто путем изменения токена доступа, а не путем замены SID.

Во-вторых, NT-AUTHORITY и SYSTEM не являются ни учетными записями, ни группами, несмотря на то, что говорят различные другие источники (даже внутри Microsoft). У SID обычно есть имя, которое отображается при необходимости. Учетная запись пользователя будет предоставлять свой SID в качестве основного SID для токена доступа, который также будет определять имя, отображаемое различными утилитами. Но токен доступа может содержать дополнительные SID, например, для всех групп, к которым принадлежит эта учетная запись пользователя. При проверке разрешений Windows будет искать любой SID в маркере доступа, который имеет это разрешение.

Некоторые известные Windows SID будут иметь имена, сообщаемые Windows, хотя на самом деле они не принадлежат какой-либо учетной записи.

Идентификатор безопасности определяется Википедии как:

уникальный неизменяемый идентификатор пользователя, группы пользователей или другого участника безопасности .

SID не должен даже определять учетную запись пользователя или группу. Он просто определяет набор разрешений. Вышеупомянутая статья Википедии добавляет:

Windows предоставляет или запрещает доступ и привилегии к ресурсам на основе списков контроля доступа (ACL), которые используют SID для уникальной идентификации пользователей и их членства в группах. Когда пользователь входит в систему, генерируется токен доступа, который содержит SID пользователя и группы и уровень привилегий пользователя. Когда пользователь запрашивает доступ к ресурсу, токен доступа сверяется с ACL, чтобы разрешить или запретить конкретное действие с конкретным объектом.

SID NT-AUTHORITY\SYSTEMможет быть добавлен к другим учетным записям. Например, это сказано об учетной записи LocalSystem :

Учетная запись LocalSystem является предопределенной локальной учетной записью, используемой диспетчером управления службами. [...] Его токен включает идентификаторы NT AUTHORITY \ SYSTEM и BUILTIN \ Administrators; эти учетные записи имеют доступ к большинству системных объектов.

В приведенном выше тексте уже можно увидеть путаницу, которая царит даже в документации Microsoft относительно системных идентификаторов безопасности, которые не являются ни учетными записями, ни группами, а представляют собой просто набор разрешений. Эта путаница распространяется и на другие утилиты и статьи, поэтому любая возвращенная информация должна быть тщательно изучена.

В статье Microsoft « Известные идентификаторы безопасности в операционных системах Windows» подробно описаны все системные идентификаторы безопасности, некоторые из которых я приведу ниже:

образ

Вывод : NT-AUTHORITY \ SYSTEM - это имя идентификатора безопасности, который не является ни группой, ни учетной записью. Он отображается в диспетчере задач как СИСТЕМА, когда он является основным SID программы. Максимум, что я бы назвал, это «псевдо-счет».

harrymc
источник
1
Ты побил меня этим, мой друг. Я наполовину написал аналогичный ответ, когда пришел ваш ответ. Это правильное объяснение. Это просто набор разрешений, и то, отображается ли оно как группа или пользователь, неверно. Так как большинство инструментов могут показывать только «пользователя или« группу », они просто выбирают одно или другое. Обычно группа, поскольку API-интерфейс WIn32 устанавливает SidTypeGroup соответствующим образом, и именно поэтому большинство приложений получают информацию.
Тонни
Вот это да! Я получаю вознаграждение, чтобы вознаградить существующий ответ, и что происходит? Лучший ответ появляется. :-) Один вопрос, хотя: есть ли у учетной записи LocalSystem также свой собственный («учетная запись») SID или она просто использует NT-AUTHORTY \ SYSTEM SID в качестве основного SID?
Хайнци
1
@Heinzi: LocalSystem - это еще одна «псевдо-учетная запись». Это можно увидеть по ссылке, которая гласит: «Эта учетная запись не распознается подсистемой безопасности, поэтому вы не можете указать ее имя при вызове функции LookupAccountName».
harrymc
- which are just a set of permissions: что относится к системным идентификаторам или к учетным записям или группам ?
Рене Ниффенеггер
@ RenéNyffenegger: оба.
harrymc
7

ИМХО ваши наблюдения верны. NT-AUTHORITY\SYSTEMэто группа, так что вы можете называть ее системной группой . Эта группа существует, по крайней мере, начиная с Windows NT 4, и уже была там:

Специальные группы

[...]

Система - операционная система.

Существует также учетная запись под названием LocalSystem, которая

[...] включает NT AUTHORITY \ SYSTEM [...]

так что вы можете назвать это системным пользователем, который является членом группы SYSTEM.

SysInternals PsGetSid поддерживает теорию групп для 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

Относительно начала процесса как группы:

Для управления безопасностью процесс получает токен доступа . Маркер доступа содержит только SID. Я не уверен, есть ли проверка, является ли SID пользователя действительно пользователем или группой. В принципе это не имеет значения: SID определяет, к чему можно получить доступ. Возможно, статья CodeProject может помочь с реализацией

Томас Веллер
источник