介绍
在本实验中,你将学习 Hydra 如何处理中断的攻击以及如何有效地恢复它们。我们将模拟一次针对本地主机 SSH 服务的中断 Hydra 攻击,方法是创建简单的用户名和密码列表,启动攻击,然后手动使用 Ctrl+C 中断它。
本实验将引导你通过使用 -R 选项重新启动攻击,并观察 Hydra 如何处理恢复文件,接着使用 -I 选项结合 -R 选项来忽略恢复文件并确保从头开始。你将学习完成的攻击和中断的攻击在恢复文件创建方面有何不同。
在本实验中,你将学习 Hydra 如何处理中断的攻击以及如何有效地恢复它们。我们将模拟一次针对本地主机 SSH 服务的中断 Hydra 攻击,方法是创建简单的用户名和密码列表,启动攻击,然后手动使用 Ctrl+C 中断它。
本实验将引导你通过使用 -R 选项重新启动攻击,并观察 Hydra 如何处理恢复文件,接着使用 -I 选项结合 -R 选项来忽略恢复文件并确保从头开始。你将学习完成的攻击和中断的攻击在恢复文件创建方面有何不同。
本步骤中,你将创建必要的测试文件并运行初始 Hydra 攻击,以了解基线行为。这将帮助你理解 Hydra 在攻击正常完成和中断时分别是如何运行的。
首先,导航到你的项目目录:
cd ~/project
现在,让我们创建一个简单的密码列表。使用 nano 在当前目录中创建一个名为 passwords.txt 的文件:
nano passwords.txt
向文件中添加一些常见的密码,每行一个密码。例如:
password
123456
qwerty
保存文件,按 Ctrl+X,然后按 Y 确认保存,再按 Enter 确认文件名。
接下来,让我们创建一个简单的用户名文件。使用 nano 在同一目录中创建一个名为 users.txt 的文件:
nano users.txt
向文件中添加一个用户名:
root
保存文件并退出 nano,使用与之前相同的步骤。
现在,让我们运行一个完整的 Hydra 攻击,看看正常行为:
hydra -V -L users.txt -P passwords.txt localhost ssh
让我们分解这个命令:
-V: 启用详细模式,显示详细的攻击尝试-L users.txt: 指示 Hydra 使用 users.txt 文件作为用户名。-P passwords.txt: 指示 Hydra 使用 passwords.txt 文件作为密码。localhost: 指定目标主机为 localhost。ssh: 指定要攻击的服务为 SSH。你应该看到类似于这样的输出:
Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - 请勿在军事或秘密服务组织或用于非法目的中使用(这并非强制性,这些***无论如何都会忽略法律和道德)。
Hydra (https://github.com/vanhauser-thc/thc-hydra) 开始于 2025-05-30 09:56:06
[警告] 许多 SSH 配置会限制并行任务的数量,建议减少任务:使用 -t 4
[数据] 每台服务器最多 3 个任务,总共 3 个任务,3 次登录尝试 (l:1/p:3),每个任务约 1 次尝试
[数据] 攻击 ssh://localhost:22/
[尝试] 目标 127.0.0.1 - 登录 "root" - 密码 "password" - 1 of 3 [子进程 0] (0/0)
[尝试] 目标 127.0.0.1 - 登录 "root" - 密码 "123456" - 2 of 3 [子进程 0] (0/0)
[尝试] 目标 127.0.0.1 - 登录 "root" - 密码 "qwerty" - 3 of 3 [子进程 0] (0/0)
1 of 1 个目标已完成,未找到有效密码
Hydra (https://github.com/vanhauser-thc/thc-hydra) 完成于 2025-05-30 09:56:09
请注意,当攻击正常完成时,Hydra 不会创建恢复文件。只有当攻击中断时,才会创建恢复文件。
本步骤中,你将模拟一次中断的 Hydra 攻击,以创建恢复文件。这是必要的,因为 Hydra 只有在攻击中断时才会创建恢复文件,而不会在攻击正常完成时创建。
为了创建一个可以中断的持续时间较长的攻击,让我们扩展你的密码列表。再次打开 passwords.txt 文件:
nano passwords.txt
添加更多密码,以使攻击持续时间更长:
password
123456
qwerty
admin
root
test
guest
user
login
pass
secret
保存文件并退出 nano。
现在,启动一个速度较慢的 Hydra 攻击,以便更容易中断:
hydra -V -L users.txt -P passwords.txt -t 1 -W 2 localhost ssh
附加选项说明:
-V: 启用详细模式,显示详细的攻击尝试-t 1: 只使用 1 个任务(执行速度较慢)-W 2: 在连接尝试之间等待 2 秒重要提示: 当攻击正在运行(你应该看到 Hydra 正在尝试不同的用户名/密码组合)时,在尝试了几次后,请按
Ctrl+C中断它。
你应该看到类似于这样的输出:
Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - 请勿在军事或秘密服务组织或用于非法目的中使用(这并非强制性,这些 *** 无论如何都会忽略法律和道德)。
Hydra (https://github.com/vanhauser-thc/thc-hydra) 开始于 2025-05-30 10:00:00
[警告] 许多 SSH 配置会限制并行任务的数量,建议减少任务:使用 -t 4
[数据] 每台服务器最多 1 个任务,总共 1 个任务,11 次登录尝试 (l:1/p:11),每个任务约 11 次尝试
[数据] 攻击 ssh://localhost:22/
[尝试] 目标 127.0.0.1 - 登录 "root" - 密码 "password" - 1 of 11 [子进程 0] (0/0)
[尝试] 目标 127.0.0.1 - 登录 "root" - 密码 "123456" - 2 of 11 [子进程 0] (0/0)
^C
[错误] 接收到信号 2,正在关闭 ...
会话文件 ./hydra.restore 已写入,你可以使用以下命令恢复:hydra -R
^C 表示你中断该进程,重要的是,你应该看到关于恢复文件已写入的消息。
本步骤中,你将使用 -R 选项重新启动前一步中断的 Hydra 攻击。此选项指示 Hydra 使用恢复文件从中断点继续攻击。
要重新启动攻击,请在你的终端执行以下命令:
hydra -R
此命令仅使用 -R 选项:
-R: 指示 Hydra 使用恢复文件恢复先前中止或崩溃的会话。观察输出。你应该看到 Hydra 读取恢复文件并从中断点继续:
Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - 请勿在军事或秘密服务组织或用于非法目的中使用(这并非强制性,这些 *** 无论如何都会忽略法律和道德)。
[信息] 读取恢复文件 ./hydra.restore
Hydra (https://github.com/vanhauser-thc/thc-hydra) 开始于 2025-05-30 10:05:00
[数据] 每台服务器最多 1 个任务,总共 1 个任务,9 次登录尝试 (l:1/p:9),每个任务约 9 次尝试
[数据] 攻击 ssh://localhost:22/
[尝试] 目标 127.0.0.1 - 登录 "root" - 密码 "qwerty" - 3 of 11 [子进程 0] (0/0)
[尝试] 目标 127.0.0.1 - 登录 "root" - 密码 "admin" - 4 of 11 [子进程 0] (0/0)
...
请注意,Hydra 从中断点(在本例中,从“qwerty”作为第 3 次尝试开始)继续,而不是从头开始。
本步骤中,你将使用 -I 选项来忽略现有恢复文件并启动一次新的攻击。当你想从头开始重新启动攻击,而不管任何之前的会话数据时,这非常有用。
首先,让我们尝试在没有恢复文件的情况下使用 -R 来查看错误:
rm -f hydra.restore
hydra -V -R -L users.txt -P passwords.txt localhost ssh
你应该会看到错误消息:
Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - 请勿在军事或秘密服务组织或用于非法目的中使用(这并非强制性,这些 *** 无论如何都会忽略法律和道德)。
[信息] 读取恢复文件 ./hydra.restore
[错误] 找不到恢复文件 (./hydra.restore) - 没有那个文件或目录
现在,让我们再次创建恢复文件,方法是中断一次攻击:
hydra -V -L users.txt -P passwords.txt -t 1 -W 2 localhost ssh
在尝试几次后,使用 Ctrl+C 中断它,以创建恢复文件。
现在,执行以下命令来忽略恢复文件:
hydra -V -I -L users.txt -P passwords.txt localhost ssh
此命令包含 -I 选项:
-I: 指示 Hydra 忽略现有恢复文件,并且不创建新的恢复文件。观察输出。你应该看到 Hydra 从头开始,忽略任何现有的恢复文件:
Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - 请勿在军事或秘密服务组织或用于非法目的中使用(这并非强制性,这些 *** 无论如何都会忽略法律和道德)。
Hydra (https://github.com/vanhauser-thc/thc-hydra) 开始于 2025-05-30 10:10:00
[警告] 许多 SSH 配置会限制并行任务的数量,建议减少任务:使用 -t 4
[数据] 每台服务器最多 3 个任务,总共 3 个任务,11 次登录尝试 (l:1/p:11),每个任务约 4 次尝试
[数据] 攻击 ssh://localhost:22/
[尝试] 目标 127.0.0.1 - 登录 "root" - 密码 "password" - 1 of 11 [子进程 0] (0/0)
[尝试] 目标 127.0.0.1 - 登录 "root" - 密码 "123456" - 2 of 11 [子进程 0] (0/0)
...
请注意,攻击从第一个密码 ("password") 开始,而不管现有的恢复文件。
本步骤中,你将了解当结合使用 -I 和 -R 选项时会发生什么。这种组合演示了 Hydra 如何处理冲突指令。
执行以下命令:
hydra -V -I -R -L users.txt -P passwords.txt localhost ssh
此命令包含以下选项:
-V: 启用详细模式,显示详细的攻击尝试-I: 忽略现有恢复文件-R: 从恢复文件恢复你应该会看到类似于这样的错误消息:
Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - 请勿在军事或秘密服务组织或用于非法目的中使用(这并非强制性,这些 *** 无论如何都会忽略法律和道德)。
[信息] 读取恢复文件 ./hydra.restore
[错误] 恢复文件 (./hydra.restore) 未找到 - 没有那个文件或目录
发生这种情况是因为:
-R 选项指示 Hydra 查找恢复文件-I 选项指示 Hydra 忽略恢复文件-R 的存在,Hydra 仍然尝试读取恢复文件,但如果文件不存在或由于 -I 而被忽略,则会产生错误。这表明 -I 和 -R 是冲突的选项,不应同时使用。相反:
-R 单独恢复从恢复文件-I 单独忽略恢复文件并从新开始在本实验中,你学习了 Hydra 如何处理中断的攻击和恢复文件。关键要点包括:
-R 选项恢复中断的攻击 - 它读取 hydra.restore 文件,从攻击停止的地方继续。-I 选项忽略恢复文件 - 它强制 Hydra 启动一次新的攻击,忽略任何现有的会话数据。-I 和 -R 会产生冲突 - 这些选项具有相反的目的,不应同时使用。Ctrl+C 中断攻击,而不是让它正常完成。这种理解对于管理现实世界中的长期 Hydra 攻击至关重要,在这些场景中,你可能需要暂停和恢复攻击,或者在需要时确保从新开始。