服务器之家:专注于服务器技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟服务器|服务器安全|DNS服务器|服务器其它|

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

2019-06-13 21:40来源:Freebuf所属分类:DNS服务器

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

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

0x01 DNS的安全及隐私

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

延伸 · 阅读

精彩推荐
  • DNS服务器winmydns DNS服务器架设

    winmydns DNS服务器架设

    winmydns 一款dns服务器架设软件,大家可以参考下配置,自己的dns服务器。...

    未知 130 2019-05-19
  • DNS服务器dnscrypt怎么用?使用dnscrypt解决dns污染问题

    dnscrypt怎么用?使用dnscrypt解决dns污染问题

    DNSCrypt是一款由OpenDNS发布的能够确保客户端与DNS服务器之间传输安全的工具。DNSCrypt作为一个DNS代理运行,侧重于客户端和第一级DNS服务器之间的通信安全,能够缓存DNS解析...

    服务器之家 131 2019-05-21
  • DNS服务器不按常理的DNS服务器 未响应怎么搞?

    不按常理的DNS服务器 未响应怎么搞?

    网络连接不上原因有很多,其中 DNS服务器 未响应这个问题让不少人受到困扰。当联网出现异常,诊断出结果显示 DNS服务器未响应 怎么办?首先我们先来了解下什么是DNS服务器。 DNS服务器是什么? DNS服务器是进行域名(domain name)和与...

    腾正科技 81 2019-05-19
  • DNS服务器Win2003 DNS服务器创建多个域名

    Win2003 DNS服务器创建多个域名

    某公司局域网的服务器基于Windows Server 2003,并搭建了DNS服务器。现在准备建立若干域名,使它们分别应用在HTTP浏览、FTP登录、论坛访问和E-mail收发等方面。如何在DNS服务器中实现这一设想呢?...

    服务器配置技术网 212 2019-06-09
  • DNS服务器四招教你快速解决DNS服务器未响应

    四招教你快速解决DNS服务器未响应

    大家平常在使用window系统的电脑上网过程中,常常会遇到 DNS服务器未响应 的问题,而DNS服务器对我们来说十分重要的,如果它不能响应的话,我们就上不了网了。尽管你仍然在连接网络,但是连接网络的图标上会出现一个黄色的...

    速腾数据 139 2019-05-19
  • DNS服务器Windows7系统DNS服务器未响应连不上网怎么办?

    Windows7系统DNS服务器未响应连不上网怎么办?

    在使用电脑的时候,我们常常会遇到网络问题,每次检测完之后会提示 DNS服务器未响应 ,这时候很多用户不知道怎么办,其实遇到Windows7系统DNS服务器未响应很好解决的,如果你不懂的话,不妨看看小编提供的解决方法。 问题原...

    系统之家 101 2019-05-19
  • DNS服务器手机怎么设置dns 手机设置dns方法【详解】

    手机怎么设置dns 手机设置dns方法【详解】

    很多时候,你去一个地方或者自己 的网络DNS解析的速度会直接影响你的网速 ,不信你打开一个网页,然后看浏览器的左下角的状态,经常会卡在解析而且,大多数自用的带有路由的网络都默认的是自动获得DNS地址,造成每次链接...

    IT百科 207 2019-05-31
  • DNS服务器dns服务器未响应怎么办

    dns服务器未响应怎么办

    dns服务器未响应 怎么办 有的时候网线突然连接不正常,网络连接后正常,显示网络已连接,但是网页就是打不开。 dns服务器未响应的解决方法 第一步:遇到这种情况,首先是先看看其它人的电脑或手机等设备连接网络是否正常,...

    IT百科 206 2019-05-19