Skip to content
KitploitKITPLOIT
工具博客
提交
工具博客
提交

黑客、渗透测试和网络安全工具,武装您的安全武器库!

Kitploit 是一个黑客、网络安全和渗透测试工具的目录。发现最新的项目更新,查找漏洞、分析系统、自动化测试并加强你的安全。

··订阅源·联系·隐私·© 2026 Kitploit

工具目录

分类

查看所有分类
Loading categories
WonkaVision — 通过转储会话和票据数据、对异常进行评分并生成 Windows 事件日志指标以用于基于 SIEM 的事件响应,从而检测伪造的 Kerberos 票据。 | Kitploit
工具/GitHubGitHub/0xe7/wonkavision
防御工具身份与访问管理 (IAM)身份验证入侵检测事件响应异常检测日志分析
GitHub0xe7/wonkavision

WonkaVision

通过转储会话和票据数据、对异常进行评分并生成 Windows 事件日志指标以用于基于 SIEM 的事件响应,从而检测伪造的 Kerberos 票据。

查看仓库
8993年前Kitploit 审核通过

最受欢迎

查看全部 →

发现我们社区最常用的工具。

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

WonkaVision


WonkaVision 是一个概念验证 (POC) 工具,用于分析 Kerberos 票据并尝试判断其是否被伪造。该工具由 Charlie Clark 和 Andrew Schwartz 创建。

需要注意的是,此 POC 并非旨在成为可直接用于生产环境的企业级应用,而是为了在公开所发现的 IOA 的同时,启发如何更好地检测伪造票据的思路。

Charlie Clark 是此代码库的主要作者。

用于转储会话信息、转储 Kerberos 票据以及解密/加密 Kerberos 票据的大部分代码取自 Rubeus。GetNCChanges 代码改编自 Vincent Le Toux 的 MakeMeEnterpriseAdmin。

它包含 3 个功能:

  • /createkeys - 创建公钥/私钥对,供转储器和分析器使用
  • /dump - 在服务器/工作站上运行,转储会话数据及关联的 Kerberos 票据
  • /analyze - 针对包含所有转储文件的目录运行,分析转储中的所有会话和票据,生成评分并写入事件日志

WonkaVision 具有以下依赖项:

  • Newtonsoft.Json - 用于序列化/反序列化 JSON 对象
  • dnMerge - 用于将 Newtonsoft.Json DLL 合并到单个二进制文件中,以便在转储票据时更轻松地部署

演讲的幻灯片在此处。

WonkaVision 遵循 BSD 3-Clause 许可证。

目录

  • WonkaVision
    • 创建密钥
    • 转储
    • 分析
      • 事件日志示例
      • SIEM 日志转发示例
        • 使用 Splunk 的示例
        • 使用 Sentinel 的示例
  • 演讲演示
  • Kerberos 嗅探器
  • 致谢
  • 待办事项

创建密钥

使用 P-256 曲线的椭圆曲线 Diffie-Hellman (ECDH) 密钥交换算法生成公钥和私钥对。默认情况下,它会将密钥以 base64 编码的 blob 形式输出到终端,但也可以通过 /outdir:PATH 参数将密钥写入文件。

如果写入文件,应像保护 KRBTGT 密钥一样保护 private.key 文件

示例 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==================

示例 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

转储

转储包含 Kerberos 票据的会话信息,包括 Kerberos 票据本身(KERB-CRED 格式)。它通过执行 LsaCallAuthenticationPackage 来请求会话信息、票据缓存信息,并将票据作为 KERB-CRED 请求(与 Rubeus 的 dump 命令相同)。

需要 2 个主要参数:

  • /publickey:KEY - 用于加密转储数据的公钥
  • /dumpdir:DIR - 用于存储转储数据的目录

数据转储完成后,WonkaVision 将执行以下操作:

  1. 将数据存储为 Json 字符串
  2. 为转储器生成公钥/私钥对
  3. 使用其私钥以及通过 /publickey:KEY 参数传入的公钥来派生对称密钥
  4. 使用该对称密钥通过 AES 加密 Json 字符串
  5. 将加密数据、其公钥和 IV 存储在一个 Json 字符串中,并将其写入 /dumpdir:DIR 参数指定的目录

可以指定特定的会话(使用 /luid:X 参数)、用户(使用 /user:USER 参数)、服务(使用 /service:SVC 参数)和/或服务器(使用 /server:Y 参数),但这些参数目前尚未经过太多测试。

示例:

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

分析

