Resource-based Constrained Delegation
Kaynak Tabanlı Kısıtlanmış Delegasyonun Temelleri
Bu, temel Kısıtlanmış Delegasyon ile benzerdir ancak bir nesneye herhangi bir kullanıcıyı temsil etme izni vermek yerine nesne üzerinde herhangi bir kullanıcıyı temsil etme yeteneğine sahip olan kullanıcıları belirler.
Bu durumda, kısıtlanmış nesne, herhangi bir kullanıcıyı temsil etme yeteneğine sahip olan kullanıcının adını içeren msDS-AllowedToActOnBehalfOfOtherIdentity adında bir özelliğe sahip olacaktır.
Bu Kısıtlanmış Delegasyon ile diğer delegasyonlar arasındaki önemli farklardan biri, herhangi bir kullanıcının makine hesabı üzerinde yazma izinlerine sahip olması durumunda msDS-AllowedToActOnBehalfOfOtherIdentity özelliğini ayarlayabilmesidir (Diğer Delegasyon biçimlerinde etki alanı yöneticisi ayrıcalıklarına ihtiyaç duyulurdu).
Yeni Kavramlar
Kısıtlanmış Delegasyonda TrustedToAuthForDelegation
bayrağının kullanıcının userAccountControl değeri içinde olması gerektiği S4U2Self gerçekleştirmek için gereklidir denilmişti. Ancak bu tamamen doğru değil.
Gerçek şu ki, bu değere sahip olmasanız bile, bir hizmet (SPN'ye sahip olan) olarak herhangi bir kullanıcıya karşı S4U2Self gerçekleştirebilirsiniz ancak, TrustedToAuthForDelegation
'a sahipseniz dönen TGS Forwardable olacaktır ve bu bayrağa sahip değilseniz dönen TGS Forwardable olmayacaktır.
Ancak, S4U2Proxy içinde kullanılan TGS Forwardable değilse, temel Kısıtlanmış Delegasyonu kötüye kullanmaya çalışmak işe yaramaz. Ancak Kaynak Tabanlı kısıtlanmış delegasyonu sömürmeye çalışıyorsanız, işe yarayacaktır (bu bir zayıflık değil, görünüşe göre bir özelliktir).
Saldırı yapısı
Eğer bir Bilgisayar hesabı üzerinde yazma eşdeğer ayrıcalıklarınız varsa, o makinede özel erişim elde edebilirsiniz.
Saldırganın zaten kurban bilgisayar üzerinde yazma eşdeğer ayrıcalıkları olduğunu varsayalım.
Saldırgan, bir SPN'ye sahip bir hesabı ele geçirir veya bir tane oluşturur ("Hizmet A"). Herhangi bir Yönetici Kullanıcısı herhangi bir diğer özel ayrıcalığa sahip olmadan 10'a kadar Bilgisayar nesnesi oluşturabilir ve bunlara bir SPN atayabilir. Bu nedenle saldırgan sadece bir Bilgisayar nesnesi oluşturabilir ve bir SPN atayabilir.
Saldırgan, kurban bilgisayar üzerindeki YAZMA ayrıcalığını kötüye kullanarak kaynak tabanlı kısıtlanmış delegasyonu yapılandırır ve bu sayede Hizmet A'nın o kurban bilgisayar (Hizmet B) karşısında herhangi bir kullanıcıyı temsil etmesine izin verir.
Saldırgan, Rubeus'u kullanarak bir kullanıcının özel erişime sahip olduğu bir kullanıcı için Hizmet A'dan Hizmet B'ye tam bir S4U saldırısı gerçekleştirir (S4U2Self ve S4U2Proxy).
S4U2Self (ele geçirilen/oluşturulan SPN hesabından): Yönetici için bana bir TGS iste (Forwardable değil).
S4U2Proxy: Önceki adımda kullanılan Forwardable olmayan TGS'yi kullanarak Yönetici'den kurban ana bilgisayarına bir TGS iste.
Forwardable olmayan bir TGS kullanıyor olsanız da, kaynak tabanlı kısıtlanmış delegasyonu sömürdüğünüzden işe yarayacaktır.
Saldırgan bilet aktarımı yapabilir ve kullanıcıyı temsil edebilir ve kurban Hizmet B'ye erişim elde edebilir.
Alanın MachineAccountQuota değerini kontrol etmek için şunu kullanabilirsiniz:
Saldırı
Bir Bilgisayar Nesnesi Oluşturma
Etki alanı içinde bir bilgisayar nesnesi oluşturabilirsiniz powermad:
Resource-based Kısıtlanmış Delegasyon yapılandırma
activedirectory PowerShell modülünü kullanma
Powerview kullanarak
Tam bir S4U saldırısı gerçekleştirme
İlk olarak, 123456
şifresiyle yeni Bilgisayar nesnesini oluşturduk, bu yüzden o şifrenin hash'ine ihtiyacımız var:
Bu, hesap için RC4 ve AES karmaşalarını yazdıracaktır. Şimdi, saldırı gerçekleştirilebilir:
Rubeus'un /altservice
parametresini kullanarak sadece bir kez sorarak daha fazla bilet oluşturabilirsiniz:
Kullanıcıların "Delegasyon yapılamaz" adında bir özelliği olduğunu unutmayın. Bir kullanıcının bu özelliği True olarak ayarlanmışsa, onun yerine geçemezsiniz. Bu özellik BloodHound içinde görülebilir.
Erişim
Son komut satırı tam S4U saldırısını gerçekleştirecek ve Yönetici'den kurban ana bilgisayarına TGS enjekte edecektir. Bu örnekte, Yönetici için bir TGS istendi, böylece C$'ye erişebileceksiniz:
Farklı hizmet biletlerini kötüye kullanma
Mevcut hizmet biletlerini buradan öğrenin.
Kerberos Hataları
KDC_ERR_ETYPE_NOTSUPP
: Bu, kerberos'un DES veya RC4'ü kullanmamak için yapılandırıldığı anlamına gelir ve siz sadece RC4 hash'ini sağlıyorsunuz. Rubeus'a en az AES256 hash'ini (veya sadece rc4, aes128 ve aes256 hash'lerini) sağlayın. Örnek:[Rubeus.Program]::MainString("s4u /user:FAKECOMPUTER /aes256:CC648CF0F809EE1AA25C52E963AC0487E87AC32B1F71ACC5304C73BF566268DA /aes128:5FC3D06ED6E8EA2C9BB9CC301EA37AD4 /rc4:EF266C6B963C0BB683941032008AD47F /impersonateuser:Administrator /msdsspn:CIFS/M3DC.M3C.LOCAL /ptt".split())
KRB_AP_ERR_SKEW
: Bu, mevcut bilgisayarın saati ile DC'nin saatinin farklı olduğu ve kerberos'un düzgün çalışmadığı anlamına gelir.preauth_failed
: Bu, verilen kullanıcı adı + hash'lerin giriş yapmak için çalışmadığı anlamına gelir. Hash'leri oluştururken kullanıcı adının içine "$" koymayı unutmuş olabilirsiniz (.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local
)KDC_ERR_BADOPTION
: Bu şunları ifade edebilir:Taklit etmeye çalıştığınız kullanıcının istenilen hizmete erişimi olmayabilir (çünkü taklit edemezsiniz veya yeterli ayrıcalığa sahip değildir)
İstenen hizmet mevcut değil (örneğin winrm için bir bilet istiyorsanız ancak winrm çalışmıyorsa)
Oluşturulan fakecomputer, zayıf sunucu üzerindeki ayrıcalıklarını kaybetmiş olabilir ve geri vermeniz gerekebilir.
Referanslar
Last updated