最近的安全研究中展示了 SAD DNS 缓存投毒攻击的新型变种,该变种将会对38%的DNS产生威胁,使攻击者能够将原本发往合法网站的流量重定向到他们控制的服务器。
根据网络安全行业门户极牛网GEEKNB.COM的梳理,该变种攻击允许路径外攻击者将恶意 DNS 记录注入到 DNS 缓存,SAD DNS 攻击允许攻击者将任何流量(最初发往特定域)重定向到自己的服务器,然后成为中间人 (MITM) 攻击者,从而窃听和篡改通信内容。
该变种攻击漏洞影响 Linux 内核以及流行的 DNS 软件,包括在 Linux 上运行的 BIND、Unbound 和 dnsmasq,但在其他操作系统如 FreeBSD 或 Windows 上运行的这些DNS软件则不会。
DNS缓存投毒,也被称为DNS欺骗,其中损坏的数据导入到DNS解析程序缓存,使DNS查询返回不正确的响应(即IP地址)受信任域(例如,www.example.com ) 并且用户被定向到恶意网站。该攻击最初由研究员 Dan Kaminsky 在 2008 年发现,漏洞的关键是由于递归解析器通常使用单个开放端口(通常为 53)向权威名称服务器发送和接收消息。
这不仅使猜测源端口变得容易,攻击者还可以通过向解析器发送大量 DNS 响应来伪造响应,这些响应是发送到域名服务器的DNS 查找请求中的部分或全部 6.5 万个可能的事务 ID 。
为了实现这一点,攻击者所要做的就是猜测16 位标识符——即意味着只能有 65,536 个事务 ID 值——用于验证名称服务器的真实性并证明返回的 IP 地址是合法的。因此,如果具有正确事务 ID 的恶意回答在权威服务器的响应之前到达,那么 DNS 缓存将被中毒,返回攻击者选择的地址而不是合法的 IP 地址。
但是由于递归解析器缓存从权威名称服务器接收的信息,这也意味着如果解析器收到另一个客户端最近请求的域名 IP 地址的请求,它只会向客户端回复来自其请求的记录。缓存而无需与名称服务器通信。
从那时起,通过使用事务 ID 和随机化 UDP 端口作为第二个标识符而不是使用默认端口 53 进行查找查询来增加熵,攻击变得不可行。然而,新发现的泄漏侧信道使得对临时端口号进行去随机化成为可能,从而有效地绕过保护机制。
根据网络安全行业门户极牛网GEEKNB.COM的梳理,SAD DNS 又名 Side channel AttackeD DNS,它通过ICMP端口不可达消息作为推断使用哪个临时端口的手段。虽然 ICMP 是 IP 网络中路由诊断和错误响应所必需的,但该协议的速率限制功能提供了一种机制,用于限制端口上可用于入站 ICMP 流量的带宽量,目的是防止拒绝当攻击者尝试使用 ICMP 消息使网络过载时可能会发生服务 (DoS) 攻击。
新颖的旁道攻击涉及攻击者向目标发送大量包含受害者伪造源地址的欺骗性 UDP 探测,该探测大到足以触发速率限制,使用该技术缩小开放端口并猜测交易 ID,例如这是在最初的卡明斯基攻击的情况下。
具体来说,如果猜测的端口号(在欺骗性 UDP 探测中)碰巧与正确的临时端口匹配,解析器将不会生成 ICMP 消息,这会导致计数器的固定限制或减少。然后,攻击者可以通过尝试使用来自其真实/非欺骗 IP 的 UDP 探测请求 ICMP 响应来检查计数器是否已耗尽。
之前的方法,包括 SAD DNS,使用 UDP 探测来确定 UDP 端口是打开还是关闭,而新发现的 DNS 缓存中毒攻击在处理 ICMP 错误消息的过程中直接探索了一个旁道,即需要 ICMP 碎片或 ICMP重定向数据包。
安全研究人员指出,攻击者不一定必须依赖来自 ICMP 探测的明确反馈。相反,即使 ICMP 探测的处理是完全沉默的,只要有一些共享资源的状态受到影响,就可以找到方法来观察共享资源的变化状态。
攻击的中心思想是使用全局异常缓存中有限数量的一个 2048 桶的哈希表,来辨别在一批 ICMP 探测之后是否发生了更新。侧信道也与 SAD DNS 不同,它在处理传入 ICMP 消息(与出口数据包相反)时出现,并且它利用空间资源限制(即用于存储下一跳异常缓存的空间有限),而 SAD DNS 的侧信道利用了时间资源限制(即ICMP 错误生成率是有限的)。
研究人员提出了许多缓解措施来防止最新的攻击,例如随机化缓存结构,拒绝 ICMP 重定向消息,以及设置套接字选项 IP_PMTUDISC_OMIT,它指示底层操作系统不接受 ICMP 碎片所需的消息,从而完全消除内核中的边信道相关处理。
极牛网精选文章《DNS缓存投毒攻击新变种,通过旁道攻击实现DNS解析欺骗》文中所述为作者独立观点,不代表极牛网立场。如若转载请注明出处:https://geeknb.com/17033.html