Ldapsearch的使用

admin 2024年9月3日12:08:12评论18 views字数 6881阅读22分56秒阅读模式
Ldapsearch的使用

谢公子学安全

Ldapsearch的使用

    ldapsearch是类unix下一款用于活动目录信息查询的工具,Kali中自带ldapsearch。以下演示在Kali系统下通过ldapsearch这款工具对活动目录数据进行查询。

Ldapsearch的使用

参数

执行如下命令即可查看ldapsearch的一些参数:

Ldapsearch的使用
Ldapsearch的使用

常见的几个参数如下:

Ldapsearch的使用
Ldapsearch的使用

使用

以下是在Kali系统环境下演示ldapsearch工具的使用。

连接选项

下面这几个是连接选项,也就是在连接的时候指定的参数。由于使用ldapsearch是在域外使用,因此需要指定域控制器,并且提供一个有效的域账号密码。如下:

  • -H:ldapuri,格式为 ldap://机器名或者IP:端口号,不能与-h和-p同时使用

  • -h:LDAP服务器IP或者可解析的hostname,与-p可结合使用,不能与-H同时使用

  • -p:LDAP服务器端口号,与 -h 可结合使用,不能与-H同时使用。不指定时默认为389端口

  • -D:指定用户

  • -w:指定密码

  • -W:不输入密码,会交互式的提示用户输入密码,与-w二者选一

可以使用-H参数或-h参数指定域控,-p参数指定端口,-D参数指定域用户名、-w参数或-W参数指定密码。如下命令:

#使用hack账号密码-H参数连接域控10.211.55.4的389端口ldapsearch -H ldap://10.211.55.4:389 -D "hack@xie.com" -w P@ss1234#使用hack账号密码-h参数连接域控10.211.55.4 -p指定389端口ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234#使用hack账号密码-h参数连接域控10.211.55.4 -p指定389端口,此时不输入密码,在交互式中输入密码ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -W

如图所示,使用-H参数指定域控及端口进行连接,并且提供一个有效凭据,凭据正确与否,返回结果不一致。

Ldapsearch的使用

如图所示,使用-h参数指定域控,使用-p参数指定端口进行连接,并且提供一个有效凭据,凭据正确与否,返回结果不一致。

Ldapsearch的使用

如图所示,使用-h参数指定域控,使用-p参数指定端口进行连接,回车后交互式输入密码。

Ldapsearch的使用

过滤选项

下面这个是过滤参数,也就是进行查询的时候需要过滤的一些条件:

  • -b:指定要查询的根节点basedn,以及过滤的语法

例如如下命令:

#查找指定basedn的信息ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "CN=Administrator,CN=Users,DC=xie,DC=com"#查找指定basedn的信息,并且过滤出name=administrator的条目ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "CN=Users,DC=xie,DC=com" "name=administrator"

如图所示,查找指定的basedn的信息,也就是查找administrator的信息。

Ldapsearch的使用

如图所示,查找指定的basedn的信息,并且过滤出name=administrator的条目。可以看到和好上面搜索的结果一直。

Ldapsearch的使用

显示选项

    默认情况下,查找的结果会显示对象的所有属性,如果想只显示指定属性的话,在末尾加上属性名即可。也可以使用-o参数将结果导出在文件中。如下命令:

#查找指定administrator用户的所有信息ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "CN=Administrator,CN=Users,DC=xie,DC=com"#查找指定administrator用户的dn属性ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "CN=Administrator,CN=Users,DC=xie,DC=com" dn#查找指定administrator用户的dn属性,使用grep过滤,结果更直观ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "CN=Administrator,CN=Users,DC=xie,DC=com" | grep dn#查找指定administrator用户的所有信息,并将结果导出在指定LDIF格式文件中ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "CN=Administrator,CN=Users,DC=xie,DC=com" -o ldif-wrap=no > administrator.ldif#接着使用adoffline.py脚本将LDIF格式文件转换为sqlite格式文件python adoffline.py administrator.ldif

如图所示,查询指定administrator用户的所有信息。

Ldapsearch的使用

如图所示,查询指定administrator用户的dn属性。可以看到即使这样,查询出的结果还不是很直观。

