Az - Cloud Kerberos Trust

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin

Bu gönderi, saldırı hakkında daha fazla bilgi için kontrol edilebilecek https://dirkjanm.io/obtaining-domain-admin-from-azure-ad-via-cloud-kerberos-trust/ adresinin bir özetidir. Bu teknik ayrıca https://www.youtube.com/watch?v=AFay_58QubY** adresinde yorumlanmıştır.**

Kerberos Trust İlişkisi Genel Görünümü

Cloud Kerberos Trust (Entra ID -> AD) – Bu özellik (Windows Hello for Business’ın bir parçası) on-prem AD’nin Entra ID’yi AD için Kerberos biletleri vermesi için tek yönlü bir güven ilişkisi kurar. Bunu etkinleştirmek, AD’de bir AzureADKerberos$ bilgisayar nesnesi (Salt Okuma Alan Denetleyicisi olarak görünür) ve bağlantılı bir krbtgt_AzureAD hesabı (ikincil KRBTGT) oluşturur. Entra ID, bu hesapların anahtarlarını tutar ve AD kullanıcıları için “kısmi” Kerberos TGT’leri verebilir. AD alan denetleyicileri bu biletleri kabul eder, ancak RODC benzeri kısıtlamalarla: varsayılan olarak, yüksek ayrıcalıklı gruplar (Domain Admins, Enterprise Admins, vb.) reddedilir ve sıradan kullanıcılara izin verilir. Bu, Entra ID’nin normal koşullar altında alan yöneticilerini güven ilişkisi aracılığıyla kimlik doğrulamasını engeller. Ancak, göreceğimiz gibi, yeterli Entra ID ayrıcalıklarına sahip bir saldırgan bu güven tasarımını kötüye kullanabilir.

Entra ID’den On-Prem AD’ye Geçiş

Senaryo: Hedef organizasyon, parolasız kimlik doğrulama için Cloud Kerberos Trust’ı etkinleştirmiştir. Bir saldırgan, Entra ID’de (Azure AD) Global Administrator ayrıcalıkları elde etmiştir ancak henüz on-prem AD’yi kontrol etmemektedir. Saldırgan ayrıca, bir Alan Denetleyicisi’ne (VPN veya hibrit ağda bir Azure VM aracılığıyla) ağ erişimi ile bir ayak sağlamıştır. Bulut güvenini kullanarak, saldırgan Azure AD kontrolünü kullanarak AD’de Domain Admin seviyesinde bir ayak elde edebilir.

Ön Koşullar:

  • Cloud Kerberos Trust hibrit ortamda yapılandırılmıştır (gösterge: AD’de bir AzureADKerberos$ RODC hesabı vardır).

  • Saldırgan, Entra ID kiracısında Global Admin (veya Hybrid Identity Admin) haklarına sahiptir (bu roller, Azure AD kullanıcılarını değiştirmek için AD Connect senkronizasyon API’sini kullanabilir).

  • Saldırganın kimlik doğrulama yapabileceği en az bir hibrit kullanıcı hesabı (hem AD hem de AAD’de mevcut) vardır. Bu, kimlik bilgilerini bilerek veya sıfırlayarak veya ona bir parolasız yöntem (örneğin, Geçici Erişim Geçidi) atayarak bir Birincil Yenileme Jetonu (PRT) oluşturmak için elde edilebilir.

  • Varsayılan RODC “reddet” politikasında olmayan yüksek ayrıcalıklara sahip bir on-prem AD hedef hesabı. Pratikte, harika bir hedef AD Connect senkronizasyon hesabıdır (genellikle MSOL_* olarak adlandırılır), bu hesap AD’de DCSync (çoğaltma) haklarına sahiptir ancak genellikle yerleşik yönetici gruplarının bir üyesi değildir. Bu hesap genellikle Entra ID’ye senkronize edilmez, bu da SID’sinin çatışma olmadan taklit edilmesini sağlar.

Saldırı Adımları:

  1. Azure AD senkronizasyon API Erişimi Elde Et: Global Admin hesabını kullanarak, Azure AD Provisioning (senkronizasyon) API’si için bir erişim jetonu alın. Bu, ROADtools veya AADInternals gibi araçlarla yapılabilir. Örneğin, ROADtools (roadtx) ile:
# Using roadtx to get an Azure AD Graph token (no MFA)
roadtx gettokens -u <GlobalAdminUPN> -p <Password> --resource aadgraph

(Alternatif olarak, AADInternals’ Connect-AADInt Global Admin olarak kimlik doğrulamak için kullanılabilir.)

  1. Bir Hibrit Kullanıcının Yerel Özelliklerini Değiştirin: Azure AD senkronizasyon API’sini kullanarak seçilen hibrit kullanıcının onPremises Güvenlik Tanımlayıcısını (SID) ve onPremises SAMAccountName değerlerini hedef AD hesabıyla eşleştirin. Bu, Azure AD’ye bulut kullanıcısının taklit etmek istediğimiz yerel hesapla eşleştiğini etkili bir şekilde bildirir. Açık kaynak ROADtools Hybrid araç setini kullanarak:
# Example: modify a hybrid user to impersonate the MSOL account
python3 modifyuser.py -u <GlobalAdminUPN> -p <Password>\
--sourceanchor <ImmutableID_of_User>\
--sid <TargetAD_SID> --sam <TargetAD_SAMName>

