Установить хэш пароля Active Directory в значение SHA1? - PullRequest
5 голосов
/ 22 июля 2010

Я синхронизирую пользователей из внешней системы в нашу. Мне нужно установить пароль пользователя в нашей Active Directory.

Мне предоставляются только SHA1 для паролей внешнего пользователя, и setPassword будет хэшировать все, что я ввожу.

  • Является ли установка пользовательского unicodePwd фактическим хеш-полем?
    • Если это так, могу ли я просто установить его для предоставленного хэша?
    • Если нет, то как / можно установить хэш, сохраняемый Active-Directory?

Ответы [ 3 ]

2 голосов
/ 05 августа 2015

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.

0 голосов
/ 02 марта 2012

Насколько я знаю, то, что вы хотите, не возможно.Вы можете изменить / установить пароли в AD, используя как минимум три разных протокола:

Я на 100% уверен, что LDAP нельзя использовать, но вы можете проверить другие два, так как может быть какой-то способ сделать это с ними.

0 голосов
/ 08 ноября 2011

Насколько я понимаю, вы не можете установить unicodePwd в фактическое поле хеша.Вы можете использовать userPasswd как хотите для своей проверки, но он не используется Active-Directory.

...