Kerberos攻击中常见工具错误解析

本文详细解析了在Kerberos攻击过程中可能遇到的各种错误代码,包括KDC错误和KRB错误,提供了错误原因分析和解决方案,并包含了域SID参考表,帮助渗透测试人员更好地进行故障排除。

常见工具错误 - Kerberos

当您在执行最喜爱的Kerberos攻击时,例如传递票据、公钥加密初始认证(PKINIT)、影子凭据或Active Directory证书服务(AD CS)漏洞利用,但遇到了Kerberos错误,尽管进行了故障排除,仍然不知道该怎么办?这篇快速文章将介绍您可能遇到的不同错误,它们的根本原因以及如何修复命令。

最初我打算写一篇包含所有不同错误、所有不同工具和所有不同结果的完整博客文章,但我觉得编写一个GitHub Pages应用程序可能更容易,便于参考,因此这里是Kerberos错误索引:[Kerberos错误索引](Kerberos Errorism Index)

域SID

在深入探讨Kerberos之前,您可能会发现运行Certipy或BloodHound类型的命令和工具时,最终会遇到未解析的SID。这里有一个方便的参考表来帮助您解决问题:

主体 SID/RID
Administrator S-1-5-21-*-500
Guest S-1-5-21-*-501
krbtgt S-1-5-21-*-502
Domain Admins S-1-5-21-*-512
Domain Users S-1-5-21-*-513
Domain Computers S-1-5-21-*-515
Domain Controllers S-1-5-21-*-516
Enterprise Admins S-1-5-21-*-519
Group Policy Creator Owners S-1-5-21-*-520
Readonly Domain Controllers S-1-5-21-*-521

在识别AD CS ESC*攻击时,这一点尤其重要,因为了解Domain Users的SID与Domain Admins的SID之间的差异通常会导致成功的权限提升!

Kerberos 101

如果您在执行攻击时收到过KRB-ERROR,这些消息是Kerberos协议的一部分,每条消息都包含一个错误代码,有助于识别特定的错误类型。您可能会遇到几种类型,下面的小节将分解每种错误、根本原因、可能遇到这些错误的工具,以及最重要的修复命令。

  • KDC_ERR_NONE (0): 无错误。
  • KDC_ERR_NAME_EXP (1): 客户端账户或密码已过期。
  • KDC_ERR_SERVICE_EXP (2): 服务账户已过期。
  • KDC_ERR_BAD_PVNO (3): 请求的协议版本不受支持。
  • KDC_ERR_C_OLD (4) & KDC_ERR_S_OLD (5): 客户端或服务的密钥过于陈旧。
  • KDC_ERR_CANNOT_USE (6): 在数据库中找不到客户端。
  • KDC_ERR_MUST_USE_USER2USER (7): 表示需要用户到用户认证。
  • KDC_ERR_SVC_UNAVAILABLE (9): 服务不可用。
  • KDC_ERR_ETYPE_NOTSUPP (11): KDC不支持该加密类型。
  • KRB_AP_ERR_BAD_INTEGRITY (14): 解密数据的完整性检查失败。
  • KRB_AP_ERR_TKT_EXPIRED (15): 票据已过期。
  • KRB_AP_ERR_TKT_NYV (16): 票据尚未生效。
  • KRB_AP_ERR_REPEAT (17): 请求似乎是重放攻击。
  • KRB_AP_ERR_NOT_US (18): 票据不是为所呈现的服务颁发的。
  • KRB_AP_ERR_BADMATCH (19): 票据和认证器不匹配。
  • KDC_ERR_MODIFIED (20): 通常在SPN配置错误或存在重复条目时遇到。
  • KDC_ERR_CLIENT_REVOKED (31): 客户端账户已被撤销或禁用。
  • KDC_ERR_SERVICE_REVOKED (32): 服务账户已被撤销。
  • KDC_ERR_KEY_EXPIRED (36): 客户端(或服务)的密钥(通常反映密码)已过期。
  • KDC_ERR_PREAUTH_FAILED (37): 预认证失败—通常由于时钟偏差、错误密码或禁用账户引起。
  • KDC_ERR_PREAUTH_REQUIRED (38): KDC需要预认证。
  • KDC_ERR_WRONG_REALM (39): 客户端尝试在错误的领域进行认证。

在大多数Windows(Active Directory)环境中,一些Kerberos错误往往更频繁地出现,因为它们直接与常见的配置问题、时间同步问题或账户状态相关。最常见的包括:

  • KDC_ERR_PREAUTH_FAILED (37): 当提供的凭据(通常是密码)不正确、账户凭据过期或未按预期提供预认证数据时,通常会出现此错误。
  • KRB_AP_ERR_TKT_EXPIRED (15): 当票据达到其过期时间时发生此错误,通常由于票据续订间隔过长。
  • KRB_AP_ERR_TKT_NYV (16): 当客户端和域控制器之间存在时间偏差时,经常会遇到"票据尚未生效"错误。
  • KDC_ERR_KEY_EXPIRED (36): 这表明用户或服务密钥(通常反映密码)已过期,导致认证失败。
  • KDC_ERR_CLIENT_REVOKED (31): 当账户被禁用或撤销时会出现此错误,阻止客户端获取有效票据。
  • KDC_ERR_WRONG_REALM (39): 域之间的错误配置或尝试向错误领域认证可能触发此错误。

这些错误最常见,因为它们直接与Windows域中经常发生的问题相关,例如密码更改、时间同步问题或配置错误的域信任。实际频率可能因环境设置和策略而异。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计