Kullanıcının sourceAnchor (değiştirilemez ID) değeri, değiştirilmesi gereken Azure AD nesnesini tanımlamak için gereklidir. Araç, hibrit kullanıcının yerel SID’sini ve SAM hesap adını hedefin değerleriyle (örneğin, MSOL_xxxx hesabının SID’si ve SAM’ı) ayarlar. Azure AD genellikle bu niteliklerin Graph üzerinden değiştirilmesine izin vermez (okunabilir), ancak senkronizasyon hizmeti API’si buna izin verir ve Global Yöneticiler bu senkronizasyon işlevselliğini çağırabilir.

  1. Azure AD’den Kısmi TGT Alın: Değişiklikten sonra, hibrit kullanıcı olarak Azure AD’ye kimlik doğrulaması yapın (örneğin, bir cihazda PRT alarak veya kimlik bilgilerini kullanarak). Kullanıcı oturum açtığında (özellikle bir alan bağlı veya Entra bağlı Windows cihazında), Azure AD, Cloud Kerberos Trust etkin olduğu için bu hesap için kısmi Kerberos TGT (TGTAD) verir. Bu kısmi TGT, AzureADKerberos$ RODC anahtarı ile şifrelenmiştir ve ayarladığımız hedef SID’yi içerir. Bunu, ROADtools aracılığıyla kullanıcı için bir PRT talep ederek simüle edebiliriz:
roadtx getprt -u <HybridUserUPN> -p <Password> -d <DeviceID_or_Cert>

Bu, kısmi TGT ve oturum anahtarını içeren bir .prt dosyası çıktısı verir. Hesap yalnızca bulut parolasıysa, Azure AD yine de PRT yanıtında bir TGT_AD içerir.

  1. Kısmi TGT’yi Tam TGT ile Değiştirme (AD’de): Kısmi TGT artık hedef hesap için tam TGT almak üzere yerel Alan Denetleyicisi’ne sunulabilir. Bunu, krbtgt hizmeti (alanın birincil TGT hizmeti) için bir TGS isteği gerçekleştirerek yapıyoruz – temelde bileti tam bir PAC ile normal bir TGT’ye yükseltiyoruz. Bu değişimi otomatikleştirmek için araçlar mevcuttur. Örneğin, ROADtools Hybrid’in betiğini kullanarak:
# Use the partial TGT from the PRT file to get a full TGT and NTLM hash
python3 partialtofulltgt.py -p roadtx.prt -o full_tgt.ccache --extract-hash

Bu script (veya Impacket eşdeğerleri) Domain Controller ile iletişime geçecek ve hedef AD hesabı için geçerli bir TGT alacak, ayrıca özel Kerberos uzantısı kullanılıyorsa hesabın NTLM hash’ini de içerecektir. KERB-KEY-LIST-REQ uzantısı, DC’den hedef hesabın NTLM hash’ini şifreli yanıtta döndürmesini istemek için otomatik olarak dahil edilir. Sonuç, hedef hesap için bir kimlik bilgisi önbelleği (full_tgt.ccache) veya kurtarılan NTLM parola hash’idir.

  1. Hedefi Taklit Et ve Domain Admin Ol: Artık saldırgan etkili bir şekilde hedef AD hesabını kontrol ediyor. Örneğin, hedef AD Connect MSOL hesabı ise, dizin üzerinde çoğaltma haklarına sahiptir. Saldırgan, o hesabın kimlik bilgilerini veya Kerberos TGT’sini kullanarak AD’den parola hash’lerini dökmek için bir DCSync saldırısı gerçekleştirebilir (domain KRBTGT hesabı dahil). Örneğin:
# Using impacket's secretsdump to DCSync as the MSOL account (using NTLM hash)
secretsdump.py 'AD_DOMAIN/<TargetSAM>$@<DC_IP>' -hashes :<NTLM_hash> LOCAL

Bu, tüm AD kullanıcı parolası hash’lerini döker, saldırgana KRBTGT hash’ini verir (onlara domain Kerberos biletlerini istedikleri gibi sahtelemelerine izin verir) ve etkili bir şekilde Domain Admin ayrıcalıkları sağlar. Hedef hesap başka bir ayrıcalıklı kullanıcı olsaydı, saldırgan tam TGT’yi kullanarak o kullanıcı olarak herhangi bir domain kaynağına erişebilirdi.

  1. Temizlik: İsteğe bağlı olarak, saldırgan aynı API aracılığıyla değiştirilmiş Azure AD kullanıcısının orijinal onPremisesSAMAccountName ve SID’sini geri yükleyebilir veya oluşturulan geçici kullanıcıyı basitçe silebilir. Birçok durumda, bir sonraki Azure AD Connect senkronizasyon döngüsü, senkronize edilen niteliklerdeki yetkisiz değişiklikleri otomatik olarak geri alacaktır. (Ancak, bu noktada zarar verilmiştir – saldırgan DA ayrıcalıklarına sahiptir.)

Warning

Bulut güvenini ve senkronizasyon mekanizmasını kötüye kullanarak, Azure AD’nin Global Yöneticisi, RODC politikasıyla açıkça korunmayan neredeyse herhangi bir AD hesabını taklit edebilir, o hesap hiç bulut senkronize edilmemiş olsa bile. Varsayılan bir yapılandırmada, bu Azure AD ihlalinden yerel AD ihlaline tam bir güven köprüsü kurar.

References

Tip

AWS Hacking’i öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE)
GCP Hacking’i öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)
Az Hacking’i öğrenin ve pratik yapın: HackTricks Training Azure Red Team Expert (AzRTE)

HackTricks'i Destekleyin