ADFind是一款C++语言编写的域中信息查询工具,可以在域中任何一台主机上使用,在内网渗透中的使用率较高
下载地址,该地址下载工具不需要压缩包密码
https://github.com/mai-lang-chai/AD-Penetration-Testing-Tools/blob/master/AdFind.zip
参数
执行如下命令即可查看Adfind的所有参数
连接选项
域内机器上执行ADFind的话,不需要连接参数,如果是域外机器执行ADFind的话,则需要指定连接参数。如下:
- -h:指定主机与端口
- -p:可以单独使用-p参数指定端口
- -u:指定用户
- -up:指定密码
过滤选项
过滤参数,也就是进行查询的时候需要过滤的一些条件
- -b:指定要查询的根节点basedn
- -bit:指定位查询
- -f:LDAP过滤条件,指定ldap语法
显示选项
显示参数,也就是查询出来之后如何显示的一些参数
- -appver:显示adfind版本信息
- -c:只统计数量
- -csv:导出为csv格式
- -dn:只显示dn,不返回详细信息
- -s:搜索的范围,有one(当前层级)/sub(一层一层递归),默认是sub
- -sdna:非域管查询sd信息
- -recmute:如果所有属性都为空,则禁止显示DN,主要适用于sddl过滤器选项
- -t:查询超时时间,默认120秒
查看帮助
帮助参数,也就是使用过程的一些帮助
- -help:基础的帮助
- -?:基础的帮助
- -??:高级帮助
- -???:快捷方式的帮助
- -sc?:快捷方式帮助
- -meta?:元数据帮助
- -regex?:固定表达式帮助
使用
adfind 工具使用的结构如下:其中 switches 是连接参数,-b 是指定要查询的根节点 basedn,-f 是指定过滤的条件,attr 是指定要显示的属性。
AdFind.exe [switches] [-b basedn] [-f filter] [attr list]
switches
该选项是连接参数,如果adfind在域内主机上运行,则无需该选项,如果是域外机器上执行,则需要指定域控和提供一个有效的域用户和密码
./Adfind.exe -h 192.168.1.11:389 -u tmac\administrator -up admin@123 -sc dclist#-h:192.168.1.11的389端口
#-u:提供用户名
#-up:提供密码
#-sc:查询域控列表
[-b basedn]
该选项指定要查询的根节点basedn
- 查询 dn dc=tmac,dc=com下的所有机器
Adfind -b dc=tmac,dc=com -f "objectcategory=computer" dn
- 查询 dn CN=Computers,DC=xie,DC=com 下的所有机器
Adfind.exe -b CN=Computers,DC=tmac,DC=com -f "objectcategory=computer" dn
[-f filter]
该选项指定查询的过滤条件,使用-f参数过滤不同的查询条件
- 查询域内所有机器
Adfind.exe -f "objectcategory=computer" dn
- 查询域内所有用户
AdFind.exe -f "(&(objectCategory=person)(objectClass=user))" dn
[attr list]
该选项用于指定查询出来的结果显示哪个属性。当不使用该参数时,会显示查询对象的所有属性
- 查询域内所有机器,显示所有机器的所有属性
Adfind.exe -f "objectcategory=computer"
- 查询域内所有机器,显示所有机器的dn属性
Adfind.exe -f "objectcategory=computer" dn
- 查询域内所有机器,显示所有机器的name属性
Adfind.exe -f "objectcategory=computer" name
查询示例
一些在实战中经常用到的查询语法
查询域信任关系
adfind.exe -f objectclass=trusteddomain -dn
查询域控
- 查询域控名称
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
机器相关命令
查询域中所有机器
- 查询域中所有机器,只显示dn
AdFind.exe -f "objectcategory=computer" dn
- 查询域中所有机器,显示机器名和操作系统
AdFind.exe -f "objectcategory=computer" name operatingSystem
查询域中活跃机器
- 查询域中活跃机器,只显示dn
AdFind.exe -sc computers_active dn
- 查询域中活跃机器,显示机器名和操作系统
AdFind.exe -sc computers_active name operatingSystem
查询指定机器详细信息
- 查询指定机器 mail 详细信息
AdFind.exe -f "&(objectcategory=computer)(name=mail)"
用户相关命令
查询域管理员
- 查询域管理员组中含有哪些用户
Adfind.exe -b "CN=Domain Admins,CN=Users,DC=tmac,DC=com" member
查询域内所有用户
adfind.exe -b dc=tmac,dc=com -f "(&(objectCategory=person)(objectClass=user))
" -dn
查询指定域用户
- 查询域用户test的信息
adfind.exe -sc u:test
查询指定域用户的sid
AdFind.exe -sc u:test objectSid
查询指定sid对应的用户
AdFind.exe -sc adsid:S-1-5-21-3360754451-1213512736-1246375978-1106
查询指定域用户属于哪些组
查询指定域用户 administrator 属于哪些组。有两种查询方式,查询的结果一样,但是返回的 objects 数量不一样。
adfind.exe -s subtree -b CN=administrator,CN=users,DC=tmac,DC=com memberOfadfind.exe -s subtree -f "(member="CN=administrator,CN=users,DC=tmac,DC=com") " dn
递归查询指定域用户属于哪些组
adfind.exe -s subtree -b dc=tmac,dc=com -f "(member:INCHAIN:="CN=administr
ator,CN=users,DC=tmac,DC=com")" -bit -dn
查询域内开启“Do not require Kerberos preauthentication”选项的用户
adfind -f "useraccountcontrol:1.2.840.113556.1.4.803:=4194304" -dn
查询受保护的用户
Adfind -f "&(objectcategory=person)(samaccountname=*)(admincount=1)" -dn
查询users容器下所有对象
AdFind.exe -users -dn
组相关
查询域内所有的组
adfind.exe -f "objectClass=group" -dn
查询域内所有的全局组
adfind.exe -f "(grouptype=-2147483646)" -dn
查询域内所有通用组
adfind.exe -f "(grouptype=-2147483640)" -dn
查询域内所有的本地域组
adfind.exe -f "(|(grouptype=-2147483644)(grouptype=-2147483643))" -dn
递归查询指定组含有哪些域用户
adfind.exe -s subtree -b dc=tmac,dc=com -f "(memberof:INCHAIN:="CN="Domai
n Admins",CN=Users,DC=tmac,DC=com")" -bit -dn
委派相关
非约束性委派
- 查询域中配置非约束性委派的主机
AdFind.exe -b "DC=tmac,DC=com" -f "(&(samAccountType=805306369)(userAccoun tControl:1.2.840.113556.1.4.803:=524288))" -dn
- 查询域中配置非约束性委派的服务账户
AdFind.exe -b "DC=tmac,DC=com" -f "(&(samAccountType=805306368)(userAccoun tControl:1.2.840.113556.1.4.803:=524288))" -dn
约束性委派
- 查询域中配置了约束性委派的主机,并可以看到被委派的SPN
AdFind.exe -b "DC=tmac,DC=com" -f "(&(samAccountType=805306369)(msds-allow edtodelegateto=*))" msds-allowedtodelegateto
- 询域中配置了约束性委派的服务账户,并可以看到被委派的 SPN
AdFind.exe -b "DC=tmac,DC=com" -f "(&(samAccountType=805306368)(msds-allow edtodelegateto=*))" msds-allowedtodelegateto
基于资源的非约束性委派
- 查询域中配置基于资源的约束性委派主机
AdFind.exe -b "DC=tmac,DC=com" -f "(&(samAccountType=805306369)(msDS-Allo wedToActOnBehalfOfOtherIdentity=*))" msDS-AllowedToActOnBehalfOfOtherIdentit y
- 查询域中配置基于资源的约束性委派的服务账户
AdFind.exe -b "DC=tmac,DC=com" -f "(&(samAccountType=805306368)(msDS-Allo wedToActOnBehalfOfOtherIdentity=*))" msDS-AllowedToActOnBehalfOfOtherIdentit y
常用命令
查询域内具备Dcsync权限的用户
- 查询域中具有复制目录权限的用户
AdFind.exe -s subtree -b "DC=tmac,DC=com" nTSecurityDescriptor -sddl+++ -sddlfil ter ;;;"Replicating Directory Changes";; -recmute -resolvesids
- 查找域中具有复制目录所有项权限的用户
AdFind.exe -s subtree -b "DC=tmac,DC=com" nTSecurityDescriptor -sddl+++ -sddlfil ter ;;;"Replicating Directory Changes All";; -recmute -resolvesids
查询域内的OU组织单位
adfind.exe -f "objectClass=organizationalUnit" -dn
查询域的ACL
adfind.exe -b DC=tmac,DC=com -sc getacl
查询域内所有GPO
AdFind.exe -sc gpodmp
查询域内高权限的SPN
AdFind.exe -b "DC=tmac,DC=com" -f "&(servicePrincipalName=*)(admincount=1)" ser vicePrincipalName