介绍
在这个实验中,你将学习如何使用 Hydra 攻击 IPv6 目标。该实验侧重于配置一个具有 IPv6 地址的服务器,然后使用 Hydra 攻击其 SSH 服务。
实验首先使用 ip 命令在 eth0 接口上配置服务器的 IPv6 地址为 2001:db8:1::1/64。然后,你将启用该接口并验证配置。最后,你将使用 Hydra 的 -6 选项来攻击 IPv6 SSH 服务,并验证攻击结果。
配置服务器的 IPv6 地址
本步骤将配置 LabEx 虚拟机 (VM) 的 IPv6 地址。这是启用 IPv6 通信并为后续攻击 IPv6 SSH 服务做准备的关键步骤。
首先,让我们了解 IPv6 地址的基本知识。IPv6 地址是 128 位地址,通常以十六进制表示。一个典型的 IPv6 地址如下所示:2001:0db8:85a3:0000:0000:8a2e:0370:7334。
为了简化配置,你将把地址 2001:db8:1::1/64 分配给 eth0 接口。eth0 接口是 Linux 系统中常见的网络接口名称。
现在,让我们配置 IPv6 地址。你将使用 ip 命令,这是一个用于管理网络接口的强大工具。
将 IPv6 地址添加到
eth0接口:在 LabEx VM 中打开你的终端。执行以下命令:
sudo ip addr add 2001:db8:1::1/64 dev eth0这条命令将 IPv6 地址
2001:db8:1::1/64添加到eth0接口。/64指定网络前缀长度,它决定了 IPv6 子网的大小。启用
eth0接口:sudo ip link set dev eth0 up这条命令启动
eth0接口,使其能够发送和接收网络流量。验证 IPv6 地址配置:
为了验证 IPv6 地址配置是否正确,再次使用
ip addr命令:ip addr show eth0输出应该包含
inet6部分中的 IPv6 地址2001:db8:1::1/64。你应该看到类似于以下内容的输出:2: eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc mq state UP group default qlen 1000 link/ether 00:16:3e:08:6d:7a brd ff:ff:ff:ff:ff:ff altname enp0s5 altname ens5 inet 172.16.50.97/24 metric 100 brd 172.16.50.255 scope global dynamic eth0 valid_lft 1892159937sec preferred_lft 1892159937sec inet6 2001:db8:1::1/64 scope global valid_lft forever preferred_lft forever inet6 fe80::216:3eff:fe08:6d7a/64 scope link valid_lft forever preferred_lft foreverinet6 2001:db8:1::1/64 scope global这行确认 IPv6 地址已成功配置。
准备 IPv6 SSH 攻击
本步骤将通过理解和使用网络工具中的 -6 选项,为 IPv6 SSH 服务攻击做准备。-6 选项通常用于指定在与网络服务交互时优先使用 IPv6。这一点很重要,因为默认情况下,如果同时存在 IPv4 和 IPv6 地址,某些工具可能会优先选择 IPv4。
为了确保你正在攻击前一步配置的 IPv6 地址,你将使用带有 -6 选项的 ping 命令。这将验证你是否可以使用其 IPv6 地址访问服务器。
Ping IPv6 地址:
在 LabEx VM 中打开你的终端。执行以下命令:
ping -6 2001:db8:1::1这条命令向 IPv6 地址
2001:db8:1::1发送 ICMP 回显请求数据包。如果服务器可以通过 IPv6 访问,你应该会看到服务器的回复。输出应该类似于以下内容:PING 2001:db8:1::1(2001:db8:1::1) 56 data bytes 64 bytes from 2001:db8:1::1: icmp_seq=1 ttl=64 time=0.026 ms 64 bytes from 2001:db8:1::1: icmp_seq=2 ttl=64 time=0.041 ms 64 bytes from 2001:db8:1::1: icmp_seq=3 ttl=64 time=0.035 ms 64 bytes from 2001:db8:1::1: icmp_seq=4 ttl=64 time=0.032 ms ^C --- 2001:db8:1::1 ping statistics --- 4 packets transmitted, 4 received, 0% packet loss, time 3078ms rtt min/avg/max/mdev = 0.026/0.033/0.041/0.005 ms在发送几个数据包后,按
Ctrl+C停止 ping 命令。理解
-6选项:-6选项指示ping命令使用 IPv6。许多其他网络工具,例如ssh、curl和wget,也支持-6选项。使用此选项可确保该工具尝试使用 IPv6 连接到目标主机。在下一步中,你将使用 Hydra 攻击 SSH 服务。你将使用 Hydra 的
-6选项来专门攻击 SSH 服务器的 IPv6 地址。这确保你正在测试 IPv6 SSH 配置的安全性。
攻击 IPv6 SSH 服务
本步骤将使用 Hydra 工具对之前配置的 IPv6 地址上的 SSH 服务进行暴力破解攻击。Hydra 是一款功能强大的密码破解工具,支持包括 SSH 在内的多种协议。
在开始之前,你将创建一个简单的密码列表。该列表包含 Hydra 将尝试用于验证 SSH 服务的密码。
启动 SSH 服务:
首先,你需要确保系统上的 SSH 服务正在运行。执行以下命令启动 SSH 服务:
sudo systemctl start ssh你可以通过检查其状态来验证 SSH 服务是否正在运行:
sudo systemctl status ssh输出应显示该服务处于活动状态且正在运行。
配置 SSH 以监听 IPv6:
默认情况下,SSH 可能只监听 IPv4 地址。你需要配置它也监听 IPv6 地址。首先,检查 SSH 当前正在监听哪些地址:
ss -tlnp | grep :22你应该看到类似
LISTEN 0 128 0.0.0.0:22 0.0.0.0:*的输出,这意味着 SSH 只监听 IPv4。现在,编辑 SSH 配置文件以启用 IPv6 监听:
sudo nano /etc/ssh/sshd_config找到包含
#AddressFamily any或AddressFamily inet的行,并将其更改为:AddressFamily any如果该行不存在,请添加它。这指示 SSH 监听 IPv4 和 IPv6 地址。
通过按下
Ctrl + X,然后Y确认保存,再按下Enter确认文件名来保存文件。重新启动 SSH 服务以应用更改:
sudo systemctl restart ssh验证 SSH 是否现在同时监听 IPv4 和 IPv6:
ss -tlnp | grep :22你现在应该看到 SSH 同时监听
0.0.0.0:22(IPv4) 和[::]:22(IPv6)。创建密码列表:
在 LabEx VM 中打开你的终端。你当前位于
~/project目录。使用nano编辑器在此目录中创建一个名为passwords.txt的文件:nano passwords.txt将以下密码添加到文件中,每行一个密码:
password 123456 qwerty admin labex通过按下
Ctrl + X,然后Y确认保存,再按下Enter确认文件名来保存文件。运行 Hydra 攻击 IPv6 SSH 服务:
现在,你将使用 Hydra 攻击 SSH 服务。你将使用
-6选项指定目标为 IPv6 地址。你还会指定要攻击的用户(例如,labex),你创建的密码列表 (passwords.txt),以及 SSH 服务器的 IPv6 地址 (2001:db8:1::1)。执行以下命令:
hydra -6 -l labex -P passwords.txt ssh://[2001:db8:1::1]让我们分解这个命令:
hydra: 运行 Hydra 工具的命令。-6: 指定 Hydra 应使用 IPv6。-l labex: 指定要攻击的用户。在本例中,你正在攻击labex用户。-P passwords.txt: 指定要使用的密码列表。在本例中,你正在使用当前~/project目录中创建的passwords.txt文件。ssh://[2001:db8:1::1]: 指定目标 SSH 服务。ssh://前缀表示你正在攻击 SSH 服务,[2001:db8:1::1]是服务器的 IPv6 地址,用方括号括起来(Hydra 中 IPv6 地址需要方括号)。
Hydra 将开始尝试
passwords.txt文件中的密码,以验证 SSH 服务。如果 Hydra 找到有效的密码,它将显示凭据。如果没有找到密码,输出可能类似于以下内容:// Hydra 输出省略如果 Hydra 没有找到密码,你可以尝试在
passwords.txt文件中添加更多常用密码。你也可以使用-V选项查看详细输出,显示每次尝试。如果 Hydra 成功找到密码,输出将类似于以下内容:
// Hydra 输出省略此输出表明 Hydra 成功破解了
labex用户的密码。重要说明: 在未经授权的情况下对系统进行暴力破解密码是违法和不道德的。本实验仅用于教育目的,你应该仅在拥有系统或获得明确测试许可的情况下使用这些技术。
验证 IPv6 攻击结果
本步骤将验证 Hydra 对 IPv6 SSH 服务的攻击结果。你将检查 Hydra 是否成功破解了密码,如果成功,则尝试使用破解的凭据登录 SSH 服务。
查看 Hydra 输出:
仔细查看前一步 Hydra 命令的输出。查找指示密码破解成功的行。输出应类似于以下内容:
[22][ssh] host: 2001:db8:1::1 login: labex password: [found_password]如果看到此行,则表示 Hydra 成功破解了
labex用户的密码。如果没有找到密码,这表明当前密码列表不包含正确的密码,这实际上是一个良好的安全迹象。尝试登录 SSH 服务(如果找到密码):
如果 Hydra 成功找到密码,则可以使用
ssh命令尝试登录 SSH 服务。你将使用-6选项指定要连接的 IPv6 地址。执行以下命令,使用 Hydra 找到的密码:
ssh -6 labex@2001:db8:1::1当提示输入密码时,输入破解的密码。如果登录成功,你将登录到 SSH 服务器。
如果 Hydra 没有找到密码,你仍然可以通过尝试连接来测试 SSH IPv6 连接性(它会提示输入密码,但你可以按 Ctrl+C 取消):
ssh -6 labex@2001:db8:1::1你得到密码提示的事实证实 SSH 正确配置了 IPv6,并且 Hydra 能够连接到该服务。
安全建议:
本实验演示了使用强密码和实施安全最佳实践以保护你的 SSH 服务的重要性。以下是一些建议:
- 使用强密码: 使用至少包含 12 个字符且包含大写字母、小写字母、数字和符号的密码。
- 禁用密码验证: 考虑禁用密码验证并改用 SSH 密钥。SSH 密钥比密码更安全,因为它们更难以破解。
- 实施速率限制: 使用诸如
fail2ban的工具来实施 SSH 登录尝试的速率限制。这将阻止攻击者在短时间内尝试过多的密码。 - 保持软件更新: 确保你的 SSH 服务器软件已更新到最新的安全补丁。
总结
在本实验中,你配置了一个带有 IPv6 地址的服务器,这是启用 IPv6 通信的关键步骤。这包括理解 IPv6 地址的基本知识,并使用 ip 命令将地址 2001:db8:1::1/64 分配给 eth0 接口。
然后,你启用了该接口,并使用 ip addr show eth0 验证了配置,确保 IPv6 地址已正确分配。你还在修改 SSH 配置文件并重启服务的情况下,配置 SSH 监听 IPv6 地址。
最后,你使用带有 -6 选项的 Hydra 工具,成功地对 IPv6 SSH 服务进行了暴力破解攻击。然后,你通过使用破解的凭据登录 SSH 服务来验证攻击结果。本实验演示了 Hydra 攻击 IPv6 目标的能力,并强调了 SSH 服务的强密码和安全最佳实践的重要性。


