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

В операционной системе Windows вместо имен пользователей для идентификации используются SID (Security Identifiers). В этой статье познакомимся с ними.










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




Идентификаторы безопасности — это такие уникальные номера, которые есть у: пользователей, групп, доменов, служб и компьютеров.




В общем у тех объектов, которые могут захотеть получить доступ к другим объектам, таким как: файлы, драйверы, разделы дисков, реестр.




SID представляет собой число переменной длины. Оно состоит из:




  • номера версии идентификатора;
  • идентификатора полномочий, который показывает максимальный уровень полномочий. Для группы «Все» равно 1. Для конкретной учетной записи или группы равно 5;
  • несколько чисел подчиненных полномочий;
  • значения RID, которое гарантирует уникальность.




SID всегда начинается с «S«, например:




S-1-5-21-1463437245-1224812800-863842198-1128




  • 1 — номер версии;
  • 5 — идентификатор полномочий;
  • 21, 1463437245, 1224812800, 863842198 — значения подчиненных полномочий;
  • 1128 — RID.




Логика назначения SID




Каждый локальный пользователь создается на основе компьютерного или доменного идентификатора. А для уникальности и в конце записывается уникальный RID для каждого объекта. RID для новых пользовательских учетных данных начинается с 1000, и увеличивается с каждым новым пользователем и группой. До 1000 идут RID для стандартных пользователей, например 500 для пользователя «Администратор», 501 для «Гость».




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




Стандартные SID




Есть предопределенные идентификаторы. Они одинаковые на всех машинах во всем мире. Так файл, доступный группе Everyone (Все), на одной машине, будет открыт и на другой, если перенести жесткий диск туда.




В системе Windows существуют следующие стандартные SID:




  • s-1-0-0 — Nobody (Никто) — используется, когда идентификатор неизвестен;
  • s-1-1-0 — Everyone (Все) — группа, включающая всех пользователей за исключением анонимных;
  • S-1-2-0 — Local (Локальная) — группа пользователей, вошедших в терминалы, которые физически подключены к системе;
  • S-1-3-0 — Creator Owner ID (ID Владельца) — идентификатор владельца, используемый в наследуемых ACL;
  • S-1-3-1 — Creator Owner ID (ID Группы Владельца) — тоже что и выше, но для группы владельца;
  • S-1-5-18 — LocalSystem — используется службами;
  • S-1-5-19 — LocalService — используется службами;
  • S-1-5-20 — NetworkService — используется службами.




Работа с утилитой PsGetsid.exe




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




>PsGetsid.exe

PsGetSid v1.45 - Translates SIDs to names and vice versa
Copyright (C) 1999-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

SID for \PC-1:
S-1-5-21-679991269-3265548881-4162047351




Указав имя домена — увидите идентификатор домена:




>PsGetsid.exe test.domain.local

PsGetSid v1.45 - Translates SIDs to names and vice versa
Copyright (C) 1999-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

SID for TESTtest.domain.local:
S-1-5-21-1241004363-267861926-1289139162




Указав свое имя узнаете свой идентификатор, он будет зависеть от SID домена. И на всех компьютерах в домене будет одинаковым:




>PsGetsid.exe testuser

PsGetSid v1.45 - Translates SIDs to names and vice versa
Copyright (C) 1999-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

SID for TESTtestuser:
S-1-5-21-1241004363-267861926-1289139162-1155




Как видно выше, к доменному SID просто добавили RID. При этом, локальные пользователи с одинаковыми именами на всех компьютерах будут разными.




В качестве параметра можно указать сам идентификатор, утилита в этом случае вернет имя пользователя:




>PsGetsid.exe S-1-5-21-1241004363-267861926-1289139162-1155

PsGetSid v1.45 - Translates SIDs to names and vice versa
Copyright (C) 1999-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

Account for PC-1S-1-5-21-1241004363-267861926-1289139162-1155:
User: TESTtestuser




Можно узнать имя администратора домена, для этого используем идентификатор домена и стандартный для администратора RID = 500:




>PsGetsid.exe S-1-5-21-1241004363-267861926-1289139162-500

PsGetSid v1.45 - Translates SIDs to names and vice versa
Copyright (C) 1999-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

Account for PC-1S-1-5-21-1241004363-267861926-1289139162-500:
User: TESTAdministrator




Любой компьютер в домене имеет свой SID, он также будет состоять из SID домена и своего RID. Чтобы его узнать пишите <доменимя_компьютера$>:




>PsGetsid64.exe TESTSRV-1$
PsGetSid v1.45 - Translates SIDs to names and vice versa
Copyright (C) 1999-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

SID for TESTSRV-1$:
S-1-5-21-1241004363-267861926-1289139162-1610




SIP Процессов




Так как процессы запускаются от имени какого-либо пользователя, то процессы тоже имеют SID. Посмотреть их можно с помощью программы Process Explorer. Для этого нужно открыть свойства выбранного процесса и перейти на вкладку «Security«:




Process Explorer, смотрим SID пользователя службы




Выше я смотрю SID пользователя под которым работает один из процессов svhost.exe.








Вернуться к оглавлению



2021-10-04T10:32:04
Администрирование Windows