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

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

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

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

工具目录

分类

查看所有分类
Loading categories
tgt-monitor-bof — 异步BOF,用于在目标系统上自动提取或续订Kerberos TGTs | Kitploit
工具/GitHubGitHub/jakobfriedl/tgt-monitor-bof
横向移动后渗透利用渗透测试身份验证红队Payload 开发
GitHubjakobfriedl/tgt-monitor-bof

tgt-monitor-bof

异步BOF,用于在目标系统上自动提取或续订Kerberos TGTs

查看仓库
1341027天前Kitploit 审核通过

最受欢迎

查看全部 →

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

探索所有工具

浏览我们的工具集合

查看所有工具 →
分享

Kerberos TGT 监控与自动续期

本仓库包含两个异步 Beacon 对象文件 (BOF)。第一个 tgt-monitor 监控系统的 Kerberos 登录事件,并在捕获到新 Kerberos TGT 时唤醒代理。类似于 Rubeus 的 monitor 命令,该 BOF 会持续运行并定期检查 LSA 票据缓存。一旦检测到新的 TGT,它将打印票据元数据并输出 base64 编码的 kirbi 数据块,可用于通过传递票据攻击进行横向移动。第二个 tgt-renew 自动续期系统中剩余生命周期低于指定阈值(例如 15 分钟)的 TGT。

[!Important] 本仓库中的 BOF 需要异步对象文件加载能力。此类功能由 Conquest 框架提供。

  • Kerberos TGT 监控与自动续期
    • 工作原理
      • 票据监控
      • 票据续期
    • 使用
      • tgt-monitor
      • tgt-renew
    • 安装
    • 致谢

工作原理

这两个 BOF 都需要在 NT AUTHORITY\SYSTEM 上下文中运行。权限检查遵循相同的逻辑。

  1. BOF 检查当前进程令牌是否具有 SYSTEM 权限。
  2. 如果进程令牌不是 SYSTEM,则 BOF 扫描当前进程中的所有线程,查找具有 SYSTEM 权限的模拟令牌并进行复制。这允许从已窃取 SYSTEM 令牌(例如通过 SeImpersonatePrivilege)的低完整性代理进程中使用。如果这样仍无法获得 SYSTEM 级别访问权限,则 BOF 终止。
  3. 获取 LSA 和 Kerberos 认证包句柄。

以下步骤在循环中重复执行,直到通过停止事件取消 BOF。用户定义的间隔设置轮询之间的延迟。

票据监控

  1. 枚举所有活动的登录会话。对于每个会话,查询 Kerberos 票据缓存并过滤出 TGT。如果提供了 --user 参数,则仅考虑与该用户名匹配的会话。
  2. 将当前票据缓存与之前快照进行对比。新的 TGT 会触发元数据打印和 base64 编码的 kirbi 输出,随后调用 BeaconWakeup() 强制代理回连并返回输出。

TGT 监控工作流

票据续期

  1. 枚举所有活动的登录会话。对于每个会话,查询 Kerberos 票据缓存并过滤出 TGT。如果提供了 --user 参数,则仅考虑与该用户名匹配的会话。
  2. 检查每个 TGT 的两个条件:
    • 如果票据已超过 RenewUntil 时间,则标记为已过期,需要重新认证。
    • 如果票据的剩余生命周期在用户定义的阈值内,则续期该 TGT 并导入。成功时,打印更新后的票据元数据和 base64 编码的 kirbi 输出,随后调用 BeaconWakeup()。

TGT 续期工作流

票据续期过程包括以下步骤:

  1. 通过 ExtractTicket() 使用 PTICKET_ENTRY 结构体中的 LUID 和 SPN 提取 ASN.1 编码的 Kerberos TGT。
  2. 对票据进行 ASN.1 解码并获取 Kerberos 凭据。
  3. 创建 TGS-REQ 数据包,使用即将过期的票据进行预认证以请求续期。
  4. 将 TGS-REQ 字节发送到域控制器的 88 端口。
  5. 接收、ASN.1 解码并解析 TGS-REP 响应。
  6. 构建续期后的票据,从缓存中清除旧票据,并使用传递票据导入续期后的票据。
  7. 更新 PTICKET_ENTRY 结构体中的 startTime、endTime、renewUntil、ticketFlags 和 encryptionType,打印票据信息及 base64。

使用

本仓库包含一个 Conquest 模块,实现了以下两个命令。

tgt-monitor

tgt-monitor BOF 在捕获到新 TGT 时发出警报,并返回 Base64 编码的数据块。需要向对象文件传递以下参数:

名称类型描述
intervalint检查间隔(秒)。
targetUsersstring不区分大小写的逗号分隔的目标用户名列表。设置此字段时,仅检索指定用户的 TGT。否则,检索所有用户的 TGT。注意,计算机账户必须以 $ 结尾。
root@kitploit:~
用法: tgt-monitor [--interval interval] [--user user]
示例: tgt-monitor --interval 5 --user DC01$

可选参数:
  --interval interval       INT        轮询间隔(秒),默认值:60。
  --user user               STRING     逗号分隔的目标用户名列表,默认值:所有用户。

TGT 监控

编码后的票据可直接与 Rubeus.exe ptt /ticket:<base64> 或 impacket-ticketConverter 配合使用,以进行进一步的横向移动,如下方截图所示。在 Conquest 中,可以使用 ptt 命令将票据直接注入当前登录会话以模拟目标用户。

使用 TGT 监控窃取票据

tgt-renew

tgt-renew BOF 自动续期即将过期的票据,直至无法再续期。需要向对象文件传递以下参数:

root@kitploit:~
用法: tgt-renew [--interval seconds] [--threshold minutes] [--user user] [--luid luid]
示例: tgt-renew --luid 0x3e4 --interval 300 --threshold 30

可选参数:
  --interval seconds        INT        轮询间隔(秒),默认值:60。
  --threshold minutes       INT        票据续期阈值(分钟),默认值:15。
  --user user               STRING     逗号分隔的目标用户名列表,默认值:所有用户。
  --luid luid               STRING     逗号分隔的目标 LUID 列表,默认值:所有 LUID。

--user 和 --luid 标志互斥。

TGT 续期

安装

root@kitploit:~
git clone https://github.com/jakobfriedl/tgt-monitor-bof
cd tgt-monitor-bof
make

然后,使用 Conquest 的脚本管理器加载 dist/tgt-monitor.py 模块。

致谢

本 Beacon 对象文件的实现基于以下项目:

  • https://github.com/Ghostpack/Rubeus
  • https://github.com/RalfHacker/Kerbeus-BOF
    • ASN.1 编码/解码实现
  • https://github.com/wavvs/nanorobeus
下载工具
名称类型描述
intervalint检查间隔(秒)。
thresholdint续期阈值(分钟)。当票据距离 EndTime 的时间低于此阈值时,进行续期。
targetUsersstring不区分大小写的逗号分隔的目标用户名列表。设置此字段时,仅续期指定用户的 TGT。否则,续期所有用户的 TGT。注意,计算机账户必须以 $ 结尾。
targetLuidsstring不区分大小写的逗号分隔的目标 LUID 列表。设置此字段时,仅续期指定 LUID 的 TGT。