Аудит паролей пользователей в Active Directory | Windows для системных администраторов

Аудит паролей пользователей в Active Directory

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

Для тестирования устойчивости паролей пользователей к атакам мы воспользуемся сторонним PowerShell модулем — DSInternals. Данный модуль содержит ряд командлетов, которые позволяет выполнять различные операции с базой данных AD в онлайн или офлайн режиме (непосредственно с файлом ntds.dit). В частности нас интересует командлет Test-PasswordQuality, позволяющий выявить пользователей со слабыми, одинаковыми, стандартными или пустыми паролями.

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

Установка модуля DSInternals


В PowerShell 5 установить модуль DSInternals можно онлайн из официальной галереи скриптов PowerShell так:

Install-Module DSInternals

В предыдущих версиях PowerShell или на изолированных системах придется скачать zip архив с последней версией модуля с GitHub (https://github.com/MichaelGrafnetter/DSInternals/releases). На момент написания статьи последний релиз — DSInternals v2.16.1 Полученный архив нужно распаковать в один из каталогов с модулями 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

Powershell модуль DSInternals

Словарь паролей


Далее нам понадобится файл со словарем часто используемых и «плохих» паролей. Его можно скачать из Интернета или создать самому. Учетные записи пользователей в Active Directory будут проверены на предмет соответствию паролям из этого словаря. Сохраним пароли в текстовый файл PasswordDict.txt.

Файл словарь паролей

Аудит паролей в AD с помощью Test-PasswordQuality

В следующих переменных укажем путь к файлу с паролями, имя домена и контроллера домена.

$DictFile = "C:\distr\PS\DSInternals\PasswordDict.txt"
$DC = "msk-dc01"
$Domain = "DC=winitpro,DC=loc"

Затем нужно получить NT хеши для всех паролей из файла-словаря, чтобы впоследствии сравнить их с хешами паролей пользователей AD:

$Dict = Get-Content $DictFile | ConvertTo-NTHashDictionary

ConvertTo-NTHashDictionaryДалее с помощью командлета Get-ADReplAccount получим список объектов в AD данные их NT, LM хешей, а также историю хешей. Затем для каждого пользователя будет проведенная проверка на предмет соответствия хеша его пароля с хешами из файла-словаря.

Get-ADReplAccount -All -Server $DC -NamingContext $Domain |
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

sivannikov          Pa$$w0rd

locadmin              P@ssw0rd

tstusr                  P@ssw0rd

 

Historical passwords of these accounts have been found in the dictionary:

administrator        P@ssw0rd

aromanov            July2016

dbidus            August2016

 

These groups of accounts have the same passwords:

Group 1:

KMedvedev

AIvanov

NPetrov

Group 2:

ARMTest

locadmin

tst

Group 3:

DRomanov

DBacess

 

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

srv-zenoss

krbtgt

nnovikov

 

Passwords of these accounts will never expire:

jsmith

kabrams

These accounts are not required to have a password:

usertst1

usertst2

Active Directory Password Quality Report

Как вы видите, были успешно найдены пользователи AD, пароли которых совпадают со словарем (поиск в том числе велся по истории паролей пользователей). Также найдены пользователи с одинаковыми паролями.

Итак, с помощью данного сценария можно довольно просто провести анализ качества паролей пользователей AD,  их устойчивости перед брутфорсом,  оценить используемую политику сложности паролей в домене, ну и сделать организационные выводы :). Такой аудит администраторы Active Directory могут (и даже должны) выполнять регулярно.

Еще записи по теме: Active Directory, PowerShell
Понравилась статья? Скажи спасибо и расскажи друзьям!
Назад:
Вперед:

Комментариев: 5

Оставить комментарий
  1. yura | 06.10.2016

    Ошибка, не работает:
    Get-ADReplAccount : Method not found: ‘IntPtr System.Runtime.InteropServices.Marshal.GetFunctionPointerForDelegate(!!0)’.

    Ошибка, не работает!!!

    Ответить
    • itpro | 07.10.2016

      Какая версий ОС, Powershell и .NET Framework?

      Ответить
      • yura | 14.10.2016

        PowerShell:
        Major Minor Build Revision
        —— —— —— ———
        5 0 10586 117
        NET Framework:4,5
        OC: windows7

        Ответить
        • itpro | 17.10.2016

          Я запускал скрипт на Windows 2012 R2. Похоже в Windows Management Framework (WMF) 5.0 для Windows 7 чего-то не хватает (кстати говоря уже не первый раз сталкиваюсь с проблемами запуска некоторых командлетов Powsh 5 на Win 7).

          Ответить
          • yura | 17.10.2016

            Работает На 2012R2. Спасибо

            Ответить
Полные правила комментирования на сайте winitpro.ru. Вопросы, не связанные с содержимым статьи или ее обсуждением удаляются.

Сказать Спасибо! можно на этой странице или (еще лучше) поделиться с друзями ссылкой на понравившуюся статью в любимой социальной сети(специально для этого на сайте присуствуют кнопки популярных соц. сетей).

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Я не робот( Обязательно отметьте)



MAXCACHE: 0.25MB/0.00124 sec