Аудит Active Directory: типовые ошибки конфигурации и проверки

0
14
Обложка статьи: Аудит Active Directory: типовые ошибки конфигурации и проверки

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

Нужен модуль PowerShell ActiveDirectory (RSAT). Достаточно прав обычного пользователя домена для большинства запросов.

1. Кто состоит в привилегированных группах

"Domain Admins","Enterprise Admins","Schema Admins","Administrators" | ForEach-Object {
  "== $_"
  Get-ADGroupMember $_ -Recursive | Select-Object Name, SamAccountName, objectClass
}

Перечень должен быть коротким и состоять из отдельных административных учётных записей, а не из повседневных. Лишние участники — первая находка.

2. Устаревшие и «вечные» учётные записи

$d = (Get-Date).AddDays(-90)
Get-ADUser -Filter {Enabled -eq $true -and LastLogonDate -lt $d} -Properties LastLogonDate |
  Select-Object SamAccountName, LastLogonDate
Get-ADUser -Filter {PasswordNeverExpires -eq $true -and Enabled -eq $true} |
  Select-Object SamAccountName

Отключите учётные записи, которые не использовались более 90 дней, после согласования с владельцами. Пароли без срока действия допустимы для учётных записей служб, но только с длинным случайным паролем или gMSA.

3. Учётные записи служб с SPN (Kerberoasting)

Get-ADUser -Filter {ServicePrincipalName -like "*"} -Properties ServicePrincipalName, PasswordLastSet, MemberOf |
  Select-Object SamAccountName, PasswordLastSet, ServicePrincipalName

Любой пользователь домена может запросить билет для такой учётной записи и подбирать пароль офлайн. Нужны длинные пароли (25+ символов) или gMSA, а также отсутствие у них административных прав.

4. Делегирование Kerberos

Get-ADComputer -Filter {TrustedForDelegation -eq $true} | Select-Object Name
Get-ADUser -Filter {TrustedForDelegation -eq $true} | Select-Object SamAccountName

Неограниченное делегирование разрешено только контроллерам домена. Остальное нужно заменить на ограниченное.

5. Пароль krbtgt

Get-ADUser krbtgt -Properties PasswordLastSet | Select-Object PasswordLastSet

Если пароль не менялся годами, после инцидента он должен быть сменён дважды с паузой между сменами. Порядок смены описан в документации Microsoft; выполняйте его по инструкции, не импровизируя.

6. Локальные администраторы и LAPS

Одинаковый пароль локального администратора на всех машинах позволяет перейти с одного компьютера на все. Решение — Windows LAPS (входит в современные Windows) или Microsoft LAPS. Проверка, что атрибут пароля заполняется:

Get-ADComputer -Filter * -Properties msLAPS-PasswordExpirationTime, ms-Mcs-AdmPwdExpirationTime |
  Where-Object { -not $_.'msLAPS-PasswordExpirationTime' -and -not $_.'ms-Mcs-AdmPwdExpirationTime' } |
  Select-Object Name

В выводе окажутся компьютеры без LAPS.

7. Подпись SMB и квота присоединения машин

Get-ADObject -Identity (Get-ADDomain).DistinguishedName -Properties 'ms-DS-MachineAccountQuota' |
  Select-Object 'ms-DS-MachineAccountQuota'
Get-SmbServerConfiguration | Select-Object RequireSecuritySignature

Значение ms-DS-MachineAccountQuota по умолчанию 10, то есть любой пользователь может добавить в домен до 10 компьютеров. Обычно ставят 0. На контроллерах домена подпись SMB должна быть обязательной.

Инструменты для автоматизации

Те же проверки (и десятки других) собирают готовые средства с отчётом: PingCastle, Purple Knight, BloodHound (для просмотра путей к администратору). Запускайте их только в своём домене и храните отчёты как конфиденциальные: они описывают, как взять домен.

Как проверить результат

После исправлений повторите те же команды и сохраните выводы как контрольные. Проверьте, что вход пользователей и работа служб не нарушены, особенно после смены паролей учётных записей служб. Базовое администрирование Windows: служба обновлений; наблюдение за событиями безопасности: Wazuh.

Оставьте свой ответ