XenoG 发布于2022年11月8日 分享 发布于2022年11月8日 0x00 前言 在域渗透中,活动目录信息的获取是必不可少的。 本文将以获取活动目录中的所有用户、所有计算机和所有组为例,介绍常用的信息获取方法。 0x01 简介 本文将介绍以下内容: 一种获取域外活动目录信息的方法 获取域中活动目录信息的方法 调用ADSI接口获取信息。 0x02 基础知识 该域使用目录数据库来存储用户、计算机帐户和组等对象。 使用LDAP(轻量级目录访问协议)来查询和更新目录数据库。 常见缩写 DN:可分辨名称 CN:常用名 OU:组织单位 DC:域控制器 DN有三个属性,即CN、OU和DC。 简单理解: 默认情况下,域控制器将为LDAP服务打开端口389。 0x03 域外获取活动目录信息的方法 1.Kali系统通过ldapsearch进行数据查询 测试环境如下 前提:我们可以访问域控制器(DC)的389端口,并且我们已经获得了域中至少一个普通用户的密码。 在这个测试环境中,我们获得了域中普通用户testa的密码DomainUser123! 连接命令如下: LDAP search-x-H LDAP://192 . 168 . 1 . 1:389-D ' CN=testa,CN=Users,DC=test,DC=com' -w DomainUser123!-b ' DC=测试,DC=通讯' 参数描述: -x表示简单身份验证 -H服务器地址 -D用于绑定服务器的DN。 -w绑定DN的密码 -b指定要查询的根节点。 该命令将显示可以找到的所有信息,如下图所示。 接下来,添加搜索条件并对结果进行分类。 (1)查询所有域用户 添加搜索条件:“((对象类别=用户)(对象类别=人员))” 完整的命令如下: LDAP search-x-H LDAP://192 . 168 . 1 . 1:389-D ' CN=testa,CN=Users,DC=test,DC=com' -w DomainUser123!-b ' DC=测试,DC=com '-b ' DC=测试,DC=com ' '((对象类=用户)(对象类别=人))' 该命令将输出所有域用户的所有属性,如下图所示。 为了更容易计算名称,您可以选择只列出CN(通用名称),并使用grep命令来过滤输出。 该命令如下所示: LDAP search-x-H LDAP://192 . 168 . 1 . 1:389-D ' CN=testa,CN=Users,DC=test,DC=com' -w DomainUser123!-b ' DC=测试,DC=com '-b ' DC=测试,DC=com ' '((对象类=用户)(对象类别=人))' CN | grep cn 输出如下所示 (2)查询所有计算机 添加搜索条件:“((对象类别=计算机)(对象类别=计算机))” 该命令如下所示: LDAP search-x-H LDAP://192 . 168 . 1 . 1:389-D ' CN=testa,CN=Users,DC=test,DC=com' -w DomainUser123!-b ' DC=测试,DC=com '-b ' DC=测试,DC=com ' '((对象类别=计算机)(对象类=计算机))' CN | grep cn 输出如下所示 (3)查询所有组 添加搜索条件:“((objectCategory=group))” 该命令如下所示: LDAP search-x-H LDAP://192 . 168 . 1 . 1:389-D ' CN=testa,CN=Users,DC=test,DC=com' -w DomainUser123!-b ' DC=测试,DC=com '-b ' DC=测试,DC=com ' '((对象类别=组))' CN | grep cn 输出如下所示 2.Windows系统通过PowerView进行数据查询 测试环境如下 前提:我们可以访问域控制器(DC)的389端口,并且我们已经获得了域中至少一个普通用户的密码。 在这个测试环境中,我们获得了域中普通用户testa的密码DomainUser123! 电源地址: https://github . com/powershell mafia/PowerSploit/blob/master/Recon/power view . PS1 (1)查询所有域用户 这里需要凭证信息,因此完整的命令如下: $uname='testa ' $ pwd=convert to-secure string ' domain user 123!'-AsPlainTextForce $ cred=新对象系统。management . automation . PS credential($ uname,$pwd) get-net user-Domain test.com-Domain controller 192 . 168 . 1 . 1-ADSpath ' LDAP://DC=test,DC=com' -Credential $cred 为了统计名称,您可以选择仅列出名称项。完整的命令如下: $uname='testa ' $ pwd=convert to-secure string ' domain user 123!'-AsPlainTextForce $ cred=新对象系统管理。自动化。PS证书(uname,$pwd) get-net user-Domain test . com-域控制器192。168 .1 .1-ADSpath ' LDAP://DC=test,DC=com' -Credential $cred | fl name 结果输出如下图 (2)查询所有计算机 $uname='testa ' $ pwd=转换为安全字符串“域用户123!”-AsPlainTextForce $ cred=新对象系统管理。自动化。PS证书(uname,$pwd) get-net计算机-域test . com-域控制器192。168 .1 .1-ADSpath ' LDAP://DC=test,DC=com' -Credential $cred | fl name 结果输出如下图 (3)查询所有组 $uname='testa ' $ pwd=转换为安全字符串“域用户123!”-AsPlainTextForce $ cred=新对象系统管理。自动化。PS证书(uname,$pwd) get-net group-Domain test . com-域控制器192。168 .1 .1-ADSpath ' LDAP://DC=test,DC=com' -Credential $cred | fl name 结果输出如下图 0x04 域内获取活动目录信息的方法 前提是已经获得了域内一台主机的权限 测试环境如下图 原理:通过ADSI(activedirectory服务接口)(活动目录服务接口)进行轻量级目录访问协议查询,获得结果 1.使用Powershell实现 参照PowerView,地址: https://github。com/powershell mafia/powers loit/blob/master/Recon/power view。PS1 2.使用C#实现 参照夏普维尤,地址: https://github.com/tevora-threat/SharpView 3.使用C++实现 参考地址: https://github。com/Microsoft/Windows-classic-Samples/tree/master/Samples/win 7 Samples/netds/ADSI/active dir/query users/VC https://github.com/outflanknl/Recon-AD 微软的代码是可执行程序的扩展名的格式,只介绍了克雷尤瑟的方法,但支持查询条件(筛选指定用户)和显示简要信息(只输出名称,便于统计) 侦察广告的代码是动态链接库的格式,包含多个功能,但默认只显示详细信息 于是我将两者的代码融合,代码支持以下功能: 可执行程序的扩展名的格式 包含多个功能,支持查询用户、计算机和组等 支持查询条件和显示简要信息 代码已上传至github,地址如下: https://github。com/3g student/home-of-C-Language/blob/master/query adobject。卡片打印处理机(Card Print Processor的缩写) 代码可指定弹药分配系统(Ammunition Delivery System)路径和搜索条件,用法如下: (1)查询域用户 列出所有域用户,只显示简要的名称信息,命令如下: QueryADObject.exe当前((对象类=用户)(对象类别=人))'短数据 结果输出如下图 查询指定用户的所有信息,命令如下: QueryADObject.exe当前((对象类=用户)(对象类别=人员)(名称=测试))'所有数据 结果输出如下图 (2)查询计算机 列出所有计算机账户,只显示简要的名称信息,命令如下: QueryADObject.exe当前((对象类别=计算机)(对象类别=计算机))'短数据 结果输出如下图 查询域控制器的详细信息,需要知道弹药分配系统(Ammunition Delivery System)路径为OU=域控制器,DC=测试,DC=com ',命令如下: QueryADObject.exe欧=域控制器,DC=测试,DC=com ' '((对象类别=计算机)(对象类=计算机))'所有数据 结果输出如下图 (3)查询组 列出所有组,只显示简要的名称信息,命令如下: QueryADObject.exe当前((objectCategory=group))'短数据 列出管理员组的详细信息,命令如下: QueryADObject.exe当前((对象类别=组)(名称=域管理员))'所有数据 结果输出如下图 (4)查询OU 列出所有欧,只显示简要的名称信息,命令如下: QueryADObject.exe当前((object category=organizationalUnit))'短数据 结果输出如下图 0x05 小结 本文以获取活动目录中所有用户、所有计算机和所有组为例,分别介绍了从域外和域内获取信息的方法。 留下回复 链接帖子 意见的链接 分享到其他网站 更多分享选项…
推荐的帖子