
Rileva ticket Kerberos contraffatti estraendo i dati di sessione e dei ticket, assegnando un punteggio alle anomalie e generando indicatori dai log eventi di Windows per la risposta agli incidenti basata su SIEM.
WonkaVision è uno strumento proof of concept (POC) per analizzare i ticket Kerberos e tentare di determinare se sono contraffatti. Questo strumento è stato creato da Charlie Clark e Andrew Schwartz.
Va notato che questo POC non è pensato per essere un'applicazione enterprise pronta per la produzione, ma piuttosto per generare idee su come rilevare meglio i ticket contraffatti, divulgando al contempo le IOA scoperte.
Charlie Clark è l'autore principale di questa base di codice.
Gran parte del codice per scaricare le informazioni sulle sessioni, scaricare i ticket Kerberos e decrittare/crittare i ticket Kerberos è stata presa da Rubeus. Il codice GetNCChanges è stato adattato da Vincent Le Toux's MakeMeEnterpriseAdmin.
Ha 3 funzioni:
/createkeys - Crea una coppia di chiavi pubblica/privata per l'uso da parte del dumper e dell'analizzatore/dump - Da eseguire su server/workstation, scarica i dati delle sessioni con i ticket Kerberos associati/analyze - Eseguito su una directory contenente tutti i file di dump, analizza tutte le sessioni e i ticket all'interno dei dump, genera punteggi e scrive nel registro eventiWonkaVision ha le seguenti dipendenze:
Le slide della presentazione sono qui.
WonkaVision è concesso in licenza sotto la licenza BSD 3-Clause.
Genera una coppia di chiavi pubblica e privata utilizzando l'algoritmo di scambio di chiavi Elliptic Curve Diffie-Hellman (ECDH) con la curva P-256. Di default, scrive le chiavi sul terminale come blob codificati in base64, ma ha l'argomento /outdir:PATH per scrivere le chiavi su file.
SE SI SCRIVONO SU FILE, IL FILE private.key DEVE ESSERE PROTETTO COME SE FOSSE LA CHIAVE KRBTGT
Esempio 1:
C:\WonkaVision>WonkaVision.exe /createkeys
====================PublicKey====================
RUNLMSAAAABN/odC5C5W7meBvf6rKmWOoVW9qRTRcyCJBFuvRbEvMFuMa8cV20W1e+rRd4f9jSfr5vDVJ0+I/SJsZI1ondws
==================End PublicKey==================
====================PrivateKey====================
RUNLMiAAAABN/odC5C5W7meBvf6rKmWOoVW9qRTRcyCJBFuvRbEvMFuMa8cV20W1e+rRd4f9jSfr5vDVJ0+I/SJsZI1ondwsto7Fc/J4akdJdCix51F0ELLKWlsdMDlkYx2shFEV3AA=
==================End PrivateKey==================
Esempio 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
Scarica le informazioni sulle sessioni che contengono ticket Kerberos, inclusi i ticket Kerberos stessi in formato KERB-CRED. Lo fa eseguendo LsaCallAuthenticationPackage per richiedere informazioni sulle sessioni, informazioni sulla cache dei ticket e richiedere i ticket come KERB-CRED (nello stesso modo in cui lo fa il comando dump di Rubeus).
Sono richiesti 2 argomenti principali:
/publickey:KEY - chiave pubblica da usare per la crittografia dei dati scaricati/dumpdir:DIR - directory in cui salvare i dati scaricatiUna volta che i dati sono stati scaricati, WonkaVision esegue le seguenti operazioni:
/publickey:KEY per derivare una chiave simmetrica/dumpdir:DIRÈ possibile specificare sessioni specifiche (con l'argomento /luid:X), utenti (con l'argomento /user:USER), servizi (con l'argomento /service:SVC) e/o server (con l'argomento /server:Y), ma queste opzioni non sono state ancora testate a fondo.
Esempio:
WonkaVision.exe /dump /publickey:\\server\dumpshare\public.key /dumpdir:\\server\dumpshare\dumps
Analizza i dump creati con il comando /dump. Scorre ricorsivamente tutte le sottodirectory indicate da /dumpdir:DIR e legge tutti i file .json che incontra. Dopo aver deserializzato il file json, scorre tutte le sessioni in esso memorizzate e tutti i ticket all'interno delle sessioni e li analizza nel modo più approfondito possibile, assegnando un punteggio per ogni deviazione rilevata rispetto a quanto atteso. Successivamente, somma questi punteggi per produrre un punteggio totale e genera 2 diversi tipi di eventi Windows, 9988 e 9989, rispettivamente per WonkaVision Session e WonkaVision Ticket, contenenti tutti i problemi scoperti.
È possibile specificare /creduser:USER, /creddomain:DOMAIN e /credpass:PASSWORD per usare credenziali alternative per le query LDAP e il DCsync. Questo però non è consigliato in produzione; sono stati implementati per semplificare il debug dei problemi.
Sono richiesti 2 argomenti principali:
/privatekey:KEY - chiave privata usata per decrittare i dump crittografati/dumpdir:DIR - directory in cui sono salvati i dump crittografatiEsempio:
WonkaVision.exe /analyze /privatekey:C:\keys\private.key /dumpdir:C:\dumpshare\dumps
Anche se WonkaVision restituisce l'esito dell'analisi tramite terminale, una descrizione più dettagliata dell'analisi degli Indicator of Attack (IOA) si trova nel canale Registro eventi applicazione di Windows. È qui che all'analista vengono forniti maggiori dettagli e contesto in termini di punteggio totale, delle IOA specifiche, dei motivi delle IOA e dei punteggi degli strumenti. Vengono scritti due eventi: 9988 (Evento sessione) e 9989 (Evento ticket). Un esempio degli eventi può essere trovato qui.
Quello che segue è un esempio di un evento di sessione WonkaVision (9988):

Quello che segue è un esempio di un evento ticket WonkaVision (9989):
Esempio di possibile Golden Ticket contraffatto con Mimikatz nei log EVTX:
