快捷搜索:  网络  后门  扫描  渗透  CVE  木马  黑客  as

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

本文章简单先容一下两种加密DNS协定:DNS over HTTPS 以及 DNS over TLS。这两种协定首要为了解决DNS带来的隐衷以及中间人篡改问题。

0×01 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以后,未必就非得走访它呀,譬如本文下述的子域名爆破,WEB黑客,我们只对DNS数据本身感兴致,而不走访其域名,如许加密DNS就有了实际意义。

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

0×01 两个协定

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]

0×02 子域名爆破

我用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,所以证书校验可能会失败。

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

工具的地址:https://github.com/xiaoyinl/securedns 。欢迎人人提交issues以及PR。

0×03 参考资料

[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

*

您可能还会对下面的文章感兴趣: