LDAP轻量目录访问协议

前言:作为LDAP的学习笔记

参考文章:https://daiker.gitbook.io/windows-protocol/ldap-pian
参考文章:https://learn.microsoft.com/zh-cn/windows/win32/secauthz/ace-strings

什么是LDAP

LDAP(Lightweight Directory Access Protocol),轻量目录访问协议,是一种用来查询与更新 Active Directory 的目录服务通信协议。

在AD 域服务利用 LDAP 命名路径(LDAP naming path)来表示对象在 AD 内的位置,以便用它来访问 AD 内的对象。

目录服务:是由目录服务数据库(是树状结构的数据库,和MySQL等表状结构数据库有差别)和一套访问协议组成

目录树:在一个目录服务系统中,整个目录信息集可以表示为一个目录信息树

条目:每个条目就是一条记录,每个条目有自己的唯一可区别的名称(DN)。

比如这一条uid=bob,ou=people,dc=acme,dc=org就是一个唯一可区别的名称,这整的一条就被称作为DN

LDAP的关键字

LDAP中关键字有这几个,DC、UID、OU、CN、SN、DN、RDN

LDAP的查询

这里自己就单纯的讲下在域中的查询,因为自己也了解这个

通过对应的LDAP的语法,我们可以在域中可以准确、单一的请求我们想要查询的数据

这里拿adfind来进行演示

比如先查询:adfind DC=PENTEST,DC=GOD -f"

那么就会遍历列出DC=PENTEST,DC=GOD目录下的所有条目,如下图显示,因为命令行显示有限,所以就展览在文本中进行显示了

比如查询:adfind DC=PENTEST,DC=GOD -f "(objectClass=user)"

那么就会给出对应的数据objectClass=user下面的所有条目,ObjectClass是一个内置的数据属性,这里面的话计算机账号和用户账号都存在user这个属性,如图中所示:

用户常见属性介绍:

displayName
objectSid
userPrincipalName
sAMAccountName
whenCreateds
pwdLastSet
Lastlogon

查询adfind DC=PENTEST,DC=GOD -f "(objectclass=user)" displayName objectsid

那么给出的数据就是对应其中条目的每个displayName 和 objectsid 的属性

什么是userAccountControl

现在继续讲关于用户的userAccountControl属性介绍

userAccountControl对应的介绍文章:https://support.microsoft.com/en-us/help/305144/how-to-use-useraccountcontrol-to-manipulate-user-account-properties

每个用户自身的权限都会记录在这个属性值里面

最上面的查询可以看出来每个用户都有各自的权限,举个例子比如自身的密码永不过期等等的属性,如果用上面的查询方法是不能具体的查询到的,这时候就需要用到文章中讲的位操作查询

adfind自身提供了便利的查询方法,方便了AND OR INCHAIN NEST DNWDATA 的写法

查询密码永不过期的用户

密码永不过期的flag是DONT_EXPIRE_PASSWORD 0x10000 65536,十进制为65536

那么只需要查询语法是:adfind DC=PENTEST,DC=GOD -f "&(objectClass=user)(UserAccountControl:AND:=65536)" -bit

一些比较有意思的字段

  • msExchRequireAuthToSendTo

如果要从外部电子邮件地址向特定组发送有针对性的钓鱼邮件,则可以查询域信息以获取允许收到外部邮件的通讯组。 当 msExchRequireAuthToSendTo属性为False时,任何人都可以向该组发送邮件。

  • userPassword,UnixUserPassowrd,unicodePwd,msSFU30Password

在大多数域的模式中,有3-4个字段似乎很常见,UserPassword,UnixUserPassword,unicodePwd和msSFU30Password。 在大量测试中,我们发现这些字段中的一个或多个都代表了ACTUAL密码。 虽然有时会通过转换为ASCII十进制等值来进行混淆,但可以通过“man ascii”来进行破解。

ADFind

ACL查询

查询组策略的ACL

AdFind.exe -sc getacls -b "CN=Policies,CN=System,DC=zpchcbd,DC=com"

查询当前用户的权限

AdFind.exe -sc getacls -sddlfilter ;;;;;"zpchcbd\alimaomao" -recmute

posted @ 2020-05-27 14:48  zpchcbd  阅读(1722)  评论(0编辑  收藏  举报