kaminsky bug - 贝利维克

Bil*_*ray 5 security domain-name-system

我一直在阅读关于 kaminsky DNS 的错误,试图更好地了解它是如何工作的。我想我已经掌握了它的要点,但 Dan 提到了用于定位防火墙后面的 DNS 服务器的bailiwicks。

有人可以解释一下bailiwick 是什么,并举例说明如何使用它来定位防火墙后面的服务器以利用 kaminsky 漏洞吗?

bor*_*yer 6

正如 Mark Johnson 所提到的,DNS 服务器的辖区是它授权的域集。有一段时间,递归名称服务器接受来自权威名称服务器的域外数据。因此,foo.example 的权威名称服务器可以在他的回答中添加额外的数据,说明 www.bar.example 的 IP 地址,他被相信了。这是卡什普雷夫攻击的基础。长期以来,名称服务器不再相信域外数据,如RFC 2181 的第 5.4.1 节所指示。

该卡明斯基发作时使用外的辖区数据,因此最近的名称服务器工作过。Luke Quinane 提到的 Linux Journal文章对此进行了很好的解释(但 Luke Quinane 的其余帖子,特别是关于防火墙的,是有问题的。)

关于防火墙,这主要是一个无关的问题。如果名称服务器想要接收其查询的答案,则它需要是可访问的,因此它是否具有防火墙或在其前面都没有关系:Kaminsky 攻击只需要一个通道,即 DNS 通道。

由于 Kaminsky 攻击发生在客户端机器将使用的名称服务器上,这些机器是否受防火墙保护并不重要。(一个很好的例子说明了为什么防火墙不是一个神奇的设备并且不能保护一切。)


Luk*_*ane 3

范围

Ehtyar发布的Linux Journal文章很好地解释了 bailiwick 是什么以及它与 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
Run Code Online (Sandbox Code Playgroud)


攻击

有关攻击的详细信息请参见 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 地址等。正如bortzmeyer提到的那样,防火墙在这次攻击中很大程度上无关紧要。