忽略 Hydra 恢复文件

HydraHydraBeginner
立即练习

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

简介

在本次实验中,我们将探讨 Hydra 如何处理中断的攻击以及如何有效地恢复攻击。我们将通过创建简单的用户名和密码列表,对本地主机上的 SSH 服务发起 Hydra 攻击,然后使用 Ctrl+C 手动中断攻击,以此模拟一次中断的 Hydra 攻击。

接下来,实验将指导你使用 -R 选项重新启动攻击并观察延迟情况,然后结合使用 -R-I 选项跳过延迟并确保全新启动。最后,你将确认攻击按预期重新启动,并且忽略之前的恢复文件。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/ssh_attack("SSH Brute Force") hydra/HydraGroup -.-> hydra/multiple_targets("Multiple Targets Attack") hydra/HydraGroup -.-> hydra/session_management("Session Save and Restore") subgraph Lab Skills hydra/single_username -.-> lab-550770{{"忽略 Hydra 恢复文件"}} hydra/single_password -.-> lab-550770{{"忽略 Hydra 恢复文件"}} hydra/ssh_attack -.-> lab-550770{{"忽略 Hydra 恢复文件"}} hydra/multiple_targets -.-> lab-550770{{"忽略 Hydra 恢复文件"}} hydra/session_management -.-> lab-550770{{"忽略 Hydra 恢复文件"}} end

模拟中断的攻击

在这一步中,我们将模拟一次中断的 Hydra 攻击。这将帮助你了解 Hydra 如何处理中断,以及之后如何恢复攻击。我们将先发起一次基本的 Hydra 攻击,然后手动中断它。

首先,让我们创建一个简单的密码列表。在 ~/project 目录下打开一个终端,使用 nano 创建一个名为 passwords.txt 的文件:

nano passwords.txt

在文件中添加几个常见的密码,每行一个密码。例如:

password
123456
qwerty

保存文件并退出 nano(按 Ctrl+X,然后按 Y,再按 Enter)。

现在,让我们创建一个简单的用户名文件。使用 nano 创建一个名为 users.txt 的文件:

nano users.txt

在文件中添加一个用户名:

root

保存文件并退出 nano

接下来,我们将对 localhost 上的 SSH 服务发起 Hydra 攻击。我们将使用一个可能很快就能成功的简单命令,但会手动中断它,以模拟一次耗时更长的攻击。

执行以下命令:

hydra -L users.txt -P passwords.txt localhost ssh

这个命令告诉 Hydra:

  • -L users.txt:使用 users.txt 文件中的用户名。
  • -P passwords.txt:使用 passwords.txt 文件中的密码。
  • localhost:目标为 localhost
  • ssh:攻击 SSH 服务。

当攻击正在运行时(你应该会看到 Hydra 尝试不同的用户名/密码组合),按 Ctrl+C 中断它。

你应该会看到类似以下的输出(具体输出可能会有所不同):

Hydra v9.6 starting, press Enter to test creds or Ctrl+C to exit
[DATA] 1 task, 1 server, 1 userfile, 1 passfile, max 1 task(s) per 1 server, overall 1 task(s)
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost  login: root  password: password
[ATTEMPT] target: localhost  login: root  password: 123456
[ATTEMPT] target: localhost  login: root  password: qwerty
^C
3 of 3 target(s) completed, 0 valid password(s) found

^C 表示你中断了该进程。这模拟了攻击被提前停止的场景。我们将在接下来的步骤中利用这个中断状态,来探索 Hydra 的恢复功能。

使用 -R 选项重启并注意延迟

在这一步中,我们将使用 -R 选项从上一步中断的位置重启 Hydra 攻击。该选项会告诉 Hydra 从上次中断的地方继续攻击。我们还将观察 Hydra 在恢复攻击时引入的延迟。

要重启攻击,请执行以下命令:

hydra -R -L users.txt -P passwords.txt localhost ssh

这个命令与上一个命令类似,但增加了 -R 选项。

  • -R:恢复之前中止/崩溃的会话。
  • -L users.txt:使用 users.txt 文件中的用户名。
  • -P passwords.txt:使用 passwords.txt 文件中的密码。
  • localhost:目标为 localhost
  • ssh:攻击 SSH 服务。

观察输出。你应该会注意到在 Hydra 再次开始尝试密码之前会有一个延迟。这个延迟是有意设置的,旨在避免被入侵检测系统(IDS)发现。Hydra 将攻击进度存储在一个临时文件中,当你使用 -R 选项时,它会读取这个文件以确定从哪里恢复攻击。

