AD не хранит только один тип хэша.Когда вы изменяете свой пароль, DC получает версию пароля в виде открытого текста, проверяет ее сложность, а затем генерирует и сохраняет MD4, MD5, PBKDF2 (4096 * SHA1) и некоторые другие виды хэшей.Это происходит потому, что каждый механизм аутентификации (NTLM, Kerberos, Digest, ...) использует свою хэш-функцию, и AD должна поддерживать их все.
Хэши паролей хранятся в следующих атрибутах AD: unicodePwd, dBCSPwd,lmPwdHistory, ntPwdHistory и дополнительныеCredentials.По соображениям безопасности вы не можете прочитать их через LDAP или ADSI.Но недавно я нашел способ их получения и создал командлет PowerShell , который может это сделать:
Get-ADReplAccount -SamAccountName John -Domain Contoso -Server LON-DC1
Существует также плохо документированный способ передачи хешей MD4 (хэши AKA NT)) на рабочую станцию или AD через устаревший протокол SAMR .Поскольку нет встроенных команд, предоставляющих эту функциональность, для этого я создал командлеты PowerShell .
Чтобы создать хэш NT, вы можете использовать эту команду PowerShell:
$hash = ConvertTo-NTHash (Read-Host -AsSecureString)
И наконец, эта команда передает NT-хэш в AD:
Set-SamAccountPasswordHash -SamAccountName john -Domain ADATUM -NTHash $hash -Server dc1.adatum.com
Эти команды можно использовать для переноса паролей между локальными учетными записями и учетными записями домена или между AD и Samba.Но будьте осторожны, аутентификация Kerberos-AES и WDigest не будет работать с этой учетной записью, только NTLM и Kerberos-RC4.