0Pricing
Cyber Security Academy · 课时

Kerberos 与 Kerberoasting

破解服务账户票据。

Kerberos 与 Kerberoasting 是 CoddyKit 上的免费 Cyber Security Academy 课时。 这是第 2 节课,共 4 节。 你可以在下方免费阅读本课时的完整内容 — 然后在浏览器中使用内置代码编辑器和全天候 AI 导师进行实践。 这是 Cyber Security Academy 学习路径的一部分,你的进度在网页和 CoddyKit 应用中同步。 Cyber Security Academy 课程共包含 4 节课。

一图看懂 Kerberos

Kerberos 是一种基于票据的身份验证协议。客户端不发送密码,而是出示由密钥分发中心(KDC)签发的加密票据;KDC 运行在每个域控制器上。

  • 身份验证服务器(AS)签发票据授予票据(TGT)。
  • 票据授予服务器(TGS)签发服务票据。
  • 服务无需联系 DC 即可验证票据。

三次交互

Kerberos 包含三次消息交互。理解它们有助于判断攻击发生在哪个环节。

  • AS-REQ / AS-REP:客户端证明身份(预身份验证),并获得使用票据签名账户密钥加密的 TGT。
  • TGS-REQ / TGS-REP:客户端出示 TGT,请求服务票据(TGS)。
  • AP-REQ / AP-REP:客户端向服务出示 TGS。

AS-REP 离线破解针对第一次交互,服务票据离线破解针对第二次交互。

服务主体名称

服务主体名称(SPN)将服务实例映射到运行该服务的账户。当您请求某个 SPN 的 TGS 时,生成的票据有一部分会使用服务账户的密码哈希值加密。

这正是服务票据离线破解的核心:任何经过身份验证的用户都可以请求服务账户的票据,然后在离线状态下破解票据,以恢复明文密码。

# Find accounts with SPNs set
Get-DomainUser -SPN | select samaccountname,serviceprincipalname

服务票据离线破解流程

服务票据离线破解不易被察觉,因为请求 TGS 是正常行为。攻击步骤如下:

  • 枚举带有 SPN 的用户账户。
  • 为这些 SPN 请求 TGS 票据。
  • 提取加密的票据数据。
  • 使用密码字典在离线状态下破解;破解期间无需与 DC 交互。
# Rubeus: request and dump kerberoastable hashes
Rubeus.exe kerberoast /outfile:hashes.txt

# Impacket from Linux
GetUserSPNs.py domain/user:pass -dc-ip 10.0.0.10 -request

破解票据

捕获的票据使用服务账户密码作为密钥。离线破解会不断尝试候选密码,直到其中一个能够正确解密票据。

服务账户通常使用较弱且从不轮换的密码,因此可以很快被破解。

# Hashcat mode 13100 = Kerberos 5 TGS-REP etype 23 (RC4)
hashcat -m 13100 hashes.txt rockyou.txt

# etype 18 (AES256) uses mode 19700
hashcat -m 19700 hashes_aes.txt rockyou.txt

加密类型很重要

票据所使用的加密算法会影响破解速度。

  • RC4(加密类型 23)破解速度很快,如果仍被允许使用,就是明显的风险信号。
  • AES(加密类型 17/18)的暴力破解速度要慢得多。
  • 攻击者可能通过滥用 /tgtdeleg 或 msDS-SupportedEncryptionTypes,将请求降级为 RC4。

防御人员应在整个域内禁用 RC4,并强制使用 AES。

AS-REP 离线破解

另一种相关攻击针对禁用了 Kerberos 预身份验证的账户(DONT_REQ_PREAUTH)。没有预身份验证时,AS-REP 会包含使用用户密码哈希值加密的数据,无需任何凭据即可获取。

# Rubeus AS-REP roast
Rubeus.exe asreproast /format:hashcat /outfile:asrep.txt

