简介
在本次实验中,你将学习如何使用 Hydra 同时攻击多个目标。本实验重点在于利用 Hydra 的功能,对目标主机列表进行密码破解尝试。
本实验将引导你完成以下操作:创建一个包含 IP 地址或主机名的目标列表文件,使用 -M
选项将该文件加载到 Hydra 中,对目标发起并行 SSH 攻击,最后检查输出结果,以确定在多个主机上成功登录的情况。通过这次实践,你将掌握在渗透测试和安全审计场景中使用 Hydra 的实用技能。
在本次实验中,你将学习如何使用 Hydra 同时攻击多个目标。本实验重点在于利用 Hydra 的功能,对目标主机列表进行密码破解尝试。
本实验将引导你完成以下操作:创建一个包含 IP 地址或主机名的目标列表文件,使用 -M
选项将该文件加载到 Hydra 中,对目标发起并行 SSH 攻击,最后检查输出结果,以确定在多个主机上成功登录的情况。通过这次实践,你将掌握在渗透测试和安全审计场景中使用 Hydra 的实用技能。
在这一步中,你将创建一个目标列表文件。该文件将包含 Hydra 尝试连接并破解密码的 IP 地址或主机名列表。这是任何渗透测试或安全审计场景中的关键步骤。
首先,让我们了解一下什么是目标列表文件。它只是一个文本文件,其中每行代表一个目标主机。目标主机可以是 IP 地址(例如,192.168.1.100
)或主机名(例如,example.com
)。
现在,让我们来创建目标列表文件。我们将使用 nano
文本编辑器,它已经安装在你的 LabEx 虚拟机中。
打开 nano
编辑器:
nano ~/project/targets.txt
此命令会在 ~/project
目录中打开一个名为 targets.txt
的新文件。如果该文件不存在,nano
会创建它。
将以下 IP 地址添加到 targets.txt
文件中。每个 IP 地址应占一行:
192.168.1.100
192.168.1.101
192.168.1.102
你可以随意使用任何你想要的 IP 地址。这些只是示例。在实际场景中,你会用你被授权测试的系统的实际 IP 地址替换这些示例。
保存文件并退出 nano
。为此,请按 Ctrl+X
,然后按 Y
确认保存,最后按 Enter
接受文件名。
验证文件是否已创建并包含正确的内容。你可以使用 cat
命令显示文件内容:
cat ~/project/targets.txt
你应该会看到你输入的 IP 地址列表。
192.168.1.100
192.168.1.101
192.168.1.102
你现在已成功在 ~/project
目录中创建了一个名为 targets.txt
的目标列表文件。下一步将使用此文件将目标加载到 Hydra 中。
在这一步中,你将学习如何使用 -M
选项将上一步创建的目标列表文件加载到 Hydra 中。-M
选项告诉 Hydra 从文件中读取目标主机列表。当你有大量目标需要测试时,这尤其有用。
在继续之前,让我们简要讨论一下带有 -M
选项的 Hydra 命令的语法。基本语法如下:
hydra -M <target_file> <service> <options>
其中:
<target_file>
是包含目标主机列表的文件的路径。<service>
是你要攻击的服务(例如,ssh、ftp、http)。<options>
是你要使用的任何其他选项,如用户名、密码列表等。现在,让我们构建一个基本的 Hydra 命令,从我们之前创建的 targets.txt
文件中加载目标。在这个例子中,我们将使用 ssh
服务。我们还将指定一个用户名和一个密码列表(为了演示目的,我们将创建一个虚拟密码列表)。
创建一个虚拟密码列表文件:
echo "password" > ~/project/passwords.txt
此命令在 ~/project
目录中创建一个名为 passwords.txt
的文件,并将单词 "password" 添加到其中。在实际场景中,你会使用更全面的密码列表。
现在,执行 Hydra 命令,从 targets.txt
文件中加载目标,并尝试使用 passwords.txt
文件为用户 root
破解 SSH 密码:
hydra -L ~/project/users.txt -P ~/project/passwords.txt -M ~/project/targets.txt ssh
注意: 此命令可能会失败,因为你的 targets.txt
文件中的 IP 地址可能没有运行 SSH 服务器,即使有,你可能也没有正确的凭据。这一步主要是为了演示如何从文件中加载目标。
为了避免错误,让我们创建一个 users.txt
文件,其中包含一个在大多数系统上可能存在的用户名。
echo "root" > ~/project/users.txt
现在,重新运行 Hydra 命令:
hydra -L ~/project/users.txt -P ~/project/passwords.txt -M ~/project/targets.txt ssh
你可能会看到与连接被拒绝或凭据不正确相关的错误。这是预期的。重要的是 Hydra 正在尝试连接到 targets.txt
文件中列出的目标。
输出将显示 Hydra 尝试连接到 targets.txt
文件中的每个 IP 地址。它将针对每个目标尝试使用用户名 "root" 和密码 "password"。由于这些可能是不正确的,尝试将失败。
在这一步中,你已经成功学习了如何使用 Hydra 中的 -M
选项从文件中加载目标。这是进行大规模密码破解攻击的一项基本技能。
在这一步中,你将学习如何使用 Hydra 运行并行 SSH 攻击。并行运行攻击可以显著加快破解过程,尤其是在处理多个目标时。Hydra 允许你使用 -t
选项指定要运行的并行任务数量。
-t
选项控制 Hydra 将建立的并行连接数量。线程数量越多,攻击速度越快,但也会给目标系统和你自己的系统带来更大的压力。找到适合你具体情况的平衡点非常重要。
让我们修改之前的 Hydra 命令,以指定数量的线程运行 SSH 攻击。
执行以下 Hydra 命令,以 4 个线程运行 SSH 攻击:
hydra -L ~/project/users.txt -P ~/project/passwords.txt -t 4 -M ~/project/targets.txt ssh
在这个命令中,-t 4
选项告诉 Hydra 使用 4 个并行线程。这意味着 Hydra 将同时尝试连接 4 个不同的目标。
同样,你可能会看到与连接被拒绝或凭据不正确相关的错误。这是预期的。这一步的目的是演示如何使用 -t
选项并行运行攻击。
输出将显示 Hydra 尝试连接 targets.txt
文件中的 IP 地址,但现在它将以 4 个并发连接进行。
尝试不同的 -t
选项值。尝试增加线程数量,看看它如何影响攻击速度。注意你自己系统和目标系统的资源。一个好的起点是将线程数量加倍:
hydra -L ~/project/users.txt -P ~/project/passwords.txt -t 8 -M ~/project/targets.txt ssh
观察输出并注意性能的任何变化。
重要注意事项:
在这一步中,你已经成功学习了如何使用 Hydra 的 -t
选项运行并行 SSH 攻击。这是加快密码破解攻击的关键技术。
在这一步中,你将学习如何解读 Hydra 在攻击多个主机时的输出。Hydra 的输出提供了有关攻击尝试成功或失败的宝贵信息。
当 Hydra 成功破解密码时,它将以以下格式显示凭据:
[<service>] host: <host> login: <username> password: <password>
例如:
[ssh] 192.168.1.100:22 login: root password: password
这表明 Hydra 成功破解了主机 192.168.1.100
上用户 root
的 SSH 密码,密码为 password
。
当 Hydra 未能破解密码时,它通常会显示诸如 "Login failed" 或 "Invalid credentials" 之类的错误消息。
让我们分析上一步的输出。
重新运行上一步的 Hydra 命令:
hydra -L ~/project/users.txt -P ~/project/passwords.txt -t 4 -M ~/project/targets.txt ssh
检查输出。你可能会看到针对每个目标主机的一系列 "Login failed" 或 "Invalid credentials" 消息。这是因为你使用的用户名和密码可能不正确。
输出可能如下所示:
Hydra v9.6 (c) 2024 by van Hauser/THC - use freely but only for legal purposes.
Hydra starting at 2024-10-27 10:00:00
[DATA] 1 task, 3 servers, 1 userfiles, 1 passfiles -> max 1 task per 1 server, overall 1 task per attack
[DATA] attacking ssh://192.168.1.100:22
[STATUS][ssh] 192.168.1.100:22 - Login failed for user 'root'
[DATA] attacking ssh://192.168.1.101:22
[STATUS][ssh] 192.168.1.101:22 - Login failed for user 'root'
[DATA] attacking ssh://192.168.1.102:22
[STATUS][ssh] 192.168.1.102:22 - Login failed for user 'root'
Hydra finished.
如果 Hydra 成功破解了密码,你会看到一条类似于上述示例的行,表明成功的凭据。
为了更好地说明成功登录的情况,让我们创建一个 Hydra 更有可能成功的场景。这需要一个易受攻击的 SSH 服务器。由于我们没有现成的此类服务器,我们将修改 targets.txt
文件,使其指向 localhost
,并尝试以当前用户身份登录。这仍然可能失败,但在没有专门的易受攻击目标的情况下,这是最接近“成功”的场景。
首先,将 127.0.0.1
添加到你的 targets.txt
文件中:
echo "127.0.0.1" >> ~/project/targets.txt
现在,尝试破解本地主机上当前用户(labex)的 SSH 密码。你需要知道 labex
用户的密码。如果你还没有设置密码,可以尝试将密码列表留空,这将尝试使用空密码。
hydra -l labex -P ~/project/passwords.txt -t 4 -M ~/project/targets.txt ssh
注意: 除非你为 labex
用户设置了非常简单的密码,或者允许无密码 SSH 登录,否则这可能仍然会失败。
即使攻击失败,关键是要理解如何解读 Hydra 的输出。查找表明成功登录的行,并注意错误消息,以了解攻击失败的原因。
在这一步中,你已经学习了如何检查 Hydra 在攻击多个主机时的输出,以及如何解读结果。这是理解密码破解尝试成功或失败的关键技能。
在本次实验中,你学习了如何创建一个包含 IP 地址或主机名的目标列表文件,这对于渗透测试和安全审计至关重要。你使用 nano
文本编辑器在 ~/project
目录下创建了一个 targets.txt
文件,并添加了多个目标 IP 地址,每个地址占一行。然后使用 cat
命令验证了文件内容。
本次实验还介绍了如何使用 -M
选项将创建的目标列表文件加载到 Hydra 中。这使得 Hydra 能够同时高效地攻击多个主机,简化了密码破解过程。