Az - PHS - Password Hash Sync
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
From the docs: La sincronización de hash de contraseña es uno de los métodos de inicio de sesión utilizados para lograr una identidad híbrida. Azure AD Connect sincroniza un hash, del hash, de la contraseña de un usuario desde una instancia de Active Directory local a una instancia de Azure AD basada en la nube.
Es el método más común utilizado por las empresas para sincronizar un AD local con Azure AD.
Todos los usuarios y un hash de los hashes de contraseña se sincronizan desde el local a Azure AD. Sin embargo, las contraseñas en texto claro o los hashes originales no se envían a Azure AD. Además, los grupos de seguridad integrados (como administradores de dominio...) no se sincronizan con Azure AD.
La sincronización de hashes ocurre cada 2 minutos. Sin embargo, por defecto, la expiración de contraseñas y la expiración de cuentas no se sincronizan en Azure AD. Por lo tanto, un usuario cuya contraseña local ha expirado (no cambiada) puede continuar accediendo a recursos de Azure usando la contraseña antigua.
Cuando un usuario local quiere acceder a un recurso de Azure, la autenticación se realiza en Azure AD.
PHS es necesario para funciones como Protección de Identidad y Servicios de Dominio AAD.
Cuando PHS está configurado, algunas cuentas privilegiadas se crean automáticamente:
La cuenta MSOL_<installationID>
se crea automáticamente en AD local. Esta cuenta recibe un rol de Cuentas de Sincronización de Directorio (ver documentación) lo que significa que tiene permisos de replicación (DCSync) en el AD local.
Se crea una cuenta Sync_<nombre del servidor ADConnect local>_installationID
en Azure AD. Esta cuenta puede restablecer la contraseña de CUALQUIER usuario (sincronizado o solo en la nube) en Azure AD.
Las contraseñas de las dos cuentas privilegiadas anteriores se almacenan en un servidor SQL en el servidor donde Azure AD Connect está instalado. Los administradores pueden extraer las contraseñas de esos usuarios privilegiados en texto claro.
La base de datos se encuentra en C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf
.
Es posible extraer la configuración de una de las tablas, siendo una de ellas encriptada:
SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;
La configuración encriptada está encriptada con DPAPI y contiene las contraseñas del usuario MSOL_*
en AD local y la contraseña de Sync_* en AzureAD. Por lo tanto, comprometer estas es posible para elevar privilegios en el AD y en AzureAD.
Puedes encontrar una visión general completa de cómo se almacenan y desencriptan estas credenciales en esta charla.
Si el servidor donde está instalado Azure AD connect está unido al dominio (recomendado en la documentación), es posible encontrarlo con:
También puedes usar adconnectdump para obtener estas credenciales.
Comprometiendo la Sync_*
cuenta es posible restablecer la contraseña de cualquier usuario (incluidos los Administradores Globales)
También es posible modificar las contraseñas de solo los usuarios de la nube (incluso si eso es inesperado)
También es posible volcar la contraseña de este usuario.
Otra opción sería asignar permisos privilegiados a un principal de servicio, que el usuario Sync tiene permisos para hacer, y luego acceder a ese principal de servicio como una forma de privesc.
Es posible usar SSO Sin Problemas con PHS, que es vulnerable a otros abusos. Revísalo en:
Az - Seamless SSOLearn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)