Открыть сервис

Идентификатор безопасности

Идентификатор безопасности (англ. Security Identifier, SID) — это уникальный, неизменяемый идентификатор переменной длины, используемый в операционных системах семейства Windows (Microsoft Windows) для идентификации субъектов безопасности (учётных записей пользователей, групп, компьютеров) и объектов безопасности (например, служб, доменов). SID присваивается при создании субъекта или объекта и остаётся неизменным на протяжении всего его существования, даже если изменяется имя учётной записи. В отличие от имён, SID не может быть изменён или повторно использован для другого субъекта, что обеспечивает целостность разграничения доступа.

Структура идентификатора безопасности

SID имеет строго определённую структуру, описанную в протоколах Microsoft и стандарте RFC 4120 (Kerberos). Формат SID можно представить в виде строки: S-1-5-21-3623811015-3361044348-30300820-1013.

Каждый компонент означает следующее:

  • S — префикс, указывающий, что строка является идентификатором безопасности.
  • 1 — версия структуры SID (в современных системах всегда 1).
  • 5 — идентификатор уполномочивающего органа (Authority Identifier). Указывает, какой уровень системы выдал SID. Значение 5 соответствует NT Authority (наиболее распространённый случай для локальных и доменных учётных записей). Другие значения: 0 (Null Authority), 1 (World Authority), 2 (Local Authority), 3 (Creator Authority), 4 (Non-unique Authority).
  • 21 — первый подкомпонент (Subauthority). Для доменных и локальных учётных записей это значение обычно равно 21 (указывает на домен или локальную систему). Для встроенных учётных записей (например, SYSTEM, Administrator) используются другие значения.
  • 3623811015-3361044348-30300820 — три подкомпонента, представляющие собой 48-битный идентификатор домена или локальной системы (RID — Relative Identifier of the domain/computer). Этот набор уникален для каждого домена Active Directory или каждой локальной установки Windows.
  • 1013 — относительный идентификатор (Relative ID, RID). Последний подкомпонент, который уникален для каждого субъекта внутри домена или локальной системы. RID назначается последовательно (начиная с 500 для встроенной учётной записи Administrator) и не повторяется.

Общая длина SID может варьироваться: минимальная — 4 подкомпонента (например, S-1-0-0 — группа «Все»), максимальная — до 15 подкомпонентов (ограничение протокола).

Типы идентификаторов безопасности

Встроенные SID

В Windows существует ряд предопределённых SID, которые не зависят от конкретной установки системы. Они используются для обозначения встроенных учётных записей и групп с особыми правами. Наиболее известные:

  • S-1-0-0 — группа «Null» (неопределённый субъект, пустой SID).
  • S-1-1-0 — группа «Everyone» (все пользователи, включая гостей).
  • S-1-2-0 — группа «Local» (пользователи, вошедшие в систему локально).
  • S-1-3-0 — группа «Creator Owner» (владелец объекта).
  • S-1-5-18 — учётная запись «Local System» (SYSTEM).
  • S-1-5-19 — учётная запись «Local Service» (NT AUTHORITY\LOCAL SERVICE).
  • S-1-5-20 — учётная запись «Network Service» (NT AUTHORITY\NETWORK SERVICE).
  • S-1-5-32-544 — группа «Administrators» (локальные администраторы).
  • S-1-5-32-545 — группа «Users» (локальные пользователи).
  • S-1-5-32-546 — группа «Guests» (гости).
  • S-1-5-32-547 — группа «Power Users» (в Windows до Vista включительно).
  • S-1-5-21-...-500 — встроенная учётная запись «Administrator» (локальный администратор).
  • S-1-5-21-...-501 — встроенная учётная запись «Guest» (гость).

Доменные и локальные SID

  • Доменные SID — присваиваются в среде Active Directory. Каждый домен имеет свой уникальный идентификатор (первые три подкомпонента после 21). Учётные записи пользователей и групп внутри домена получают RID, начиная с 1000.
  • Локальные SID — присваиваются на отдельной машине (не входящей в домен) или для локальных учётных записей на компьютере, входящем в домен. Идентификатор локальной системы генерируется случайным образом при первой установке Windows.

