Поиск учетных записей администратора в Active Directory

В предыдущей статье мы описали процедуру сброса пароля стандартной учётной записи администратора домена Active Directory (учетка administrator). Данный сценарий отлично работает в «стандартной» среде Active Directory, однако в некоторых доменах подобный трюк может не сработать, т.к. при их разворачивании были использованы best practice Microsoft по обеспечению безопасности инфраструктуры AD. В реальных доменах AD для защиты учетной записи администратора домена могут применяться следующие стратегии:

  • Переименование стандартной учетной записи администратора Active Directory
  • Создание учетной записи-приманки. Учетная запись хоть и имеет имя Administrator, но никакими правами повышенными не обладает. Кроме того, с помощью политик аудита можно настроить оповещение служб безопасности о попытке авторизации с помощью этой учётной записи
  • Отключение учетной записи Administrator и предоставление полномочий администратора домена другой учетке.

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

Итак, в предыдущей статье мы показывали, каким образом с помощью создания системного сервиса на контроллере домена можно сбросить пароль домен-админа. Данная команда при загрузке DC сбросит пароль доменной учетной записи administrator (администратора домена) на P@ssw0rd.

sc create ResetADPass binPath= "%ComSpec% /k net user administrator P@ssw0rd" start= auto

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

Монтируем отключенную базу Active Directory

Попробуем извлечь из базы AD информацию о реальных администраторах домена. Для этого нужно загрузиться в DSRM режиме, в котором база Active Directory (ntds.dit) находится в отключенном состоянии. Нам необходимо локально смонтировать эту базу, чтобы в дальнейшем получить возможность доступа к хранимой в ней информации.

Запустите две командные строки: в первой мы запустим процесс dsamain.exe , во второй будем вводить интерактивные команды.

Совет . При работе на Server Core вторую командную строку можно открыть, выполнив в исходной cmd команду:

start cmd

Перед запуском утилиты dsamain.exe, удостоверимся, что другие сервисы и процессы в настоящий момент не используют порт 389. Сделать это можно командой:

netstat -ano | findstr :389

В том случае, если команда ничего не вернула – все ОК, идем дальше (если вернула нужно найти и отключить найденный процесс).

Утилита dsamain.exe позволяет смонтировать базу AD и выполнять к ней различные запросы LDAP(по сути позволяет организовать автономный LDAP сервер). Утилита запускается со следующими параметрами:

  • dbpath – задает путь к файлу ntds.dit.
  • allowNonAdminAccess – разрешает осуществлять LDAP запросы к базе AD под локальной учетной записью (по умолчанию доступ разрешен только членам групп Domain Admins и Enterprise Admins).
  • ldapPort – позволяет указать порт LDAP. Мы будем использовать стандартный LDAP порт — 389.

Смонтируем базу AD командой:

dsamain -dbpath C:WindowsNTDSntds.dit -allowNonAdminAccess -ldapPort 389

Удостоверимся, что процесс dsamain.exe запущен и слушает 389 порт. Для этого во второй командной строке выполните команду:

netstat -ano | findstr :389
TCP 0.0.0.0:389 0.0.0.0:0 LISTENING 614

TCP [::]:389 [::]:0 LISTENING 614

TCP 0.0.0.0:389 *:* 614

TCP [::]:389 *:* 614

Получаем, что процесс с Process ID 614 слушает на порту TCP 389.
Проверим, что процесс с PID 604 и есть наш процесс dsamain.exe:

tasklist /fi "pid eq 614" /fo list
Image Name: dsamain.exe

PID: 614

Session Name: Console

Session#: 2

Mem Usage: 11,316 K

Как найти администратора домена active directory

Теперь, когда база AD смонтирована, мы можем обращаться к ней с помощью утилит ds* (dsget, dsquery и т.д.). Разберем все три варианта скрытия учетной записи администратора домена.

Переименованная учетная запись администратора домена

