简介
在这个实验中,你将学习如何使用 Hydra 攻击 IPv6 目标。该实验侧重于配置一个具有 IPv6 地址的服务器,然后使用 Hydra 攻击其 SSH 服务。
实验首先使用 ip
命令在 eth0
接口上配置服务器的 IPv6 地址为 2001:db8:1::1/64
。然后,你将启用该接口并验证配置。最后,你将使用 Hydra 的 -6
选项来攻击 IPv6 SSH 服务,并验证攻击结果。
在这个实验中,你将学习如何使用 Hydra 攻击 IPv6 目标。该实验侧重于配置一个具有 IPv6 地址的服务器,然后使用 Hydra 攻击其 SSH 服务。
实验首先使用 ip
命令在 eth0
接口上配置服务器的 IPv6 地址为 2001:db8:1::1/64
。然后,你将启用该接口并验证配置。最后,你将使用 Hydra 的 -6
选项来攻击 IPv6 SSH 服务,并验证攻击结果。
本步骤将配置 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 forever
inet6 2001:db8:1::1/64 scope global
这行确认 IPv6 地址已成功配置。
本步骤将通过理解和使用网络工具中的 -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 配置的安全性。
本步骤将使用 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
用户的密码。
重要说明: 在未经授权的情况下对系统进行暴力破解密码是违法和不道德的。本实验仅用于教育目的,你应该仅在拥有系统或获得明确测试许可的情况下使用这些技术。
本步骤将验证 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 服务的重要性。以下是一些建议:
fail2ban
的工具来实施 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 服务的强密码和安全最佳实践的重要性。