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:„