介绍
在本实验中,你将学习如何控制 Hydra 密码破解工具的连接间隔。该实验演示了如何配置 Hydra 在连接尝试之间引入延迟,从而控制攻击速度,并可能规避检测。
实验首先在 LabEx 虚拟机上使用 OpenSSH 设置一个基本的 SSH 服务器。你将安装服务器,验证其状态,并确认它正在监听端口 22。随后,你将使用 Hydra 的默认时间设置运行,然后修改命令以包含 -W 5 选项,该选项会在连接尝试之间引入 5 秒的间隔。最后,你将观察此时间调整对整体攻击速度的影响。
在本实验中,你将学习如何控制 Hydra 密码破解工具的连接间隔。该实验演示了如何配置 Hydra 在连接尝试之间引入延迟,从而控制攻击速度,并可能规避检测。
实验首先在 LabEx 虚拟机上使用 OpenSSH 设置一个基本的 SSH 服务器。你将安装服务器,验证其状态,并确认它正在监听端口 22。随后,你将使用 Hydra 的默认时间设置运行,然后修改命令以包含 -W 5 选项,该选项会在连接尝试之间引入 5 秒的间隔。最后,你将观察此时间调整对整体攻击速度的影响。
在本步骤中,我们将设置 LabEx 虚拟机上的基本 SSH 服务器。SSH (Secure Shell) 是一种加密网络协议,用于在不安全的网络上安全地操作网络服务。它通常用于远程命令行登录和远程命令执行。
首先,我们需要安装 OpenSSH 服务器。OpenSSH 是一套基于安全外壳协议的安全相关网络级工具,也是最常见的 SSH 实现。
在 LabEx 虚拟机中打开一个终端。你可以使用默认的 Xfce 终端。
执行以下命令更新软件包列表:
sudo apt update
此命令会从其源同步软件包索引文件。在安装任何新软件之前运行此命令是一个良好实践。你可能会被要求输入密码,但请记住,labex 用户无需密码即可拥有 sudo 权限。
接下来,安装 OpenSSH 服务器:
sudo apt install openssh-server -y
-y 标志会在安装过程中自动回答“是”,使该过程无需交互。
安装完成后,SSH 服务器应该会自动启动。你可以使用以下命令检查其状态:
sudo service ssh status
为了确认 SSH 服务器正在运行,你可以检查 SSH 端口 (端口 22) 是否正在监听。使用 netstat 命令:
netstat -tulnp | grep 22
你应该看到类似于这样的输出:
tcp 0 0 0.0.0.0:22 0.0.0.0:* LISTEN -
tcp6 0 0 :::22 :::* LISTEN -
这表明 SSH 服务器正在监听端口 22,用于 IPv4 和 IPv6 连接。
现在 SSH 服务器已设置完毕,你就可以使用 SSH 客户端从另一台机器连接到它。但是,在本实验中,我们将专注于使用 Hydra 破解 SSH 密码。
在本步骤中,我们将运行 Hydra 来尝试破解 SSH 密码。我们将使用简单的用户名和密码列表,并观察使用默认时间设置的攻击速度。
首先,让我们在 ~/project 目录中创建一个名为 users.txt 的用户名列表文件。此文件将包含单个用户名:labex。
在你的终端中,执行以下命令创建 users.txt 文件:
echo "labex" > ~/project/users.txt
接下来,在 ~/project 目录中创建一个名为 passwords.txt 的密码列表文件。此文件将包含一些常见的密码,包括 labex 用户的正确密码。
重要提示:你必须在桌面终端执行以下命令,因为 PASSWORD 环境变量仅在桌面环境中可用。

在你的桌面终端中,执行以下命令创建 passwords.txt 文件:
echo "password" > ~/project/passwords.txt
echo "123456" >> ~/project/passwords.txt
echo "$PASSWORD" >> ~/project/passwords.txt
$PASSWORD 环境变量包含此环境中 labex 用户的实际密码。
现在,我们可以使用默认时间设置运行 Hydra。Hydra 的基本语法是:
hydra [options] <target> <service> [MODULE-OPTIONS]
在我们的案例中,目标是 localhost(LabEx 虚拟机本身),服务是 ssh,我们将使用我们刚刚创建的用户名和密码列表。
在你的终端中执行以下命令:
hydra -L ~/project/users.txt -P ~/project/passwords.txt localhost ssh
让我们分解这个命令:
hydra: 运行 Hydra 工具的命令。-L ~/project/users.txt: 指定位于 ~/project/users.txt 的用户名列表文件。-P ~/project/passwords.txt: 指定位于 ~/project/passwords.txt 的密码列表文件。localhost: 目标主机(在本例中为本地机器)。ssh: 要攻击的服务(SSH)。Hydra 将开始尝试使用列表中的用户名和密码登录 SSH 服务器。你将看到显示攻击进度的输出。它将尝试每个用户名和密码组合。由于 $PASSWORD 环境变量中的正确密码包含在 passwords.txt 文件中,Hydra 应该会相对快速地找到它。

