在上一个任务中,我们的 DNS 缓存投毒攻击仅影响了一个主机名,即 www.example.com。如果用户尝试获取另一个主机名(如 mail.example.com)的 IP 地址,我们需要再次发起攻击。如果我们能够发起一次攻击,并影响整个 example.com 域,这样会更高效。
方法是利用 DNS 响应中的权威(Authority)部分。在伪造响应时,除了伪造答案(Answer 部分),我们还可以在权威部分添加以下内容。当本地 DNS 服务器缓存了这一条目后,ns.attacker32.com 将被用作将来对 example.com 域中任何主机名查询的域名服务器。由于 ns.attacker32.com 是由攻击者控制的,因此它可以为任何查询提供伪造的答案。在我们的设置中,这台机器的 IP 地址是10.9.0.153。
;; AUTHORITY SECTION:
example.com. 259200 IN NS ns.attacker32.com.
请在您的攻击代码中添加伪造的 NS 记录,并发起攻击。背景知识里面提供了如何在 DNS 响应包中包含 NS 记录的示例。在进行攻击之前,请记得先清空本地 DNS 服务器的缓存。如果攻击成功,当您在用户计算机上运行 dig 命令查询 example.com 域中的任何主机名时,您将得到 ns.attacker32.com 提供的伪造 IP 地址。请同时检查本地 DNS 服务器的缓存,查看伪造的 NS 记录是否已被缓存。