
Detecta tickets Kerberos forjados ao extrair dados de sessão e tickets, pontuar anomalias e gerar indicadores de log de eventos do Windows para resposta a incidentes baseada em SIEM.
WonkaVision é uma ferramenta de prova de conceito (POC) para analisar tickets Kerberos e tentar determinar se eles são forjados. Esta ferramenta foi criada por Charlie Clark e Andrew Schwartz.
Deve-se notar que esta POC não tem a intenção de ser um aplicativo empresarial pronto para produção, mas sim gerar ideias sobre como detectar melhor tickets forjados enquanto divulga os IOAs descobertos.
Charlie Clark é o principal autor desta base de código.
Grande parte do código para despejar informações de sessão, despejar tickets Kerberos e descriptografar/criptografar tickets Kerberos foi retirada de Rubeus. O código GetNCChanges foi adaptado do MakeMeEnterpriseAdmin de Vincent Le Toux.
Possui 3 funções:
/createkeys - Cria um par de chaves pública/privada para uso pelo dumper e pelo analisador/dump - Para ser executado em servidores/estações de trabalho, despeja dados de sessão com os tickets Kerberos associados/analyze - Executado contra um diretório contendo todos os arquivos de dump, analisa todas as sessões e tickets nos dumps, gera pontuações e grava no log de eventosWonkaVision tem as seguintes dependências:
Os slides da apresentação estão aqui.
WonkaVision é licenciado sob a licença BSD 3-Clause.
Gera um par de chaves pública e privada usando o algoritmo de troca de chaves Elliptic Curve Diffie-Hellman (ECDH) com a curva P-256. Por padrão, ele envia as chaves para o terminal como blobs codificados em base64, mas possui o argumento /outdir:PATH para gravar as chaves em arquivos.
SE FOR GRAVAR EM ARQUIVOS, O ARQUIVO private.key DEVE SER PROTEGIDO COMO SE FOSSE A CHAVE KRBTGT
Exemplo 1:
C:\WonkaVision>WonkaVision.exe /createkeys
====================PublicKey====================
RUNLMSAAAABN/odC5C5W7meBvf6rKmWOoVW9qRTRcyCJBFuvRbEvMFuMa8cV20W1e+rRd4f9jSfr5vDVJ0+I/SJsZI1ondws
==================End PublicKey==================
====================PrivateKey====================
RUNLMiAAAABN/odC5C5W7meBvf6rKmWOoVW9qRTRcyCJBFuvRbEvMFuMa8cV20W1e+rRd4f9jSfr5vDVJ0+I/SJsZI1ondwsto7Fc/J4akdJdCix51F0ELLKWlsdMDlkYx2shFEV3AA=
==================End PrivateKey==================
Exemplo 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
Despeja informações de sessão de sessões que contêm tickets Kerberos, incluindo os próprios tickets Kerberos no formato KERB-CRED. Isso é feito executando LsaCallAuthenticationPackage para solicitar informações de sessão, informações sobre o cache de tickets e solicitar tickets como KERB-CREDs (da mesma forma que o comando dump do Rubeus).
São necessários 2 argumentos principais:
/publickey:KEY - chave pública a ser usada para criptografia dos dados despejados/dumpdir:DIR - diretório para armazenar os dados despejadosDepois que os dados são despejados, o WonkaVision faz o seguinte:
/publickey:KEY para derivar uma chave simétrica/dumpdir:DIRÉ possível especificar sessões específicas (com o argumento /luid:X), usuários (com o argumento /user:USER), serviços (com o argumento /service:SVC) e/ou servidores (com o argumento /server:Y), mas esses ainda não foram muito testados.
Exemplo:
WonkaVision.exe /dump /publickey:\\server\dumpshare\public.key /dumpdir:\\server\dumpshare\dumps
Analisa dumps criados com o comando /dump. Ele percorre recursivamente todos os subdiretórios apontados por /dumpdir:DIR e lê todos os arquivos .json que encontrar. Depois de desserializar o arquivo json, ele percorre todas as sessões armazenadas nele e todos os tickets nas sessões e os analisa com o máximo de profundidade possível, atribuindo uma pontuação para cada desvio do esperado encontrado. Em seguida, soma essas pontuações para produzir uma pontuação total e gera 2 tipos diferentes de eventos do Windows, 9988 e 9989, para WonkaVision Session e WonkaVision Ticket, respectivamente, contendo todos os problemas descobertos.
É possível especificar /creduser:USER, /creddomain:DOMAIN e /credpass:PASSWORD para usar credenciais alternativas para as consultas LDAP e DCsync. No entanto, isso não é recomendado em uso em produção; elas foram implementadas para facilitar um pouco a depuração de problemas.
São necessários 2 argumentos principais:
/privatekey:KEY - chave privada usada para descriptografar os dumps criptografados/dumpdir:DIR - diretório onde os dumps criptografados estão armazenadosExemplo:
WonkaVision.exe /analyze /privatekey:C:\keys\private.key /dumpdir:C:\dumpshare\dumps
Embora o WonkaVision retorne a saída da análise pelo terminal, uma descrição mais detalhada da análise de Indicador de Ataque (IOA) pode ser encontrada no canal de Log de Eventos do Aplicativo Windows. É aqui que um analista receberá maior visão e contexto em termos da Pontuação Total, dos IOAs específicos, do(s) motivo(s) dos IOAs e das pontuações das ferramentas. Dois eventos são gravados, 9988 (Evento de Sessão) e 9989 (Evento de Ticket), respectivamente. Uma amostra de eventos pode ser encontrada aqui.
A seguir está um exemplo de um Evento de Sessão WonkaVision (9988):

A seguir está um exemplo de um Evento de Ticket WonkaVision (9989):
Exemplo de possível Golden Ticket forjado com Mimikatz em logs EVTX:

