Основной источник здесь.
Последняя версия модуля DSInternals PowerShell содержит новый командлет Test-PasswordQuality, который представляет собой мощный, но простой в использовании инструмент для аудита паролей Active Directory. Он может обнаруживать слабые, повторяющиеся, стандартные, бессрочные или пустые пароли, а также находить учетные записи, которые нарушают лучшие практики безопасности. Все администраторы домена теперь могут регулярно проверять пароли Active Directory без каких-либо специальных знаний.
Установка
Варианты установки описаны здесь.
Offline установка модуля (PowerShell 3+)
- Скачайте доступную версию с GitHub.
- Извлеките каталог DSInternals в каталог модулей PowerShell, например.
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\DSInternals
илиC:\Users\John\Documents\WindowsPowerShell\Modules\DSInternals
. - (Optional) Eсли вы скопировали модуль в каталог, отличный от рекомендованного на предыдущем шаге, вам придется импортировать его вручную с помощью командлета
Import-Module
.
Использование
Командлет Test-PasswordQuality
принимает выходные данные командлетов Get-ADDBAccount
и Get-ADReplAccount
, поэтому анализ можно проводить как в автономном режиме (ntds.dit), так и в оперативном режиме (DCSync):
Get-ADReplAccount -All -Server LON-DC1 -NamingContext "dc=adatum,dc=com" |
Test-PasswordQuality -WeakPasswordHashes .\pwned-passwords-ntlm-ordered-by-count.txt -IncludeDisabledAccounts
Много информации по использованию можно прочитать здесь.
Пример
# импортируем модуль
Import-Module DSInternals
# если требуется отобразить пароли, то необходимо импортировать модуль версии 2.23
# Import-Module DSInternals -RequiredVersion 2.23
#
$DC = "dc.zeleneew.ru"
$Domain = "DC=dc,DC=zeleneew,dc=ru"
# указываем путь к словарю, по которому будем подбирать пароли
$Dict = "C:\DSInternals\PasswordDict.txt"
# "хэшируем" словарь
$DictHash = Get-Content $Dict | ConvertTo-NTHashDictionary
Get-ADReplAccount -All -Server $DC -NamingContext $Domain | Test-PasswordQuality -WeakPasswordHashes $DictHash -ShowPlainTextPasswords -IncludeDisabledAccounts