Adfind的使用

Adfind是一个使用C++语言写的活动目录查询工具,它允许用户轻松地搜索各种活动目录信息。它不需要安装,因为它是基于命令行的。它提供了许多选项,可以细化搜索并返回相关细节。下面讲解Adfind的参数以及其使用。

参数

执行如下命令即可查看Adfind的所有参数。

AdFind.exe /?

如图所示,可以看到adfind的参数。

1. 连接选项

下面这几个是连接选项,也就是在连接的时候指定的参数。如果是在域内机器上执行adfind的话,则不需要连接参数。如果是域外机器执行adfind的话,则需要指定连接参数。如下:

・-h:指定主机与端口(ip:port)

・-p:也可以单独使用-p参数指定端口

・-u:指定用户

・-up:指定密码

2. 过滤选项

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

・-b:指定要查询的根节点basedn

・-bit:指定位查询

・-f:LDAP过滤条件,指定ldap语法

3. 显示选项

下面这几个是显示参数,也就是查询出来之后如何显示的一些参数。如下:

・-appver:显示adfind版本信息

・-c:只统计数量

・-csv:导出为csv 格式

・-dn:只显示dn,不返回详细信息

・-s:搜索的范围, 有 one(当前层级)/sub(一层一层递归),默认是sub

・-sdna:非域管查询sd信息

・-recmute:如果所有属性都为空,则禁止显示DN。这主要适用于-sddl过滤器选项。

・-t:查询超时时间,默认120秒

4. 查看帮助

下面这几个是帮助参数,也就是使用过程的一些帮助。如下:

・-help:基础的帮助

・-?:基础的帮助

・-??:高级帮助

・-????:快捷方式帮助

・-sc?:快捷方式帮助

・-meta?:元数据帮助

・-regex?:固定表达式帮助

使用

adfind工具使用的结构如下:其中switches是连接参数,-b是指定要查询的根节点basedn,-f是指定过滤的条件,attr是指定要显示的属性。

AdFind.exe [switches] [-b basedn] [-f filter] [attr list]

1.[switches]

该选项是连接参数,如果adfind是在域内主机上运行,则无需该选项。如果是域外机器上执行,则需要指定域控和提供一个有效的域用户和密码。

执行如下命令,连接域控10.211.55.4的389端口。提供的用户名是xie\hack,密码是P@ss1234,需要查询的数据是域控列表。

AdFind.exe -h 10.211.55.4:389 -u xie\hack -up P@ss1234 -sc dclist

如图所示,通过指定域控以及账号密码,成功查询出目标域的域控。

注:本文以后查询条件均是在域内机器查询,故不显示连接参数。

2.[-b basedn]

该选项指定要查询的根节点basedn。如下命令

#查询dn dc=xie,dc=com下的所有机器Adfind.exe -b dc=xie,dc=com -f "objectcategory=computer" dn#查询dn CN=Computers,DC=xie,DC=com下的所有机器Adfind.exe -b CN=Computers,DC=xie,DC=com -f "objectcategory=computer" dn

如图所示,在dn为dc=xie,dc=com下查询所有机器,可以查询出3个对象。而在dn为CN=Computers,DC=xie,DC=com下查询所有机器,可以查询出2个对象。原因在于域控在OU=Domain Controllers,DC=xie,DC=com dn下,使用CN=Computers,DC=xie,DC=com为根节点时查询不出域控机器 。

3.[-f filter]

该选项指定查询的过滤条件。如下命令,使用-f参数过滤不同的查询条件

#查询域内所有机器Adfind.exe -f "objectcategory=computer" dn#查询域内所有用户AdFind.exe -f "(&(objectCategory=person)(objectClass=user))" dn

如图所示,当过滤条件不同时,查询结果的不同。

4.[attr list]

该选项用于指定查询出来的结果显示哪个属性。当不使用该参数时,会显示查询对象的所有属性。

