Resource-based Constrained Delegation
Last updated
Last updated
Learn & practice AWS Hacking:HackTricks Training AWS Red Team Expert (ARTE) Learn & practice GCP Hacking: HackTricks Training GCP Red Team Expert (GRTE)
Bu, temel Constrained Delegation ile benzerdir ancak bir nesneye bir hizmete karşı herhangi bir kullanıcıyı taklit etme izni vermek yerine, Resource-based Constrained Delegation nesnede ona karşı herhangi bir kullanıcıyı taklit edebilecek olanı belirler.
Bu durumda, kısıtlı nesne, herhangi bir kullanıcının ona karşı taklit edebileceği kullanıcının adıyla birlikte msDS-AllowedToActOnBehalfOfOtherIdentity adlı bir niteliğe sahip olacaktır.
Bu Kısıtlı Delegasyonun diğer delegasyonlardan önemli bir farkı, makine hesabı üzerinde yazma izinlerine sahip herhangi bir kullanıcının (GenericAll/GenericWrite/WriteDacl/WriteProperty/etc) msDS-AllowedToActOnBehalfOfOtherIdentity değerini ayarlayabilmesidir (Diğer Delegasyon türlerinde alan adı yöneticisi ayrıcalıkları gerekiyordu).
Kısıtlı Delegasyonda, kullanıcının userAccountControl değerindeki TrustedToAuthForDelegation
bayrağının S4U2Self gerçekleştirmek için gerekli olduğu söylenmişti. Ancak bu tamamen doğru değil.
Gerçek şu ki, o değer olmadan bile, eğer bir hizmet (bir SPN'e sahipseniz) iseniz, herhangi bir kullanıcıya karşı S4U2Self gerçekleştirebilirsiniz, ancak eğer TrustedToAuthForDelegation
varsa, döndürülen TGS Forwardable olacaktır ve eğer o bayrağa sahip değilseniz, döndürülen TGS Forwardable olmayacaktır.
Ancak, S4U2Proxy'de kullanılan TGS Forwardable DEĞİLSE, temel bir Constrain Delegation'ı kötüye kullanmaya çalışmak çalışmayacaktır. Ancak bir Resource-Based constrain delegation'ı istismar etmeye çalışıyorsanız, bu çalışacaktır (bu bir güvenlik açığı değil, görünüşe göre bir özelliktir).
Eğer bir Bilgisayar hesabı üzerinde yazma eşdeğer ayrıcalıklarına sahipseniz, o makinede ayrılmış erişim elde edebilirsiniz.
Saldırganın zaten kurban bilgisayarı üzerinde yazma eşdeğer ayrıcalıklarına sahip olduğunu varsayalım.
Saldırgan, bir SPN'ye sahip bir hesabı ele geçirir veya oluşturur (“Hizmet A”). Herhangi bir Admin User'ın başka bir özel ayrıcalığı olmadan 10'a kadar Bilgisayar nesnesi (MachineAccountQuota) oluşturabileceğini unutmayın ve bunlara bir SPN ayarlayabilir. Bu nedenle, saldırgan sadece bir Bilgisayar nesnesi oluşturup bir SPN ayarlayabilir.
Saldırgan, kurban bilgisayar (ServiceB) üzerindeki YAZMA ayrıcalığını kötüye kullanarak HizmetA'nın kurban bilgisayar (ServiceB) üzerinde herhangi bir kullanıcıyı taklit etmesine izin verecek şekilde kaynak tabanlı kısıtlı delegasyonu yapılandırır.
Saldırgan, Hizmet B'ye ayrıcalıklı erişimi olan bir kullanıcı için Hizmet A'dan Hizmet B'ye tam bir S4U saldırısı (S4U2Self ve S4U2Proxy) gerçekleştirmek için Rubeus'u kullanır.
S4U2Self (ele geçirilen/oluşturulan SPN hesabından): Yönetici için bana bir TGS iste (Forwardable DEĞİL).
S4U2Proxy: Önceki adımda Forwardable DEĞİL olan TGS'yi kullanarak Yönetici'den kurban ana bilgisayara bir TGS istemek.
Forwardable DEĞİL bir TGS kullanıyor olsanız bile, Resource-based constrained delegation'ı istismar ettiğiniz için bu çalışacaktır.
Saldırgan, ticket'ı geçirebilir ve kullanıcıyı kurban ServiceB'ye erişim sağlamak için taklit edebilir.
Alan adının MachineAccountQuota değerini kontrol etmek için şunu kullanabilirsiniz:
Bir bilgisayar nesnesini alan içinde powermad: oluşturabilirsiniz.
activedirectory PowerShell modülünü kullanarak
Powerview Kullanımı
Öncelikle, 123456
şifresi ile yeni bir Bilgisayar nesnesi oluşturduk, bu yüzden o şifrenin hash'ine ihtiyacımız var:
Bu, o hesap için RC4 ve AES hash'lerini yazdıracaktır. Şimdi, saldırı gerçekleştirilebilir:
Rubeus'un /altservice
parametresini kullanarak sadece bir kez istekte bulunarak daha fazla bilet oluşturabilirsiniz:
Kullanıcıların "Delege edilemez" adında bir özelliği olduğunu unutmayın. Eğer bir kullanıcının bu özelliği True ise, onu taklit edemezsiniz. Bu özellik bloodhound içinde görülebilir.
Son komut satırı, tam S4U saldırısını gerçekleştirecek ve TGS'yi Administrator'dan kurban makinesine belleğe enjekte edecektir. Bu örnekte, Administrator'dan CIFS servisi için bir TGS talep edilmiştir, böylece C$: erişebileceksiniz.
mevcut hizmet biletlerini buradan öğrenin.
KDC_ERR_ETYPE_NOTSUPP
: Bu, kerberos'un DES veya RC4 kullanmayacak şekilde yapılandırıldığı ve yalnızca RC4 hash'ini sağladığınız anlamına gelir. Rubeus'a en az AES256 hash'ini (veya sadece rc4, aes128 ve aes256 hash'lerini sağlayın) verin. Ö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 zamanının DC'nin zamanından 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ı istenen hizmete erişemiyor (çünkü onu taklit edemezsiniz veya yeterli ayrıcalıklara sahip değildir)
İstenen hizmet mevcut değil (eğer winrm için bir bilet isterseniz ama winrm çalışmıyorsa)
Oluşturulan fakecomputer, savunmasız sunucu üzerindeki ayrıcalıklarını kaybetti ve bunları geri vermeniz gerekiyor.
AWS Hacking öğrenin ve pratik yapın:HackTricks Training AWS Red Team Expert (ARTE) GCP Hacking öğrenin ve pratik yapın: HackTricks Training GCP Red Team Expert (GRTE)