Hydra 攻击中循环使用密码

HydraHydraBeginner
立即练习

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

简介

在本次实验中,我们将探究 Hydra 在 SSH 攻击期间如何遍历用户名和密码。我们将创建用户名和密码列表,然后运行默认的 SSH 攻击,以观察 Hydra 的默认行为。

本次实验需要分别准备包含用户名列表的 usernames.txt 文件和包含密码列表的 passwords.txt 文件。然后,我们将使用这些列表执行基本的 Hydra SSH 攻击,以展示 Hydra 如何尝试不同的组合。最后,我们将探究 -u 选项对 Hydra 尝试用户名和密码组合顺序的影响。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/password_creation("Password List Creation") hydra/HydraGroup -.-> hydra/username_creation("Username List Creation") hydra/HydraGroup -.-> hydra/single_username("Single Username Attack") hydra/HydraGroup -.-> hydra/single_password("Single Password Attack") hydra/HydraGroup -.-> hydra/target_ip("Target IP Specification") hydra/HydraGroup -.-> hydra/target_service("Target Service Selection") hydra/HydraGroup -.-> hydra/ssh_attack("SSH Brute Force") subgraph Lab Skills hydra/password_creation -.-> lab-550771{{"Hydra 攻击中循环使用密码"}} hydra/username_creation -.-> lab-550771{{"Hydra 攻击中循环使用密码"}} hydra/single_username -.-> lab-550771{{"Hydra 攻击中循环使用密码"}} hydra/single_password -.-> lab-550771{{"Hydra 攻击中循环使用密码"}} hydra/target_ip -.-> lab-550771{{"Hydra 攻击中循环使用密码"}} hydra/target_service -.-> lab-550771{{"Hydra 攻击中循环使用密码"}} hydra/ssh_attack -.-> lab-550771{{"Hydra 攻击中循环使用密码"}} end

准备用户名和密码列表

在这一步中,我们将创建两个重要的文件:一个用户名列表和一个密码列表。Hydra 将使用这些列表来尝试进行 SSH 登录。创建这些列表能让我们针对目标系统系统地测试各种用户名和密码组合。

首先,让我们创建用户名列表。我们将使用 nano 文本编辑器在 ~/project 目录下创建一个名为 usernames.txt 的文件。

nano ~/project/usernames.txt

现在,将以下用户名添加到文件中。这些只是示例,你可以根据需要进行自定义。

root
admin
test
user
ubuntu

Ctrl+O 保存文件,然后按 Enter 确认文件名,最后按 Ctrl+X 退出 nano

接下来,我们将创建密码列表。同样,我们将使用 nano~/project 目录下创建一个名为 passwords.txt 的文件。

nano ~/project/passwords.txt

将以下密码添加到文件中。请记住,这些只是示例。

password
123456
qwerty
secret
ubuntu

Ctrl+O 保存文件,然后按 Enter 确认文件名,最后按 Ctrl+X 退出 nano

要验证文件是否已正确创建,你可以使用 cat 命令显示其内容。

cat ~/project/usernames.txt

你应该会看到你输入的用户名列表。

root
admin
test
user
ubuntu

同样,检查密码列表:

cat ~/project/passwords.txt

你应该会看到你输入的密码列表。

password
123456
qwerty
secret
ubuntu

现在,usernames.txtpasswords.txt 这两个文件已准备好在后续步骤中与 Hydra 一起使用。

运行默认的 SSH 攻击

在这一步中,我们将使用 Hydra 结合上一步创建的用户名和密码列表来执行基本的 SSH 攻击。这将展示 Hydra 遍历用户名和密码的默认行为。

在运行攻击之前,了解 Hydra 命令的基本语法很重要:

hydra [options] <target> <service> [additional options]
  • hydra:调用 Hydra 工具的命令。
  • [options]:用于自定义攻击的各种选项,例如指定用户名和密码列表。
  • <target>:目标 SSH 服务器的 IP 地址或主机名。在本次实验中,我们将使用 127.0.0.1(本地主机)作为目标。注意:在实际场景中,你需要将其替换为你要测试的服务器的实际 IP 地址。未经授权攻击系统是违法的。
  • <service>:要攻击的服务(例如,ssh、ftp、http)。在我们的例子中,是 ssh
  • [additional options]:特定服务的选项。

现在,让我们运行默认的 SSH 攻击。我们将使用 -L 选项指定用户名列表,使用 -P 选项指定密码列表。

hydra -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh

这个命令告诉 Hydra:

  • -L ~/project/usernames.txt:使用 ~/project 目录下的 usernames.txt 文件作为用户名列表。
  • -P ~/project/passwords.txt:使用 ~/project 目录下的 passwords.txt 文件作为密码列表。
  • 127.0.0.1:目标是运行在本地主机上的 SSH 服务。
  • ssh:指定我们要攻击的是 SSH 服务。

