LDAP Signing&Channel Binding

1. 枚举

┌──(root㉿kali)-[~/Desktop/htb/Pirate]
└─# nxc ldap dc01.pirate.htb -u a.white_adm -p 'Admin123' 
LDAP        10.129.190.148  389    DC01             [*] Windows 10 / Server 2019 Build 17763 (name:DC01) (domain:pirate.htb) (signing:None) (channel binding:Never)

2. 介绍

NTLM中继攻击可针对的另一个关键协议是 LDAP。成功中继到域控制器上的 LDAP 服务可用于收集域信息,例如用户、组、计算机及其属性、组成员资格、信任关系、域策略等。
如果 ms-DS-MachineAccountQuota 未设置为 0 ,中继到 LDAP 还可用于创建攻击者控制的计算机账户,这是在 AD 中获得立足点的非常常见的方式,因为它不需要攻击者对 NTLMv2 密码哈希执行离线密码破解。当特权账户被中继时,中继到 LDAP 更加危险,因为它可用于各种可能导致域被攻陷的攻击,例如创建新用户并授予该账户复制权限。然后,该账户可用于执行 DCSync 攻击,获取域中所有账户的 NTLM 密码哈希。

2.1. LDAP 签名

启用 LDAP 签名后,服务器将拒绝未通过签名请求完整性验证的 LDAP 绑定。未签名的 LDAP 流量容易受到重放攻击,攻击者可以拦截身份验证尝试并获取票据。冒充其签发的合法用户。LDAP 签名适用于通过 TCP 端口 389 的 LDAP。

2.2. LDAP 通道绑定

LDAP 通道绑定将 TLS 隧道和 LDAP 应用层绑定在一起,创建一个称为通道绑定令牌(CBT)的唯一指纹。启用后,LDAP 通信无法在不建立新 TLS 隧道的情况下被重复使用。新隧道将使初始 LDAP 通信的 CBT 失效,从而有效防止中继身份验证。LDAP 通道绑定适用于通过端口 636 的 SSL/TLS(也称为 LDAPS)的 LDAP。

2.3. 对比

功能特性 用途目的 受影响的协议 是否需要以此停止 LDAP 中继?
LDAP 签名 (LDAP Signing) 完整性检查(可缓解篡改及部分中继攻击) LDAP (端口 389)
LDAP 通道绑定 (LDAP Channel Binding) 将 TLS 与身份验证绑定(缓解通过 LDAPS 的中间人攻击/中继攻击) LDAPS (端口 636) 是的(如果启用了 LDAPS)
同时使用两者 完全缓解所有 LDAP 中继路径 LDAP + LDAPS

3. 修复

3.1. 检测

检测LDAP签名

Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" -Name "LDAPServerIntegrity"

ldapserverintegrity 值的含义如下:

  • 0 - 无需签名(易受 LDAP 中继攻击)
  • 1 - 支持签名但非必需(仍易受 LDAP 中继攻击)
  • 2 - 必须签名(可防御 LDAP 中继攻击)

检查 LDAP 通道绑定
默认情况下,除非通过组策略或直接手动配置,或通过更新或安全基线更改添加,否则此注册表值不存在
如果该值不存在。这可能是因为域控制器未更新,或者该设置在组策略中未定义。

随微软公告 AVD190023 添加。截至 2020 年 3 月 10 日的 Server 2019 累积更新,LDAP 通道绑定设置 LdapEnforceChannelBinding 开始支持并通过注册表和组策略进行配置

Get-ItemProperty -Path "HKLM:\SYSTEM\CurrentControlSet\Services\NTDS\Parameters" -Name "LdapEnforceChannelBinding"

当 LdapEnforceChannelBinding 存在时,其可能的取值为:

  • 0 - 已禁用(易受 LDAPS 中继攻击)
  • 1 - 兼容模式(安全性不完整)
  • 2 - 已强制实施通道绑定(可防御 LDAPS 中继攻击)

3.2. 修复

3.2.1. 修复 LDAP 签名

可以通过修改 LDAPServerIntegrity 注册表项来启用 LDAP 签名,也可以通过Invoke-Command 跨域控制器远程应用

推荐使用组策略,如 Default Domain Controller Policy 策略
该设置位于: Computer Configuration --> Policies --> Windows Settings --> Security Settings --> Local Policies --> Domain controller: LDAP server signing requirements
Pasted image 20260303215457.png
然后执行 gpupdate

3.2.2. 修复 LDAP 通道绑定

LDAP 通道绑定也可以通过注册表启用,但仍推荐使用组策略进行配置
在 Default Domain Controller Policy 启用设置 Domain controller: LDAP server channel binding token requirements
Pasted image 20260303215553.png
然后还是gptupdate