Принцип работы и назначение

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

Использование SID вместо имён решает несколько задач:

  • Устойчивость к переименованию — если пользователь меняет имя, его SID остаётся прежним, и все права доступа сохраняются.
  • Уникальность в масштабах домена/леса — SID гарантированно уникален в пределах одного домена Active Directory, что исключает коллизии при миграции или слиянии учётных записей.
  • Безопасность — SID невозможно подделать (в отличие от имени), так как он генерируется системой и хранится в защищённой базе данных (SAM — Security Account Manager на локальной машине, или NTDS.dit на контроллере домена).

История и развитие

SID был введён в Windows NT 3.1 (1993 год) как часть новой модели безопасности, заменившей устаревшую систему на основе LAN Manager. В более ранних версиях Windows (3.x, 9x) использовались только имена учётных записей, что приводило к проблемам при переименовании и миграции. В Windows NT SID стал центральным элементом, и эта архитектура сохранилась до Windows 11 и Windows Server 2022.

В Windows 2000 с появлением Active Directory SID начали использоваться для идентификации объектов в доменах, лесах и доверительных отношениях между ними. В Windows Vista и более поздних версиях была введена концепция «виртуальных SID» (например, для учётных записей служб, работающих в контейнерах).

Связанные понятия

SID и RID

RID (Relative Identifier) — это последняя часть SID, уникальная для каждого субъекта внутри домена или локальной системы. В документации Microsoft термины SID и RID часто используются вместе, но RID является лишь компонентом SID. Например, SID S-1-5-21-...-500 содержит RID 500.

SID и GUID

GUID (Globally Unique Identifier) — это 128-битный идентификатор, используемый в Active Directory для объектов (пользователей, групп, компьютеров). В отличие от SID, GUID не меняется при перемещении объекта между доменами (например, при миграции). SID же привязан к домену и может измениться при перемещении объекта в другой домен (если не используется механизм SIDHistory).

SIDHistory

SIDHistory — это атрибут объекта в Active Directory, который хранит старые SID учётной записи после её перемещения из одного домена в другой. Это позволяет сохранить доступ к ресурсам, на которые были выданы права по старому SID. SIDHistory может содержать до 64 SID. Данный механизм часто используется при миграции доменов (например, с Windows Server 2003 на Windows Server 2019).

Безопасность и уязвимости

SID не является секретным значением — он может быть получен любым пользователем через запросы к системе (например, через команду whoami /user или через API LookupAccountName). Однако злоумышленник, получивший SID учётной записи, не может напрямую использовать его для аутентификации — для входа требуется пароль или другой фактор аутентификации.

Основные риски, связанные с SID:

  • Атаки на основе SIDHistory — если злоумышленник получает контроль над контроллером домена, он может добавить себе SIDHistory администратора, что даст ему доступ к ресурсам.
  • SID-спуфинг — в некоторых сценариях (например, при использовании устаревших протоколов) возможна подмена SID, но современные версии Windows защищены от этого (используется подпись маркеров доступа).
  • Утечка SID — через журналы событий, сетевой трафик (NTLM, Kerberos) или файлы реестра. Сама по себе утечка не критична, но может облегчить атаки перебора.

Примеры использования

  • Команда whoami /user — выводит SID текущего пользователя.
  • Команда wmic useraccount get name,sid — выводит список всех локальных учётных записей и их SID.
  • Редактор реестра — SID используются для хранения профилей пользователей в ветке HKEY_USERS.
  • Active Directory — SID хранится в атрибуте objectSid объекта пользователя или группы.
  • Файловые системы — SID записываются в ACL файлов и папок (NTFS).

Источники

  • Microsoft Docs: «Security Identifiers (SIDs)» (Windows Server documentation).
  • Microsoft TechNet: «How Security Identifiers Work» (статья из архива TechNet).
  • RFC 4120: «The Kerberos Network Authentication Service (V5)» (раздел об идентификаторах).
  • Учебник «Windows Internals, Part 1» (7-е издание, авторы: Pavel Yosifovich, Mark E. Russinovich, David A. Solomon, Alex Ionescu).

BFOmetr — база данных и аналитика по компаниям России.

На главную BFOmetr →