#查询域内所有机器,显示所有机器的所有属性``Adfind.exe -f "objectcategory=computer"`` ``#查询域内所有机器,显示所有机器的dn属性``Adfind.exe -f "objectcategory=computer" dn`` ``#查询域内所有机器,显示所有机器的dn属性,这样查询的结果直接没有换行。只有dn属性能在前面加个-``Adfind.exe -f "objectcategory=computer" -dn`` ``#查询域内所有机器,显示所有机器的name属性``Adfind.exe -f "objectcategory=computer" name

如图所示,当不指定显示哪个属性时,默认显示所有属性。

如图所示,当指定了属性时,只显示指定属性。

查询示例

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

1. 查询域信任关系

如下命令是查询域信任关系。

Adfind.exe -f objectclass=trusteddomain -dn

如图所示,可以看到当前域与shanghai.xie.com、beijing.xie.com具有信任关系。

2. 查询域控

以下命令是查询域控的一些信息。

#查询域控名称AdFind.exe -sc dclist#查询域控版本AdFind.exe -schema -s base objectversion

备注(域控版本 数字对用的版本)

・Windows 2000 Server operating system: 13

・Windows Server 2003 operating system: 30

・Windows Server 2003 R2 operating system: 31

・Windows Server 2008 operating system (AD DS): 44

・Windows Server 2008 R2 operating system (AD DS): 47

・Windows Server 2012 operating system (AD DS): 56

・Windows Server 2012 R2 operating system (AD DS): 69

・Windows Server 2016 operating system (AD DS): 87

・Windows Server v1709 operating system (AD DS): 87

・Windows Server v1803 operating system (AD DS): 88

・Windows Server v1809 operating system (AD DS): 88

・Windows Server 2019 operating system (AD DS): 88

・Active Directory Application Mode (ADAM): 30

・Windows Server 2008 (AD LDS): 30

・Windows Server 2008 R2 (AD LDS): 31

・Windows Server 2012 (AD LDS): 31

・Windows Server 2012 R2 (AD LDS): 31

・Windows Server 2016 (AD LDS): 31

・Windows Server v1709 (AD LDS): 31

・Windows Server v1803 (AD LDS): 31

・Windows Server v1809 (AD LDS): 31

・Windows Server 2019 (AD LDS): 31

如图所示,可以看到查询到域控的一些相关信息。

3. 机器相关

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

(1) 查询域中所有机器

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

#查询域中所有机器,只显示dnAdFind.exe -f "objectcategory=computer" dn#查询域中所有机器,显示机器名和操作系统AdFind.exe -f "objectcategory=computer" name operatingSystem

如图所示,可以看到当指定参数不同时,查询出的域中所有机器显示信息也不同。

(2) 查询域中活跃机器

以下命令是查询域中活跃的机器。

#查询域中活跃机器,只显示dnAdFind.exe -sc computers_active dn#查询域中活跃机器,显示机器名和操作系统AdFind.exe -sc computers_active name operatingSystem

如图所示,可以看到当指定参数不同时,查询出的域中活跃机器显示信息也不同。

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

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

#查询指定机器mail详细信息``AdFind.exe -f "&(objectcategory=computer)(name=mail)"

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

4. 用户相关

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

(1) 查询域管理员

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

Adfind.exe -b "CN=Domain Admins,CN=Users,DC=xie,DC=com" member

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

(2) 查询域内所有用户

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

Adfind.exe -b dc=xie,dc=com -f "(&(objectCategory=person)(objectClass=user))" -dn

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

(3) 查询指定域用户

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

#查询指定域用户test的信息``Adfind.exe -sc u:test

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

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

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

AdFind.exe -sc u:test objectSid

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

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

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

AdFind.exe -sc adsid:S-1-5-21-1313979556-3624129433-4055459191-1146

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

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

以下命令是查询指定域用户administrator属于哪些组。有两种查询方式,查询的结果一样,但是返回的objects数量不一样

Adfind.exe -s subtree -b CN=administrator,CN=users,DC=xie,DC=com memberOf``或``Adfind.exe -s subtree -f "(member="CN=administrator,CN=users,DC=xie,DC=com")" dn

如图所示,两条命令查询的结果是一样,但是返回的objects数量却不一样。

(7) 递归查询指定域用户属于哪些组

