Windows SID -идентификаторы безопасности

Кирилл

Команда форума
Администратор
Сообщения
13,846
Реакции
6,188
Баллы
913
Поговорим о SID :smoke:


  • Что такое SID?
  • Для чего нужны SID?
  • Какие SID бывают?
  • Общая информация


Что такое SID?
(Security ID — SID).


В сети я видел десятки определений,которые словно списаны как на диктанте у какого то отличника в классе.
Sid (Security IDentifier) это идентификатор безопасности учетных записей пользователей. Каждый пользователь имеет свой уникальный SID, который имеет буквенно-цифровое обозначение.
Но мои долгие странствия в Сети привели меня к выводу,что это куда более интересная и информативная штуковина.
И сдается мне что определение дано не верно,но никто особо не пытается понять что к чему и это заблуждение проросло в сети,как мокрица на гряде...

Давние труды Рихтера и Кларка отчасти помогли мне разобраться с этой задачей.

Давайте попробуем "прочитать" SID.

В этом нам поможет редактор реестра или командная строка (cmd) с замечательной командой WHOAMI.
(Команда доступна в операционных системах Windows, начиная с Vista.)
Три способа выполнения WhoAmI:

Синтаксис 1:
WHOAMI [/UPN | /FQDN | /LOGONID]

Синтаксис 2:
WHOAMI { [/USER] [/GROUPS] [/PRIV] } [/FO <формат>] [/NH]

Синтаксис 3:
WHOAMI /ALL [/FO <формат>] [/NH]

Описание:
Эту программу можно использовать для получения сведений об имени
пользователя и группе, а также о соответствующих идентификаторах
безопасности (SID), привилегиях, идентификаторах входа (ID) текущего
пользователя (токене доступа) на локальном компьютере, т.е. для
определения текущего пользователя. Если параметр не указан, имя
пользователя отображается в формате NTLM (домен\пользователь).

Параметры:
/UPN Отображение имени пользователя в формате
имени участника-пользователя (UPN).

/FQDN Отображение имени пользователя в формате
полного доменного имени (FQDN).

/USER Отображение сведений о текущем пользователе
вместе с идентификатором безопасности (SID).

/GROUPS Отображение для текущего пользователя членства
в группах, типа учетной записи, идентификаторов
безопасности (SID) и атрибутов.

/PRIV Отображение привилегий безопасности текущего
пользователя.

/LOGONID Отображение идентификатора текущего пользователя.

/ALL Отображение имени пользователя, членства
в группах, идентификаторов безопасности
(SID) и привилегий для токена доступа
текущего пользователя.

/FO <формат> Формат вывода.
Допустимые значения TABLE, LIST, CSV.
Заголовки столбцов в формате CSV
не отображаются. Формат по умолчанию: TABLE.

/NH Указывает, что строка заголовков столбцов
не отображается при выводе.
Допускается только для форматов TABLE и CSV.

/? Вывод справки по использованию.

Примеры:
WHOAMI
WHOAMI /UPN
WHOAMI /FQDN
WHOAMI /LOGONID
WHOAMI /USER
WHOAMI /USER /FO LIST
WHOAMI /USER /FO CSV
WHOAMI /GROUPS
WHOAMI /GROUPS /FO CSV /NH
WHOAMI /PRIV
WHOAMI /PRIV /FO TABLE
WHOAMI /USER /GROUPS
WHOAMI /USER /GROUPS /PRIV
WHOAMI /ALL
WHOAMI /ALL /FO LIST
WHOAMI /ALL /FO CSV /NH
WHOAMI /?

C:\Windows\system32>WHOAMI /GROUPS

Сведения о группах
-----------------

Группа Тип SID
Атрибуты

=============================================== ======================= ========
===================================== ==========================================
====================================
Все
Хорошо известная группа S-1-1-0
Обязательная группа, Включены по умолчанию

, Включенная группа
SafeZone-ПК\Debugger Users Псевдоним S-1-5-21
-2590260165-669464418-3280256147-1003 Обязательная группа, Включены по умолчанию

, Включенная группа
BUILTIN\Администраторы Псевдоним S-1-5-32
-544 Обязательная группа, Включены по умолчанию

, Включенная группа, Владелец группы
BUILTIN\Пользователи Псевдоним S-1-5-32
-545 Обязательная группа, Включены по умолчанию

, Включенная группа
NT AUTHORITY\ИНТЕРАКТИВНЫЕ Хорошо известная группа S-1-5-4
Обязательная группа, Включены по умолчанию

, Включенная группа
КОНСОЛЬНЫЙ ВХОД Хорошо известная группа S-1-2-1
Обязательная группа, Включены по умолчанию

, Включенная группа
NT AUTHORITY\Прошедшие проверку Хорошо известная группа S-1-5-11
Обязательная группа, Включены по умолчанию

, Включенная группа
NT AUTHORITY\Данная организация Хорошо известная группа S-1-5-15
Обязательная группа, Включены по умолчанию

, Включенная группа
ЛОКАЛЬНЫЕ Хорошо известная группа S-1-2-0
Обязательная группа, Включены по умолчанию

, Включенная группа
NT AUTHORITY\Проверка подлинности NTLM Хорошо известная группа S-1-5-64
-10 Обязательная группа, Включены по умолчанию

, Включенная группа
Обязательная метка\Высокий обязательный уровень Метка S-1-16-1
2288 Обязательная группа, Включены по умолчанию

, Включенная группа



C:\Windows\system32>WHOAMI /USER

Сведения о пользователе
----------------

