2010-07-22 11 views
5

Estoy sincronizando usuarios desde un sistema externo al nuestro. Necesito configurar la contraseña del usuario en nuestro Directorio Activo.Establezca el hash de contraseña de Active Directory en un valor SHA1?

Solo me han proporcionado SHA1 de las contraseñas del usuario externo y setPassword me devolverán cualquier cosa que ingrese.

  • ¿Está configurando el campo de hash real del usuario unicodePwd?
    • Si es así, ¿puedo simplemente configurarlo para el hash proporcionado?
    • En caso negativo, ¿cómo/puedo configurar el hash almacenado por Active-Directory?

Respuesta

0

Por lo que yo entiendo que no se puede establecer unicodePwd al campo de hash real. Puede usar el userPasswd como lo desee para su propio control, pero no lo usa Active Directory.

0

Por lo que sé, lo que quiere no es posible. Puede cambiar/set contraseñas en AD usando al menos tres protocolos diferentes:

Estoy 100% seguro de que LDAP no se puede usar, pero es posible que desee comprobar los otros dos, ya que puede haber alguna forma de hacerlo con ellos.

0

AD no almacena solo un tipo de hash. Cuando cambia su contraseña, el DC recibe la versión en texto plano de la contraseña, verifica su complejidad y luego genera y almacena MD4, MD5, PBKDF2 (4096 * SHA1) y varios otros tipos de hash. Es porque cada mecanismo de autenticación (NTLM, Kerberos, Digest, ...) usa una función hash diferente y AD necesita admitirlos a todos.

Los valores hash de la contraseña se almacenan en estos atributos AD: unicodePwd, dBCSPwd, lmPwdHistory, ntPwdHistory y supplementalCredentials. Por razones de seguridad, no puede leerlos a través de LDAP o ADSI. Pero he encontrado recientemente una forma de recuperarlos y ha creado una PowerShell cmdlet que puede hacer eso:

Get-ADReplAccount -SamAccountName John -Domain Contoso -Server LON-DC1 

También hay una manera poco documentada para empujar hash MD4 (También conocido como NT hashes) a la estación de trabajo o AD a través del legado SAMR protocol . Como no hay comandos incorporados que expongan esta funcionalidad, he creado PowerShell cmdlets para hacer eso también.

Para generar un hash NT, puede utilizar este comando PowerShell:

$hash = ConvertTo-NTHash (Read-Host -AsSecureString) 

Y, por último, este comando empuja el hash NT para AD:

Set-SamAccountPasswordHash -SamAccountName john -Domain ADATUM -NTHash $hash -Server dc1.adatum.com 

Estos comandos se pueden utilizar para migrar contraseñas entre cuentas locales y de dominio o entre AD y Samba. Pero tenga cuidado, la autenticación Kerberos-AES y WDigest no funcionará con esta cuenta, solo NTLM y Kerberos-RC4.

Cuestiones relacionadas