DNS 攻击实验 - 远程攻击
完成条件
所有容器已经为本实验配置好了。我们在这里提供一个总结,以便学生了解这些配置。
本地 DNS 服务器。我们在本地 DNS 服务器上运行 BIND 9 DNS 服务器程序。BIND 9 的配置放在 /etc/bind/named.conf 的文件中。这个文件是主配置文件,它通常包含几个 include 条目,实际的配置存储在这些被 include 的文件中。其中一个
文件为 /etc/bind/named.conf.options。主要的配置就在这个文件里。
- 简化。 DNS 服务器现在会随机化它们 DNS 查询的源端口号;这使得攻击变得更加困难。遗憾的是,许多 DNS 服务器仍然使用可预测的源端口号。为了简化本实验,我们在配置文件中将源端口号固定为 33333
- 关闭 DNSSEC。DNSSEC 是为防止对 DNS 服务器的攻击而引入的安全机制。为了展示攻击在没有这种保护机制下是如何工作的,我们在配置文件中关闭了这个保护机制
- DNS 缓存。在攻击过程中,我们需要检查本地 DNS 服务器的 DNS 缓存。以下两个命令与 DNS 缓存相关。第一个命令将缓存内容转储到文件/var/cache/bind/dump.db 中,第二个命令则清空缓存
\begin{lstlisting} # rndc dumpdb -cache // 将缓存转储到指定文件 # rndc flush // 清空 DNS 缓存 \end{lstlisting}
- 转发 attacker32.com 区域。我们在本地 DNS 服务器中添加了一个转发区域,目的是为了当有人查询 attacker32.com 域名时,查询会被转发到运行在攻击者容器(10.9.0.153)中的域名服务器。这个转发区域设置在 named.conf 文件中。
\begin{lstlisting} zone "attacker32.com" { type forward; forwarders { 10.9.0.153; }; }; \end{lstlisting}
用户机器。10.9.0.53 已经设置成用户容器 10.9.0.5 的本地 DNS 服务器,这是通过修改用户机器的 /etc/resolv.conf 来实现的。服务器 10.9.0.53 被添加为文件中的第一个 nameserver 条目,
所以该服务器将作为首选 DNS 服务器。
攻击者的域名服务器。在攻击者的域名服务器上,我们托管了两个区域。一个是攻击者的合法区域 attacker32.com,另一个是伪造的 example.com 区域。区域的配置在/etc/bind/named.conf 文件中:
zone "attacker32.com" {
type master;
file "/etc/bind/attacker32.com.zone";
};
zone "example.com" {
type master;
file "/etc/bind/example.com.zone";
};
最后修改: 2025年05月9日 星期五 07:48