AD nie przechowuje tylko jednego typu hasza. Po zmianie hasła, DC odbiera wersję tekstu w postaci zwykłego tekstu, sprawdza jego złożoność, a następnie generuje i przechowuje MD4, MD5, PBKDF2 (4096 * SHA1) i kilka innych rodzajów skrótów. Dzieje się tak dlatego, że każdy mechanizm uwierzytelniania (NTLM, Kerberos, Digest, ...) używa innej funkcji skrótu, a AD musi wspierać je wszystkie.
Hash hasła jest przechowywany w tych atrybutach AD: unicodePwd, dBCSPwd, lmPwdHistory, ntPwdHistory i supplementalCredentials. Ze względów bezpieczeństwa nie można ich odczytać za pomocą LDAP lub ADSI. Ale ostatnio znaleźli sposób, aby je pobrać i stworzył PowerShell cmdlet że może to zrobić:
Get-ADReplAccount -SamAccountName John -Domain Contoso -Server LON-DC1
Istnieje również słabo udokumentowany sposób pchnąć mieszań MD4 (aka NT hash) na stacji roboczej lub AD przez spuścizny SAMR protocol . Ponieważ nie ma wbudowanych poleceń, które eksponują tę funkcjonalność, utworzyłem też PowerShell cmdlets.
Aby wygenerować hash NT, można użyć tego polecenia PowerShell:
$hash = ConvertTo-NTHash (Read-Host -AsSecureString)
I wreszcie, to polecenie popycha hash NT do AD:
Set-SamAccountPasswordHash -SamAccountName john -Domain ADATUM -NTHash $hash -Server dc1.adatum.com
Polecenia te mogą być używane do migracji hasła między kontami lokalnymi i domenowymi lub między AD i Sambą. Ale uważaj, uwierzytelnianie Kerberos-AES i WDigest nie będzie działać z tym kontem, tylko NTLM i Kerberos-RC4.