专栏首页FreeBuf使用Adidnsdump转储Active Directory DNS

使用Adidnsdump转储Active Directory DNS

DNS域传送漏洞是在黑客常用的一种漏洞攻击手段。要实现域传送漏洞,就需要一个不安全配置的DNS服务器,允许匿名用户传输所有记录并收集有关网络中主机的信息。然后网络上的任何用户都可以获取所有传送记录并收集有关网络中服务器的信息。然而,目前还很少有人知道,如果使用Active Directory集成DNS,任何用户都可以默认查询所有DNS记录。

本文,我会给你介绍了一个默认查询所有DNS记录的工具——Adidnsdump ,即使你是一个没有读取传送记录权限的用户,也可以使用以下方法获得域环境中的所有DNS解析记录。

0x01

就个人而言,每当我接手一个新的渗透测试任务时,我会去了解网络布局,使用了那些软件以及数据的位置。如果公司有非描述性的服务器名称或描述,像BloodHound或ldapdomaindump这样的工具不会有太大帮助,因为SRV00001.company.local仍然没有告诉我在这台主机上运行的是什么。在大量IP地址上运行EyeWitness等发现工具通常会返回大量默认的Apache / IIS页面,因为大多数站点都配置为侦听DNS名称而不是IP地址。此时你如果知道DNS记录,可能就会发现SRV00001.company.local和gitlab.company.local指向同一个IP,这个IP上可能存放着大量源码。因此,我认为访问AD的DNS记录非常有价值。为此我编写了一个可以转储这些DNS记录的Adidnsdump。你既可以直接在网络中的主机运行它,也可以通过SOCKS隧道利用。

0x02

该工具的设计思路,是在我研究Active Directory DNS时开始的,主要受到Kevin Robertson在ADIDNS 上工作的启发。当我作为普通用户提取了ADSI Edit并突然看到了域中所有DNS记录时,我试图找出AD如何在LDAP中使用域来存储DNS记录。令我惊讶的是,早在2013年,就有人开发出可以提取DNS记录的PowerShell脚本,但它并没有完全符合我的要求,所以我决定用Python编写一个版本,并添加一些选项来枚举比默认情况下更多的记录。

0x03

在LDAP中查询DNS记录的最明显方法是执行查询,选择该类的所有对象,这些对象dnsNode表示DNS区域中的条目。当我使用过滤器执行查询时(objectClass=dnsNode),这会返回非常有限的结果,即使我可以看不到更多记录:

如上图所示,很多记录的objectClass都处于隐藏状态。这是因为计算机DNS记录的默认权限(我认为其他记录也不是通过AD DNS gui创建的),这些记录不允许所有用户查看内容。由于IP地址实际上存储为此对象的属性,因此无法查看这些记录的IP地址。

但是,默认情况下,任何用户都可以创建新的DNS记录,任何用户也可以默认列出DNS区域的子对象。所以我们知道有记录,我们只是无法使用LDAP查询它。

通过使用LDAP枚举知道记录所在的位置之后,我们就可以直接使用DNS查询它,因为执行常规DNS查询不需要什么特别权限,这样我们就可以解析域中的所有记录。

0x04

使用adidnsdump,您可以从GitHub获取,可以枚举DNS区域中的所有记录。首先,首先显示您当前所在域中的区域--print-zones。这将显示存在哪些区域。并非所有区域都很有趣,例如转发,缓存和存根区域不包含该域的所有记录。如果找到这些区域,最好查询它们实际所属的域。下面的输出显示我的测试域只有默认区域:

user@localhost:~/adidnsdump$ adidnsdump -u icorp\\testuser --print-zones icorp-dc.internal.corpPassword: [-] Connecting to host...[-] Binding to host[+] Bind OK[-] Found 2 domain DNS zones:    internal.corp    RootDNSServers[-] Found 2 forest DNS zones:    ..TrustAnchors    _msdcs.internal.corp

