使用 Hydra 攻击 IPv6 目标

HydraHydraBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在这个实验中,你将学习如何使用 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 命令,这是一个用于管理网络接口的强大工具。

  1. 将 IPv6 地址添加到 eth0 接口:

    在 LabEx VM 中打开你的终端。执行以下命令:

    sudo ip addr add 2001:db8:1::1/64 dev eth0

    这条命令将 IPv6 地址 2001:db8:1::1/64 添加到 eth0 接口。/64 指定网络前缀长度,它决定了 IPv6 子网的大小。

  2. 启用 eth0 接口:

    sudo ip link set dev eth0 up

    这条命令启动 eth0 接口,使其能够发送和接收网络流量。

  3. 验证 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 地址已成功配置。

为 IPv6 SSH 攻击做准备

本步骤将通过理解和使用网络工具中的 -6 选项,为 IPv6 SSH 服务攻击做准备。-6 选项通常用于指定在与网络服务交互时优先使用 IPv6。这一点很重要,因为默认情况下,如果同时存在 IPv4 和 IPv6 地址,某些工具可能会优先选择 IPv4。

为了确保你正在攻击前一步配置的 IPv6 地址,你将使用带有 -6 选项的 ping 命令。这将验证你是否可以使用其 IPv6 地址访问服务器。

  1. 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 命令。

  2. 理解 -6 选项:

    -6 选项指示 ping 命令使用 IPv6。许多其他网络工具,例如 sshcurlwget,也支持 -6 选项。使用此选项可确保该工具尝试使用 IPv6 连接到目标主机。

    在下一步中,你将使用 Hydra 攻击 SSH 服务。你将使用 Hydra 的 -6 选项来专门攻击 SSH 服务器的 IPv6 地址。这确保你正在测试 IPv6 SSH 配置的安全性。

攻击 IPv6 SSH 服务

本步骤将使用 Hydra 工具对之前配置的 IPv6 地址上的 SSH 服务进行暴力破解攻击。Hydra 是一款功能强大的密码破解工具,支持包括 SSH 在内的多种协议。

在开始之前,你将创建一个简单的密码列表。该列表包含 Hydra 将尝试用于验证 SSH 服务的密码。

  1. 启动 SSH 服务:

    首先,你需要确保系统上的 SSH 服务正在运行。执行以下命令启动 SSH 服务:

    sudo systemctl start ssh

    你可以通过检查其状态来验证 SSH 服务是否正在运行:

    sudo systemctl status ssh

    输出应显示该服务处于活动状态且正在运行。

  2. 配置 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 anyAddressFamily 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)。

  3. 创建密码列表:

    在 LabEx VM 中打开你的终端。你当前位于 ~/project 目录。使用 nano 编辑器在此目录中创建一个名为 passwords.txt 的文件:

    nano passwords.txt

    将以下密码添加到文件中,每行一个密码:

    password
    123456
    qwerty
    admin
    labex

    通过按下 Ctrl + X,然后 Y 确认保存,再按下 Enter 确认文件名来保存文件。

  4. 运行 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 服务。

  1. 查看 Hydra 输出:

    仔细查看前一步 Hydra 命令的输出。查找指示密码破解成功的行。输出应类似于以下内容:

    [22][ssh] host: 2001:db8:1::1   login: labex   password: [found_password]

    如果看到此行,则表示 Hydra 成功破解了 labex 用户的密码。如果没有找到密码,这表明当前密码列表不包含正确的密码,这实际上是一个良好的安全迹象。

  2. 尝试登录 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 能够连接到该服务。

  3. 安全建议:

    本实验演示了使用强密码和实施安全最佳实践以保护你的 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 服务的强密码和安全最佳实践的重要性。