以下命令是递归查询指定用户属于哪些组。查询指定域用户属性哪些组,并且查询属于的组又属于哪些组,一直递归查询下去。

Adfind.exe -s subtree -b dc=xie,dc=com -f "(member:INCHAIN:="CN=administrator,CN=users,DC=xie,DC=com")" -bit -dn

如图所示,可以看到一直递归查询administrator所属的组。

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

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

Adfind.exe -f "useraccountcontrol:1.2.840.113556.1.4.803:=4194304" -dn

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

(9) 查询受保护的用户

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

Adfind.exe -f "&(objectcategory=person)(samaccountname=*)(admincount=1)" -dn

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

(10) 查询users容器下所有对象

如下命令是查询users容器下的所有对象。

AdFind.exe -users -dn

如图所示,可以看到users容器下的所有对象。

(11) 查询已禁用的账户

标识用户是否被禁用的位置位于userAccountControl属性中,具体的位置为0x0002。

参考:UserAccountControl 属性标志 - Windows Server | Microsoft Learn

AdFind.exe -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=2))" -dn

(12) 查询被锁定的账户

可以通过用户的lockoutTime属性来判断用户是否被锁定。

AdFind.exe -f "(&(sAMAccountType=805306368)(lockoutTime>=1))" -dn

(13) 查询密码永不过期的用户

AdFind.exe -f "(&(samAccountType=805306368)(|(UserAccountControl:1.2.840.113556.1.4.803:=65536)(msDS-UserDontExpirePassword=TRUE)))" -dn

(14__)查询使用可逆加密存储密码的账户

AdFind.exe -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=128))" -dn

(15) 查询不需要设置密码的账户

useraccountcontrol:1.2.840.113556.1.4.803:=32 表示查询不需要设置密码的账户。

adfind -default -f "&(objectcategory=person)(objectclass=user)(useraccountcontrol:1.2.840.113556.1.4.803:=32)" -dn

5. 组相关

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

(1) 查询域内所有的组

Adfind.exe -f "objectClass=group" -dn

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

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

Adfind.exe -f "(grouptype=-2147483646)" -dn

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

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

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

Adfind.exe -f "(grouptype=-2147483640)" -dn

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

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

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

Adfind.exe -f "(|(grouptype=-2147483644)(grouptype=-2147483643))" -dn

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

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

以下命令是查询指定组含有哪些对象。有两种查询方式,查询的结果一样,但是返回的objects数量不一样。

Adfind.exe -s subtree -b "CN=Domain Admins,CN=Users,DC=xie,DC=com" member或Adfind.exe -s subtree -b dc=xie,dc=com -f "(memberof="CN="Domain Admins",CN=Users,DC=xie,DC=com")"  -dn

如图所示,两条命令查询的结果是一样,但是返回的objects数量却不一样。

(6) 递归查询指定组含有哪些域用户

以下命令会递归查询指定组中含有哪些域用户。

Adfind.exe -s subtree -b dc=xie,dc=com -f "(memberof:INCHAIN:="CN="Domain Admins",CN=Users,DC=xie,DC=com")" -bit -dn

如图所示,可以看到一直递归查询Domain Admins组中含有的用户。

6. 委派相关

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

(1) 非约束性委派

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

#查询域中配置非约束性委派的主机
AdFind.exe -b "DC=xie,DC=com" -f "(&(samAccountType=805306369)(userAccountControl:1.2.840.113556.1.4.803:=524288))" -dn ``

#查询域中配置非约束性委派的服务帐户
AdFind.exe -b "DC=xie,DC=com" -f "(&(samAccountType=805306368)(userAccountControl:1.2.840.113556.1.4.803:=524288))" -dn

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

(2) 约束性委派

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

#查询域中配置了约束性委派的主机,并可以看到被委派的SPN AdFind.exe -b "DC=xie,DC=com" -f "(&(samAccountType=805306369)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto #查询域中配置了约束性委派的服务账户,并可以看到被委派的SPN AdFind.exe -b "DC=xie,DC=com" -f "(&(samAccountType=805306368)(msds-allowedtodelegateto=*))" msds-allowedtodelegateto

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

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

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

