Audyt „słabych” haseł w AD

Stosowanie dobrych czy skomplikowanych haseł użytkowników AD wpływa na bezpieczeństwo danych nie tylko użytkowników ale i całej organizacji. Wielu użytkowników preferuje stosowanie prostych haseł, łatwych do zapamiętania pomimo zaleceń aby w hasłach nie stosować danych osobowych, słów słownikowych i prostych kombinacji znaków. Administrator może dokonać audytu haseł AD celem znalezienia „słabych” haseł.
Pomimo włączenia (wymuszenia) stosowania złożonych haseł użytkownik nadal może wykorzystać „słabe” hasła takie jak Pa$$w0rd lub P@ssw0rd.

Administrator nie może odczytać jakie hasła zastosował użytkownik ale opierając się o słownik słabych haseł może porównać hash-e wygenerowane z tych haseł z hash-ami haseł użytkowników. W porównaniu tym przyjmujemy że skoro hash wygenerowany z hasła w słowniku jest taki sam jak hash z hasła użytkownika to hasło jest takie same.

W pierwszej kolejności musimy dograć moduł DSInternals z oficjalnego repozytorium

Install-Module DSInternals
Import-Module DSInternals

W przypadku gdy komputer nie ma połączenia z Internetem musimy pobrać moduł w postaci pliku zip z GitHuba i rozpakować go do jednej ze ścieżek zawierających moduły Powershell
– C:\Windows\system32\WindowsPowerShell\v1.0\Modules\DSInternals
– C:\Users\%username%\Documents\WindowsPowerShell\Modules\DSInternals

Wykaz wszystkich dostępnych poleceń tego modułu uzyskamy wydając polecenie:

Get-Command -Module DSInternals

Interesuje nas polecenie Test-PasswordQuality

W kolejnym kroku musimy przygotowac plik tekstowy zawierający słabe hasła. Nazwijmy plik WeakPassDict.txt i zapiszmy w nim przykładowe hasła:

Pa$$w0rd
P@ssw0rd
123456
123456789
111111
qwerty
password
1q2w3e4r
password1
1234%qwert
zaq12wsx

Słownik oczywiście możemy rozbudować według naszych potrzeb. Aby przeprowadzić audyt należy wydać polecenie

Get-ADReplAccount -all -Server DC01 -NamingContext 'DC=domena,DC=local' |Test-PasswordQuality -WeakPasswordsFile 'c:\test\WeakPassDict.txt'

W wyniku powyższego polecenia otrzymamy raport:

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:

Passwords of these accounts have been found in the dictionary:

These groups of accounts have the same passwords:
  Group 1:
    Domena\user1
    Domena\user2

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 accounts are susceptible to the Kerberoasting attack:

These administrative accounts are allowed to be delegated to a service:

Passwords of these accounts will never expire:

These accounts are not required to have a password:

These accounts that require smart card authentication have a password:

Pod każdą grupą wyników pojawi się lista kont spełniających dane kryterium. W przypadku gdy któreś z kont posiada hasło zawarte w naszym słowniku zostanie ono wykazane w grupie „Passwords of these accounts have been found in the dictionary: