如何访问 DNS 服务器受到攻击的站点?

信息安全 dns ddos
2021-08-30 04:37:07

正如你们许多人所注意到的,昨晚针对 Dyn.com 的 DDoS 攻击导致许多主要服务不可用,包括 Twitter 和 Spotify。在没有 Twitter 的情况下度过一个周五晚上就足够了,如果这种情况再次发生,我想做好准备。

我理解这种攻击的方式是服务本身(Twitter、Spotify、Reddit ......)没有受到攻击,但网关(DNS 服务器,又名 Dyn)受到攻击,所以如果我只知道一种无需访问这些网站的方法依靠受影响的 DNS 服务器,我应该能够访问它们吗?是否有任何方法可以做到这一点,或者这根本不可能?

我偶然发现的一种方法是使用 OpenDNS 服务器,因为它们会缓存大部分 DNS 响应,因此即使实际的 DNS 服务器已关闭,也可以提供它们。(我没有测试过这个,我不知道它是否应该工作)

1个回答

在回答您的问题之前,我将解释 Internet 的工作原理。

当我们在浏览器中(或通过任何其他方式)打开网站时,我们的浏览器首先对该域进行 DNS 请求,然后向 Web 服务器发送 HTTP 请求。

假设我们在浏览器中输入了 www.stackexchange.com,然后 -

  1. DNS 请求将转到解析器;查询就像 - www.stackexchange.com 的 IP 地址是什么
  2. 如果解析器的缓存中没有答案(在我们的例子中是一条记录)或者 TTL 已过期,那么
  3. 解析器对该域进行递归查询,如果能够访问该域的权威服务器,则解析器会回答我们的查询。
  4. 获取网站的 IP 地址后,浏览器向 Web 服务器发送 HTTP 请求并显示结果。

下图显示了递归查询在 DNS 中是如何发生的——

在此处输入图像描述

现在来到你的问题:

如果我只知道一种无需依赖受影响的 DNS 服务器即可访问这些站点的方法,我应该能够访问它们吗?是否有任何方法可以做到这一点,或者这根本不可能?

标准格式的 Internet 以我上面解释的方式工作。
标准说,你应该尊重 TTL 值。没有标准的 DNS 实现(无论是 BIND、UNBOUND 还是任何其他)都支持在 TTL 值到期后缓存域条目。

如果你真的想实现这样的事情,那么你必须相应地调整代码(我根本不建议你这样做;原因在下面解释)。

不尊重 TTL 值所涉及的问题 -
假设您已经缓存了域的 IP 地址,并且在 TTL 到期后您依赖于您的缓存;
并且域所有者更改了其域的 IP 地址(无论出于何种原因);
您将继续访问缓存中的相同 IP 地址;
您每次都会登陆旧 IP 地址;你不会在那里找到任何数据。

如果域被签名(即 DNSSEC 实施),事情将变得非常混乱;如果您不尊重 TTL 值。