执行该命令。Hydra 现在将尝试使用 usernames.txt 中的每个用户名和 passwords.txt 中的每个密码登录 127.0.0.1 上的 SSH 服务。默认情况下,Hydra 会先遍历用户名,为每个用户名尝试所有密码后再切换到下一个用户名。

输出将显示正在进行的尝试。很可能会显示许多“登录失败”的消息。如果找到成功的登录组合,它将显示用户名和密码组合。由于我们使用的是弱密码并且目标是本地主机,因此有可能会成功登录。

重要提示:根据你的用户名和密码列表的大小,这个命令可能需要一些时间才能完成。此外,要注意反复的登录失败尝试可能会触发目标系统的安全措施,例如账户锁定或 IP 地址封禁。

使用 -u 选项先遍历密码

在这一步中,我们将在 Hydra 中使用 -u 选项来改变它尝试登录的顺序。默认情况下,Hydra 会先遍历用户名,为每个用户名尝试所有密码后再继续。而 -u 选项会反转这种行为,使 Hydra 先遍历密码,为所有用户名尝试每个密码后再切换到下一个密码。

在你怀疑多个账户使用了相同密码的情况下,这种方式会很有用。

要使用 -u 选项,只需将其添加到我们的 Hydra 命令中。

hydra -u -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh

这个命令告诉 Hydra:

  • -u:先遍历密码。
  • -L ~/project/usernames.txt:使用 ~/project 目录下的 usernames.txt 文件作为用户名列表。
  • -P ~/project/passwords.txt:使用 ~/project 目录下的 passwords.txt 文件作为密码列表。
  • 127.0.0.1:目标是运行在本地主机上的 SSH 服务。
  • ssh:指定我们要攻击的是 SSH 服务。

执行该命令。Hydra 现在将尝试登录 127.0.0.1 上的 SSH 服务。这次,它会在切换到下一个密码之前,用 passwords.txt 中的第一个密码尝试 usernames.txt 中的每个用户名。

观察输出。你应该会注意到尝试的顺序与上一步不同。现在 Hydra 会依次用同一个密码尝试多个用户名。

和之前一样,输出会显示正在进行的尝试。很可能会显示许多“登录失败”的消息。如果找到成功的登录组合,它将显示用户名和密码组合。

通过将此命令的输出与上一步命令的输出进行比较,你可以看到登录尝试顺序的差异。这有助于你理解 Hydra 的工作原理,并为特定情况选择最有效的攻击策略。

比较尝试顺序

在这一步中,我们将分析并比较 Hydra 在前面两步中进行登录尝试的顺序。这将帮助我们理解 -u 选项对攻击策略的影响。

为了有效地比较尝试顺序,我们可以使用 script 命令来捕获两个 Hydra 命令的输出,然后分析捕获的输出。

首先,让我们将默认的 Hydra 命令(不使用 -u 选项)的输出捕获到 ~/project 目录下一个名为 default_attack.log 的文件中。

script -c "hydra -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh" ~/project/default_attack.log

这个命令将使用 script 启动一个新的 shell 会话,在该会话中执行 Hydra 命令,并将所有输出保存到指定的日志文件中。在 Hydra 完成后,输入 exit 结束 script 会话。

接下来,让我们将使用 -u 选项的 Hydra 命令的输出捕获到 ~/project 目录下一个名为 u_attack.log 的文件中。

script -c "hydra -u -L ~/project/usernames.txt -P ~/project/passwords.txt 127.0.0.1 ssh" ~/project/u_attack.log

同样,这个命令将把使用 -u 选项的 Hydra 命令的输出捕获到 u_attack.log 文件中。在 Hydra 完成后,输入 exit 结束 script 会话。

现在我们已经捕获了两个命令的输出,我们可以使用 head 命令查看每个日志文件的前几行,从而比较尝试的顺序。

head ~/project/default_attack.log

检查输出。你应该会看到它先遍历用户名,为每个用户名尝试所有密码后再切换到下一个用户名。

接下来,查看 u_attack.log 文件的前几行:

head ~/project/u_attack.log

检查这个输出。你应该会看到它先遍历密码,为所有用户名尝试每个密码后再切换到下一个密码。

通过比较这两个日志文件,你可以清楚地看到登录尝试顺序的差异。默认的攻击策略是遍历用户名,而使用 -u 选项的攻击则是遍历密码。

这种比较凸显了理解 Hydra 中不同选项的重要性,以及如何根据特定情况调整攻击策略。

总结

在本次实验中,我们首先为 Hydra 的 SSH 攻击准备了必要的文件。具体来说,我们使用 nano 文本编辑器在 ~/project 目录下创建了 usernames.txtpasswords.txt 文件。这些文件包含了 Hydra 用于尝试 SSH 登录的潜在用户名和密码列表。然后,我们使用 cat 命令验证了这两个文件的内容,确保它们被正确创建并包含了预期的列表。

下一步是使用 Hydra 和创建好的用户名、密码列表进行默认的 SSH 攻击。这展示了 Hydra 在尝试破解 SSH 登录时的默认迭代行为。