输出将类似于这样:
Hydra vX.X (c) XXXX by van Hauser/THC - use help for legal stuff
Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] 1 task/1 service to scan
[DATA] attacking ssh://localhost:22
[STATUS] X.XX tries/min
[STATUS] X of X passwords tested (X.XX%)
[22][ssh] host: localhost login: labex password: [actual_password]
Hydra finished.
重要的一行是 [22][ssh] host: localhost login: labex password: [actual_password]。这表明 Hydra 成功找到了 labex 用户的密码。
请注意 Hydra 尝试密码的速度。这是默认时间。在下一步中,我们将修改时间以查看它如何影响攻击速度。
在本步骤中,我们将向 Hydra 命令添加 -W 5 选项。此选项会在每次登录尝试之间引入 5 秒的延迟。这对于避免帐户锁定或被入侵检测系统检测非常有用。
Hydra 中的 -W 选项指定等待目标服务响应的超时时间。默认情况下,Hydra 使用非常短的超时时间。增加此超时时间有助于目标服务响应缓慢或存在网络延迟问题的情况。
在你的终端中执行以下命令:
hydra -L ~/project/users.txt -P ~/project/passwords.txt -W 5 localhost ssh
此命令与前一个命令的唯一区别是添加了 -W 5 选项。
现在,Hydra 将尝试登录 SSH 服务器,但在每次失败的登录尝试后,它将在尝试下一个密码之前等待 5 秒。
观察输出。你会注意到,攻击速度比之前的步骤慢得多。Hydra 仍然会找到正确的密码("labex"),但需要更长的时间。
输出将类似于这样:
Hydra vX.X (c) XXXX by van Hauser/THC - use help for legal stuff
Hydra starting at YYYY-MM-DD HH:MM:SS
[DATA] 1 task/1 service to scan
[DATA] attacking ssh://localhost:22
[STATUS] X.XX tries/min
[STATUS] X of X passwords tested (X.XX%)
[22][ssh] host: localhost login: labex password: labex
Hydra finished.
然而,关键区别在于达到“Hydra finished.”消息所需的时间。使用 -W 5 选项,在 Hydra 找到正确密码之前,至少需要 10 秒(2 次失败尝试 * 5 秒/尝试)。
在下一步中,我们将讨论此更改对攻击速度的影响以及对安全测试的含义。
在本步骤中,我们将分析 -W 5 选项对 Hydra 攻击速度的影响。
正如你在之前的步骤中观察到的那样,添加 -W 5 显著降低了攻击速度。没有 -W 5 选项时,Hydra 会尽可能快速地尝试登录,仅受网络延迟和服务器响应时间限制。使用 -W 5 时,Hydra 在每次失败的登录尝试后暂停 5 秒。
这种攻击速度的差异具有几个重要的含义:
帐户锁定: 许多系统都有帐户锁定策略,在一定数量的失败登录尝试后禁用帐户。通过使用 -W 5 降低攻击速度,你可以降低触发这些锁定策略的风险,并避免被锁定在目标帐户之外。
入侵检测系统 (IDS): IDS 会监控网络流量中的可疑活动,例如暴力破解攻击。一系列快速的失败登录尝试是暴力破解攻击的有力指标,并可能触发警报。通过降低攻击速度,你可以使 IDS 更难以检测攻击。
资源消耗: 快速的攻击速度可能会消耗攻击机和目标服务器上的大量资源。降低攻击速度可以减少资源消耗,并使攻击不太显眼。
完成时间: 最明显的冲击是攻击完成所需时间的增加。如果你有一个大型密码列表,在尝试之间添加延迟会显着增加破解密码所需的总时间。
总而言之,Hydra 中的 -W 选项允许你控制攻击速度,并在速度需求与被检测和帐户锁定风险之间取得平衡。为 -W 选择合适的数值取决于具体的目标和攻击目标。对于渗透测试,通常最好保持隐蔽性并避免被检测,即使这意味着攻击需要更长的时间。
本实验演示了使用 Hydra 破解 SSH 密码的基本示例。在现实世界场景中,攻击者通常使用更大的用户名和密码列表以及更复杂的技巧来绕过安全措施。使用强、独特的密码并实施适当的安全措施以防范暴力破解攻击至关重要。
在本实验中,你学习了如何控制 Hydra 连接间隔来管理攻击速度并规避检测。
完成的关键步骤:
-W 5 选项,在连接尝试之间引入 5 秒延迟-W 选项允许你平衡攻击速度与隐蔽性,使其成为有效渗透测试的关键参数,同时最大限度地降低触发安全措施的风险。