首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >AD域攻防权威指南:二.域DNS信息收集

AD域攻防权威指南:二.域DNS信息收集

原创
作者头像
一只特立独行的兔先生
修改2025-12-16 20:35:47
修改2025-12-16 20:35:47
1910
举报

一、域DNS信息收集

在域内获取DNS记录分为两种情况:一种是拥有了域管理员权限进行后渗透时,获取DNS记录便于下一步寻找目标;另一种是进入内网后,因为权限较低,需要获取DNS记录以寻找下一步的渗透方向进行权限提升。可以利用LDAP查询+DNS解析的方式,也可以利用ADIDNS获取DNS记录。

1. 域内高权限获取所有DNS记录

1) 利用dnscmd命令行获取DNS记录

列出DNS区域中当前节点的资源记录,执行dnscmd /EnumZones命令,如图1-1所示

图1-1列出 DNS 区域中当前节点的资源记录
图1-1列出 DNS 区域中当前节点的资源记录

列举指定域所有DNS记录,执行 dnscmd /zonepront [domain]命令,如图1-2所示

图1-2 列举指定域所有 DNS 记录
图1-2 列举指定域所有 DNS 记录

再次列举指定域所有DNS记录,输入dnscmd /EnumRecords [domain] .命令,如图1-3所示

图1-3 列举指定域所有 DNS 记录
图1-3 列举指定域所有 DNS 记录

2)远程获取DNS记录

dnscmd是用来管理DNS服务器的命令行程序,默认在Server版本系统安装,如果想在非Server版系统使用dnscmd管理DNS,需要安装Remote Server Administration Tools(RSAT)。但在实战环境中,我们不能在目标主机中安装RAST。直接在个人版系统运行dnscmd会提示失败,通过测试发现缺少文件dnscmd.exe.mui,可将dnscmd.exe.mui复制到C:\Windows\System32\en-US下,将dnscmd复制到C:\Windows\System32下。

因为dnscmd没有提供输入用户名、密码选项,需要使用如mimikatz的Overpass-the-hash,本地模拟身份信息,如果获得了某个域用户的明文密码,可以将明文转换为NTLM哈希在进行使用。

首先执行privilege::debug sekurlsa::pth /user:Administrator /domain:[domain] /ntlm:[ntlm hash]命令对本地进行哈希传递攻击(PTH),需要使用具有本地管理员权限并通过UAC验证,如图1-4所示

图1-4使用 mimikatz 在本地 PTH,获得指定用户权限
图1-4使用 mimikatz 在本地 PTH,获得指定用户权限

然后执行dnscmd dc01.klion.local /EnumZones命令获取Dns记录,此时远程主机名应使用FQDN或计算机名,如图1-5所示

图1-5 获取 DNS 记录
图1-5 获取 DNS 记录

2.普通域用户获取域内所有DNS记录

ADIDNS全名为Active Directory集成DNS。在进入内网找到域控制器位置后,我们需要进一步渗透以获取目标信息。一般来说,通过扫描Web,会发现大量的Apache/Nginx/IIS默认页面或者403页面。因为配置文件在大多数情况下会被配置为只允许域名访问,我们需要用到DNS枚举获取整个域内存在什么域名,并大致判断某台主机运行什么业务。

1) 利用SharpAdidnsdump获取DNS记录。因为普通域用户就可以访问LDAP,所以可以首先通过LDAP查询所以有计算机对象名称,然后利用DNS查询对应主机的IP地址。执行SharpAdidnsdump.exe [domain]命令,如图1-6所示。

图1-6 利用 SharpAdidnsdump 获取 DNS 记录
图1-6 利用 SharpAdidnsdump 获取 DNS 记录

2) 利用LDAP通过普通域用户获取域内DNS信息。首先通过LDAP查询获得DNS记录,对二进制的DNS记录进行解码,获得实际内容。随后执行powershell -ep bypass -f dns-dump.ps1 -zone [domain]命令获取DNS记录,下载地址:https://github.com/3gstudent/Homework-of-Powershell/blob/master/dns-dump.ps1,在cmd中执行,如图1-7所示

