Az - PHS - Password Hash Sync
Last updated
Last updated
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)
Dos documentos: A sincronização de hash de senha é um dos métodos de login usados para realizar a identidade híbrida. Azure AD Connect sincroniza um hash, do hash, da senha de um usuário de uma instância do Active Directory local para uma instância do Azure AD baseada em nuvem.
É o método mais comum usado por empresas para sincronizar um AD local com o Azure AD.
Todos os usuários e um hash dos hashes de senha são sincronizados do local para o Azure AD. No entanto, senhas em texto claro ou os hashes originais não são enviados para o Azure AD. Além disso, grupos de segurança integrados (como administradores de domínio...) não são sincronizados com o Azure AD.
A sincronização de hashes ocorre a cada 2 minutos. No entanto, por padrão, a expiração de senha e a expiração de conta não são sincronizadas no Azure AD. Assim, um usuário cuja senha local expirou (não alterada) pode continuar a acessar recursos do Azure usando a senha antiga.
Quando um usuário local deseja acessar um recurso do Azure, a autenticação ocorre no Azure AD.
PHS é necessário para recursos como Proteção de Identidade e Serviços de Domínio AAD.
Quando o PHS é configurado, algumas contas privilegiadas são automaticamente criadas:
A conta MSOL_<installationID>
é automaticamente criada no AD local. Esta conta recebe um papel de Contas de Sincronização de Diretório (veja documentação), o que significa que ela tem permissões de replicação (DCSync) no AD local.
Uma conta Sync_<nome do servidor ADConnect local>_installationID
é criada no Azure AD. Esta conta pode reiniciar a senha de QUALQUER usuário (sincronizado ou apenas em nuvem) no Azure AD.
As senhas das duas contas privilegiadas anteriores são armazenadas em um servidor SQL no servidor onde Azure AD Connect está instalado. Os administradores podem extrair as senhas desses usuários privilegiados em texto claro.
O banco de dados está localizado em C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf
.
É possível extrair a configuração de uma das tabelas, sendo uma delas criptografada:
SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;
A configuração criptografada é criptografada com DPAPI e contém as senhas do usuário MSOL_*
no AD local e a senha de Sync_* no AzureAD. Portanto, comprometendo essas informações, é possível realizar um privesc para o AD e para o AzureAD.
Você pode encontrar uma visão geral completa de como essas credenciais são armazenadas e descriptografadas nesta palestra.
Se o servidor onde o Azure AD connect está instalado estiver associado ao domínio (recomendado na documentação), é possível encontrá-lo com:
Você também pode usar adconnectdump para obter essas credenciais.
Comprometendo a conta Sync_*
é possível reiniciar a senha de qualquer usuário (incluindo Administradores Globais)
É também possível modificar as senhas de apenas usuários da nuvem (mesmo que isso seja inesperado)
É também possível extrair a senha deste usuário.
Outra opção seria atribuir permissões privilegiadas a um principal de serviço, que o usuário Sync tem permissões para fazer, e então acessar esse principal de serviço como uma forma de privesc.
É possível usar SSO Sem Costura com PHS, que é vulnerável a outros abusos. Confira em:
Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE) Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)