我一直在阅读有关 kaminsky DNS 漏洞的文章,试图更好地了解它的工作原理。我想我已经了解了它的要点,但 Dan 提到了 bailiwicks,它被用来针对防火墙后面的 DNS 服务器。
有人可以解释一下什么是 bailiwick 吗,并举例说明如何使用它来针对防火墙后面的服务器来利用 kaminsky 漏洞吗?
答案1
范围
Linux 杂志文章那埃蒂亚尔发布的这篇文章很好地解释了什么是管辖区以及它与 DNS 的关系。基本上,DNS 响应中添加了额外的记录以帮助查找委托 DNS 服务器。引用文章中的例子:
$ dig @ns1.example.com www.example.com
;; ANSWER SECTION:
www.example.com. 120 IN A 192.168.1.10
;; AUTHORITY SECTION:
example.com. 86400 IN NS ns1.example.com.
example.com. 86400 IN NS ns2.example.com.
;; ADDITIONAL SECTION:
ns1.example.com. 604800 IN A 192.168.2.20
ns2.example.com. 604800 IN A 192.168.3.30
攻击
有关袭击的详细信息,请参阅 Dan 的幻灯片(见幻灯片 24/25)。要攻击防火墙后面的服务器:
- 触发对攻击者控制的域(例如“
1.badguy.com
”)的子域的查找。 - 攻击服务器会响应其试图毒害的域的 CNAME 记录(例如“
debian.org
”)。这会导致目标向“debian.org
”发出 DNS 查询。 - 一旦攻击服务器发送 CNAME 引用,它就会开始流式传输包含额外响应的欺骗性 DNS 响应(例如“
security.debian.org
”指向“badguy.com
”的 IP 地址)。 - 如果正确猜出了响应中的交易 ID,那么防火墙后面的服务器现在就会认为“
security.debian.org
”解析为坏人的地址。
有很多方法可以让防火墙后面的服务器查找 IP 地址、内部客户端请求、解析服务器日志中的 IP 地址等。博茨迈尔提到防火墙在这次攻击中基本上无关紧要。
答案2
正如 Mark Johnson 所提到的,DNS 服务器的管辖范围是它所负责的一组域。曾经,递归名称服务器接受来自权威名称服务器的管辖范围外的数据。因此,foo.example 的权威名称服务器可以在其答案中添加其他数据,说明 www.bar.example 的 IP 地址,并且人们会相信他。这是卡什普雷夫袭击长期以来,名称服务器不再相信管辖范围外的数据,正如RFC 2181,第 5.4.1 节。
卡明斯基的攻击确实不是使用管辖范围外的数据,因此也与最近的名称服务器一起工作。 Linux 杂志Luke Quinane 提到的文章对此进行了很好的解释(但 Luke Quinane 的其余帖子,特别是有关防火墙的部分,是值得怀疑的。)
至于防火墙,这几乎是一个无关紧要的问题。如果名称服务器想要收到查询的答案,它必须是可访问的,因此,它前面是否有防火墙并不重要:Kaminsky 攻击只需要一个通道,即 DNS 通道。
由于 Kaminsky 攻击针对的是客户端计算机将使用的名称服务器,因此这些计算机是否受到防火墙的保护并不重要。(这是一个很好的例子,说明为什么防火墙不是万能的,并不能保护一切。)