Skip to content
KitploitKITPLOIT
OutilsBlog
Soumettre
OutilsBlog
Soumettre

Outils de Hacking, PenTest et Cybersécurité pour votre Arsenal de Sécurité !

Kitploit est un répertoire d'outils de hacking, de cybersécurité et de pentesting. Découvrez les dernières mises à jour des projets pour trouver des vulnérabilités, analyser des systèmes, automatiser les tests et renforcer votre sécurité.

··Flux·Contact·Confidentialité·© 2026 Kitploit

Répertoire d'outils

Catégories

Voir toutes les catégories
Loading categories
WonkaVision — 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. | Kitploit
Outils/GitHubGitHub/0xe7/wonkavision
Outils DéfensifsGestion des Identités et des Accès (IAM)AuthentificationDétection d'IntrusionRéponse aux IncidentsDétection d'AnomaliesAnalyse de Journaux
GitHub0xe7/wonkavision

WonkaVision

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.

Voir le dépôt
899il y a 3 ansVérifié par Kitploit

Populaires

Voir tout →

Découvrez les outils les plus utilisés par notre communauté.

Explorer tous les outils

Parcourez notre collection d'outils

Voir tous les outils →
Partager

WonkaVision


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énements

WonkaVision a les dépendances suivantes :

  • Newtonsoft.Json - Pour sérialiser/désérialiser les objets Json
  • dnMerge - Pour fusionner la DLL Newtonsoft.Json dans un binaire unique afin de faciliter le déploiement lors du dump des tickets

Le jeu de diapositives de la présentation est ici.

WonkaVision est distribué sous la licence BSD 3-Clause.

Table des matières

  • WonkaVision
    • Créer les clés
    • Dump
    • Analyse
      • Exemple de journal d'événements
      • Exemple de transfert de journaux vers un SIEM
        • Exemple avec Splunk
        • Exemple avec Sentinel
  • Démos de la présentation
  • Sniffer Kerberos
  • Remerciements
  • TODO

Créer les clés

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 :

root@kitploit:~
C:\WonkaVision>WonkaVision.exe /createkeys
====================PublicKey====================
RUNLMSAAAABN/odC5C5W7meBvf6rKmWOoVW9qRTRcyCJBFuvRbEvMFuMa8cV20W1e+rRd4f9jSfr5vDVJ0+I/SJsZI1ondws
==================End PublicKey==================


====================PrivateKey====================
RUNLMiAAAABN/odC5C5W7meBvf6rKmWOoVW9qRTRcyCJBFuvRbEvMFuMa8cV20W1e+rRd4f9jSfr5vDVJ0+I/SJsZI1ondwsto7Fc/J4akdJdCix51F0ELLKWlsdMDlkYx2shFEV3AA=
==================End PrivateKey==================

Exemple 2 :

root@kitploit:~
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

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ées

Une fois les données dumpées, WonkaVision effectue les opérations suivantes :

  1. Stocke les données dans une chaîne Json
  2. Génère une paire de clés publique/privée pour le dumper
  3. Utilise sa clé privée ainsi que la clé publique qui lui est passée avec l'argument /publickey:KEY pour dériver une clé symétrique
  4. Chiffre la chaîne Json avec AES en utilisant la clé symétrique
  5. Stocke les données chiffrées, sa clé publique et l'IV dans une chaîne Json et les écrit dans le répertoire spécifié par l'argument /dumpdir:DIR

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

root@kitploit:~
WonkaVision.exe /dump /publickey:\\server\dumpshare\public.key /dumpdir:\\server\dumpshare\dumps

Analyse

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és

Exemple :

root@kitploit:~
WonkaVision.exe /analyze /privatekey:C:\keys\private.key /dumpdir:C:\dumpshare\dumps

Exemple de journal d'événements

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) : 9988 Event

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

Exemple de Golden Ticket potentiellement forgé avec Mimikatz dans les journaux EVTX : 9989 Event

9989 Event 2

Exemple de transfert de journaux vers un SIEM

Comme indiqué ci-dessus, les journaux de WonkaVision sont écrits dans le canal Journal des événements d'application Windows. S'ils sont configurés, ces journaux peuvent être transférés vers un SIEM (par exemple Splunk, Sentinel, etc.).

Exemple avec Splunk

Une requête suggérée utilisant la journalisation WinEvnet "Classic" de Splunk peut également être utilisée :

root@kitploit:~
index="wv_demo_wineventlog" source="WinEventLog:Application" (Total_Score>=8) | table _time,Total_Score,User,Machine_Name,Service_Principal_Name,Mimikatz_Score,Rubeus_Score,Impacket_Score,Cobalt_Strike_Score,IOA_Reasons

