Слабый пароль в Active Directory, как обнаружить?

Слабый пароль является серьезной проблемой безопасности служб каталогов Active Directory. К сожалению, штатных методов определения стойкости используемых паролей не существует. Но все же, одно комьюнити решение достойно внимания, это — PowerShell модуль DSInternals.

Проблематика

Аккаунт Active Directory обладает двумя идентификаторами – открытый и закрытый. Открытым принято считать логин, закрытым — пароль. Оба этих идентификатора участвуют в процессе аутентификации. Во время него пользователь вводит парольную фразу, с которой берется хеш-функция. Далее, происходит процесс сравнивания этого значения с значением, хранимым в базе NTDS.DIT. При совпадении этих значений и соответствию логину — процесс аутентификации считается успешным.

Проблематика состоит в том, что даже при использовании политик паролей, технически возможно задать слабый пароль, например, значения Pa$$w0rd или Pa$$w0rd01. Это частное явление ввиду того, что пользователи очень редко думают о безопасности своих учетных записей. Для администраторов и инженеров информационной безопасности использование слабых паролей является проблемой и в качестве решения возможно использование PowerShell модуля DSInternals.

Данный модуль позволяет проверить используется ли значение слабой парольной фразы в качестве пароля для доменных служб Active Directory. Технически будет происходить взятие хеш-функции с заранее подготовленного словаря и сравнение со значениями в базе NTDS.DIT. В случае совпадения, информация о проблемном аккаунте будет выведена в виде отчета.

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

Использование модуля DSInternals

На момент написания статьи, версия модуля 3.3. Его можно скачать с Git репозитория автора по следующей ссылке или установив через коммандлет Install-Module с  PowerShell репозитория:

Install-Module DSInternals
Install-Module DSInternals

Далее, потребуется тестовый файл с проверяемой парольной базой . Она может иметь вид обычного txt файла, например:

Password File
Password File

Предварительно, для последующей демонтрации, я создал учетную запись atkachenko с паролем Pa$$w0rd. Этот же пароль я поместил в парольную базу.

А теперь немного магии. Для получения хешей аккаунтов будет использоваться коммандлет Get-ADReplAccount. Он позволяет извлекать  хеши паролей и ключи Kerberos всех учетных записей пользователей с контроллеров домена. Это достигается путем моделирования создания реплики базы данных Active Directory через протокол MS-DRSR.

Следующий коммандлет Test-PasswordQuality возьмет хеш-функции с парольной базы и сравнит их с полученными заначениями от коммандлета Get-ADReplAccountЗапуск коммандлетов предполагает права доменного админа.

Приступим к практике. Задаем в качестве переменных путь к файлу парольной базы, имя контроллера домена и контекст именования домена Active Directory:

Далее, производим тестирование:

Обнаружение слабых паролей в Active Directory
Обнаружение слабых паролей в Active Directory

Пример отчета:

Выводы

В рамках данной статьи был продемонстрирован способ обнаружения слабых паролей в Active Directory. Достигается это использованием PowerShell модуля DSInternals. С его помощью можно быстро осуществлять анализ слабых паролей сравнением со словарем. Так же, этот модуль обладает гораздо большими возможностями чем те, что описаны описаны в данной статье. Рекомендую с ними ознакомится или следить за новостями блога.

Если у вас возникли какие-либо вопросы, пожалуйста, пишите в комментарии.

Оставить комментарий

avatar
  Подписаться  
Уведомление о