
Обнаруживает поддельные билеты Kerberos путем извлечения данных о сеансах и билетах, оценки аномалий и формирования индикаторов журнала событий Windows для реагирования на инциденты на основе SIEM.
WonkaVision — это инструмент proof of concept (POC) для анализа билетов Kerberos и попытки определить, являются ли они поддельными. Этот инструмент был создан Charlie Clark и Andrew Schwartz.
Следует отметить, что этот POC не предназначен для использования в качестве готового корпоративного приложения, а скорее для генерации идей о том, как лучше обнаруживать поддельные билеты, публикуя при этом обнаруженные IOA.
Charlie Clark является основным автором этой кодовой базы.
Большая часть кода для сбора информации о сеансах, дампа билетов Kerberos и их расшифровки/шифрования была взята из Rubeus. Код GetNCChanges был адаптирован из MakeMeEnterpriseAdmin от Vincent Le Toux.
Он имеет 3 функции:
/createkeys - создает пару открытого/закрытого ключа для использования дампером и анализатором/dump - запускается на серверах/рабочих станциях, собирает данные сеансов со связанными билетами Kerberos/analyze - запускается против каталога, содержащего все файлы дампа, анализирует все сеансы и билеты в дампах, генерирует оценки и записывает их в журнал событийWonkaVision имеет следующие зависимости:
Слайды с доклада находятся здесь.
WonkaVision распространяется под лицензией BSD 3-Clause.
Генерирует пару открытого и закрытого ключей с использованием алгоритма обмена ключами Elliptic Curve Diffie-Hellman (ECDH) на кривой P-256. По умолчанию выводит ключи в терминал в виде base64-кодированных блоков, но поддерживает аргумент /outdir:PATH для записи ключей в файлы.
ПРИ ЗАПИСИ В ФАЙЛЫ ФАЙЛ private.key СЛЕДУЕТ ЗАЩИЩАТЬ ТАК, КАК ЕСЛИ БЫ ЭТО БЫЛ КЛЮЧ KRBTGT
Пример 1:
C:\WonkaVision>WonkaVision.exe /createkeys
====================PublicKey====================
RUNLMSAAAABN/odC5C5W7meBvf6rKmWOoVW9qRTRcyCJBFuvRbEvMFuMa8cV20W1e+rRd4f9jSfr5vDVJ0+I/SJsZI1ondws
==================End PublicKey==================
====================PrivateKey====================
RUNLMiAAAABN/odC5C5W7meBvf6rKmWOoVW9qRTRcyCJBFuvRbEvMFuMa8cV20W1e+rRd4f9jSfr5vDVJ0+I/SJsZI1ondwsto7Fc/J4akdJdCix51F0ELLKWlsdMDlkYx2shFEV3AA=
==================End PrivateKey==================
Пример 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
Собирает информацию о сеансах, содержащих билеты Kerberos, включая сами билеты Kerberos в формате KERB-CRED. Это делается путем выполнения LsaCallAuthenticationPackage для запроса информации о сеансах, информации о кэше билетов и запроса билетов в виде KERB-CRED (так же, как это делает команда dump из Rubeus).
Требуются 2 основных аргумента:
/publickey:KEY - открытый ключ, используемый для шифрования собранных данных/dumpdir:DIR - каталог для хранения собранных данныхПосле выгрузки данных WonkaVision выполняет следующие действия:
/publickey:KEY для выработки симметричного ключа/dumpdir:DIRМожно указать конкретные сеансы (аргументом /luid:X), пользователей (аргументом /user:USER), службы (аргументом /service:SVC) и/или серверы (аргументом /server:Y), но в настоящее время эти возможности недостаточно протестированы.
Пример:
WonkaVision.exe /dump /publickey:\\server\dumpshare\public.key /dumpdir:\\server\dumpshare\dumps
Анализирует дампы, созданные с помощью команды /dump. Он рекурсивно обходит все дочерние каталоги, указанные в /dumpdir:DIR, и читает все встречающиеся .json файлы. После десериализации JSON-файла он перебирает все сеансы, хранящиеся в нём, и все билеты внутри сеансов, анализируя их максимально глубоко и назначая баллы за каждое обнаруженное отклонение от ожидаемого. Затем он суммирует эти баллы для получения общего результата и генерирует 2 типа событий Windows — 9988 и 9989 — для WonkaVision Session и WonkaVision Ticket соответственно, содержащих все обнаруженные проблемы.
Можно указать /creduser:USER, /creddomain:DOMAIN и /credpass:PASSWORD для использования альтернативных учетных данных для LDAP-запросов и DCsync. Однако это не рекомендуется в производственной среде; они были реализованы для упрощения отладки проблем.
Требуются 2 основных аргумента:
/privatekey:KEY - закрытый ключ, используемый для расшифровки зашифрованных дампов/dumpdir:DIR - каталог, в котором хранятся зашифрованные дампыПример:
WonkaVision.exe /analyze /privatekey:C:\keys\private.key /dumpdir:C:\dumpshare\dumps
Хотя WonkaVision выводит результаты анализа в терминал, более подробное описание анализа индикаторов атак (IOA) можно найти в канале журнала приложений Windows. Именно здесь аналитик получает более глубокое понимание и контекст в отношении общего балла (Total Score), конкретных IOA, причин IOA и оценок инструментов. Записываются два события: 9988 (Session Event) и 9989 (Ticket Event) соответственно. Образец событий можно найти здесь.
Ниже приведен пример события сеанса WonkaVision (9988):

Ниже приведен пример события билета WonkaVision (9989):
Пример возможного поддельного золотого билета с помощью Mimikatz в журналах EVTX:


Как отмечалось выше, журналы WonkaVision записываются в канал журнала приложений Windows. При соответствующей настройке эти журналы можно пересылать в SIEM (например, Splunk, Sentinel и т.д.).