Как узнать sid пользователя windows в домене

Как узнать sid пользователя windows в домене

как узнать sid пользователя windows

Добрый день уважаемые читатели, сегодня мы продолжим изучение Active Directory, а точнее его сущностей. Под сущностью понимается некий объект, в нашем случае это учетная запись пользователя, но их список куда больше. Наша сегодняшняя задача изучить как узнать sid пользователя windows в домене.

Sid windows

Давайте для начала с вами выясним определение SID или Security Identifier > это идентификатор безопасности, который используется в семействе операционных систем Windows для идентификации объекта:

  • Группа безопасности
  • Пользователь
  • Компьютер
  • Организационная единица
  • Принтер

SID во время создания объекта, присваивается ему , в домене Active Directory за это отвечает мастер роль RID. В рамках домена, каждый SID должен быть уникален, в отличии от имени, так как Ивановых Иванов Ивановичей, может быть много, а вот отличаться они будут логином и SID. Для операционной системы Windows, важнее сиды объектов, она же их использует и для контроля прав доступа на различные корпоративные ресурсы:

  • Папки и файлы
  • Принтеры
  • Доступ к внешним ресурсам

Структура SID

Давайте разбираться из каких частей состоит Security IDentifier.

Впереди идет версия сида, далее Генеральная область Authority - это ссылка на систему источник, которая его выпустила. В операционных системах Windows версия  Security IDentifier сейчас одна и равна она 1, Генеральная область Authority имеет значения 1,3,5, для Microsoft Exchange она 9. Далее в сиде следует 1 или более идентификаторов Sub Authority, а за ними идет RID (Relative IDentificator) локальный для данного Sub Authority номер субъекта безопасности.

Структура SID

 

По мимо этого, в любой ос Windows существуют встроенные или BuiltIn группы и учетные записи, например администратор или гость, в каждой ос виндоус они имеют одинаковые SID значения. Посмотреть вы их можете в оснастке Управление компьютером.

Как узнать sid пользователя windows в домене-2

Сделаны они для того, что если у вас нет Active Directory, то вы могли бы администрировать данные системы с помощью них. Все SID для данных учетных записей находятся в локальной базе данных Windows, под названием Security Account Manager или SAM. Все сиды пользователей домена лежат в базе Active Directory в файле NTDS.dit.

База Security Account Manager

Давайте посмотрим за, что отвечает Security Account Manager:

  • Сопоставление имен с SID и обратно, некий такой DNS для учетных записей
  • Проверяет пароли, авторизовывает (принимает участие в процессе входа пользователей в ОС)
  • Ведет статистику, кто последний входил, количество входов, кто сколько раз ввел не тот пароль, короче аудит
  • Контролирует политика паролей учетных записей, в случае чего может блокировать учетные записи.
  • Ведет учет, кто в какие группы входит
  • Производит защиты самого себя
  • Дает программный интерфейс для управления базой учетных записей

Хранится SAM (Security Account Manager) в реестре Windows. Как открыть реестр windows, я уже описывал не однократно, переходим в ветку.

HKEY_LOCAL_MACHINE\SAM\SAM

Если вы кликните правым кликом и из контекстного меню выберете Разрешения, то обнаружите, что права доступа есть только у системы, а вот у администраторов локальной станции их нет, но при желании можно их получить, это лишний механизм защиты, так как можно вытащить хэши учетных записей и попытаться их взломать.

Как узнать sid пользователя windows в домене-3

SAM это библиотека samsrv.dll, которая работает в Windows в виде процесса lsass.exe, увидеть это можно в диспетчере задач.

Security Account Manager

1 способ узнать sid пользователя, команда WMIC

Для примера я все буду показывать на своей рабочей станции с установленной в ней Windows Server 2012 R2, станция принадлежит домену Active Directory. Первый метод, это использование старого, доброго WMIC инструментария (Windows Management Instrumentation). Все, что вам нужно, это знать имя пользователя, точнее его логин. Чтобы посмотреть список локальных пользователей введите команду

net user

На выходе вы получите список локальных пользователей.

способ узнать sid пользователя, команда WMIC

Чтобы выяснить все логины доменных пользователей вводим команду

Net user "пользователи домена" /domain

Я вам это уже рассказывал в заметке Как узнать имена учетных записей Администраторов домена. На выходе получите, что то такое

Как узнать sid пользователя windows в домене-3

Далее зная логин все просто вводим

wmic useraccount where name="admdc" get sid

Как видите все работает.

Как узнать sid пользователя windows в домене-4

Можно наоборот по SID узнать логин пользователя, потребуется это в тех случаях, когда например в списках доступа у вас видится сид, и вы хотите узнать кому он принадлежал.

wmic useraccount where sid="S-1-5-21-2071342971-2054724104-2057240633-1001" get name

Еще с помощью WMI вы можете реализовать вот, что укажите имя компьютера (для локального) или домена (для доменного пользователя). Ниже пример получения SID локальной рабочей станции

wmic useraccount where (name="Администратор" and domain="%computername%") get sid

Для доменной структуры

wmic useraccount where (name="Администратор" and domain="aetp") get sid

способ узнать sid пользователя, команда WMIC-2

Получить логин по SID аналогично предыдущей команду.

wmic useraccount where (sid="S-1-5-21-613421863-3366779934-4260147692-500" and domain="aetp") get name

2 способ узнать sid пользователя, команда Whoami

Тоже довольно старенькая команда из cmd.exe. Вводим

whoami /user

Получаем полный сид текущего залогиненного пользователя.

способ узнать sid пользователя, команда Whoami

Если ввести Whoami /logonid, то можно получить logonid, выглядит он вот так S-1-5-5-0-595920

Если ввести ключ /all, то вы увидите, все sid локальных (bultin) групп и пользователей

способ узнать sid пользователя, команда Whoami-2

Так же вы увидите сведения о привилегиях.

способ узнать sid пользователя, команда Whoami-3

На мой взгляд, данный метод, немного проще первого, так как требует ввода меньшего количества ключей.

3 способ узнать sid пользователя, ADUC и ADSIedit

В третьем способе мы воспользуемся средствами графического интерфейса, а точнее самой оснастке Active Directory пользователи и компьютеры. В ней есть встроенный механизм называется редактор атрибутов Active Directory. Открываем вкладку Вид и ставим галку Дополнительные параметры, да забыл отметить нужно быть членом группы Администраторы схемы.

узнать sid пользователя, ADUC и ADSIedit-1

После чего заходим в свойства учетной записи, вкладка Редактор атрибутов и находим там поле objectSid.

узнать sid пользователя, ADUC и ADSIedit-2

Так же SID можно посмотреть и во встроенной оснастке ADSIedit, подключаетесь там к контексту именования имен и заходите в свойства нужной учетной записи.

узнать sid пользователя, ADUC и ADSIedit-4

Да чуть не забыл в Windows Server 2012 R2 есть такое средство как Центр администрирования Active Directory, ищите там нужную учетную запись и в ней находите пункт SID.

узнать sid пользователя, ADUC и ADSIedit-3

4 способ узнать sid пользователя, утилита PsGetSid

Есть такая замечательная утилита от Microsoft од названием PsGetSid.

Скачать PsGetSid можно по ссылке https://technet.microsoft.com/en-us/sysinternals/bb897417.aspx

Когда вы скачаете и разархивируете файл, вы получите папку с большим набором утилит, среди них будет PsGetSid.

узнать sid пользователя, утилита PsGetSid-1

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

Вводим команду psgetsid имя компьютера\логин учетки

psgetsid adm999\admdc

и наоборот, выясним имя по SID:

psgetsid S-1-5-21-613421863-3366779934-4260147692-1312

узнать sid пользователя, утилита PsGetSid-2

5 способ узнать sid пользователя, PowerShell и System.Security.Principal.NTAccount

Пятым методом будет использование в powershell класса System.Security.Principal.NTAccount. Для домена Active Directory.


$objUser = New-Object System.Security.Principal.NTAccount("домен", "логин учетки")
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value

sid wmi powershell

Для локального пользователя команда будет такой.

$objUser = New-Object System.Security.Principal.NTAccount("логин")
$strSID = $objUser.Translate([System.Security.Principal.SecurityIdentifier])
$strSID.Value

sid wmi powershell-2Обратная ситуация получаем по SID имя пользователя
$objSID = New-Object System.Security.Principal.SecurityIdentifier ("S-1-5-21-613421863-3366779934-4260147692-1312")
$objUser = $objSID.Translate( [System.Security.Principal.NTAccount])
$objUser.Value

6 способ узнать sid пользователя, Get-ADUser

Снова воспользуемся командлетами powershell Get-ADUser. вводим команду для получения SID доменного пользователя.

Get-ADUser -Identity 'логин' | select SID

получить наоборот логин по sid

Get-ADUser -Identity S-1-5-21-247647651-3952524288-2944781117-23711116

узнать sid пользователя, Get-ADUser

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

я в гугл