最近对LDAP有点感兴趣(很早就听说过,但一直没有去主动了解相关知识),先mark一些初看上去不错的文章,后期有时间了(等自己对LDAP的知识了解更多了)再将本文内容补全。
搜索关键字:
Ldap
参考链接:
- LDAP服务原理详解(原创)
- PHP 访问 LDAP
- http://www.h3c.com.cn/MiniSite/Technology_Circle/Net_Reptile/The_Seven/Home/Catalog/201309/797632_97665_0.htm
- LDAP注入与防御剖析
- OpenLDAP Software 2.4 Administrator’s Guide: A Quick-Start Guide
- LDAP快速入门
- http://en.wikipedia.org/wiki/Lightweight_Directory_Access_Protocol
- LDAP中的objectClass与Attribute
==
Ldapsearch命令的实际使用
在CentOS上需要用下面的命令安装:
$ sudo yum install openldap-clients
第一次查询:
$ ldapsearch -v -x -LLL -H "$ldap_host" -b "$ldap_base" -D "$ldap_user" -w "$ldap_passwd" "$filter" $attrs # ldap_initialize( ldap://x.x.x.x:389/??base ) # filter: ... # requesting: dn cn mail homePhone mobile lastLogonTimestamp description whenCreated objectGUID objectSid memberOf # Size limit exceeded (4)
错误原因:一次查询的entry太多(1000/2000)
解决方法:
http://answers.splunk.com/answers/1538/what-is-ldap-error-size-limit-exceeded.html
1.以LDAP服务器管理员的身份修改”限制”的大小;
2.使用filter的方式进行多次小批量查询。
In AD, the default size limit is typically 1000 entries. There is nothing you can do to change this limit unless you are the LDAP server administrator.
In Splunk, you can use filters to reduce the number of LDAP entries returned so that you do not hit this limit.
解决方法:
$ ldapsearch -v -x -LLL -H "$ldap_host" -b "$ldap_base" -D "$ldap_user" -w "$ldap_passwd" -E pr=2147483647/noprompt "$filter" $attrs
- http://stackoverflow.com/questions/6872947/ldap-size-limit-exceeded-catch-warning
- ldapsearch fails with limit exceeded
参考解答:
$ type ldapsearch ldapsearch is hashed (/usr/bin/ldapsearch) $ strings /usr/bin/ldapsearch | grep paged [!]pr=<size>[/prompt|noprompt] (paged results/prompt) Invalid entries estimate in paged results response. # with pagedResults %scontrol: size=%d
《 “LDAP相关知识学习” 》 有 6 条评论
msldap – 用于操作微软活动目录 LDAP 协议的 Python 库
https://github.com/skelsec/msldap
LDAP落地实战(五):Django集成OpenLDAP认证
https://mp.weixin.qq.com/s/ZNLufJq67RDCt5aICmTmyg
LDAP落地实战(四):Jenkins集成OpenLDAP认证
https://mp.weixin.qq.com/s/S5ozDJSh4yTSfP_glNoiOQ
LDAP落地实战(三):GitLab集成OpenLDAP认证
https://mp.weixin.qq.com/s/yDUHS0HdzZclvbjDH9pdbQ
LDAP落地实战(二):SVN集成OpenLDAP认证
https://mp.weixin.qq.com/s/NZv9UZ-eYJT86uaxHapgTw
LDAP落地实战(一):OpenLDAP部署及管理维护
https://mp.weixin.qq.com/s/JyH5mqwWFt0N1nGYZqBCBQ
The Difference Between LDAP, OpenLDAP, and Active Directory
https://jumpcloud.com/blog/difference-between-ldap-openldap-active-directory
`
LDAP 是协议。用于规范用户/设备和客户端同目录服务器的通信。
LDAP是轻量目录访问协议(Lightweight Directory Access Protocol)的缩写,LDAP标准实际上是在X.500标准基础上产生的一个简化版本。
OpenLDAP 和 Microsoft AD 是LDAP的2个具体软件实现,相比之下 Microsoft AD 的功能比 OpenLDAP 更丰富(AD is more feature-rich than OpenLDAP)。
`
Active Directory vs OpenLDAP
https://stackoverflow.com/questions/997424/active-directory-vs-openldap
AD域和LDAP协议
https://blog.csdn.net/weixin_43522969/article/details/106924066
配置OpenLDAP传递身份验证到Active Directory
https://lework.github.io/2019/07/25/openldap-pass-through-ad/
工作笔记(一)LDAP和AD介绍以及使用LDAP操作AD域
https://zhuanlan.zhihu.com/p/46324379
AD和LDAP的区别
https://blog.51cto.com/davidwang456/3085212
Active Directory简介
https://daiker.gitbook.io/windows-protocol/ldap-pian/8
Active Directory Domain Services
https://docs.microsoft.com/en-us/windows/win32/ad/active-directory-domain-services
LDAP Vs AD: What’s the Difference?
https://www.parallels.com/blogs/ras/ldap-vs-ad/
Is LDAP a TCP or a UDP protocol?
https://stackoverflow.com/questions/5913941/is-ldap-a-tcp-or-a-udp-protocol
`
Normally LDAP is a TCP protocol. But Microsoft uses LDAP also over UDP.
So it is both.
`
3.1.1.3.1.11 LDAP Search Over UDP
https://docs.microsoft.com/en-us/openspecs/windows_protocols/ms-adts/3fad0ec9-414c-432a-ba0b-837c74091dd6?redirectedfrom=MSDN
https://wiki.wireshark.org/LDAP
https://www.iana.org/assignments/service-names-port-numbers/service-names-port-numbers.xhtml?search=ldap
`
ldap 389 tcp Lightweight Directory Access Protocol
ldap 389 udp Lightweight Directory Access Protocol
ldaps 636 tcp ldap protocol over TLS/SSL (was sldap)
ldaps 636 udp ldap protocol over TLS/SSL (was sldap)
`
域用户密码爆破研究
https://mp.weixin.qq.com/s/jay7BUcdXYyr5bu5XPsN8g
`
本篇主要针对Kerberos、LDAP、DCE/RPC、SMB协议的登陆认证过程进行研究,同时分析认证过程中产生的流量特征,制定对应的检测规则。
0x01. Kerberos协议
开启日志审核后,会产生Kerberos身份验证服务的日志,成功的事件ID为4768,失败事件ID为4771
0x02. LDAP协议
开启后进行爆破登陆,会产生事件ID为4625的安全日志
0x03. DCE/RPC协议
登录失败: 产生事件ID为4625的登陆日志
登陆成功: 产生事件ID为4624的登陆日志
0x04. SMB协议
登陆失败,事件ID:4625
登陆成功,事件ID:4624
0x05. 总结
根据上述几种协议登陆审核日志来看,事件ID跟认证方式(Kerberos,NTLM)有关,跟协议无关(LDAP、SMB、RPC事件ID相同)。
利用Kerberos、DCE/RPC、SMB协议进行爆破的时候,攻击机可以在非域环境中,且利用DCE/RPC协议在攻击的时候由于使用了动态端口,从流量层面上来说被安全设备检测的概率会小一些。
检测方法
1)登陆日志
爆破行为会在短时间内产生大量的审核失败的登陆日志
2)流量特征
根据上述几种协议中认证失败的流量特征,对相同源IP、目的IP的失败次数做统计,超过阈值告警。
`
渗透基础——通过LDAP协议暴力破解域用户的口令
https://mp.weixin.qq.com/s/vYeR9FDRUfN2ZczmF68vZQ
https://github.com/3gstudent/Homework-of-Powershell/blob/master/Invoke-DomainPasswordSprayOutsideTheDomain.ps1
`
1.域内暴力破解域用户口令 – DomainPasswordSpray
流程如下:
(1)获得域内用户的口令策略
根据lockoutThreshold的数值决定尝试的次数,避免帐户被锁定。
(2)获得域用户列表
列出所有域用户后,需要对用户的属性进行判断,去除被禁用和被锁定的用户。
(3)尝试破解
2.域外暴力破解域用户口令 – ldapsearch / Invoke-DomainPasswordSprayOutsideTheDomain
如果已经获得了一个用户的口令,那么可以先读取域内用户的口令策略和用户列表,方法同上。
如果没有任何用户的口令,只能进行盲目的尝试。
`