
Détecte les tickets Kerberos forgés en extrayant les données de session et de ticket, en évaluant les anomalies et en générant des indicateurs de journaux d'événements Windows pour la réponse aux incidents basée sur SIEM.
WonkaVision est un outil de preuve de concept (POC) permettant d'analyser les tickets Kerberos et de tenter de déterminer s'ils sont forgés. Cet outil a été créé par Charlie Clark et Andrew Schwartz.
Il convient de noter que ce POC n'est pas destiné à être une application d'entreprise prête pour la production, mais plutôt à générer des idées sur la manière de mieux détecter les tickets forgés tout en publiant les IOA découverts.
Charlie Clark est l'auteur principal de cette base de code.
Une grande partie du code permettant de dumper les informations de session, de dumper les tickets Kerberos et de déchiffrer/chiffrer les tickets Kerberos provient de Rubeus. Le code GetNCChanges a été adapté de MakeMeEnterpriseAdmin de Vincent Le Toux.
Il dispose de 3 fonctions :
/createkeys - Crée une paire de clés publique/privée pour le dumper et l'analyseur/dump - À exécuter sur les serveurs/postes de travail, dump les données de session avec les tickets Kerberos associés/analyze - Exécuté sur un répertoire contenant tous les fichiers de dump, analyse toutes les sessions et tous les tickets présents dans les dumps, génère des scores et écrit dans le journal des événementsWonkaVision a les dépendances suivantes :
Le jeu de diapositives de la présentation est ici.
WonkaVision est distribué sous la licence BSD 3-Clause.
Génère une paire de clés publique et privée en utilisant l'algorithme d'échange de clés Elliptic Curve Diffie-Hellman (ECDH) avec la courbe P-256. Par défaut, il affiche les clés dans le terminal sous forme de blobs encodés en base64, mais dispose de l'argument /outdir:PATH pour écrire les clés dans des fichiers.
SI VOUS ÉCRIVEZ DANS DES FICHIERS, LE FICHIER private.key DOIT ÊTRE PROTÉGÉ COMME S'IL S'AGISSAIT DE LA CLÉ KRBTGT
Exemple 1 :
C:\WonkaVision>WonkaVision.exe /createkeys
====================PublicKey====================
RUNLMSAAAABN/odC5C5W7meBvf6rKmWOoVW9qRTRcyCJBFuvRbEvMFuMa8cV20W1e+rRd4f9jSfr5vDVJ0+I/SJsZI1ondws
==================End PublicKey==================
====================PrivateKey====================
RUNLMiAAAABN/odC5C5W7meBvf6rKmWOoVW9qRTRcyCJBFuvRbEvMFuMa8cV20W1e+rRd4f9jSfr5vDVJ0+I/SJsZI1ondwsto7Fc/J4akdJdCix51F0ELLKWlsdMDlkYx2shFEV3AA=
==================End PrivateKey==================
Exemple 2 :
C:\WonkaVision>WonkaVision.exe /createkeys /outdir:.
[!] Writing key files to ., be sure to protect the private key as if it was the krbtgt key!
[*] Written public key to .\public.key
[*] Written private key to .\private.key
C:\WonkaVision>dir
Volume in drive C is System
Volume Serial Number is 22BC-4361
Directory of C:\WonkaVision
10/14/2022 01:10 PM <DIR> .
10/14/2022 01:10 PM <DIR> ..
10/14/2022 01:10 PM 104 private.key
10/14/2022 01:10 PM 72 public.key
10/14/2022 01:08 PM 1,383,424 WonkaVision.exe
3 File(s) 1,383,600 bytes
2 Dir(s) 71,813,464,064 bytes free
Dump les informations de session des sessions contenant des tickets Kerberos, y compris les tickets Kerberos eux-mêmes au format KERB-CRED. Pour ce faire, il exécute LsaCallAuthenticationPackage pour demander les informations de session, les informations sur le cache de tickets et demander les tickets sous forme de KERB-CRED (de la même manière que la commande dump de Rubeus).
2 arguments principaux sont requis :
/publickey:KEY - clé publique à utiliser pour le chiffrement des données dumpées/dumpdir:DIR - répertoire dans lequel stocker les données dumpéesUne fois les données dumpées, WonkaVision effectue les opérations suivantes :
/publickey:KEY pour dériver une clé symétrique/dumpdir:DIRIl est possible de spécifier des sessions particulières (avec l'argument /luid:X), des utilisateurs (avec l'argument /user:USER), des services (avec l'argument /service:SVC) et/ou des serveurs (avec l'argument /server:Y), mais ces options n'ont pas encore été beaucoup testées.
Exemple :
WonkaVision.exe /dump /publickey:\\server\dumpshare\public.key /dumpdir:\\server\dumpshare\dumps
Analyse les dumps créés avec la commande /dump. Il parcourt récursivement tous les sous-répertoires pointés par /dumpdir:DIR et lit tous les fichiers .json qu'il rencontre. Une fois le fichier json désérialisé, il parcourt toutes les sessions qui y sont stockées et tous les tickets des sessions, et les analyse de la manière la plus approfondie possible, en attribuant un score pour chaque écart par rapport à l'attendu. Ensuite, il additionne ces scores pour produire un score total et génère 2 types différents d'événements Windows, 9988 et 9989, respectivement pour WonkaVision Session et WonkaVision Ticket, contenant tous les problèmes découverts.
Il est possible de spécifier /creduser:USER, /creddomain:DOMAIN et /credpass:PASSWORD pour utiliser des identifiants alternatifs pour les requêtes LDAP et le DCsync. Ceci n'est toutefois pas recommandé en production ; ils ont été implémentés pour faciliter le débogage des problèmes.
2 arguments principaux sont requis :
/privatekey:KEY - clé privée utilisée pour déchiffrer les dumps chiffrés/dumpdir:DIR - répertoire dans lequel les dumps chiffrés sont stockésExemple :
WonkaVision.exe /analyze /privatekey:C:\keys\private.key /dumpdir:C:\dumpshare\dumps
Bien que WonkaVision renvoie les résultats de l'analyse via le terminal, une description plus détaillée de l'analyse des indicateurs d'attaque (IOA) se trouve dans le canal Journal des événements d'application Windows. C'est là que l'analyste obtiendra une meilleure visibilité et un meilleur contexte en termes de score total, des IOA spécifiques, de la/des raison(s) des IOA et des scores d'outils. Deux événements sont écrits, 9988 (événement de session) et 9989 (événement de ticket) respectivement. Un exemple d'événements est disponible ici.
Voici un exemple d'événement de session WonkaVision (9988) :

Voici un exemple d'événement de ticket WonkaVision (9989) :