域渗透——DNS记录的获取

安全 应用安全
在域渗透中,对域环境的信息搜集很关键,如果我们获得了域内管理员的权限,那么如何能够快速了解域内的网络架构呢?DNS记录无疑是一个很好的参考。

 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。

如下图:

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区域中当前节点的资源记录:

  1. Dnscmd . /EnumZones 

如下图:

 

(2)列出test.com的信息:

  1. Dnscmd . /ZoneInfo test.com 

如下图:

 

(3)列举test.com中的记录,方法1(更详细):

  1. Dnscmd . /ZonePrint test.com 

如下图:

 

(4)列举testc.com的记录,方法2:

  1. Dnscmd . /EnumRecords test.com . 

如下图:

 

结果同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的执行过程,查看缺少哪些文件。

如下图:

 

发现缺少文件dnscmd.exe.mui。

补全缺少的文件,再次测试,最终找到解决方法。

在未安装Remote Server Administration Tools (RSAT)的系统上执行dnscmd,需要满足以下条件:

1、dnscmd保存在路径C:\Windows\System32下

2、dnscmd.exe.mui保存在C:\Windows\System32\en-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:

  1. mimikatz.exe privilege::debug "lsadump::dcsync /domain:test.local /all /csv exit" 

实际测试

测试环境的参数如下:

  • 域管理员用户:Administrator
  • 口令:DomainAdmin456!
  • hash:A55E0720F0041193632A58E007624B40

Overpass-the-hash:

  1. mimikatz.exe privilege::debug "sekurlsa::pth /user:Administrator /domain:test.com /ntlm:A55E0720F0041193632A58E007624B40" 

这样会弹出一个cmd.exe

接着使用dnscmd远程连接进行查询:

  1. Dnscmd WIN-F08C969D7FM.test.com /EnumZones 

or

  1. Dnscmd WIN-F08C969D7FM /EnumZones 

注:这里要使用FQDN或者计算机名。

如下图:

 

如果想在命令行下实现整个流程,可以采用如下方法:

新建c:\test\1.bat,内容如下:

  1. Dnscmd WIN-F08C969D7FM.test.com /EnumZones > c:\test\out.txt 

Overpass-the-hash:

  1. mimikatz.exe privilege::debug "sekurlsa::pth /user:Administrator /domain:test.com /ntlm:A55E0720F0041193632A58E007624B40 /run:\"cmd.exe /c c:\test\1.bat\"" 

注:cmd.exe下"需要使用转义字符\"

0x05 小结

 

本文介绍了在域内使用Overpass-the-hash实现dnscmd远程读取DNS记录的方法。

责任编辑:武晓燕 来源: 嘶吼专业版
相关推荐

2016-03-22 10:14:25

域渗透渗透测试域控权限

2015-10-27 11:11:46

2016-12-13 08:45:48

2015-04-09 10:58:09

2020-09-28 10:03:36

渗透

2011-11-16 11:12:46

DNSDNS记录DNS恢复

2011-11-18 10:40:16

Windows活动目录DNS记录

2021-10-11 10:39:13

内网信息收集

2017-06-06 14:13:16

2012-11-29 16:11:06

2021-09-02 09:24:14

DNSrrDNS安全工具

2011-11-16 10:02:48

DNSDNS记录DNS记录消失

2011-11-18 10:52:00

2021-05-18 22:11:27

DNS记录类型

2013-06-07 13:32:26

2015-01-23 09:38:31

2015-09-15 14:02:57

DNS解析

2009-04-16 15:26:32

Sql Server记录总数聚簇索引

2023-12-15 19:29:20

2016-05-31 10:11:51

点赞
收藏

51CTO技术栈公众号