bga68 (bga68) wrote,
bga68
bga68

Category:

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

Оригинал: http://winitpro.ru/index.php/2016/09/20/audit-active-directory-password/



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

date

Сложность пароля пользователя домена 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 могут (и даже должны) выполнять регулярно.




Tags: active directory, administrator, password, security, server, информационная безопасность, пароль
Subscribe

  • Post a new comment

    Error

    default userpic

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 0 comments