Ldapsearch的使用

因此我们可以使用grep来过滤输出结果,只显示dn。如图3-95所示,使用grep过滤结果中的dn,结果很直观

Ldapsearch的使用

如图所示,查询指定administrator用户的所有信息,并导出成LDIF 格式的administrator.ldif文件,接着使用adoffline.py将其转为sqlite格式文件。可以看到最后生成为/tmp/tmpOWK1Tm.20210929183345.ad-ldap.db文件。

Ldapsearch的使用

最后便可以使用navicat打开sqlite格式文件了。如图所示,使用navicat打开tmpOWK1Tm.20210929183345.ad-ldap.db文件,可以很直观的看到administrator用户的一些属性信息。

Ldapsearch的使用
Ldapsearch的使用

查询示例

以下演示一些在实战中经常用到的一些查询语法。

连接选项

下面这几个是与机器相关的查询命令。

Ldapsearch的使用

(1) 查询域中所有域控

以下命令是查询域中所有的域控。

ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "OU=Domain Controllers,DC=xie,DC=com" "objectcategory=computer" | grep dn

如图所示,查询到了域内所有的域控。

Ldapsearch的使用
Ldapsearch的使用

(2) 查询域中所有机器

以下命令是查询域中所有的机器,包括域控。

ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "objectcategory=computer" |grep dn

如图所示,查询到了域内所有的机器,包括域控AD01。

Ldapsearch的使用
Ldapsearch的使用

(3) 查询指定机器详细信息

以下命令是查询域中机器的详细信息。

ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(&(objectcategory=computer)(name=mail))"

如图所示,查询指定mail机器的详细信息。

Ldapsearch的使用

用户相关

下面这几个是与用户相关的查询命令。

Ldapsearch的使用

(1) 查询域管理员

以下命令是查询域管理员组中含有哪些用户。

ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "CN=Domain Admins,CN=Users,DC=xie,DC=com" | grep member

如图所示,可以看到查询到域管理员组中有admin和administrator两个用户。

Ldapsearch的使用
Ldapsearch的使用

(2) 查询域内所有用户

以下命令是查询域内所有用户。

ldapsearch -h 10.211.55.4 -p 389 -D "[email protected]" -w P@ss1234 -b "DC=xie,DC=com" "(&(objectCategory=person)(objectClass=user))" | grep dn

如图所示,可以看到查询到域内的所有用户。
Ldapsearch的使用
Ldapsearch的使用

(3) 查询指定域用户

以下命令是查询域内指定用户test。

ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(&(objectCategory=person)(objectClass=user)(name=test))"

如图所示,可以看到查询到域内指定用户test的信息。

Ldapsearch的使用
Ldapsearch的使用

(4) 查询指定域用户的sid

以下命令是查询域内指定test用户的sid值。

ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(&(objectCategory=person)(objectClass=user)(name=test))" |grep objectsid

如图所示,可以看到查询出指定test用户的sid值。

Ldapsearch的使用
Ldapsearch的使用

(5) 查询指定sid对应的用户

以下命令是查询域内指定sid值对应的用户。

ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(&(objectCategory=person)(objectClass=user)(objectSid=S-1-5-21-1313979556-3624129433-4055459191-1146))" |grep dn

如图所示,可以看到查询出指定sid值对应的用户为test。

Ldapsearch的使用
Ldapsearch的使用

(6) 查询指定域用户属于哪些组

以下命令是查询指定域用户administrator属于哪些组。

ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(&(objectCategory=person)(objectClass=user)(name=administrator))" |grep memberOf

如图所示,可以看到查询出指定administrator用户的所属组。

Ldapsearch的使用
Ldapsearch的使用

(7) 查询域内开启”Do not require Kerberos preauthentication”选项的用户

如下命令是查询域内开启了不需要域认证的用户。

ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "useraccountcontrol:1.2.840.113556.1.4.803:=4194304" |grep dn

如图所示,可以看到查询到hack用户开启了不需要域认证。

Ldapsearch的使用
Ldapsearch的使用

(8) 查询受保护的用户

如下命令是查询域内受保护的用户。

ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(&(objectcategory=person)(samaccountname=*)(admincount=1))" |grep dn

