bga68comp: (Default)
[personal profile] bga68comp
Оригинал: http://winitpro.ru/index.php/2016/09/20/audit-active-directory-password/



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




Profile

bga68comp: (Default)
bga68comp

December 2025

S M T W T F S
  12 3 456
7891011 1213
14151617181920
21222324252627
28293031   

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated 2026-01-03 10:20
Powered by Dreamwidth Studios