# Hashcat mode 18200
hashcat -m 18200 asrep.txt rockyou.txt

为什么如此容易成功

服务票据离线破解之所以成功,是因为存在结构性弱点,而不是协议本身存在缺陷。

  • 按照设计,任何经过身份验证的主体都可以请求任意服务票据。
  • 服务账户经常只在建立时设置一次较弱的密码,此后从不轮换。
  • 许多服务账户拥有高权限(例如属于域管理员组的 SQL 服务账户)。
  • 破解完全在离线状态下进行,因此不会触发账户锁定。

检测策略

防御人员可以通过 TGS 请求的遥测数据发现离线破解行为。

  • 监控事件 4769 中使用 RC4(0x17)的票据请求,尤其要关注同一账户短时间内集中发起的请求。
  • 如果单个主体在短时间内请求大量不同的 SPN,应发出警报。
  • 部署没有任何合法服务使用的蜜罐 SPN 账户;对它的任何请求都属于恶意行为。

强化服务账户

持久有效的解决方案,是消除使票据可被破解的条件。

  • 使用组托管服务账户(gMSA),其密码长度超过 120 个字符并自动轮换。
  • 为仍在使用的传统服务账户强制设置长度足够且复杂的密码。
  • 禁用 RC4;要求使用 AES 加密类型。
  • 删除不需要的 SPN,并将账户权限降至最低必要级别。

遵循道德规范

在获得授权的测试期间,请在隔离环境中破解票据,并且绝不要将明文凭据外传到此次测试范围之外。请报告哪些账户的凭据被破解以及破解所需时间,以便客户确定 gMSA 迁移的优先级。

请将已破解的密码视为敏感信息:加密存储,并在报告后清除。

快速检查

请确认您已掌握 Kerberos 服务票据破解机制。

回顾

您已了解 Kerberos 如何签发票据,以及这一机制如何遭到滥用。

  • SPN 票据使用服务账户哈希值加密,因此可以离线破解。
  • RC4 票据破解速度快;AES 和 gMSA 是防御手段。
  • 禁用预身份验证时,AS-REP 破解攻击无需凭据。
  • 蜜罐 SPN 和对 4769 RC4 的监控可以发现此类攻击。

接下来,我们将介绍如何使用被盗凭据执行传递哈希和传递票据。

常见问题解答

「Kerberos 与 Kerberoasting」课时是免费的吗?

是的 — 「Kerberos 与 Kerberoasting」的完整文本可在网页上免费阅读。要进行交互式练习(内置代码编辑器和全天候 AI 导师)并解锁 Cyber Security Academy 课程的其余内容,请升级到 CoddyKit PRO。 Cyber Security Academy 课程共包含 4 节课。

「Kerberos 与 Kerberoasting」这节课中我会学到什么?

破解服务账户票据。 你通过在浏览器中直接运行的动手代码来练习 Cyber Security Academy,全天候 AI 导师会在你学习这节课的过程中回答你的问题。

学习 Cyber Security Academy 需要有经验吗?

无需任何先前经验。CoddyKit 上的 Cyber Security Academy 课程适合初学者到高级学习者,你可以从这里开始或从头开始,按照自己的节奏学习。 这是第 2 节课,共 4 节。

「Kerberos 与 Kerberoasting」课时需要多长时间?

大多数 CoddyKit 课程大约需要 5–10 分钟。每节课都很精短且互动,所以你能稳步进步,并在网页和应用中从离开的地方继续。

我能在这节 Cyber Security Academy 课中编写并运行代码吗?

能。每节 Cyber Security Academy 课都包含内置代码编辑器,你可以在浏览器中直接编写并运行真实代码,并获得即时 AI 反馈 — 无需本地设置。

此课程中的所有课时

  1. Active Directory 攻击面
  2. Kerberos 与 Kerberoasting
  3. 哈希传递与票据传递
  4. 权限提升与域控制
← 返回 Cyber Security Academy