
Erkennt gefälschte Kerberos-Tickets durch Auslesen von Sitzungs- und Ticketdaten, Bewertung von Anomalien und Erzeugung von Windows-Ereignisprotokoll-Indikatoren für die SIEM-basierte Incident-Response.
WonkaVision ist ein Proof-of-Concept-Tool (POC) zur Analyse von Kerberos-Tickets, mit dem versucht wird festzustellen, ob diese gefälscht sind. Dieses Tool wurde von Charlie Clark und Andrew Schwartz erstellt.
Es sollte beachtet werden, dass dieses POC keine produktionsreife Unternehmensanwendung sein soll, sondern vielmehr Ideen hervorbringen soll, wie gefälschte Tickets besser erkannt werden können, während entdeckte IOAs veröffentlicht werden.
Charlie Clark ist der Hauptautor dieser Codebasis.
Ein Großteil des Codes zum Extrahieren von Sitzungsinformationen, zum Extrahieren von Kerberos-Tickets und zum Entschlüsseln/Verschlüsseln von Kerberos-Tickets stammt aus Rubeus. Der GetNCChanges-Code wurde aus MakeMeEnterpriseAdmin von Vincent Le Toux übernommen.
Es verfügt über 3 Funktionen:
/createkeys - Erstellt ein öffentliches/privates Schlüsselpaar zur Verwendung durch den Dumper und den Analyzer/dump - Wird auf Servern/Workstations ausgeführt und extrahiert Sitzungsdaten mit zugehörigen Kerberos-Tickets/analyze - Wird gegen ein Verzeichnis mit allen Dump-Dateien ausgeführt, analysiert alle Sitzungen und Tickets in den Dumps, erzeugt Bewertungen und schreibt in das EreignisprotokollWonkaVision hat die folgenden Abhängigkeiten:
Die Folien des Vortrags finden Sie hier.
WonkaVision ist unter der BSD-3-Clause-Lizenz lizenziert.
Erzeugt ein öffentliches und ein privates Schlüsselpaar mithilfe des Diffie-Hellman-Schlüsselaustauschalgorithmus auf Basis elliptischer Kurven (ECDH) mit der P-256-Kurve. Standardmäßig werden die Schlüssel als base64-codierte Blobs auf dem Terminal ausgegeben, aber mit dem Argument /outdir:PATH können die Schlüssel in Dateien geschrieben werden.
WENN IN DATEIEN GESCHRIEBEN WIRD, SOLLTE DIE DATEI private.key GESCHÜTZT WERDEN, ALS WÄRE ES DER KRBTGT-SCHLÜSSEL
Beispiel 1:
C:\WonkaVision>WonkaVision.exe /createkeys
====================PublicKey====================
RUNLMSAAAABN/odC5C5W7meBvf6rKmWOoVW9qRTRcyCJBFuvRbEvMFuMa8cV20W1e+rRd4f9jSfr5vDVJ0+I/SJsZI1ondws
==================End PublicKey==================
====================PrivateKey====================
RUNLMiAAAABN/odC5C5W7meBvf6rKmWOoVW9qRTRcyCJBFuvRbEvMFuMa8cV20W1e+rRd4f9jSfr5vDVJ0+I/SJsZI1ondwsto7Fc/J4akdJdCix51F0ELLKWlsdMDlkYx2shFEV3AA=
==================End PrivateKey==================
Beispiel 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
Erstellt Dumps von Sitzungsinformationen, die Kerberos-Tickets enthalten, einschließlich der Kerberos-Tickets selbst im KERB-CRED-Format. Dies geschieht durch Ausführen von LsaCallAuthenticationPackage, um Sitzungsinformationen, Informationen über den Ticket-Cache und Tickets als KERB-CREDs anzufordern (auf dieselbe Weise wie der Befehl dump von Rubeus).
Es sind 2 primäre Argumente erforderlich:
/publickey:KEY - Öffentlicher Schlüssel, der zur Verschlüsselung der Dump-Daten verwendet wird/dumpdir:DIR - Verzeichnis zum Speichern der Dump-DatenSobald die Daten extrahiert wurden, führt WonkaVision die folgenden Schritte aus:
/publickey:KEY übergebenen öffentlichen Schlüssel, um einen symmetrischen Schlüssel abzuleiten/dumpdir:DIR angegebene VerzeichnisEs ist möglich, bestimmte Sitzungen (mit dem Argument /luid:X), Benutzer (mit dem Argument /user:USER), Dienste (mit dem Argument /service:SVC) und/oder Server (mit dem Argument /server:Y) anzugeben, aber diese wurden bisher nicht umfassend getestet.
Beispiel:
WonkaVision.exe /dump /publickey:\\server\dumpshare\public.key /dumpdir:\\server\dumpshare\dumps
Analysiert Dumps, die mit dem Befehl /dump erstellt wurden. Es durchläuft rekursiv alle Unterverzeichnisse, auf die /dumpdir:DIR zeigt, und liest alle .json-Dateien, auf die es stößt. Sobald die JSON-Datei deserialisiert ist, durchläuft es alle darin gespeicherten Sitzungen und alle Tickets innerhalb der Sitzungen und analysiert sie so tiefgehend wie möglich, wobei jeder gefundenen Abweichung von der Erwartung eine Bewertung zugewiesen wird. Anschließend addiert es diese Bewertungen zu einer Gesamtbewertung und erzeugt 2 verschiedene Arten von Windows-Ereignissen, 9988 und 9989, für WonkaVision Session bzw. WonkaVision Ticket, die alle gefundenen Probleme enthalten.
Es ist möglich, /creduser:USER, /creddomain:DOMAIN und /credpass:PASSWORD anzugeben, um alternative Anmeldeinformationen für die LDAP-Abfragen und den DCSync zu verwenden. Dies wird jedoch nicht für den Produktionseinsatz empfohlen; sie wurden implementiert, um die Fehlersuche etwas zu erleichtern.
Es sind 2 primäre Argumente erforderlich:
/privatekey:KEY - Privater Schlüssel zum Entschlüsseln der verschlüsselten Dumps/dumpdir:DIR - Verzeichnis, in dem die verschlüsselten Dumps gespeichert sindBeispiel:
WonkaVision.exe /analyze /privatekey:C:\keys\private.key /dumpdir:C:\dumpshare\dumps
Obwohl WonkaVision die Analyseergebnisse über das Terminal ausgibt, findet sich eine ausführlichere Beschreibung der Analyse von Angriffsindikatoren (Indicator of Attack, IOA) im Windows-Anwendungsereignisprotokoll (Application Event Log). Hier erhält ein Analyst einen tieferen Einblick und Kontext in Bezug auf die Gesamtpunktzahl, die spezifischen IOAs, die Gründe für die IOAs und die Tool-Bewertungen. Es werden zwei Ereignisse geschrieben, 9988 (Sitzungsereignis) und 9989 (Ticket-Ereignis). Ein Beispiel für Ereignisse finden Sie hier.