图1-7 使用 3gstudent 的 dns-dump.ps1 获取 DNS 记录
图1-7 使用 3gstudent 的 dns-dump.ps1 获取 DNS 记录

3) 在Linux环境使用adidnsdump获取DNS记录。默认情况下,任何经过身份验证的普通域用户都可以对ADI DNS记录进行转储,当我们在LDAP中查询DNS记录时,选择该类的所有对象,这些对象的dnsNode代表DNS区域中的条目。当使用过滤器进行查询(object-Class = dnsNode)时,返回结果非常有限。对于多个对象,objectClass不可见,这是因为计算机DNS记录的默认权限不是通过ADI DNS的GUI创建的,不允许所有用户查看内容,由于IP地址实际上是该对象的一个属性,因此也无法查看这些记录的IP地址。但就像默认情况下任何用户都可以创建新的DNS记录一样,任何用户也可以默认列出DNS区域的子对象。所以我们知道那里有记录,只是不能使用LDAP查询它,一旦通过LDAP枚举知道记录存在,我们就可以直接使用DNS查询它。可以利用工具adidnsdump进行转储,这样就可以解析区域中的所有记录。

4) 连接LDAP,使用过滤器&(objectClass = DnsZone)(!(DC=*arpa))(!(DC=RootDNS-Servers))列出DomainDnsZone中可用的区域。对于每个区域,可以使用过滤器&(!(object-Class = DnsZone))(!(DC=@))(!(DC=*arpa))(!(DC=*DNSZones))列出所有主机对象。

5)执行git clone https://github.com/dirkjanm/adidnsdump && cd adidnsdump && pip install .命令来安装adidnsdump。

6)使用adidnsdump -u [domain]\\[username] -p [password] [dc] -r 命令或者直接通过python调用对应的adidnsdump.py进行信息收集,通过Linux跨Windows域获取DNS信息,如图1-8所示

图1-8 通过 Linux 跨 Windows 域获取域 DNS 信息
图1-8 通过 Linux 跨 Windows 域获取域 DNS 信息

注意如果通过Socks5连接,配置本地Kali的proxychains即可。

3.使用PowerShell模块进行域信息收集

域信息收集一般可以通过net(MS-SAMR)、LDAP、RSAT等方法实现,这里重点说一下RSAT。Windows Server 2008 R2(以及更新版本)提供了多个AD PowerShell cmdlet,这极大简化了使用ADSI(Active Directory Service Interface,活动目录服务接口)代码的繁琐过程。使用AD PowerShell cmdlet前,需要在Windows客户端上安装RSAT,并确保已安装Active Directory PowerShell模块。但是默认情况下,安装RSAT需要管理员权限,可以通过未安装RSAT的计算机上的PowerShell直接导入Microsoft.ActiveDirectory.Management.dll实现功能。

  1. 导入模块可以实现PowerShell模块进行域信息收集。再导入模块前,在PowerShell中执行Get-Command get-adcom*命令查看可使用的模块,如图2-13所示
图1-9查看可使用的 PowerShell 模块
图1-9查看可使用的 PowerShell 模块

2)在PowerShell中执行Import-Module .\Microsoft.ActiveDirectory.Management.dll命令,导入ActiveDirectory.Management模块,如图1-10所示

图1-10 导入 ActiveDirectory.Management 模块
图1-10 导入 ActiveDirectory.Management 模块

注意,Microsoft.ActiveDirectory.Management.dll需要在已安装RSAT的计算机上获取。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、域DNS信息收集
    • 1. 域内高权限获取所有DNS记录
      • 1) 利用dnscmd命令行获取DNS记录
      • 2)远程获取DNS记录
    • 2.普通域用户获取域内所有DNS记录
    • 3.使用PowerShell模块进行域信息收集
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档