如图所示,查询到四个用户在域内受保护。

Ldapsearch的使用

组相关

下面这几个是与组相关的查询命令。

Ldapsearch的使用

(1) 查询域内所有的全局组

以下命令是查询域内所有的全局组。

ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(grouptype=-2147483646)" |grep dn

如图所示,可以看到查询出域内所有的全局组。

Ldapsearch的使用
Ldapsearch的使用

(2) 查询域内所有通用组

以下命令是查询域内所有的通用组。

ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(grouptype=-2147483640)" | grep dn

如图所示,可以看到查询出域内所有的通用组。

Ldapsearch的使用
Ldapsearch的使用

(3) 查询域内所有的本地域组

以下命令是查询域内所有的本地域组。

ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(|(grouptype=-2147483644)(grouptype=-2147483643))" |grep dn

如图所示,可以看到查询出域内所有的本地域组。

Ldapsearch的使用
Ldapsearch的使用

(4) 查询指定组含有哪些对象

以下命令是查询指定组含有哪些对象。

ldapsearch -h 10.211.55.4 -p 389 -D "hack@xie.com" -w P@ss1234 -b "CN=Domain Admins,CN=Users,DC=xie,DC=com" member

如图所示,可以看到查询出域管理员组Domain Admins内含有admin和administrator用户。

Ldapsearch的使用

委派相关

下面这几个是与委派相关的查询命令。

Ldapsearch的使用

(1) 非约束性委派

如下命令是查询配置了非约束性委派的主机和服务帐户。

#查询域中配置非约束委派的主机ldapsearch -x -H ldap://10.211.55.4:389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" | grep dn#查询域中配置非约束委派的服务账户ldapsearch -x -H ldap://10.211.55.4:389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" | grep dn

如图所示,可以看到查询出配置了非约束性委派的主机和服务帐户。

Ldapsearch的使用
Ldapsearch的使用

(2) 查询约束性委派

如下命令是查询配置了约束性委派的主机和服务帐户。

#查询域中配置了约束性委派的主机,并可以看到被委派的SPN ldapsearch -x -H ldap://10.211.55.4:389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" | grep -e dn -e msDS-AllowedToDelegateTo#查询域中配置了约束性委派的服务账户,并可以看到被委派的SPN ldapsearch -x -H ldap://10.211.55.4:389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" | grep -e dn -e msDS-AllowedToDelegateTo

如图所示,可以看到查询出配置了约束性委派的主机和服务帐户。

Ldapsearch的使用
Ldapsearch的使用

(3) 查询基于资源的约束性委派

如下命令是查询配置了基于资源的约束性委派的主机和服务帐户。

#查询域中配置基于资源的约束性委派的主机 ldapsearch -x -H ldap://10.211.55.4:389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(&(samAccountType=805306369)(msDS-AllowedToActOnBehalfOfOtherIdentity=*))" | grep dn#查询域中配置基于资源的约束性委派的服务账户 ldapsearch -x -H ldap://10.211.55.4:389 -D "hack@xie.com" -w P@ss1234 -b "DC=xie,DC=com" "(&(samAccountType=805306368)(msDS-AllowedToActOnBehalfOfOtherIdentity=*))" | grep dn

如图所示,可以看到查询出配置了基于资源的约束性委派的主机和服务帐户。

Ldapsearch的使用
END -

非常感谢您读到现在,由于作者的水平有限,编写时间仓促,文章中难免会出现一些错误或者描述不准确的地方,恳请各位师傅们批评指正。如果你想一起学习AD域安全攻防的话,可以加入下面的知识星球一起学习交流。

原文始发于微信公众号(谢公子学安全):Ldapsearch的使用

  • 左青龙
  • 微信扫一扫
  • weinxin
  • 右白虎
  • 微信扫一扫
  • weinxin
admin
  • 本文由 发表于 2024年9月3日12:08:12
  • 转载请保留本文链接(CN-SEC中文网:感谢原作者辛苦付出):
                   Ldapsearch的使用http://cn-sec.com/archives/3122625.html

发表评论

匿名网友 填写信息