Сложность
пароля пользователя домена Active Directory это один из важнейших элементов
безопасности как данных пользователя, так и домена целиком. Как правило,
пользователи, чтобы облегчить себе жизнь, предпочитают использовать простые,
легко запоминаемые пароли. Но тем самым, они серьезно уменьшают уровень защиты
своих аккаунтов от злоумышленников. В этой статье мы покажем, как провести аудит используемых паролей пользователей в
Active Directory с помощью PowerShell.
Для
тестирования устойчивости паролей пользователей к атакам мы воспользуемся
сторонним PowerShell модулем — DSInternals. Данный модуль содержит ряд командлетов, которые
позволяет выполнять различные операции с базой данных AD в онлайн или офлайн
режиме (непосредственно с файлом ntds.dit). В частности, нас интересует
командлет Test-PasswordQuality, позволяющий выявить пользователей со слабыми,
одинаковыми, стандартными или пустыми паролями.
Установка модуля
DSInternals
В PowerShell 5 установить модуль
DSInternals можно онлайн из официальной галереи скриптов PowerShell так:
Install-Module DSInternals
В
предыдущих версиях PowerShell или на изолированных системах придется скачать
zip архив с последней версией модуля с GitHub (https://github.com/MichaelGrafnetter/DSInternals/releases). FwinПолученный архив нужно распаковать в один из каталогов
с модулями PowerShell:
§
C:\Windows\system32\WindowsPowerShell\v1.0\Modules\DSInternals
§
C:\Users\%username%\Documents\WindowsPowerShell\Modules\DSInternals
Либо импортировать модуль командой:
Import-Module C:\distr\PS\DSInternals\DSInternals.psd1
Список доступных командлетов модуля
можно получить так:
Get-Command -Module DSInternals
Словарь паролей
Далее
нам понадобится файл со словарем часто используемых и «плохих» паролей. Его
можно скачать из Интернета или создать самому. Учетные записи пользователей в
Active Directory будут проверены на предмет соответствию паролям из этого
словаря. Сохраним пароли в текстовый файл PasswordDict.txt.
Аудит паролей в AD с
помощью Test-PasswordQuality
В следующих переменных укажем путь к
файлу с паролями, имя домена и контроллера домена.
$DictFile = "C:\distr\PS\DSInternals\PasswordDict.txt"
$DC = "dc01"
$Domain = "DC=test,DC=local"
$DC = "dc01"
$Domain = "DC=test,DC=local"
Затем нужно получить NT хеши для всех
паролей из файла-словаря, чтобы впоследствии сравнить их с хешами паролей
пользователей AD:
$Dict = Get-Content $DictFile | ConvertTo-NTHashDictionary
Далее
с помощью командлета Get-ADReplAccount получим список объектов в AD данные их NT, LM
хешей, а также историю хешей. Затем для каждого пользователя будет проведенная
проверка на предмет соответствия хеша его пароля с хешами из файла-словаря.
Get-ADReplAccount -All -Server $DC -NamingContext $Domain |
Test-PasswordQuality -WeakPasswordHashes $Dict -ShowPlainTextPasswords -IncludeDisabledAccounts
Test-PasswordQuality -WeakPasswordHashes $Dict -ShowPlainTextPasswords -IncludeDisabledAccounts
Результат выполнения скрипта может
выглядеть так:
Active Directory Password Quality Report
—————————————-
Passwords of these accounts are stored using
reversible encryption:
LM hashes of passwords of these accounts are present:
These accounts have no password set:
Guest
Passwords of these accounts have been found in the
dictionary:
aromanov q1w2e3
armtest P@ssw0rd
dbidus q1w2e3
petrikov Pa$$w0rd
ladmin P@ssw0rd
testuser P@ssw0rd
Historical passwords of these accounts have been found
in the dictionary:
Administrator P@ssw0rd
User1 July2016
User2 August2016
These groups of accounts have the same passwords:
Group 1:
Best1
Best2
Best3
Group 2:
Best4
locadmin
These computer accounts have default passwords:
Kerberos AES keys are missing from these accounts:
Kerberos pre-authentication is not required for these
accounts:
Only DES encryption is allowed to be used with these
accounts:
These administrative accounts are allowed to be
delegated to a service:
Administrator
krbtgt
Passwords of these accounts will never expire:
jsmith
kabrams
These accounts are not required to have a password:
usertst1
usertst2
Как вы видите, были успешно найдены
пользователи AD, пароли которых совпадают со словарем (поиск в том числе велся
по истории паролей пользователей). Также найдены пользователи с одинаковыми
паролями.
Итак, с помощью данного сценария можно
довольно просто провести анализ качества паролей пользователей AD, их
устойчивости перед брутфорсом, оценить используемую политику сложности паролей
в домене, ну и сделать организационные выводы :). Такой аудит администраторы
Active Directory могут (и даже должны) выполнять регулярно.




Error on command Import-Module C:\distr\PS\DSInternals\DSInternals.psd1
ОтветитьУдалитьTemporary fix With this command : Set-ExecutionPolicy Unrestricted