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
然后执行 gpupdate
3.2.2. 修复 LDAP 通道绑定
LDAP 通道绑定也可以通过注册表启用,但仍推荐使用组策略进行配置
在 Default Domain Controller Policy 启用设置 Domain controller: LDAP server channel binding token requirements
然后还是gptupdate

