В предыдущей статье мы описали процедуру сброса пароля стандартной учётной записи администратора домена 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 :389TCP [::]: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 listPID: 614
Session Name: Console
Session#: 2
Mem Usage: 11,316 K
Теперь, когда база 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" В данном случае, видно, что учетная запись administrator была переименована в itpro.
Сбросить пароль этой учетной записи можно также с помощью специальной службы:
sc create ResetPW binPath= "%ComSpec% /k net user itpro P@ssw0rd" start= autoТеперь можно размонтировать базу AD (остановить процесс dsamain.exe комбинацией Ctrl+C). Убедитесь, что команда вернула строку
Поддельная учетная запись администратора AD
Как определить, что стандартный Administrator Active Directory не обладает необходимыми правами? Это очень просто. Зная DN (distinguished name) учетной записи administrator, мы можем получить список групп, в которых он состоит:
dsget user "CN=Administrator,CN=Users,DC=remontka,DC=ru" -s localhost -memberof -expand«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=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 -disabledAdministrator S-1-5-21-2092397264-2003686862-3249677370-500 yes
Как вы видите, она отключена.
Проверим теперь статус учетки itpro:
dsget user "CN=itpro,CN=Users,DC=remontka,DC=ru" -s localhost -samid -sid -disableditpro 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=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 и перезагрузите сервер.