本文章简单引见一下两类加密DNS和谈:DNS over HTTPS 和 DNS over TLS。那两类和谈次要为领会决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和谈里,不外目前我没传闻无人实现它。
DNS over TLS的尺度文档是RFC7858。文档很短,也比力难懂。客户端先和递归办事器进行TLS握手,利用的TCP端标语是853。握手之后,把DNS数据包做为TLS的payload发给DNS递归办事器即可。请乞降回覆的报文取通俗的DNS over TCP的报文格局一样。
我用C#写了一个很是简难的女域名爆破东西,为了演示DNS over HTTPS。(仅为手艺会商利用,请勿用于违法用处!)利用的是JSON格局的DNS over HTTPS,能够从UI上选办事器。纯字典搜刮,字典是从dnsrecon项目复制过来的。
那个东西我只测试了Framework 4.6.1。出格是Windows 10以前的操做系统可能连不上。我记得老版Windows不收撑IP地址做为证书的Subject Alt Name,所以证书校验可能会掉败。
还没有评论,来说两句吧...
发表评论