Этот PowerShell-скрипт предназначен для проведения всестороннего аудита Microsoft Active Directory с упором на выявление распространённых уязвимостей и слабых мест системы безопасности. Его выполнение позволяет точно определить критические области, требующие усиления, тем самым укрепляя вашу инфраструктуру против распространённых тактик, используемых при lateral movement или атаках на повышение привилегий, нацеленных на Active Directory.
Если у вас есть какие-либо приличные однострочники PowerShell, которые можно было бы использовать в скрипте, дайте мне знать. Я стараюсь сохранять этот скрипт как единый файл без зависимостей от внешних инструментов (кроме ntdsutil и cmd.exe).
Запускается непосредственно на DC с правами DA. Если вы не доверяете коду, предлагаю сначала прочитать его — вы увидите, что он совершенно безвреден! (Но разве вы не должны так поступать с любым кодом, скачанным из интернета и запускаемым с правами DA?)
Что это делает
Информация об устройстве
Get-HostDetails
Аудит домена
Get-LastWUDate
Get-DCEval
Get-TimeSource
Get-PrivilegedGroupMembership
Get-MachineAccountQuota
Get-DefaultDomainControllersPolicy
Get-SMB1Support
Get-FunctionalLevel
Get-DCsNotOwnedByDA
Get-ReplicationType
Get-RecycleBinState
Get-CriticalServicesStatus
Get-RODC
Аудит доверий доменов
Get-DomainTrusts
Аудит учетных записей пользователей
Get-InactiveAccounts
Get-DisabledAccounts
Get-LockedAccounts
Get-AdminAccountChecks
Get-NULLSessions
Get-PrivilegedGroupAccounts
Get-ProtectedUsers
Аудит информации о паролях
Get-AccountPassDontExpire
Get-UserPasswordNotChangedRecently
Get-PasswordPolicy
Get-PasswordQuality
Дамп NTDS.dit
Get-NTDSdit
Аудит объектов-компьютеров
Get-OldBoxes
Аудит GPO (и проверка SYSVOL на наличие паролей)
Get-GPOtoFile
Get-GPOsPerOU
Get-SYSVOLXMLS
Get-GPOEnum
Проверка общих разрешений AD на уровне групп
Get-OUPerms
Проверка наличия LAPS в домене
Get-LAPSStatus
Проверка наличия политик аутентификации и изолированных контейнеров (Authentication Policies and Silos)