LDAP协议与域用户爆破

LDAP(Lightweight Directory Access Protocol) 轻量目录访问协议。LDAP 协议之前有一个 X.500 DAP 协议规范,该协议十分复杂,是一个重量级的协议,后来对 X.500进行了简化,诞生了 LDAP 协议,与 X.500 相比变得较为轻量,目前最新的版本是LDAP v3(RFC 2251)。

在域内LDAP是用来访问Acitve Directory数据库的目录服务协议。AD DS域服务通过使用LDAP名称路径表示对象在Active Directory数据库中的位置。管理员使用LDAP协议来访问活动目录中的对象,LDAP通过“命令路径”定位对象在数据库中的位置,即使用标识名(Distinguished Name,DN)和相对标识名(Relative Distinguished Name,RDN)标识对象。

LDAP认证过程

LDAP v2支持三种认证方式:匿名认证、简单身份认证(明文密码)、Kerberos v4。

LDAP v3使用SASL (Simple Authentication and Security Layer) 简单身份验证和安全层 身份认证框架([RFC 2222](https://ldapwiki.com/wiki/RFC 2222)),它允许使用不同的验证机制对客户端进行身份验证,包括:DIGEST-MD5, CRAM-MD5AnonymousExternalS/KeyGSSAPI和 Kerberos。SASL指定了质询-响应协议,在该协议中,客户端和服务端之间通过协商确定使用哪种验证机制。

下图是使用LDAP协议的身份验证流程:

  1. Client首先发送bindRequest请求给LDAP Server,指定使用GSSAPI认证并且使用NTLM进行身份验证。

  1. Server 进行bind响应,包括产生的Challenge

  1. 认证

Client发送 NTLMSSP_AUTH 认证,请求中包含用户名,加密hash

  1. Server认证结果响应

Server认证通过,响应success,Client可以继续查询操作

Server认证失败,响应invalidCredentials,之后Client发送unbindRequest结束请求

LDAP使用简单认证方式时,首先会进行一个用户查找操作,如果用户不存在 则返回0,用户存在返回1,查看详情 https://segmentfault.com/a/1190000004325566

工具

DomainPasswordSpray (powershell工具,需要在域用户环境中使用)

powershell -exec bypass
Import-Module .\DomainPasswordSpray.ps1
Invoke-DomainPasswordSpray -Domain mumsec.com -Userlist .\user.txt -PasswordList .\password.txt