新闻资讯

新闻资讯 / SAD DNS 是如何工作的?

SAD DNS 是如何工作的?

时间 : 2020-12-14 15:55:42

SAD DNS是DNS缓存中毒的新变种,攻击者可以利用该变种将恶意DNS记录注入DNS缓存中,从而将所有流量重定向到他们自己的服务器,并成为中间人(MITM)。

 

SAD DNS由UC Riverside和清华大学的研究人员在ACM计算机和通信安全会议上首次发表。

 

DNS中毒是一种经典的攻击,通常通过随机化源端口来缓解,这需要攻击者猜测16位端口号和16位DNS事务ID,从而使攻击不太可能成功。碰巧的是,启用S​​AD DNS的主要因素不是阻止传出的ICMP响应。这使得它相当普遍,发现时大多数公共解析器都受到影响,包括无处不在的8.8.8.8和1.1.1.1,以及许多私有DNS服务。

 

出乎意料的是,我们发现了一些弱点,这些弱点使对手可以先猜测源端口,然后猜测事务ID(仅导致2^16 + 2^16欺骗性的响应),从而“划分并征服”空间。更糟糕的是,我们展示了对手可以通过多种方式扩展攻击窗口,从而大大提高成功的几率。

从理论上讲,任何运行较新版本的流行操作系统且未阻止传出ICMP(默认情况下仅Windows阻止)的DNS服务器都容易受到攻击。

 

总体而言,根据发现该漏洞的研究人员小组提供的数据,总体上,多达85%的受欢迎的DNS服务和34%的DNS服务都容易受到攻击。

 

Cloudflare工程师MarekVavruša和Nick Sullivan大量叙述了SAD DNS的核心,并强调了它与UDP的内在关系,而UDP仍然是递归DNS解析器和DNS名称服务器之间通信的最常用协议。如上所述,可用于UDP的DNS协议增加消息熵的唯一机制是端口随机化以及使用随机事务ID。构造有效的DNS答复时,必须同时具备这两种知识。

 

现在,事实证明可以通过利用Internet控制消息协议(ICMP)协议的机制来消除源端口随机化,该机制能够返回“端口不可达”消息。这使攻击者可以通过知道确实关闭了哪些端口来减少可能的源端口的数量。

 

至少从理论上讲,对服务器的一次[ICMP]扫描有效地将有效UDP响应的搜索空间从232个(超过十亿个)减少到217个(约十万个)。

 

但是,这还不是全部,因为许多解析程序使用“连接的” UDP套接字而不是“开放的” UDP套接字与名称服务器交换消息,这使使用简单的ICMP查询来检测用于该通信的端口的方式失败了。但是,可以使用使用ICMP速率限制的更复杂的方法来揭示给定端口是否打开。

 

攻击者向目标发送一堆(足够大以触发速率限制)探测消息,但带有伪造的受害者源地址。如果探测集中没有开放的端口,则目标将向受害者发送相同数量的ICMP“端口不可达”响应,并触发传出ICMP消息的速率限制。攻击者现在可以从其自己的地址发送其他验证消息,并观察是否返回ICMP响应。

 

此时,攻击者已成功泄漏了一些有关所探测端口的信息,并且可以缩小他们对哪些端口用于DNS交换的猜测,从而大大减少了构建有效DNS回复所需的暴力攻击次数。

 

Cloudflare工程师指出,尽管表面上看起来很简单,但仍有许多障碍使得难以发起这种攻击。其中包括知道目标IP地址以及在与受害者进行交换的同时完成攻击的能力。

 

因此,在等待DNSSEC的广泛采用,这将极大地提高DNS的安全性的同时,还应采取许多缓解措施,包括使用Linux 5.10内核中包含的不可预测的ICMP速率限制;对ICMP“端口不可达”消息进行防火墙保护;和更新DNS软件。