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)
Dal documento: La sincronizzazione degli hash delle password è uno dei metodi di accesso utilizzati per realizzare l'identità ibrida. Azure AD Connect sincronizza un hash, dell'hash, della password di un utente da un'istanza di Active Directory on-premises a un'istanza di Azure AD basata su cloud.
È il metodo più comune utilizzato dalle aziende per sincronizzare un AD on-prem con Azure AD.
Tutti gli utenti e un hash degli hash delle password vengono sincronizzati dall'on-prem a Azure AD. Tuttavia, le password in chiaro o gli hash originali non vengono inviati a Azure AD. Inoltre, i gruppi di sicurezza integrati (come gli amministratori di dominio...) non vengono sincronizzati con Azure AD.
La sincronizzazione degli hash avviene ogni 2 minuti. Tuttavia, per impostazione predefinita, la scadenza della password e la scadenza dell'account non vengono sincronizzate in Azure AD. Quindi, un utente la cui password on-prem è scaduta (non cambiata) può continuare ad accedere alle risorse Azure utilizzando la vecchia password.
Quando un utente on-prem vuole accedere a una risorsa Azure, l'autenticazione avviene su Azure AD.
PHS è necessario per funzionalità come Identity Protection e AAD Domain Services.
Quando PHS è configurato, alcuni account privilegiati vengono automaticamente creati:
L'account MSOL_<installationID>
viene automaticamente creato nell'AD on-prem. Questo account riceve un ruolo di Directory Synchronization Accounts (vedi documentazione) che significa che ha permessi di replicazione (DCSync) nell'AD on-prem.
Un account Sync_<nome del server on-prem ADConnect>_installationID
viene creato in Azure AD. Questo account può reimpostare la password di QUALSIASI utente (sincronizzato o solo cloud) in Azure AD.
Le password dei due precedenti account privilegiati sono memorizzate in un server SQL sul server dove Azure AD Connect è installato. Gli amministratori possono estrarre le password di quegli utenti privilegiati in chiaro.
Il database si trova in C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf
.
È possibile estrarre la configurazione da una delle tabelle, essendo una crittografata:
SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;
La configurazione crittografata è crittografata con DPAPI e contiene le password degli utenti MSOL_*
nell'AD on-prem e la password di Sync_* in AzureAD. Pertanto, compromettendo questi è possibile effettuare un privesc all'AD e ad AzureAD.
Puoi trovare una panoramica completa su come queste credenziali sono memorizzate e decrittografate in questo intervento.
Se il server dove è installato Azure AD connect è unito al dominio (raccomandato nella documentazione), è possibile trovarlo con:
Puoi anche usare adconnectdump per ottenere queste credenziali.
Compromettendo l'account Sync_*
è possibile reimpostare la password di qualsiasi utente (inclusi gli Amministratori Globali)
È anche possibile modificare le password solo degli utenti cloud (anche se ciò è inaspettato)
È anche possibile estrarre la password di questo utente.
Un'altra opzione sarebbe assegnare permessi privilegiati a un service principal, che l'utente Sync ha permessi per fare, e poi accedere a quel service principal come modo di privesc.
È possibile utilizzare Seamless SSO con PHS, che è vulnerabile ad altri abusi. Controllalo in:
Az - Seamless SSOLearn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)