专栏首页FreeBuf浅析加密DNS(附子域名爆破工具)

浅析加密DNS(附子域名爆破工具)

本文章简单介绍一下两种加密DNS协议:DNS over HTTPS 和 DNS over TLS。这两种协议主要为了解决DNS带来的隐私和中间人篡改问题。

0x01 DNS的安全及隐私

DNS设计之初并没有考虑安全问题,所以大部分DNS查询使用UDP传输,当然也可以用TCP。这两种方式既没有加密也没有签名。这就意味着中间人可以监听到用户访问的域名,导致隐私泄露。另外因为没有签名验证,中间人也可以篡改DNS返回的IP地址,导致用户访问钓鱼网站。后来有了DNSSEC,引入了签名机制,保证了从权威DNS服务器,到DNS递归服务器,再到客户端都没有被篡改。但是这依然没有解决隐私问题。

其实隐私问题之所以没被重视,主要有几点:第一,中间人肯定能知道你要访问的服务器IP地址,多数情况下知道IP就知道是什么网站了。第二,有一些上层协议也会泄露域名,明文HTTP就不说了,TLS协议也有Server Name Indication(SNI),会暴露明文域名。(注:IETF TLS工作组目前正在探讨草案《SNI Encryption in TLS Through Tunneling》,计划加密SNI)。第三,一些上层协议,如TLS,能够识别DNS是否被篡改,这使得签名DNS本身显得不那么重要。[1]

但即使有上述三点,加密DNS数据也有显而易见的好处。第一,减小攻击面。第二,用户请求DNS之后,未必就非得访问它呀,比如本文下述的子域名爆破,我们只对DNS数据本身感兴趣,而不访问其域名,这样加密DNS就有了实际意义。

所以本文就要探讨一下DNS over TLS和DNS over HTTPS。这两个协议目前仅限于用户客户端和DNS递归服务器间的通信。截至2018年4月,递归服务器和权威服务器之间的通信不在这两个协议的适用范围内。也许以后递归服务器和权威服务器也会纳入DNS over TLS协议里,不过目前我没听说有人实现它。

0x01 两个协议

DNS over TLS的标准文档是RFC7858。文档很短,也比较易懂。客户端先和递归服务器进行TLS握手,使用的TCP端口号是853。握手之后,把DNS数据包作为TLS的payload发给DNS递归服务器即可。请求和回答的报文与普通的DNS over TCP的报文格式一样。

DNS over HTTPS目前没有RFC文档。只有草案《DNS Queries over HTTPS》。这个草案规定可以用GET和POST方法,如果用POST,就把普通的DNS over UDP报文作为HTTP的body发送,并且在HTTP Header中设置Content-Type为application/dns-message。如果用GET,就把普通DNS over UDP报文用base64编码,把编码后的字符串作为URL的dns参数发送。

有一些厂商还支持JSON格式的DNS over HTTPS协议,比如Google和CloudFlare的DNS服务器。出于兼容考虑,在格式方面,CloudFlare选择和Google保持一致。具体格式参见Google文档或CloudFlare文档。

为了让用户好记,Google的DNS服务器是8.8.8.8和8.8.4.4,CloudFlare的DNS服务器是1.1.1.1和1.0.0.1。CloudFlare的DNS服务是2018年4月1日上线的,他们自称是因为我们的IP有4个1,所以是4月1日。[2]

0x02 子域名爆破

我用C#写了一个非常简易的子域名爆破工具,为了演示DNS over HTTPS。(仅为技术讨论使用,请勿用于违法用途!)使用的是JSON格式的DNS over HTTPS,可以从UI上选服务器。纯字典搜索,字典是从dnsrecon项目复制过来的。

这个工具我只测试了Windows 10 + Visual Studio 2017 + .NET Framework 4.6.1。特别是Windows 10以前的操作系统可能连不上https://1.1.1.1 。我记得老版Windows不支持IP地址作为证书的Subject Alt Name,所以证书校验可能会失败。

工具的地址:【点击底部阅读原文下载】。欢迎大家提交issues和PR。

0x03 参考资料

[1] RFC7626 - DNS Privacy Considerations

[2] Announcing 1.1.1.1: the fastest, privacy-first consumer DNS service

[3] DNS over TLS - Cloudflare Resolver

[4] DNS over HTTPS - Cloudflare Resolver

*本文作者:tocttou,转载请注明来自 FreeBuf.COM

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

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

原始发表时间:2018-04-22

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

我来说两句

0 条评论
登录 后参与评论

相关文章

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

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

    FB客服
  • 使用Adidnsdump转储Active Directory DNS

    DNS域传送漏洞是在黑客常用的一种漏洞攻击手段。要实现域传送漏洞,就需要一个不安全配置的DNS服务器,允许匿名用户传输所有记录并收集有关网络中主机的信息。然后网...

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

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

    FB客服
  • DNS Prefetch初认识

    今天在看一个后台框架时,发现这样的代码: <link rel="dns-prefetch" href="//0.s3.envato.com"> <link re...

    吴裕超
  • 全国DNS服务器IP大全

    用户1700948
  • 【转】去中心化的多播DNS(mDNS)

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

    Jean
  • 你的网络被DNS劫持了吗?

    DNS遭受劫持示意图 DNS劫持可用于DNS域欺骗(Pharming,攻击者通常目的是为了显示不需要的广告以产生收入)或用于网络钓鱼(fishing,攻击者目...

    用户5521279
  • D妹上新|DoH和DoT开始公测啦!

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

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

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

    虹科网络可视化与安全
  • DNS故障对TDW影响评估及改进方案探索

    TDW集群的所有slaves机器都需要通过DNS域名解析方式连接master,也就是在所有slaves机器上配置master的域名,而非直接的IP地址;用户需要...

    陆耀伟

扫码关注云+社区

领取腾讯云代金券