Translated ['src/pentesting-cloud/azure-security/az-lateral-movement-clo

This commit is contained in:
Translator
2025-07-30 04:11:25 +00:00
parent 60eed690ce
commit ce1b2e0967
@@ -15,19 +15,19 @@ Bunun çalışabilmesi için hem Entra ID'de hem de On-Premise dizininde bazı p
- Entra ID'de **`Directory Synchronization Accounts`** rolü ile **`On-Premises Directory Synchronization Service Account`** (`ADToAADSyncServiceAccount@carloshacktricks.onmicrosoft.com`) kullanıcısı oluşturulur (`d29b2b05-8046-44ba-8758-1e26182fcf32`).
> [!WARNING]
> Bu rol, birçok ayrıcalıklı izne sahipti ve [**küresel yöneticiliğe kadar ayrıcalıkları artırmak için kullanılabiliyordu**](https://medium.com/tenable-techblog/stealthy-persistence-with-directory-synchronization-accounts-role-in-entra-id-63e56ce5871b). Ancak, Microsoft bu rolün tüm ayrıcalıklarını kaldırmaya ve sadece **`microsoft.directory/onPremisesSynchronization/standard/read`** adında yeni bir rol atamaya karar verdi; bu rol, bir kullanıcının şifresini veya niteliklerini değiştirmek ya da bir SP'ye yeni bir kimlik bilgisi eklemek gibi herhangi bir ayrıcalıklı eylem gerçekleştirmeye izin vermez.
> Bu rol, birçok ayrıcalıklı izne sahipti ve [**küresel yöneticiliğe kadar ayrıcalıkları artırmak için kullanılabiliyordu**](https://medium.com/tenable-techblog/stealthy-persistence-with-directory-synchronization-accounts-role-in-entra-id-63e56ce5871b). Ancak, Microsoft bu rolün tüm ayrıcalıklarını kaldırmaya ve sadece **`microsoft.directory/onPremisesSynchronization/standard/read`** adlı yeni bir rol atamaya karar verdi; bu rol, bir kullanıcının parolasını veya niteliklerini değiştirmek ya da bir SP'ye yeni bir kimlik bilgisi eklemek gibi herhangi bir ayrıcalıklı eylem gerçekleştirmeye izin vermez.
- Entra ID'de ayrıca **`AAD DC Administrators`** grubu, üye veya sahip olmadan oluşturulur. Bu grup, [`Microsoft Entra Domain Services`](./az-domain-services.md) kullanılıyorsa faydalıdır.
- AD'de, ya **`provAgentgMSA`** hizmet hesabı, **`pGMSA_<id>$@domain.com`** gibi bir SamAccountName ile oluşturulur (`Get-ADServiceAccount -Filter * | Select Name,SamAccountName`), ya da [**bu izinlere sahip özel bir hesap gereklidir**](https://learn.microsoft.com/en-us/entra/identity/hybrid/cloud-sync/how-to-prerequisites?tabs=public-cloud#custom-gmsa-account). Genellikle varsayılan olanı oluşturulur.
- AD'de, ya **`provAgentgMSA`** hizmet hesabı, **`pGMSA_<id>$@domain.com`** gibi bir SamAccountName ile oluşturulur (`Get-ADServiceAccount -Filter * | Select Name,SamAccountName`), ya da [**bu izinlere ihtiyaç duyan**](https://learn.microsoft.com/en-us/entra/identity/hybrid/cloud-sync/how-to-prerequisites?tabs=public-cloud#custom-gmsa-account) özel bir hesap oluşturulur. Genellikle varsayılan olanı oluşturulur.
> [!WARNING]
> Diğer izinlerin yanı sıra **`provAgentgMSA`** hizmet hesabı DCSync izinlerine sahiptir ve **bunu ele geçiren herkesin tüm dizini ele geçirmesine izin verir**. [DCSync hakkında daha fazla bilgi için bunu kontrol edin](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/dcsync.html).
> Diğer izinlerin yanı sıra **`provAgentgMSA`** hizmet hesabı DCSync izinlerine sahiptir; bu, **onu ele geçiren herkesin tüm dizini ele geçirmesine izin verir**. [DCSync hakkında daha fazla bilgi için bunu kontrol edin](https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/dcsync.html).
> [!NOTE]
> Varsayılan olarak, **`adminCount`** niteliği 1 olan bilinen ayrıcalıklı grupların kullanıcıları, güvenlik nedenleriyle Entra ID ile senkronize edilmez. Ancak, bu niteliğe sahip olmayan veya doğrudan yüksek ayrıcalıklarla atanan diğer kullanıcılar **senkronize edilebilir**.
## Şifre Senkronizasyonu
## Parola Senkronizasyonu
Bu bölüm, aşağıdaki ile çok benzer:
@@ -35,20 +35,20 @@ Bu bölüm, aşağıdaki ile çok benzer:
az-connect-sync.md
{{#endref}}
- **Şifre hash senkronizasyonu** etkinleştirilebilir, böylece kullanıcılar **AD'deki şifrelerini kullanarak Entra ID'ye giriş yapabilirler**. Ayrıca, AD'de bir şifre değiştirildiğinde, bu Entra ID'de güncellenecektir.
- **Şifre yazma geri** de etkinleştirilebilir, bu da kullanıcıların Entra ID'de şifrelerini değiştirmelerine ve bunun otomatik olarak on-premise alanında senkronize edilmesine olanak tanır. Ancak, [mevcut belgelere](https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-sspr-writeback#configure-password-writeback) göre, bunun için Connect Agent kullanmak gereklidir, bu nedenle daha fazla bilgi için [Az Connect Sync bölümüne](./az-connect-sync.md) göz atın.
- **Parola hash senkronizasyonu** etkinleştirilebilir, böylece kullanıcılar **AD'deki parolalarıyla Entra ID'ye giriş yapabilirler**. Ayrıca, AD'de bir parola değiştirildiğinde, bu Entra ID'de güncellenecektir.
- **Parola yazma geri** de etkinleştirilebilir; bu, kullanıcıların Entra ID'de parolalarını değiştirmelerine ve bununla birlikte on-premise alanındaki parolalarının otomatik olarak senkronize edilmesine olanak tanır. Ancak, [mevcut belgelere](https://learn.microsoft.com/en-us/entra/identity/authentication/tutorial-enable-sspr-writeback#configure-password-writeback) göre, bunun için Connect Agent kullanmak gereklidir, bu nedenle daha fazla bilgi için [Az Connect Sync bölümüne](./az-connect-sync.md) göz atın.
- **Grupların yazma geri**: Bu özellik, Entra ID'deki grup üyeliklerinin on-premise AD'ye senkronize edilmesine olanak tanır. Bu, bir kullanıcı Entra ID'deki bir gruba eklendiğinde, aynı zamanda AD'deki karşılık gelen gruba da ekleneceği anlamına gelir.
## Pivotlama
### AD --> Entra ID
- AD kullanıcıları AD'den Entra ID'ye senkronize ediliyorsa, AD'den Entra ID'ye pivotlama basittir; sadece **bir kullanıcının şifresini ele geçirmeniz veya bir kullanıcının şifresini değiştirmeniz ya da yeni bir kullanıcı oluşturup Entra ID dizinine senkronize edilmesini beklemeniz yeterlidir (genellikle sadece birkaç dakika)**.
- AD kullanıcıları AD'den Entra ID'ye senkronize ediliyorsa, AD'den Entra ID'ye pivotlama basittir; sadece **bir kullanıcının parolasını ele geçirin veya bir kullanıcının parolasını değiştirin ya da yeni bir kullanıcı oluşturun ve Entra ID dizinine senkronize edilene kadar bekleyin (genellikle sadece birkaç dakika)**.
Örneğin, şunları yapabilirsiniz:
- **`provAgentgMSA`** hesabını ele geçirip, DCSync saldırısı gerçekleştirip, bir kullanıcının şifresini kırabilir ve ardından bunu Entra ID'ye giriş yapmak için kullanabilirsiniz.
- AD'de yeni bir kullanıcı oluşturup, Entra ID'ye senkronize edilmesini bekleyebilir ve ardından bunu Entra ID'ye giriş yapmak için kullanabilirsiniz.
- AD'deki bir kullanıcının şifresini değiştirip, Entra ID'ye senkronize edilmesini bekleyebilir ve ardından bunu Entra ID'ye giriş yapmak için kullanabilirsiniz.
- **`provAgentgMSA`** hesabını ele geçirin, bir DCSync saldırısı gerçekleştirin, bir kullanıcının parolasını kırın ve ardından bunu Entra ID'ye giriş yapmak için kullanın.
- AD'de yeni bir kullanıcı oluşturun, Entra ID'ye senkronize edilene kadar bekleyin ve ardından bunu Entra ID'ye giriş yapmak için kullanın.
- AD'deki bir kullanıcının parolasını değiştirin, Entra ID'ye senkronize edilene kadar bekleyin ve ardından bunu Entra ID'ye giriş yapmak için kullanın.
**`provAgentgMSA`** kimlik bilgilerini ele geçirmek için:
```powershell
@@ -81,13 +81,13 @@ https://book.hacktricks.wiki/en/windows-hardening/active-directory-methodology/i
{{#endref}}
> [!NOTE]
> Azure veya EntraID rollerini senkronize edilmiş kullanıcılara, örneğin Cloud Sync yapılandırmalarında, niteliklerine dayalı olarak verme yolu yoktur. Ancak, senkronize edilmiş kullanıcılara otomatik olarak izin vermek için bazı **AD'den Entra ID gruplarına** izinler verilebilir, böylece bu gruplardaki senkronize edilmiş kullanıcılar da bu izinleri alır veya **dinamik gruplar kullanılabilir**, bu nedenle her zaman dinamik kuralları ve bunları kötüye kullanmanın potansiyel yollarını kontrol edin:
> Azure veya EntraID rollerini senkronize edilmiş kullanıcılara, örneğin Cloud Sync yapılandırmalarında, niteliklerine dayalı olarak verme yolu yoktur. Ancak, senkronize edilmiş kullanıcılara otomatik olarak izin vermek için bazı **AD'den Entra ID gruplarına** izinler verilebilir, böylece bu gruplardaki senkronize edilmiş kullanıcılar da bu izinleri alır veya **dinamik gruplar kullanılabilir**, bu nedenle her zaman dinamik kuralları ve bunları kötüye kullanma potansiyel yollarını kontrol edin:
{{#ref}}
../../az-privilege-escalation/az-entraid-privesc/dynamic-groups.md
../az-privilege-escalation/az-entraid-privesc/dynamic-groups.md
{{#endref}}
Kalıcılık ile ilgili olarak [bu blog yazısı](https://tierzerosecurity.co.nz/2024/05/21/ms-entra-connect-sync-mothods.html) **`C:\Program Files\Microsoft Azure AD Sync\Bin`** konumunda bulunan **`Microsoft.Online.Passwordsynchronisation.dll`** dosyasını arka kapılamak için [**dnSpy**](https://github.com/dnSpy/dnSpy) kullanılabileceğini önermektedir. Bu dosya, Cloud Sync ajanı tarafından şifre senkronizasyonu gerçekleştirilirken kullanıcıların şifre hash'lerini uzaktaki bir sunucuya sızdırmak için kullanılmaktadır. Hash'ler **`PasswordHashGenerator`** sınıfı içinde üretilir ve blog yazısı, sınıfın şu şekilde görünmesi için bazı kodlar eklemeyi önermektedir (şifre hash'lerini sızdırmak için `use System.Net` ve `WebClient` kullanımına dikkat edin):
Kalıcılık ile ilgili olarak [bu blog yazısı](https://tierzerosecurity.co.nz/2024/05/21/ms-entra-connect-sync-mothods.html) **`C:\Program Files\Microsoft Azure AD Sync\Bin`** konumunda bulunan **`Microsoft.Online.Passwordsynchronisation.dll`** dosyasını arka kapılamak için [**dnSpy**](https://github.com/dnSpy/dnSpy) kullanılabileceğini önermektedir. Bu dosya, Cloud Sync ajanı tarafından şifre senkronizasyonu gerçekleştirmek için kullanılır ve kullanıcıların şifre hash'lerini uzaktaki bir sunucuya dışa aktarmasını sağlar. Hash'ler **`PasswordHashGenerator`** sınıfı içinde üretilir ve blog yazısı, sınıfın şu şekilde görünmesi için bazı kodlar eklemeyi önermektedir (şifre hash'lerini dışa aktarmak için `use System.Net` ve `WebClient` kullanımına dikkat edin):
```csharp
using System;
using System.Net;
@@ -127,14 +127,14 @@ Lütfen ayrıntılı uyarılar ve hatalar için Hata Listesi penceresine bakın.
### Entra ID --> AD
- Eğer **Şifre Yazma** etkinleştirildiyse, Entra ID'deki bazı kullanıcıların şifresini değiştirebilir ve AD ağına erişiminiz varsa, bunlarla bağlanabilirsiniz. Daha fazla bilgi için [Az Connect Sync bölümüne](./az-connect-sync.md) bakın, çünkü şifre yazma bu ajan kullanılarak yapılandırılmıştır.
- Eğer **Şifre Yazma** etkinleştirildiyse, Entra ID'deki bazı kullanıcıların şifrelerini değiştirebilir ve AD ağına erişiminiz varsa, bunlarla bağlanabilirsiniz. Daha fazla bilgi için [Az Connect Sync bölümüne](./az-connect-sync.md) bakın, çünkü şifre yazma bu ajan kullanılarak yapılandırılmıştır.
- Bu noktada Cloud Sync ayrıca **"Microsoft Entra ID'den AD'ye"** izin veriyor, ancak çok fazla zaman geçtikten sonra EntraID kullanıcılarını AD'ye senkronize edemediğini ve yalnızca şifre hash'i ile senkronize edilen ve senkronize ettiğimiz alanın aynı alan ormanına ait olan bir alandan gelen EntraID kullanıcılarını senkronize edebildiğini buldum, [https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits](https://learn.microsoft.com/en-us/entra/identity/hybrid/group-writeback-cloud-sync#supported-groups-and-scale-limits) adresinde okuyabilirsiniz:
> - Bu gruplar yalnızca yerel senkronize edilmiş kullanıcıları ve/veya ek bulut oluşturulmuş güvenlik gruplarını içerebilir.
> - Senkronize edilen ve bu bulut oluşturulmuş güvenlik grubunun üyeleri olan yerel kullanıcı hesapları, aynı alan veya alanlar arası olabilir, ancak hepsi aynı ormandan olmalıdır.
Bu nedenle, bu hizmetin saldırı yüzeyi (ve faydası) büyük ölçüde azalır, çünkü bir saldırganın diğer alandaki bir kullanıcıyı tehlikeye atmak için senkronize edilen kullanıcıların geldiği başlangıç AD'sini tehlikeye atması gerekir (ve her ikisi de görünüşe göre aynı ormanda olmalıdır).
Bu nedenle, bu hizmetin saldırı yüzeyi (ve faydası) büyük ölçüde azalır, çünkü bir saldırganın diğer alandaki bir kullanıcıyı tehlikeye atmak için senkronize edilen kullanıcıların geldiği ilk AD'yi tehlikeye atması gerekir (ve her ikisi de görünüşe göre aynı ormanda olmalıdır).
### Enumeration
```bash