分析使用 /dump 命令创建的转储。它会递归遍历 /dumpdir:DIR 指向的所有子目录,并读取遇到的任何 .json 文件。反序列化 json 文件后,它会遍历其中存储的所有会话以及会话中的所有票据,并尽可能深入地分析它们,为每个发现的与预期不符的偏差分配一个分数。随后,它会将这些分数相加得出总分,并生成两种不同类型的 Windows 事件 9988 和 9989,分别对应 WonkaVision Session 和 WonkaVision Ticket,其中包含所有发现的问题。

可以指定 /creduser:USER、/creddomain:DOMAIN 和 /credpass:PASSWORD,以便为 LDAP 查询和 DC 同步使用备用凭据。不过不建议在生产环境中使用这些参数,它们是为了更方便地调试问题而实现的。

需要 2 个主要参数:

  • /privatekey:KEY - 用于解密加密转储的私钥
  • /dumpdir:DIR - 存储加密转储的目录

示例:

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

事件日志示例

尽管 WonkaVision 会通过终端返回分析输出,但在 Windows 应用程序事件日志通道中可以找到更详细的攻击指标 (IOA) 分析描述。分析师将在这里获得关于总分、具体 IOA、IOA 原因以及工具分数的更深入洞察和上下文。会写入两个事件,分别为 9988(会话事件)和 9989(票据事件)。可在此处找到事件示例。

以下是 WonkaVision 会话事件 (9988) 的示例: 9988 Event

以下是 WonkaVision 票据事件 (9989) 的示例:

EVTX 日志中可能出现的使用 Mimikatz 伪造的黄金票据示例: 9989 Event

9989 Event 2

SIEM 日志转发示例

如上所述,WonkaVision 的日志会写入 Windows 应用程序事件日志通道。如果进行配置,这些日志可以转发到 SIEM(例如 Splunk、Sentinel 等)。

使用 Splunk 的示例

还可以使用采用 Splunk "Classic" WinEvnet 日志记录的建议查询:

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

Splunk 中可能出现的使用 Mimikatz WonkaVision 伪造的黄金票据示例: Mimikatz WonkaVisvion Splunk

Splunk 中可能出现的来自 WonkaVision 的使用 Rubeus 伪造的黄金票据示例:Rubeus WonkaVisvion Splunk

使用 Sentinel 的示例

也可以使用 Sentinel 进行日志记录。但这可能需要额外的解析。下面是从 Jonathan Johnson (@jsecurity101) 那里获得的一个示例查询,展示了 WonkaVision 在 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"

Sentinel 中可能出现的来自 WonkaVision 的伪造黄金票据示例: WonkaVisvion Sentinel

演讲演示

演示 1 - 黄金票据创建:

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

演示 2 - 密钥对创建及会话/票据转储:

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

演示 3 - 转储分析和 Windows 事件输出:

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

演示 4 - Kerberos 网络嗅探器:

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

KrbSniffer 概念验证

我们在演讲中演示的 Kerberos 流量嗅探器 POC(演示 4)是使用 SharpPCap 实现的,但可以轻松修改为使用原始套接字,从而消除该依赖以及系统上安装 npcap 的需求。

由于它只是一个最小的 POC,因此实现的大部分指标都是 Charlie 在 YASCON 2020 演讲中提到的未加密指标,详见此幻灯片的第 18 页,尽管还可以实现更多指标。

致谢

  • Will Schroeder (@harmj0y) 提供的 Rubeus 代码库
  • Vincent Le Toux (@mysmartlogon) 提供的 'Make Me Enterprise Admin' 代码库
  • Jared Atkinson (@jaredcatkinson) 提供的 'Get-KerberosTicketGrantingTicket.ps1' 和 'Test-KerberosTicketGrantingTicket.ps1' 代码库
  • Jonathan Johnson (@jsecurity101) 在排查 DCSync 错误方面提供的帮助 :)、POC 测试、Microsoft Sentinel 测试以及有关写入 Windows 事件日志的建议/指导
  • Elad Shamir (@elad_shamir) 提供的建议/指导
  • 'sisoc-tokyo' 团队(东京大学、Wataru Matsuda、Mariko Fujimoto 和 Takuho Mitsunaga),他们在 BlackHat Europe 2018 上做了题为 'Real-time detection of attacks leveraging Domain Administrator privilege' 的演讲,我们在 POC 之后发现了他们的工作。他们的项目可以在此处找到
  • Semperis (@SemperisTech) 和 Trustedsec (@TrustedSec) 允许我们完成这个项目

待办事项

  • 重构和清理代码
  • 实现信任密钥检索
下载工具