#查询域中配置基于资源的约束性委派的主机 AdFind.exe -b "DC=xie,DC=com" -f "(&(samAccountType=805306369)(msDS-AllowedToActOnBehalfOfOtherIdentity=*))" msDS-AllowedToActOnBehalfOfOtherIdentity#查询域中配置基于资源的约束性委派的服务账户 AdFind.exe -b "DC=xie,DC=com" -f "(&(samAccountType=805306368)(msDS-AllowedToActOnBehalfOfOtherIdentity=*))" msDS-AllowedToActOnBehalfOfOtherIdentity

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

7.其他

下面这几个是一些其他的实战中比较常用的命令。

(1) 查找域内具备Dcsync权限的用户

如下命令是查询域中具备DCSync权限的用户。

#查找域中具有复制目录权限的用户AdFind.exe -s subtree -b "DC=xie,DC=com" nTSecurityDescriptor -sddl+++ -sddlfilter ;;;"Replicating Directory Changes";; -recmute -resolvesids#查找域中具有复制目录所有项权限的用户AdFind.exe -s subtree -b "DC=xie,DC=com" nTSecurityDescriptor -sddl+++ -sddlfilter ;;;"Replicating Directory Changes All";; -recmute -resolvesids

如图所示,查询域中具备Dcsync权限的用户。

(2) 查询域内的OU组织单位

如下命令是查询域中的OU组织单位,其会递归查询域内的所有OU组织单位

Adfind.exe -f "objectClass=organizationalUnit" -dn

如图所示,可以看到查询出域捏的OU组织单位。

(3) 查询域的ACL

如下命令是查询域的ACL。

Adfind.exe -b DC=xie,DC=com -sc getacl

如图所示,可以看到查询出域xie.com的ACL。

(4) 查询rightsGuid对应的扩展权限

如下命令是查询指定rightsGuid对应的扩展权限。

Adfind.exe -b CN=Extended-Rights,CN=Configuration,DC=xie,DC=com -f "rightsGuid=1131f6aa-9c07-11d1-f79f-00c04fc2dcd2" dn

如图所示,可以看到查询到rightsGuid为1131f6aa-9c07-11d1-f79f-00c04fc2dcd2对应的扩展权限是DS-Replication-Get-Changes。

(5) 查询域内所有GPO

如下命令是查询域内所有的GPO组策略。

AdFind.exe -sc gpodmp

如图所示,可以看到查询出域内所有的GPO组策略。

(6) 查询域内高权限的SPN

如下命令是查询域内具有高权限的SPN的帐户。

Adfind.exe -b "DC=xie,DC=com" -f "&(servicePrincipalName=*)(admincount=1)" servicePrincipalName

如图所示,可以看到查询出具有高权限的SPN的帐户krbtgt。

(7) 查询域内的所有邮箱

如下命令是将域内所有的邮箱以csv的格式显示出来。

Adfind.exe -f "mail=*" mail -s Subtree -recmute -csv mobile

如图所示,可以看到将域内所有的邮箱以csv的格式显示出来。

Adfind.exe -b dc=xie,dc=com -f "(&(objectCategory=person)(objectClass=user))" mail | findstr mail:

(8) 查询域内的所有手机号以csv格式显示

如下命令是将域内所有的手机号以csv的格式显示出来。

Adfind.exe -f "telephonenumber=*" telephonenumber -s Subtree -recmute -csv mobile

如图所示,可以看到将域内所有的手机号以csv的格式显示出来。

(9) 查询域内的ms-DS-MachineAccountQuota属性

Adfind.exe -b dc=xie,dc=com -f "ms-DS-MachineAccountQuota=*" ms-DS-MachineAccountQuota

(10) 查询域功能级别和林功能级别

#查询域功能级别Adfind.exe -default -f "(objectcategory=domain)" domainfunctionality#查询林功能级别Adfind.exe -default -f "(objectcategory=forest)" forestfunctionality

  • 24
    点赞
  • 21
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

廾匸0705

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值