LDAP Anonymous Bind

1. 介绍

LDAP 匿名绑定是攻击者无需认证即可从 Active Directory 域获取信息的另一种方法。
这在 Windows Server 2000 域控制器上是默认开启的,之后的版本就不再默认开启了
但由于 Pre-Windows 2000 Compatible Access 组的缘故。从之前的版本迭代升级的域控仍然会保留之前的配置

2. 修复:

清除 AD 中目录服务对象内的 dsHeuristics 属性值。当该值设置为 0000002 时,允许匿名绑定。移除即可禁用匿名绑定
此外,还应确保 ANONYMOUS LOGON 对 Users CN 或其他对象(包括域对象本身)没有读取权限。
Pasted image 20260303001321.png

下面是一个修复脚本

# Obtain domain name, build LDAP path to the Directory Service object, connect as an ADSI object
$Dcname = Get-ADDomain | Select-Object -ExpandProperty DistinguishedName
$Adsi = 'LDAP://CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,' + $Dcname
$AnonADSI = [ADSI]$Adsi

# Clear the dSHeuristics attribute 
$AnonADSI.Properties["dSHeuristics"].Clear()
$AnonADSI.SetInfo()

# Remove ANONYMOUS LOGON read access on CN=Users
$ADSI = [ADSI]('LDAP://CN=Users,' + $Dcname)
$Anon = New-Object System.Security.Principal.NTAccount("ANONYMOUS LOGON")
$SID = $Anon.Translate([System.Security.Principal.SecurityIdentifier])
$adRights = [System.DirectoryServices.ActiveDirectoryRights] "GenericRead"
$type = [System.Security.AccessControl.AccessControlType] "Allow"
$inheritanceType = [System.DirectoryServices.ActiveDirectorySecurityInheritance] "All"
$ace = New-Object System.DirectoryServices.ActiveDirectoryAccessRule $SID,$adRights,$type,$inheritanceType
$ADSI.PSBase.ObjectSecurity.RemoveAccessRule($ace) | Out-Null
$ADSI.PSBase.CommitChanges()
  • 获取域 DN,构建指向配置分区中 CN=Directory Service 的 LDAP 路径,并以 ADSI 对象身份连接以实现读写访问
  • 清除 dSHeuristics 属性
  • 移除 CN=Users 上 ANONYMOUS LOGON 的显式 GenericRead 权限,以防止从未经身份验证的角度进行匿名 LDAP 绑定以读取用户对象

2.1. 手动修复步骤

打开 ADSI 编辑( adsiedit.msc ),右键单击 ADSI 编辑 --> 连接到 -->,并选择 Configuration 作为命名上下文
Pasted image 20260303001553.png

浏览至 CN=Directory Service,CN=Windows NT,CN=Services,CN=Configuration,DC=yourdomain,DC=com ,右键点击 CN=Directory Service 并选择 Properties
Pasted image 20260303001616.png
进入 Attribute Editor 后,向下滚动找到 dsHeuristics 属性并清空其值。
Pasted image 20260303001624.png

3. 枚举

LDAP匿名绑定允许未经验证身份的攻击者从域中检索信息,比如完整的用户、组、计算机列表、用户账户属性、域密码策略等信息。运行开源 LDAP 版本的 Linux 主机和 Linux vCenter 设备通常配置为允许匿名绑定。枚举LDAP信息可以获取到许多重要的信息,有助于后续的攻击路径确认,比如枚举出存在pre-authencation的用户,可以进行ASREPRoasting攻击。