输出大致如下:

Hydra v9.6 starting, press Enter to test creds or Ctrl+C to exit
Resuming previous session
[DATA] 1 task, 1 server, 1 userfile, 1 passfile, max 1 task(s) per 1 server, overall 1 task(s)
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost  login: root  password: qwerty
3 of 3 target(s) completed, 0 valid password(s) found

注意:在这个例子中,延迟可能非常短,因为我们的密码列表中只有几个密码。然而,对于更大的密码列表,延迟会更加明显。此外,由于我们在攻击已经尝试了 'password'、'123456' 和 'qwerty' 之后中断了攻击,所以攻击可能会很快完成。

结合使用 -I 和 -R 选项跳过延迟

在这一步中,我们将把 -I 选项与 -R 选项结合使用,以跳过 Hydra 在恢复攻击时引入的延迟。-I 选项会告诉 Hydra 忽略现有的会话文件并开启一个新会话,从而有效绕过延迟。

执行以下命令:

hydra -I -R -L users.txt -P passwords.txt localhost ssh

这个命令同时包含了 -I-R 选项:

  • -I:忽略现有的会话文件 / 不创建新的会话文件。
  • -R:恢复之前中止/崩溃的会话。
  • -L users.txt:使用 users.txt 文件中的用户名。
  • -P passwords.txt:使用 passwords.txt 文件中的密码。
  • localhost:目标为 localhost
  • ssh:攻击 SSH 服务。

观察输出。你应该会注意到 Hydra 会立即开始尝试密码,不会出现仅使用 -R 选项时的延迟。

输出大致如下:

Hydra v9.6 starting, press Enter to test creds or Ctrl+C to exit
[DATA] 1 task, 1 server, 1 userfile, 1 passfile, max 1 task(s) per 1 server, overall 1 task(s)
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost  login: root  password: password
[ATTEMPT] target: localhost  login: root  password: 123456
[ATTEMPT] target: localhost  login: root  password: qwerty
3 of 3 target(s) completed, 0 valid password(s) found

通过将 -I-R 结合使用,我们实际上是在告诉 Hydra 恢复攻击,但忽略任何现有的会话数据。在你想快速重启攻击而不想等待延迟的情况下,这会很有用。不过要注意,跳过延迟可能会增加被检测到的风险。

确认全新开始

在这一步中,我们将确认结合使用 -I-R 选项能有效地开启一次全新的攻击,忽略上一次会话的进度。为此,我们将修改密码列表,并观察 Hydra 是否会从开头开始尝试所有密码。

首先,让我们修改 passwords.txt 文件。使用 nano 打开它:

nano passwords.txt

在文件开头添加一个新密码:

newpassword
password
123456
qwerty

保存文件并退出 nano

现在,再次执行带有 -I-R 选项的 Hydra 命令:

hydra -I -R -L users.txt -P passwords.txt localhost ssh

观察输出。你应该会看到 Hydra 首先尝试 newpassword 这个密码,它是修改后列表中的第一个密码。这证实了 Hydra 正在开启一次全新的攻击,而不是从上一次会话的进度处继续。

输出大致如下:

Hydra v9.6 starting, press Enter to test creds or Ctrl+C to exit
[DATA] 1 task, 1 server, 1 userfile, 1 passfile, max 1 task(s) per 1 server, overall 1 task(s)
[DATA] attacking ssh://localhost:22/
[ATTEMPT] target: localhost  login: root  password: newpassword
[ATTEMPT] target: localhost  login: root  password: password
[ATTEMPT] target: localhost  login: root  password: 123456
[ATTEMPT] target: localhost  login: root  password: qwerty
4 of 4 target(s) completed, 0 valid password(s) found

这一步表明,当 -I 选项与 -R 选项结合使用时,能提供一种开启全新 Hydra 攻击的方式,有效地忽略任何之前的会话数据。当你想确保测试所有密码,而不管之前的攻击是否被中断时,这会很有用。

总结

在本次实验中,我们模拟了一次针对本地主机 SSH 服务的中断式 Hydra 攻击。我们分别创建了包含用户名和密码的 users.txtpasswords.txt 文件。然后,我们使用这些文件发起了一次针对 SSH 服务的 Hydra 攻击。

在攻击过程中,我们使用 Ctrl+C 手动中断了该进程。这使我们能够观察到当攻击被提前终止时,Hydra 的行为表现,为后续步骤中探索如何有效恢复或重启攻击奠定了基础。