Как можно определить, что стандартная учетная запись администратора Active Directory переименована?
Стандартный administrator AD имеет известный идентификатор SID, формат которого S-1-5-21-[ид домена]-500, соответственно, нам просто нужно найти в домене объект с таким SID. Во второй командной строке выполните команду:

dsquery user -s localhost | dsget user -s localhost -samid -sid | findstr /c:"-500"
itpro S-1-5-21-2292496274-2043586872-6449473370-500

В данном случае, видно, что учетная запись administrator была переименована в itpro.
Сбросить пароль этой учетной записи можно также с помощью специальной службы:

sc create ResetPW binPath= "%ComSpec% /k net user itpro P@ssw0rd" start= auto

Теперь можно размонтировать базу AD (остановить процесс dsamain.exe комбинацией Ctrl+C). Убедитесь, что команда вернула строку

Active Directory Domain Services was shut down successfully

Поддельная учетная запись администратора AD

Как определить, что стандартный Administrator Active Directory не обладает необходимыми правами? Это очень просто. Зная DN (distinguished name) учетной записи administrator, мы можем получить список групп, в которых он состоит:

dsget user "CN=Administrator,CN=Users,DC=remontka,DC=ru" -s localhost -memberof -expand
«CN=Domain Users,CN=Users,DC=remontka,DC=ru»

«CN=Users,CN=Builtin,DC=remontka,DC=ru»

Как вы видите, данная учетная запись не состоит в группе администраторов домена (Domain Admins) и не подойдет для наших целей. Следующая методика поможет найти «реальных» администраторов.

Альтернативный администратор домена

Попробуем разобраться как можно получить список учетных записей, обладающих правами администратора домена? Для начала попробуем рекурсивно вывести всех членов группы Administrators (в том числе членов групп Domain Admins и Enterprise Admins).

dsquery group -s localhost -samid "administrators" | dsget group -s localhost -members -expand
«CN=Domain Admins,CN=Users,DC=remontka,DC=ru»

«CN=Enterprise Admins,CN=Users,DC=remontka,DC=ru»

«CN=Administrator,CN=Users,DC=remontka,DC=ru»

«CN=itpro,CN=Users,DC=remontka,DC=ru»

Как вы видите, администраторскими правами обладают учетные записи Administrator и itpro. Проверим статус учётной записи Administrator:

dsget user "CN=Administrator,CN=Users,DC=remontka,DC=ru" -s localhost -samid -sid -disabled
samid sid disabled

Administrator S-1-5-21-2092397264-2003686862-3249677370-500 yes

Как вы видите, она отключена.

Проверим теперь статус учетки itpro:

dsget user "CN=itpro,CN=Users,DC=remontka,DC=ru" -s localhost -samid -sid -disabled
samid sid disabled

itpro S-1-5-21-2092397264-2003686862-3249677370-1107 no

dsget succeeded

Эта учетная запись активна. Проверим в каких группах она состоит:

dsget user "CN=itpro,CN=Users,DC=remontka,DC=ru" -s localhost -memberof -expand
«CN=Group Policy Creator Owners,CN=Users,DC=remontka,DC=ru»

«CN=Domain Admins,CN=Users,DC=remontka,DC=ru»

«CN=Enterprise Admins,CN=Users,DC=remontka,DC=ru»

«CN=Schema Admins,CN=Users,DC=remontka,DC=ru»

«CN=Domain Users,CN=Users,DC=remontka,DC=ru»

«CN=Denied RODC Password Replication Group,CN=Users,DC=remontka,DC=ru»

«CN=Administrators,CN=Builtin,DC=remontka,DC=ru»

«CN=Users,CN=Builtin,DC=remontka,DC=ru»

Отлично, у нее есть права администратора домена! Осталось cбросить пароль учетной записи с samid — itpro. Опять таки, сделать это можно с помощью службы:

sc create ResetPW binPath= "%ComSpec% /k net user itpro PA$w0rd94" start= auto

Не забудьте отмонтировать базу AD и перезагрузите сервер.

EnglishRussianUkrainian