:::danger PORT : 389
:::
LDAP 允许客户端使用网络连接到 AD 数据库, 并执行各种查询 修改 管理操作
LDAP 在 AD 中一些常见的用途:
- 认证和授权:客户端应用程序可以使用 LDAP 协议向 AD 数据库中查询用户和组信息,以便验证用户和授予访问权限。
- 查询和搜索:客户端应用程序可以使用 LDAP 协议查询 AD 数据库中的对象信息,如用户、计算机、组等。
- 修改和管理:客户端应用程序可以使用 LDAP 协议修改和管理 AD 数据库中的对象信息,如创建、删除、修改用户帐户、组帐户等。
- 监测和日志记录:LDAP 还提供了一种跟踪和监视 AD 数据库中对象更改的方法,以及日志记录和审计功能,可用于满足安全和合规性需求。
LDAP 身份验证类似于 NTLM 身份验证,但是,使用 LDAP 进行身份验证时,应用程序会直接验证用户的凭证 ,该应用程序有一对 AD 凭据,它可以首先使用它们来连接 LDAP,然后验证 AD用户的凭证。
LDAP 通常情况下将信息以树形方式存储,一个对象可以有多个子对象,这样的结构叫做 DIT
大多数 web 应用在尝试使用统一身份验证时,就是使用 LDAP 做为支撑,保证统一用户认证身份存储。
LDAP 支持跨平台,可以在单独的服务器上部署 LDAP 实现和 DC 相同的功能,任何应用都可以直接访问 LDAP 目录实现认证 信息获取 信息存储,并不是完全依赖 DC
:::danger LDAP 身份验证时与 AD 集成的第三方应用程序的流行机制,这些应用程序包括:
- GitLab
- Jenkins
- Custom-developed web applications
- Printers
- VPNs
:::
如果这些应用程序或服务中的任何一个暴露在互联网上,则可以使用与针对 NTLM 身份验证系统的攻击相同类型的攻击。但是,由于使用 LDAP 身份验证的服务需要一组 AD 凭据,因此它开辟了额外的攻击途径。本质上,我们可以尝试恢复服务使用的 AD 凭据以获得对 AD 的经过身份验证的访问。通过LDAP认证的过程如下图:
LDAP 基本身份验证流程:
- 用户向客户端提供用户名和密码
- 客户端将用户名和密码加密后发送给 LDAP 服务器进行验证
- LDAP 服务器根据用户名查找对应的用户记录,并比对密码是否匹配
- 如果密码匹配,则返回验证成功信息,否则返回验证失败消息
图上流程介绍:
- 用户向 Printer 提供用户名和密码
- Printer 进行
LDAP Bind Request
向 DC 验证- 当 Printer 验证通过后 DC 返回响应
- Printer 请求 ldap 用户搜索(使用我们的用户名),
- DC 搜索发现存在该用户,返回响应
- Printer 使用用户密码进行
LDAP Bind Request
- DC 返回
Bind Response
- 验证成功, 打印工作开始
:::info LDAP Bind Request 是一种 LDAP 请求,它用于在 LDAP 目录服务中绑定 (bind) 一个用户或应用程序的身份。在 LDAP 中,身份验证是指验证请求访问 LDAP 目录服务的用户或应用程序的身份的过程。绑定是身份验证的一个步骤,它允许用户或应用程序以用户认证的方式访问 LDAP 目录服务。
LDAP Bind Request 包含以下参数:
- DN( Distinguished Name):DN 是用于标识用户或应用程序的标识符。DN 可以是一个用户名或一个群组名称。
- Password:密码是用户或应用程序在 LDAP 目录服务中存储的密码。
- Role:如果用户或应用程序被分配了角色,LDAP Bind Request 还可以包含角色的标识符。
- Subject:LDAP Bind Request 还可以包含 Subject 的参数,Subject 是 LDAP 目录服务中的根元素之一,它包含了整个 LDAP 目录服务的基本信息。
LDAP Bind Request 的目的是使用户或应用程序能够以认证方式访问 LDAP 目录服务,以便访问其中的信息和资源。一旦 LDAP 服务器验证用户或应用程序的身份,用户或应用程序就可以进行其他 LDAP 操作,如搜索、修改、删除等。
:::