如果我们为工具指定区域(或者为默认区域指定为空),我们将获得所有记录的列表。显示可以列出所谓的“隐藏”记录,但仅显示问号,因为不知道哪种类型的记录存在以及它指向何处。记录全部保存到名为的文件中records.csv

要解析未知记录,请指定-r标志,该标志将对A所有未知记录执行查询(AAAA如果您在IPv6网络中,则可以在代码中轻松将其更改为)。之前空白的几个节点突然有记录:

如果您没有直接连接但是通过代理工作,则可以通过socks代理该工具并使用该--dns-tcp标志在TCP上执行DNS查询。

缓解措施

为了安全起见,我建议你首先要对DNS记录的安全性持有客观的认知态度。如果你确实要隐藏DNS记录,就请删除“Everyone”和“Pre-Windows 2000 Compatible Access”的“列出内容”权限,以阻止普通用户查询DNS记录。但这可能会产生负面影响,所以我不建议那样做。

所以最好的办法是及时检测DNS查询活动的出现,通过监控大量DNS查询或启用对DNS区域列表的审计可能是一种更好的缓解措施。

工具

adidnsdump可在GitHub和PyPI(pip install adidnsdump)上下载。该工具还可以将记录转储到CSV文件,但随时可以提交替代格式的请求。

*参考来源:dirkjanm,FB小编周大涛编译,转载请注明来自FreeBuf.COM

本文分享自微信公众号 - FreeBuf(freebuf),作者:周大涛

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-07-06

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 利用DNS隧道构建隐蔽C&C信道

    无论是高级持续性威胁(APT)、僵尸网络(Botnet),还是勒索软件、后门等,命令与控制信道(C&C)都是其重要组成部分,尤其是APT和僵尸网络中的C&C信道...

    FB客服
  • 基于DNS隐蔽信道的攻击与检测

    企业网络经常面临网络攻击者窃取有价值和敏感数据的威胁。复杂的攻击者越来越多地利用DNS通道来泄露数据,以及维护恶意软件的隧道C&C(命令和控制)通信。这是因为D...

    FB客服
  • DNS Tunneling及相关实现

    *本文原创作者:novsec,本文属FreeBuf原创奖励计划,未经许可禁止转载 ? DNS Tunneling,是隐蔽信道的一种,通过将其他协议封装在DNS协...

    FB客服
  • 新一轮DNS钓鱼攻击已突破国内安全防线

    近日,据国内领先的DNS服务提供商114DNS官网微博消息称:新一轮DNS钓鱼攻击已经突破国内安全防线,可能已经导致数百万用户感染。随后,其他安...

    安恒信息
  • 全国DNS服务器IP大全

    用户1700948
  • 在中国大陆好用的DNS

    这里选择了一些在中国大陆好用的公共DNS服务 污染小,响应速度快 还有一些其他的使用技巧

    Huramkin
  • D妹上新|DoH和DoT开始公测啦!

    ? 要讲DoT和DoH,不可避免的我们要重温一下DNS协议的历史。 DNS协议在1987年甚至更早的时候就被规范好,那个年代互联网安全还不是严重的威胁,DNS...

    腾讯云DNSPod团队
  • DNS流量分析——使网络更安全

    人们很容易忽视域名系统(DNS)及其在整个互联网和本地内部网中发挥的关键作用。这主要是因为,尽管我们每天都依赖DNS,但它对用户基本上是透明的,而且我们都理所当...

    虹科网络可视化与安全
  • Windows平台本地DNS自动检测与设置工具

    Youngxj
  • 【转】去中心化的多播DNS(mDNS)

    我们都知道 DNS 大概是个什么东西,所有的域名与 IP 地址的对应关系都要靠它来翻译,就好像 IP 与 Mac 地址需要 ARP 这个协议一样,为了区别,我们...

    Jean

扫码关注云+社区

领取腾讯云代金券