В инфраструктурах Active Directory (AD) учетная запись администратора домена часто защищена в соответствии с рекомендациями Microsoft по безопасности. Стандартные меры включают переименование учетной записи Administrator, создание поддельной учетной записи-приманки или отключение встроенного администратора с передачей прав другим учеткам. В этой статье мы разберем, как выявить учетные записи с правами администратора домена, даже если они скрыты, используя утилиты dsquery, dsget и PowerShell. Также рассмотрим методы сброса паролей для обнаруженных учетных записей.
Обход защитных мер для учетной записи администратора в Active Directory
В защищенных средах Active Directory стандартная учетная запись Administrator может быть:
1. Переименована для сокрытия.
2. Создана как приманка без административных прав, с настройкой аудита для отслеживания попыток входа.
3. Отключена, а права администратора переданы другой учетной записи.
Для выявления реальных администраторов домена мы будем использовать автономный доступ к базе ntds.dit и утилиты для анализа объектов AD.
Монтирование базы Active Directory в режиме DSRM
Для доступа к базе Active Directory (файл ntds.dit) необходимо загрузить контроллер домена в режиме восстановления служб каталогов (DSRM) где база находится в неактивном состоянии. Затем мы смонтируем её локально с помощью утилиты dsamain.exe. При перезагрузке Windows Server нажимайте F8 после чего выберите Directory Services Repair Mode что бы попасть в DSRM.
1. Загрузите контроллер домена в DSRM.
2. Откройте две командные строки:
— В первой будет запущен процесс dsamain.exe.
— Вторая для выполнения интерактивных команд.
Совет: На Server Core вторую командную строку можно открыть командой:
start cmd
3. Убедитесь, что порт 1433 не занят, выполнив:
netstat -ano | findstr :1433
Если порт занят, найдите и остановите соответствующий процесс. Ожидаемый вывод для свободного порта:
4. Смонтируйте базу AD командой:
dsamain -dbpath C:\Windows\NTDS\ntds.dit -allowNonAdminAccess -ldapPort 1433
Параметры:
— dbpath: путь к файлу ntds.dit.
— allowNonAdminAccess: разрешает доступ под локальной учетной записью.
— ldapPort: порт для LDAP-запросов (1433).
5. Проверьте, что процесс dsamain.exe работает и слушает порт 1433:
netstat -ano | findstr :1433
Ожидаемый вывод:
TCP 0.0.0.0:1433 0.0.0.0:0 LISTENING 8816
TCP [::]:1433 [::]:0 LISTENING 8816
6. Убедитесь, что процесс с указанным PID (например, 8816) — это dsamain.exe:
tasklist /fi "pid eq 8816" /fo list
Ожидаемый вывод:
Image Name: dsamain.exe
PID: 8816
Session Name: Console
Session#: 2
Mem Usage: 11,316 K
Поиск переименованной учетной записи администратора
Стандартная учетная запись Administrator в Active Directory имеет фиксированный идентификатор безопасности (SID), заканчивающийся на -500 (например, S-1-5-21-[идентификатор домена]-500). Для поиска переименованной учетной записи выполните:
dsquery user -s localhost:1433 | dsget user -s localhost:1433 -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@ssw0rd94" start= auto
После выполнения размонтируйте базу, остановив dsamain.exe комбинацией Ctrl+C. Убедитесь, что процесс завершился с сообщением:
Active Directory Domain Services was shut down successfully
Обнаружение поддельной учетной записи Administrator
Если учетная запись Administrator является приманкой, она не будет иметь административных прав. Чтобы проверить её группы, выполните:
dsget user "CN=Administrator,CN=Users,DC=contoso,DC=com" -s localhost:1433 -memberof -expand
Ожидаемый вывод:
"CN=Domain Users,CN=Users,DC=contoso,DC=com"
"CN=Users,CN=Builtin,DC=contoso,DC=com"
Если учетная запись не входит в группы Domain Admins или Administrators, она не обладает административными правами и является поддельной.
Поиск альтернативных учетных записей администраторов
Для получения списка учетных записей с правами администратора домена выведите всех членов группы Administrators, включая вложенные группы (Domain Admins, Enterprise Admins):
dsquery group -s localhost:1433 -samid "administrators" | dsget group -s localhost:1433 -members -expand
Ожидаемый вывод:
"CN=Domain Admins,CN=Users,DC=contoso,DC=com"
"CN=Enterprise Admins,CN=Users,DC=contoso,DC=com"
"CN=Administrator,CN=Users,DC=contoso,DC=com"
"CN=itpro,CN=Users,DC=contoso,DC=com"
Далее проверьте статус каждой учетной записи. Например, для Administrator:
dsget user "CN=Administrator,CN=Users,DC=contoso,DC=com" -s localhost:1433 -samid -sid -disabled
Ожидаемый вывод:
samid sid disabled
Administrator S-1-5-21-2092397264-2003686862-3249677370-500 yes
Учетная запись отключена (disabled: yes).
Для учетной записи itpro:
dsget user "CN=itpro,CN=Users,DC=contoso,DC=com" -s localhost:1433 -samid -sid -disabled
Ожидаемый вывод:
samid sid disabled
itpro S-1-5-21-2092397264-2003686862-3249677370-1107 no
Учетная запись активна (disabled: no). Проверьте её группы:
dsget user "CN=itpro,CN=Users,DC=contoso,DC=com" -s localhost:1433 -memberof -expand
Ожидаемый вывод:
"CN=Group Policy Creator Owners,CN=Users,DC=contoso,DC=com"
"CN=Domain Admins,CN=Users,DC=contoso,DC=com"
"CN=Enterprise Admins,CN=Users,DC=contoso,DC=com"
"CN=Schema Admins,CN=Users,DC=contoso,DC=com"
"CN=Domain Users,CN=Users,DC=contoso,DC=com"
"CN=Denied RODC Password Replication Group,CN=Users,DC=contoso,DC=com"
"CN=Administrators,CN=Builtin,DC=contoso,DC=com"
"CN=Users,CN=Builtin,DC=contoso,DC=com"
Учетная запись itpro входит в группы Domain Admins и Administrators, что подтверждает её административные права.
Для сброса пароля создайте службу:
sc create ResetPW binPath= "%ComSpec% /k net user itpro P@ssw0rd94" start= auto
Использование PowerShell для поиска администраторов
Альтернативный способ — использование PowerShell с модулем ActiveDirectory. Если доступ к контроллеру домена возможен без монтирования базы, выполните:
1. Импортируйте модуль:
Import-Module ActiveDirectory
2. Получите членов группы Administrators рекурсивно:
Get-ADGroupMember "Administrators" -Recursive | Select-Object Name, SamAccountName, Enabled
Эта команда выведет имена, SAM-имена и статус (включена/отключена) учетных записей.
3. Для проверки SID учетной записи с правами администратора (заканчивается на -500):
Get-ADUser -Filter {SID -like "*-500"} | Select-Object Name, SamAccountName, SID
Рекомендации по безопасности
— Настройте аудит входа для учетной записи Administrator и других привилегированных учеток через групповые политики.
— Используйте сложные пароли и регулярно обновляйте их.
— Ограничьте использование учетных записей с правами Domain Admins повседневными задачами.
— Включите LAPS (Local Administrator Password Solution) для управления паролями локальных администраторов.
Для поиска учетных записей администраторов в Active Directory используйте утилиты dsquery и dsget с монтированной базой ntds.dit или PowerShell с модулем ActiveDirectory. Эти методы позволяют обойти переименование, отключение или создание поддельных учетных записей Administrator. После обнаружения учетных записей их пароли можно сбросить через создание системных служб. Для защиты AD следуйте рекомендациям Microsoft и минимизируйте использование привилегированных учеток.