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

Тема в разделе "FAQ по работе с реестром", создана пользователем Kиpилл, 9 фев 2013.

  1. Kиpилл
    Оффлайн

    Kиpилл Команда форума Администратор

    Лучший автор месяца

    Сообщения:
    12.199
    Симпатии:
    4.970
    Поговорим о SID :smoke:


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


    Что такое SID?
    (Security ID — 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,с помощью команды
    Код (Text):
    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

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

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



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

    Конечно же нам для понимания 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)
     
    SNS-amigo, fseto, 3JoKeR3 и 5 другим нравится это.
  2. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.476
    Симпатии:
    4.305
  3. regist
    Оффлайн

    regist гоняюсь за туманом Ассоциация VN/VIP VIP Разработчик

    Сообщения:
    11.381
    Симпатии:
    5.265
    Если ваша система не поддерживает эту команду, то можно воспользоваться утилитой PsGetSid от Sysinternals, для этого просто запускаем PsGetsid.exe с командной строки без параметров.
     
    Kиpилл и Dragokas нравится это.
  4. Dragokas
    Оффлайн

    Dragokas Very kind Developer Команда форума Супер-Модератор Разработчик Клуб переводчиков

    Сообщения:
    4.476
    Симпатии:
    4.305
    Чтобы получить SID службы, можно воспользоваться встроенной утилитой командной строки sc.exe.
    Пример, для службы NT Service\TrustedInstaller:
    Код (Text):
    sc showsid TrustedInstaller
    Примечание: SID служб не меняются и рассчитываются на основе их имени. Подробности можно узнать из этой статьи.
    Таким образом можно получить SID даже для несуществующей службы.
     
    orderman, SNS-amigo и Kиpилл нравится это.

Поделиться этой страницей