Идентификатор безопасности¶
Идентификатор безопасности (англ. 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 →