Пользователь SID
================ =============================================
safezone-пк\fire S-1-5-21-2590260165-669464418-3280256147-1000

C:\Windows\system32>

Итак в разделе реестра HKEY_USERS мы увидели ряд SID,с помощью команды
Код:
WHOAMI /USER
я смог определить что sid пользователя,под учетной записью которого я вошел в систему (safezone-пк\fire) имеет значение S-1-5-21-2590260165-669464418-3280256147-1000.

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

S-1-5-21-2590260165-669464418-3280256147-1000

Умные люди давно придумали такую схему:
S-R-I-S-S

Теперь подробнее.

буква|
описание​

S| буква «S» указывает на то, что последовательность чисел представляет собой идентификатор безопасности(sid);
R |это число, представляющее номер версии SID (в нашем случае,как и всегда — 1);вообще говорят что должны появиться версии 2 на 128 битных системах.
I | 48-битный код агента идентификатора(authority), на базе которого создан SID;
S | несколько 32-битных кодов субагентов и относительных идентификаторов (абб. от relative identifiers, RID)
S | другой субагент нижнего уровня; SID может включать любое число субагентов нижнего уровня.Пример: S-1-5-21


В нашем примере номер версии SID равен 1, код агента идентификатора - 5, а далее следуют коды четырех субагентов.

Код агента идентификатора определяет агент, являющийся основанием SID, и обычно таких агентом является локальная операционная система или домен под управлением Windows.
В нашем случае этот код равен 5.
Коды субагентов идентифицируют попечителей, уполномоченных агентом, который выдал SID, а RID — не более, чем средство создания уникальных SID на основе общего базового SID (от англ. common based SID).
В Windows NT SID использовался для идентификации компьютера в сети, вследствие чего для обеспечения уникальности идентификатор SID, генерируемый программой установки Windows Setup, содержит один фиксированный (21) и три генерируемых случайным образом (числа после "S-1-5-21") кода субагентов.

(М.Русинович,Д.Соломон)
Конечно же нам для понимания SID сразу же станет интересно -а если агент идентификатора windows имеет код (5) ,а субагенты так же имеют ряд фиксированных кодов то должен быть и список?
Конечно,таблицу размещу в конце темы.

Теперь еще кое что.

Неплохо было бы ознакомиться с RID.

Вот тут кстати напомню о том,почему я засомневался в информации из Гугля по поводу SID.
SID каждой локальной учетной записи формируется на основе SID компьютера с добавлением RID.
А ведь SID может не только формироваться,но и быть фиксированным.

Тут есть нюанс-последние три цифровых блока хоть и генерируются случайно,но самый последний все же имеет некоторую закономерность при формировании цифрового кода.
Например,RID пользовательской учетной записи начинается с 1000 и увеличивается на 1 для каждого нового пользователя или группы.
У меня 1000 это значит что это первый SID .

Теперь смотрим мой SID:
S-1-5-21-2590260165-669464418-3280256147-1000
Читаем:
Принадлежность объекта к идентификатору безопасности SID(s)-версия SID=1-создан OS Windows-далее случайно сгенерированный код RID,который обеспечит мою уникальность как объекта SID-моя учетная запись под кодом SID является первой из созданных на этом компьютере,так же из приведенной далее ссылки я вижу что мой SID относится к группе Администраторы.

Итак,на мой взгляд Марк дал самое точное определение для SID.

SID представляет собой числовое значение переменной длины, формируемое из номера версии структуры SID, 48-битного кода агента идентификатора и переменного количества 32-битных кодов субагентов и/ или относительных идентификаторов (relative identifiers, RID). Код агента идентификатора (identifier authority value) определяет агент, выдавший SID. Таким агентом обычно является локальная система или домен под управлением Windows. Коды субагентов идентифицируют попечителей, уполномоченных агентом, который выдал SID, a RID — не болше чем средство создания уникальных SID на основе общего базового SID (common-based SID). Поскольку длина SID довольно велика и Windows старается генерировать случайные значения для каждого SID, то и вероятность появления двух одинаковых SID практически равна нулю.



Так же по этой ссылке можно ознакомиться с известными идентификаторами Windows.

Полезная ссылка:
Повышение безопасности в ОС Windows Vista с помощью новых списков управления доступом (ACL)
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,141
Реакции
5,913
Баллы
648

regist

гоняюсь за туманом
Ассоциация VN/VIP
VIP
Разработчик
Сообщения
12,403
Реакции
5,988
Баллы
998
В этом нам поможет редактор реестра или командная строка (cmd) с замечательной командой WHOAMI.
(Команда доступна в операционных системах Windows, начиная с Vista.)
Если ваша система не поддерживает эту команду, то можно воспользоваться утилитой PsGetSid от Sysinternals, для этого просто запускаем PsGetsid.exe с командной строки без параметров.
 

Dragokas

Very kind Developer
Команда форума
Супер-Модератор
Разработчик
Клуб переводчиков
Сообщения
6,141
Реакции
5,913
Баллы
648
Чтобы получить SID службы, можно воспользоваться встроенной утилитой командной строки sc.exe.
Пример, для службы NT Service\TrustedInstaller:
Код:
sc showsid TrustedInstaller
ИМЯ: TrustedInstaller
КОД SID СЛУЖБЫ: S-1-5-80-956008885-3418522649-1831038044-1853292631-2271478464
Примечание: SID служб не меняются и рассчитываются на основе их имени. Подробности можно узнать из этой статьи.
Таким образом можно получить SID даже для несуществующей службы.
 
Сверху Снизу