内容简介:在之前的文章本文将会参考公开的资料,整理域普通用户获得DNS记录的方法,修复dns-dump.ps1在高版本Windows系统下的bug。0x01 简介
0x00 前言
在之前的文章 《域渗透——DNS记录的获取》 介绍了域渗透中获得DNS管理员权限后获取DNS记录的方法,而更普遍的情况是只有域普通用户的权限,也需要获得DNS记录。
本文将会参考公开的资料,整理域普通用户获得DNS记录的方法,修复dns-dump.ps1在高版本Windows系统下的bug。
0x01 简介
本文将要介绍以下内容:
·实现原理
· 开源的 工具 和方法
0x02 实现原理
1.SharpAdidnsdump的实现原理
先通过LDAP查询获得域内计算机的名称,再通过DNS查询获得对应的IP。
详细实现细节可参考:
https://github.com/b4rtik/SharpAdidnsdump
测试环境: test.com
(1)通过LDAP查询获得域内计算机的名称
对应LDAP的查询参数如下:
LDAP://test.com/DC=test.com,CN=microsoftdns,DC=DomainDnsZones,DC=test,DC=com (&(!(objectClass=DnsZone))(!(<a href="/cdn-cgi/l/email-protection" data-cfemail="2561661865">[email protected]</a>))(!(DC=*arpa))(!(DC=*DNSZones)))
(2)通过DNS查询获得域内计算机对应的IP
使用Dns.GetHostEntry方法,参考资料:
2.dns-dump的实现原理
先通过LDAP查询获得DNS记录,对二进制的DNS记录进行解码,获得实际内容。
DNS记录解码的细节可参考:
https://github.com/mmessano/PowerShell/blob/master/dns-dump.ps1#L483
0x03 开源的工具和方法
测试环境:
· test.com
·Server2012 R2
1.先通过LDAP查询获得域内计算机的名称,再通过DNS查询获得对应的IP
(1)SharpAdidnsdump
https://github.com/b4rtik/SharpAdidnsdump
C#实现,用于查询DNS记录。
用法:
SharpAdidnsdump test.com
获得的结果完整,同dnscmd的结果一致
注:dnscmd的用法可以参考之前的文章 《域渗透——DNS记录的获取》
(2)adidnsdump
https://github.com/dirkjanm/adidnsdump
https://dirkjanm.io/getting-in-the-zone-dumping-active-directory-dns-with-adidnsdump/
Python实现,用于查询DNS记录。
适用于Linux,由于需要安装impacket,因此无法直接在Windows系统下使用。
安装方法:
git clone https://github.com/SecureAuthCorp/impacket.git cd impacket pip install . cd .. git clone https://github.com/dirkjanm/adidnsdump cd adidnsdump pip install .
需要先获得一个域用户的凭据(明文口令或NTLM hash)。
用法1.直接远程查询:
adidnsdump -u test\\testuser1 -p test123! dc.test.com -r
用法2.通过socks代理进行查询:
proxychains adidnsdump -u test\\testuser1 -p test123! dc.test.com -r --dns-tcp
注:还可以使用NTLM hash作为登录凭据。
2.先通过LDAP查询获得DNS记录,对二进制的DNS记录进行解码,获得实际内容
(1)dns-dump
https://github.com/mmessano/PowerShell/blob/master/dns-dump.ps1
Powershell实现,用于查询DNS记录。
这个powershell脚本较为古老,我在我的测试环境Server2008R2和Server2012R2下均失败。
经过分析,需要修改LDAP的查询语句,新的脚本已上传至github,地址如下:
https://github.com/3gstudent/Homework-of-Powershell/blob/master/dns-dump.ps1
用法:
Powershell -ep bypass -f dns-dump.ps1 -zone test.com
获得的结果完整,同dnscmd的结果一致。
(2)PowerView
https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1
也可用于查询DNS记录。
其中的Convert-DNSRecord可用来对二进制的DNS记录进行解码:
https://github.com/PowerShellMafia/PowerSploit/blob/master/Recon/PowerView.ps1#L1814
用法如下:
import-module PowerView.ps1 Get-DNSRecord -ZoneName test.com
3.其他工具
(1)AdFind
C++实现(未开源),用于查询域内信息。
http://www.joeware.net/freetools/tools/adfind/index.htm
常用命令如下:
列出域控制器名称:
AdFind -sc dclist
查询当前域中在线的计算机:
AdFind -sc computers_active
注:对应的LDAP查询条件如下:
Transformed Filter: (&(objectcategory=computer)(!(useraccountcontrol:1.2.840.113556.1.4.803:=2))(pwdlastset>=131932198595370000)(|(!lastlogontimestamp=*)(&(lastlogontimestamp=*)(lastlogontimestamp>=131932198595370000))))
查询当前域中在线的计算机(只显示名称和操作系统):
AdFind -sc computers_active name operatingSystem
查询当前域中所有计算机:
AdFind -f "objectcategory=computer"
查询当前域中所有计算机(只显示名称和操作系统):
AdFind -f "objectcategory=computer" name operatingSystem
查询域内所有用户:
AdFind -users name
查询所有GPO:
AdFind -sc gpodmp
或
AdFind -gpo
注:查询GPO对应之前的文章 《域渗透——利用GPO中的计划任务实现远程执行》
0x04 小结
本文介绍了多种域普通用户获得DNS记录的方法,适用于不同的环境,在实际使用过程中,某些情况下AdFind的查询效率较低。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 三大渗透框架权限维持
- 域渗透的攻击模拟测试:从无访问权限到域管理员权限
- Django框架–权限代码+左侧菜单和权限应用
- 同等权限下多任职之间数据权限的实例
- 在 Windows 系统上降低 UAC 权限运行程序(从管理员权限降权到普通用户权限)
- 在 Windows 系统上降低 UAC 权限运行程序(从管理员权限降权到普通用户权限)
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
互联网的误读
詹姆斯•柯兰(James Curran)、娜塔莉•芬顿(Natalie Fenton)、德 斯•弗里德曼(Des Freedman) / 何道宽 / 中国人民大学出版社 / 2014-7-1 / 45.00
互联网的发展蔚为壮观。如今,全球的互联网用户达到20亿之众,约占世界人口的30%。这无疑是一个新的现象,对于当代各国的经济、政治和社会生活意义重大。有关互联网的大量大众读物和学术著作鼓吹其潜力将从根本上被重新认识,这在20世纪90年代中期一片唱好时表现尤甚,那时许多论者都对互联网敬畏三分,惊叹有加。虽然敬畏和惊叹可能已成过去,然而它背后的技术中心主义——相信技术决定结果——却阴魂不散,与之伴生的则......一起来看看 《互联网的误读》 这本书的介绍吧!