Extraer hash de contraseña de Active Directory LDAP

6

Actualmente estamos trabajando en una prueba de seguridad interna mensual que, entre otras cosas, debería contener una verificación de la fortaleza de la contraseña real que eligen los usuarios. Por este motivo, quiero extraer los hashes de contraseña de todos los usuarios a través de LDAP. Todo lo que encontré fue esta discusión de la tecnología que me dice que no puedo extraer los hashes ni siquiera como un administrador que realmente no puedo (no quiero) creer.

¿Hay alguna forma de extraer los hashes de contraseña de un servidor de Active Directory?

Lo que queremos hacer es extraer los hashes, aunque podemos ejecutar un ataque de sílaba contra ellos para verificar si las contraseñas son realmente buenas o técnicamente buenas.

    
pregunta davidb 14.09.2015 - 19:53
fuente

4 respuestas

5

Debe obtener el archivo binario NTDS.DIT de %SystemRoot%\ntds .

Puedes usar ntdsutil para crear una instantánea de la base de datos de AD para que puedas copiar NTDS.DIT .

Luego puedes usar algo como la herramienta de recuperación de contraseña de Windows para extraer los hashes.

enlace

enlace

enlace

    
respondido por el shift_tab 14.09.2015 - 21:28
fuente
12

No es necesario que procese el archivo DIT para adquirir hashes desde AD o AD LDS, también hay algún acceso de protocolo.

A pesar de que las lecturas LDAP regulares en el atributo "userpassword" (como puede hacer en otros productos de directorio) siempre estarán bloqueadas por completo en AD, hay otra forma oficial de leer hashes de AD o AD LDS y está oficialmente allí desde al menos el Servidor 2003. Debe usar un permiso especial de acceso a AD (DS-Replication-Get-Changes-All) y un protocolo de Microsoft documentado oficialmente (El protocolo de replicación AD). Esto no es un secreto interno de Microsoft, incluso existen implementaciones de terceros, por ejemplo: enlace (aunque este enlace lo exagera un poco, al afirmar que se trata de un hack): con esto no está pirateando el protocolo AD o LDAP, está otorgando un privilegio de AD de forma manual que no está allí por defecto.

Un uso legítimo de este privilegio DS-Replication-Get-Changes-All es, por ejemplo, la sincronización de contraseña de Microsoft Asure AD: sincroniza las contraseñas de AD de su empresa con las contraseñas de la nube de Azure mediante la transferencia de hashes. necesita un privilegio especial de LDAP asignado a una cuenta de AD para esto, que se llama "DS-Replication-Get-Changes-All" enlace

Diferenciación: el control DIRSYNC también se puede usar con otro privilegio ligeramente diferente llamado "DS-Replication-Get-Changes" (sin el "-Todo" al final). El privilegio sin "-todos" al final no puede extraer datos de hash de contraseña confidenciales (hay productos comerciales de sincronización de datos de directorio, como Microsoft MIIS / ILM / FIM / MIM que dependen de ese privilegio. También controladores de dominio de tipo READONLY para uso de DMZ el privilegio sin el "-Todo")

Las instalaciones de DLL de filtro de contraseña o PCNS en los controladores de dominio no usan estos dos privilegios y tampoco otorgan acceso a los hashes de AD almacenados. Solo permiten reenviar una contraseña (en el momento en que el usuario la cambia) a un destino de procesamiento externo que luego establecerá la misma contraseña en sistemas de terceros dentro de su empresa.

Si bien una DLL / PCNS de filtro de contraseña solo podrá sincronizar las contraseñas que el usuario cambia después de que se haya implementado la solución de PCNS / filtro, la Reubicación junto con DS-Replication-Get-Changes-All también se puede sincronizar Hash de contraseñas de AD que han estado allí antes de que se implementara la solución de sincronización.

Ni los dos privilegios son malos. Por supuesto, podría ser altamente problemático, si se usa descuidadamente. Pero lo mismo ocurre con los cambios de ACL descuidados en su AD, que le otorgan un acceso remoto extensivo a su AD, permitiendo a los administradores de dominios y esquemas a cualquier persona, etc. Es una puerta abierta, si la abres. Si no lo necesitas, no abras esa puerta. Y si abre esa puerta, entonces endurezca adecuadamente, de modo que solo el huésped planificado pueda entrar por esa puerta para tocar sus preciosas piezas.

Por lo tanto, los casos comerciales habituales de este mecanismo de lectura-contraseña-hashes-from-AD son sincronizar los hashes AD con otros sistemas de autenticación legítimos o migrar los hashes AD de la empresa existentes a otro directorio de autenticación de terceros. (En ambos casos, el otro sistema debe ser capaz de comprender los hashes para fines de autenticación)

    
respondido por el Alex 08.07.2016 - 01:06
fuente
2

Entonces, todo este razonamiento es un poco loco. Auditar la corrección de la contraseña después del hecho es una mala idea (porque necesita la contraseña original, o un hash débil que puede ser efectivamente archivado), y escribir servicios o herramientas para extraer los hashes débiles es propenso a errores graves o peligros. Menos importante, es una exageración y una pérdida de ciclos y recursos.

La mejor solución es simplemente usar un filtro de contraseña y verificar que los cambios de contraseña cumplan con los requisitos mínimos antes de permitir que el usuario realice el cambio. Luego, expire todas las contraseñas si es serio acerca de garantizar la complejidad (aunque eso podría molestar a algunas personas).

    
respondido por el Steve 01.09.2017 - 15:21
fuente
1

Para extraer las contraseñas de forma remota, la mejor solución es utilizar las técnicas de DC SYNC (DRSUAPI). Los controladores de dominio usan este protocolo para sincronizar la información de un lado a otro. Si tiene credenciales de administrador de dominio, puede usar este protocolo para capturar todos los hashes del controlador de dominio. Hay dos herramientas fáciles para hacer esto:

Para Windows: Mimikatz ( enlace )

Instrucciones sobre cómo usarlo y más información general: enlace

Para Linux: Impacket, específicamente el script de ejemplo secretsdump.py ( enlace )

Instrucciones sobre cómo usarlo: enlace

    
respondido por el shellster 31.08.2017 - 19:23
fuente

Lea otras preguntas en las etiquetas