Shac0x/Wonka

GitHub: Shac0x/Wonka

Wonka 是一款 Windows 平台的 Kerberos 票据提取工具,通过访问 LSA 缓存转储活动登录会话中的票据数据,供安全研究和渗透测试使用。

Stars: 173 | Forks: 19

# Wonka 🍫

Wonka Logo

**Wonka** 是一个精巧的 Windows 工具,用于从本地安全机构(LSA)缓存中提取 Kerberos 票据。就像找到了一张入场券,但这是为了安全研究和渗透测试!🎫 ## ✨ 功能 - 🔐 **SYSTEM 模拟** - 自动提升为 SYSTEM 以访问 LSA(以管理员权限运行时) - 👤 **权限感知** - 普通用户仅通过不受信任的 LSA 连接转储*自己*的会话;无需 SYSTEM 模拟 - 📋 **会话发现** - 查找所有活动的登录会话 - 🗂️ **列表模式** - 仅列出用户和票据元数据,而不提取 base64 数据块 - 🎯 **单票据转储** - 通过 LUID 和/或服务名称定位并转储单个票据 - 🎟️ **票据提取** - 检索详细的 Kerberos 票据信息 - 📦 **Base64 输出** - 即用型票据格式 ## 🚀 快速开始 ### 要求 - Windows 操作系统 - 需要**转储所有会话**的管理员权限(普通用户仍可转储自己的票据) - .NET 8.0+(用于构建) ### 安装 **选项 1:构建单个可执行文件(推荐)** ``` dotnet publish -c Release -r win-x64 --self-contained true /p:PublishSingleFile=true ``` **选项 2:简单构建** ``` dotnet build --configuration Release ``` ### 用法 ``` .\Wonka.exe [/luid:] [/service:] ``` Wonka 会根据其运行所使用的权限自动调整: - **管理员** → 处理主机上的每个登录会话。 - **普通用户** → 仅处理当前用户的票据(不受信任的 LSA 连接,无 SYSTEM 模拟)。 #### 模式与选项 | 命令 | 功能说明 | |---------|--------------| | `.\Wonka.exe` *(无参数)* | 显示帮助信息。 | | `.\Wonka.exe dump` | 提取每个可访问会话的票据。 | | `.\Wonka.exe list` | 仅列出用户和票据**元数据** — 不提取 base64 数据。 | | `.\Wonka.exe dump /luid:` | 仅转储具有指定 LUID 的会话(十六进制 `0x3e7` 或十进制 `999`)。 | | `.\Wonka.exe dump /service:` | 仅转储其服务器名称包含 `` 的票据(例如 `krbtgt`、`cifs/host.domain`)。 | | `.\Wonka.exe dump /luid:0x3e7 /service:krbtgt` | 组合过滤器以转储**单个**票据。 | | `.\Wonka.exe -h` | 显示帮助信息。 | #### 示例 ``` # 显示帮助(在没有参数运行时也会显示) .\Wonka.exe -h # 转储所有可访问的票据(如果已提权则包含所有会话,否则仅为您的会话) .\Wonka.exe dump # 仅枚举拥有票据的用户,而不拉取 blobs(admin) .\Wonka.exe list # 为单个登录会话拉取单个 krbtgt 票据(TGT) .\Wonka.exe dump /luid:0x3e7 /service:krbtgt ``` ## 📖 示例输出 ``` Starting Kerberos ticket extraction process... [+] Running with administrative privileges [+] Successfully impersonated as SYSTEM [+] Logon sessions found: 15 [+] User: charlie.bucket@CHOCOLATE.FACTORY [+] LogonId: 0x3e7 | Tickets found: 3 ----------------------------------------------------------------------- Username = charlie.bucket DnsDomainName = chocolate.factory StartTime ---> 10/21/2025 10:30:15 AM EndTime ---> 10/21/2025 8:30:15 PM Server Name ---> krbtgt/CHOCOLATE.FACTORY Ticket b64 ---> YIIFgjCCBX6gAwIBBaEDAgEWooIEhjCCBIJhggR+MII... ----------------------------------------------------------------------- ``` ## 🏗️ 项目结构 ``` Wonka/ ├── Program.cs # CLI parsing + ticket extraction logic ├── Winapi.cs # Windows API definitions └── Wonka.csproj # Project file ``` ## 🔧 技术细节 ### 使用的核心 API - `OpenProcessToken` / `DuplicateTokenEx` / `ImpersonateLoggedOnUser` / `RevertToSelf` - SYSTEM 模拟(管理员路径) - `LsaRegisterLogonProcess` - 特权 LSA 注册(管理员路径) - `LsaConnectUntrusted` - 为当前用户提供无特权 LSA 连接(普通用户路径) - `LsaEnumerateLogonSessions` - 会话枚举 - `LsaCallAuthenticationPackage` - Kerberos 通信 ### 工作原理 **提权(管理员):** 1. 通过 winlogon 进程令牌模拟 SYSTEM 2. 向本地安全机构注册(`LsaRegisterLogonProcess`) 3. 枚举所有登录会话 4. 从每个会话中提取 Kerberos 票据(或仅提取匹配 `/luid` / `/service` 的会话) 5. 以 Base64 格式输出票据(或在 `list` 模式下仅输出元数据) **普通用户:** 1. 打开不受信任的 LSA 连接(`LsaConnectUntrusted`) — 无需模拟 2. 查询调用者自身的登录会话(LUID `{0,0}`) 3. 提取当前用户的 Kerberos 票据 ## 🛠️ 故障排除 | 问题 | 解决方案 | |-------|----------| | “无法模拟为 SYSTEM” | 请以管理员身份运行(或以普通用户身份运行以仅转储您自己的票据) | | “无法初始化 LSA” | 检查 Windows 兼容性 | | “未找到票据” | 确保正在使用 Kerberos(`klist`) | ## ⚠️ 法律声明 本工具仅供**授权的安全研究和测试使用**。就像 Wonka 的工厂一样,只有在获得许可后才能进入!🏭 **请负责任地使用:** - ✅ 安全研究与教育 - ✅ 授权的渗透测试 - ✅ 系统管理 - ❌ 未经授权的系统访问 ## 🍫 关于 为需要像 Wonka 的巧克力一样甜美地提取 Kerberos 票据的安全专业人员而创建。请记住:能力越大,责任越大! *"在这令人疲倦的世界里,善行熠熠生辉。"* 🌟
标签:凭据提取, 模拟器, 端点可见性