Inspekcja haseł użytkowników w usłudze Active Directory

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..