Exemple de Golden Ticket potentiellement forgé avec Mimikatz WonkaVision dans Splunk : Mimikatz WonkaVisvion Splunk

Exemple de Golden Ticket potentiellement forgé avec Rubeus depuis WonkaVision dans Splunk :Rubeus WonkaVisvion Splunk

Exemple avec Sentinel

La journalisation avec Sentinel peut également être réalisée. Cependant, cela peut nécessiter une analyse supplémentaire. Ci-dessous un exemple de requête de Jonathan Johnson (@jsecurity101) illustrant comment WonkaVision peut apparaître une fois analysé dans Sentinel :

root@kitploit:~
Event
    | where Computer contains "asgard" and Source contains "Wonka"
    | extend ParsedEventData=parse_xml(EventData)
    | extend Data=ParsedEventData.DataItem.EventData.Data
    | parse-where Data with *
            "Total Score: " TotalScore:string
            "Session: " Session:string
            "Machine Name: " MachineName:string
            "User: " User:string
            "Service Principal Name: " ServicePrincipalName:string
            "IOAs: " IOAs:string
            "SessionUser: " IOA_SessionUser:string
            "KDCCalled: " IOA_KDCCalled:string
            "Mimikatz Score: " TScore_MimikatzScore:string 
            "Impacket Score: " TScore_ImpacketScore:string 
            "Rubeus Score: " TScore_RubeusScore:string 
            "Cobalt Strike Score: " TScore_CobaltStrikeScore:string 
            "IOA Reasons: " IOA_Reasons:string
    | where IOA_SessionUser contains "thor"

Exemple de Golden Ticket potentiellement forgé depuis WonkaVision dans Sentinel : WonkaVisvion Sentinel

Démos de la présentation

Démo 1 - Création d'un Golden Ticket :

https://user-images.githubusercontent.com/13423848/202441525-aec75260-a991-4a4d-8df1-6fbf92ddbb4c.mp4

Démo 2 - Création d'une paire de clés et dump de sessions/tickets :

https://user-images.githubusercontent.com/13423848/202441775-b753ae06-d012-4258-9ea0-25d88dc80549.mp4

Démo 3 - Analyse des dumps et sortie des événements Windows :

https://user-images.githubusercontent.com/13423848/202441909-04bd1b2a-f204-41c4-a13a-dcfa42eebcf3.mp4

Démo 4 - Sniffer réseau Kerberos :

https://user-images.githubusercontent.com/13423848/202442125-822cc4a4-1c87-447f-88ae-2e5c2fbf58d3.mp4

KrbSniffer POC

Le POC de sniffer de trafic Kerberos que nous avons présenté lors de notre exposé (Démo 4) a été implémenté avec SharpPCap, mais pourrait facilement être modifié pour utiliser des sockets brutes, supprimant ainsi cette dépendance ainsi que la nécessité d'installer npcap sur le système.

Comme il ne s'agissait que d'un POC minimal, la plupart des indicateurs implémentés étaient les indicateurs non chiffrés mentionnés lors de la présentation YASCON 2020 de Charlie, détaillés sur la diapositive 18 de ce jeu de diapositives, bien que beaucoup d'autres auraient pu être implémentés.

Remerciements

  • Will Schroeder (@harmj0y) pour la base de code de Rubeus
  • Vincent Le Toux (@mysmartlogon) pour la base de code de 'Make Me Enterprise Admin'
  • Jared Atkinson (@jaredcatkinson) pour la base de code de 'Get-KerberosTicketGrantingTicket.ps1' et 'Test-KerberosTicketGrantingTicket.ps1'
  • Jonathan Johnson (@jsecurity101) pour l'aide au dépannage d'une erreur DCSync :), les tests du POC, les tests avec Microsoft Sentinel et les conseils/orientations sur l'écriture dans le journal des événements Windows
  • Elad Shamir (@elad_shamir) pour les conseils/orientations
  • L'équipe 'sisoc-tokyo' (Université de Tokyo, Wataru Matsuda, Mariko Fujimoto, et Takuho Mitsunaga) qui a présenté 'Real-time detection of attacks leveraging Domain Administrator privilege' à BlackHat Europe 2018, dont nous avons découvert les travaux après le POC. Leur projet peut être trouvé ici
  • Semperis (@SemperisTech) et Trustedsec (@TrustedSec) pour nous avoir permis de mener à bien ce projet

TODO

  • Refactoriser et nettoyer le code
  • Implémenter la récupération de la clé de confiance
Télécharger l’outil