忽略 Hydra 恢复文件

HydraBeginner
立即练习

介绍

在本实验中,你将学习 Hydra 如何处理中断的攻击以及如何有效地恢复它们。我们将模拟一次针对本地主机 SSH 服务的中断 Hydra 攻击,方法是创建简单的用户名和密码列表,启动攻击,然后手动使用 Ctrl+C 中断它。

本实验将引导你通过使用 -R 选项重新启动攻击,并观察 Hydra 如何处理恢复文件,接着使用 -I 选项结合 -R 选项来忽略恢复文件并确保从头开始。你将学习完成的攻击和中断的攻击在恢复文件创建方面有何不同。

这是一个实验(Guided Lab),提供逐步指导来帮助你学习和实践。请仔细按照说明完成每个步骤,获得实际操作经验。根据历史数据,这是一个 初级 级别的实验,完成率为 94%。获得了学习者 100% 的好评率。

创建测试文件并运行初始攻击

本步骤中,你将创建必要的测试文件并运行初始 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 选项重启并观察行为

本步骤中,你将使用 -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 选项忽略恢复文件

本步骤中,你将使用 -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 选项

本步骤中,你将了解当结合使用 -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) 未找到 - 没有那个文件或目录

发生这种情况是因为:

  1. -R 选项指示 Hydra 查找恢复文件
  2. -I 选项指示 Hydra 忽略恢复文件
  3. 当两者同时使用时,由于 -R 的存在,Hydra 仍然尝试读取恢复文件,但如果文件不存在或由于 -I 而被忽略,则会产生错误。

这表明 -I-R 是冲突的选项,不应同时使用。相反:

  • 使用 -R 单独恢复从恢复文件
  • 使用 -I 单独忽略恢复文件并从新开始
  • 不使用任何选项以运行正常的攻击

总结

在本实验中,你学习了 Hydra 如何处理中断的攻击和恢复文件。关键要点包括:

  1. 只有当攻击中断时才会创建恢复文件 - 正常完成的攻击不会生成恢复文件。
  2. -R 选项恢复中断的攻击 - 它读取 hydra.restore 文件,从攻击停止的地方继续。
  3. -I 选项忽略恢复文件 - 它强制 Hydra 启动一次新的攻击,忽略任何现有的会话数据。
  4. 结合使用 -I-R 会产生冲突 - 这些选项具有相反的目的,不应同时使用。
  5. 正确的中断至关重要 - 要测试恢复功能,你必须实际使用 Ctrl+C 中断攻击,而不是让它正常完成。

这种理解对于管理现实世界中的长期 Hydra 攻击至关重要,在这些场景中,你可能需要暂停和恢复攻击,或者在需要时确保从新开始。