Złożoność hasła użytkownika domeny Active Directory jest jedną z najważniejszych funkcji bezpieczeństwa zarówno dla danych użytkownika, jak i dla całej domeny. Z reguły użytkownicy preferują proste, łatwe do zapamiętania hasła, aby ułatwić im życie. Ale w ten sposób poważnie obniżają poziom ochrony swoich kont przed intruzami. W tym artykule pokażemy, jak wydawać Audytuj hasła użytkowników w usłudze Active Directory przy użyciu programu PowerShell.
Aby przetestować odporność haseł użytkowników na ataki, użyjemy modułu PowerShell innej firmy - DSInternals. Ten moduł zawiera szereg poleceń cmdlet, które pozwalają wykonywać różne operacje na bazie danych AD online lub offline (bezpośrednio z plikiem ntds.dit). W szczególności interesuje nas cmdlet Test-PasswordQuality, identyfikuje użytkowników za pomocą słabych, identycznych, standardowych lub pustych haseł.
Uwaga. Hasła użytkownika z bazy danych AD, oczywiście, nie można uzyskać w postaci zwykłego tekstu, ale poprzez porównanie skrótów haseł użytkowników AD z skrótami słów ze słownika można ustalić (lub porównać) hasła użytkowników.Treść
- Instalowanie DSInternals
- Słownik haseł
- Audytuj hasła w AD za pomocą Test-PasswordQuality
Instalowanie DSInternals
W PowerShell 5 możesz zainstalować moduł DSInternals online z oficjalnej galerii skryptów PowerShell w następujący sposób:
Instaluj moduł DSInternals
W poprzednich wersjach programu PowerShell lub w systemach izolowanych musisz pobrać archiwum zip z najnowszą wersją modułu z GitHub (https://github.com/MichaelGrafnetter/DSInternals/releases). W momencie pisania najnowszej wersji - DSInternals v2.16.1 Powstałe archiwum należy rozpakować w jednym z katalogów z modułami PowerShell:
- C: \ Windows \ system32 \ WindowsPowerShell \ v1.0 \ Modules \ DSInternals
- C: \ Users \% nazwa użytkownika% \ Documents \ WindowsPowerShell \ Modules \ DSInternals
Lub zaimportuj moduł za pomocą polecenia:
Moduł importu C: \ distr \ PS \ DSInternals \ DSInternals.psd1
Listę dostępnych poleceń cmdlet modułu można uzyskać w następujący sposób:
Get-Command-Moduł DSInternals
Słownik haseł
Następnie potrzebujemy pliku ze słownikiem często używanych i „złych” haseł. Możesz pobrać go z Internetu lub samodzielnie. Konta użytkowników usługi Active Directory będą sprawdzane pod kątem haseł w tym słowniku. Zapisz hasła w pliku tekstowym PasswordDict.txt.
Audytuj hasła w AD za pomocą Test-PasswordQuality
W poniższych zmiennych określ ścieżkę do pliku z hasłami, nazwą domeny i kontrolerem domeny.
$ DictFile = "C: \ distr \ PS \ DSInternals \ PasswordDict.txt"
$ DC = "msk-dc01"
$ Domain = "DC = winitpro, DC = loc"
Następnie musisz uzyskać skróty NT dla wszystkich haseł z pliku słownika, aby następnie porównać je z skrótami haseł użytkowników AD:
$ Dict = Get-Content $ DictFile | ConvertTo-NTHashDictionary
Następnie użyj polecenia cmdlet Zdobądź-ADReplAccount uzyskać listę obiektów w danych AD ich skrótów NT, LM, a także historię skrótów. Następnie dla każdego użytkownika zostanie sprawdzone, czy skrót hasłowy pasuje do skrótów z pliku słownika.
Get-ADReplAccount -All -Server $ DC -NamingContext $ Domena |
Test-PasswordQuality -WeakPasswordHashes $ Dict -ShowPlainTextPasswords -IncludeDisabledAccounts
Wynik skryptu może wyglądać następująco:
Raport jakości hasła usługi Active Directory
--
Hasła tych kont są przechowywane przy użyciu szyfrowania odwracalnego:
Hasła LM haseł do tych kont są obecne:
Te konta nie mają ustawionego hasła:
Gość
Hasła tych kont znaleziono w słowniku:
aromanov q1w2e3
armtest P @ ssw0rd
dbidus q1w2e3
sivannikov Pa $$ w0rd
locadmin P @ ssw0rd
tstusr P @ ssw0rd
Historyczne hasła tych kont znaleziono w słowniku:
administrator P @ ssw0rd
aromanov lipiec 2016 r
dbidus sierpień 2016
Te grupy kont mają takie same hasła:
Grupa 1:
KMedvedev
AIvanov
NPetrov
Grupa 2:
ARMTest
locadmin
tst
Grupa 3:
DRomanov
Dbacess
Te konta komputerowe mają domyślne hasła:
Brak kluczy AES protokołu Kerberos na tych kontach:
Wstępne uwierzytelnianie Kerberos nie jest wymagane dla tych kont:
Z tymi kontami można używać tylko szyfrowania DES:
Te konta administracyjne mogą być delegowane do usługi:
Administrator
srv-zenoss
krbtgt
nnovikov
Hasła tych kont nigdy nie wygasają:
jsmith
kabramy
Te konta nie muszą mieć hasła:
usertst1
usertst2
Jak widać, udało się znaleźć użytkowników AD, których hasła pasują do słownika (w tym wyszukiwania na podstawie historii haseł użytkowników). Znalazłem również użytkowników z tymi samymi hasłami.
Korzystając z tego scenariusza, możesz po prostu przeanalizować jakość haseł użytkowników AD, ich odporność na brutalną siłę, ocenić politykę złożoności haseł używanych w domenie i wyciągnąć wnioski organizacyjne :). Administratorzy usługi Active Directory mogą (a nawet powinni) przeprowadzać ten audyt regularnie..