2010-07-22 2 views
5

Sto sincronizzando gli utenti da un sistema esterno al nostro. Devo impostare la password dell'utente nella nostra Active Directory.Impostare l'hash della password di Active Directory su un valore SHA1?

Vengono fornite solo le password SHA1 delle password dell'utente esterno e setPassword eseguirà l'hash di qualsiasi input.

  • L'utente sta impostando lo unicodePwd dell'utente sul campo hash effettivo?
    • In tal caso, posso semplicemente impostarlo sull'hash fornito?
    • In caso contrario, come/posso impostare l'hash memorizzato da Active Directory?

risposta

0

Per quanto ho capito, non è possibile impostare unicodePwd al campo hash vero e proprio. È possibile utilizzare lo userPasswd come si desidera per il proprio controllo, ma non viene utilizzato da Active Directory.

0

Per quanto ne so, quello che vuoi non è possibile. È possibile modificare/impostare le password in AD utilizzando almeno tre diversi protocolli:

Sono sicuro al 100% che LDAP non può essere utilizzato, ma si consiglia di controllare gli altri due, in quanto potrebbe essere un modo per farlo con loro.

0

AD non memorizza solo un tipo di hash. Quando si modifica la password, la DC riceve la versione in chiaro della password, ne controlla la complessità e quindi genera e archivia MD4, MD5, PBKDF2 (4096 * SHA1) e diversi altri tipi di hash. È perché ogni meccanismo di autenticazione (NTLM, Kerberos, Digest, ...) utilizza una diversa funzione di hash e AD deve supportare tutti.

Gli hash delle password sono memorizzati in questi attributi AD: unicodePwd, dBCSPwd, lmPwdHistory, ntPwdHistory e SupplementalCredentials. Per motivi di sicurezza, non è possibile leggerli tramite LDAP o ADSI. Ma ho recentemente trovato un modo per recuperarli e ha creato un PowerShell cmdlet che può farlo:

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

V'è anche un modo poco documentata per spingere gli hash MD4 (AKA NT hash) a workstation o dC attraverso l'eredità SAMR protocol . Poiché non esistono comandi incorporati che espongano questa funzionalità, ho creato anche PowerShell cmdlets.

Per generare un hash NT, è possibile utilizzare questo comando PowerShell:

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

E, infine, questo comando spinge l'hash NT a AD:

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

Questi comandi possono essere utilizzati per la migrazione password tra account locali e di dominio o tra AD e Samba. Ma attenzione, l'autenticazione Kerberos-AES e WDigest non funzionerà con questo account, solo NTLM e Kerberos-RC4.