使用 Hydra 详细模式

HydraHydraBeginner
立即练习

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

简介

在本次实验中,你将学习如何使用 Hydra 的详细模式,以更深入地了解密码破解过程。本实验重点展示在执行 FTP 攻击时不同级别的详细程度。

首先,你将针对一个虚拟目标(127.0.0.1)进行基本的 FTP 登录攻击,不输出详细信息,使用在 ~/project 目录下创建的用户名和密码列表(users.txt 和 passwords.txt)。然后,你将使用 -v 选项重新运行攻击,以显示每次尝试的更多详细信息,最后,使用 -V 选项实时显示每次尝试。通过比较这些不同详细级别下的输出,你将了解如何有效地使用 Hydra 的详细选项,以便更好地进行监控和故障排除。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/ftp_attack("FTP Brute Force") hydra/HydraGroup -.-> hydra/verbose_mode("Verbose Mode Usage") subgraph Lab Skills hydra/ftp_attack -.-> lab-550777{{"使用 Hydra 详细模式"}} hydra/verbose_mode -.-> lab-550777{{"使用 Hydra 详细模式"}} end

不使用详细模式运行 FTP 攻击

在这一步中,我们将使用 Hydra 执行基本的 FTP 登录攻击,且不输出详细信息。这意味着 Hydra 会尝试破解 FTP 密码,但不会在屏幕上显示每次登录尝试的详细信息。当你想在后台运行攻击或避免终端信息杂乱时,这种方式很有用。

在开始之前,让我们先了解一下 Hydra 的基本语法:

hydra [options] [service://server[:port]] [OPT]
  • hydra:用于执行 Hydra 工具的命令。
  • [options]:各种用于定制攻击的选项,例如用户名列表、密码列表和连接设置。
  • [service://server[:port]]:指定要攻击的服务(例如 ftp、ssh、http)、目标服务器的地址,以及可选的端口号。
  • [OPT]:针对被攻击服务的特定附加选项。

现在,让我们为攻击创建一个简单的用户名列表和密码列表。

  1. 创建用户名列表

    在你的 ~/project 目录下,创建一个名为 users.txt 的文件,其中包含一个用户名列表,每行一个用户名。例如:

    nano ~/project/users.txt

    添加以下用户名:

    user1
    user2
    user3

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

  2. 创建密码列表

    在你的 ~/project 目录下,创建一个名为 passwords.txt 的文件,其中包含一个密码列表,每行一个密码。例如:

    nano ~/project/passwords.txt

    添加以下密码:

    password123
    password
    123456

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

  3. 不使用详细输出运行 FTP 攻击

    现在,让我们针对目标 FTP 服务器运行 Hydra 攻击。为了演示,我们将使用虚拟目标 127.0.0.1重要提示:未经明确许可,请勿尝试攻击系统。

    执行以下命令:

    hydra -L ~/project/users.txt -P ~/project/passwords.txt ftp://127.0.0.1
    • -L ~/project/users.txt:指定用户名列表文件。
    • -P ~/project/passwords.txt:指定密码列表文件。
    • ftp://127.0.0.1:指定 FTP 服务和目标服务器的地址。

    注意:由于 127.0.0.1 上没有运行 FTP 服务器,攻击将会失败。但是,此命令展示了不使用详细输出运行 FTP 攻击的基本语法。Hydra 会尝试每一种用户名和密码组合,但只有在找到成功登录的组合时才会显示结果。如果未找到成功登录的组合,它将显示一条消息,表明没有破解出密码。

    输出将类似于以下内容(由于没有实际的 FTP 服务器,可能会显示“Login failed”消息):

    Hydra v9.5 (c) 2023 by van Hauser/THC - Use freely but carefully.
    Hydra starting at 2023-10-27 10:00:00
    [DATA] 1 task, 3 login attempts per task, 3 password attempts per task
    [DATA] attacking ftp://127.0.0.1:21
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    ...
    [ATTEMPT] target 127.0.0.1 - login: user3 password: 123456
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ERROR] 127.0.0.1: FTP: Login failed
    [ATTEMPT] target 127.0.0.1 - login: user1 password: password123
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ERROR] 127.0.0.1: FTP: Login failed
    ...
    [ATTEMPT] target 127.0.0.1 - login: user3 password: password123
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ERROR] 127.0.0.1: FTP: Login failed
    [ATTEMPT] target 127.0.0.1 - login: user2 password: password
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ERROR] 127.0.0.1: FTP: Login failed
    ...
    [STATUS] 0 of 9 tasks completed, 1 task remaining
    Hydra finished.

    如果找到了成功登录的组合,输出将包含类似以下的行:

    [21][ftp] host: 127.0.0.1   login: user1   password: password123

    由于我们没有运行实际的 FTP 服务器,攻击将会失败,Hydra 会报告没有破解出密码。这是预期的结果。

使用 -v 选项重新运行以查看详细信息

在这一步中,我们将重新运行上一步的 FTP 攻击,但这次我们会使用 -v 选项来启用详细输出。详细输出会提供每次登录尝试的更多详细信息,这有助于进行故障排除或了解攻击的进展情况。

Hydra 中的 -v 选项代表“详细”。使用该选项时,它会增加攻击期间屏幕上显示的信息量。这包括每次连接尝试的详细信息、正在尝试的用户名和密码,以及出现的任何错误。

让我们使用上一步创建的相同用户名和密码列表(users.txtpasswords.txt)。

  1. 使用详细输出重新运行 FTP 攻击

    执行以下命令:

    hydra -L ~/project/users.txt -P ~/project/passwords.txt -v ftp://127.0.0.1
    • -L ~/project/users.txt:指定用户名列表文件。
    • -P ~/project/passwords.txt:指定密码列表文件。
    • -v:启用详细输出。
    • ftp://127.0.0.1:指定 FTP 服务和目标服务器的地址。

    注意:和上一步一样,由于 127.0.0.1 上没有运行 FTP 服务器,攻击将会失败。不过,此命令展示了 -v 选项的使用方法。

    现在的输出会比上一步更详细。你会看到每次连接尝试的信息,包括正在尝试的用户名和密码,以及出现的任何错误。输出将类似于以下内容:

    Hydra v9.5 (c) 2023 by van Hauser/THC - Use freely but carefully.
    Hydra starting at 2023-10-27 10:05:00
    [DATA] 1 task, 3 login attempts per task, 3 password attempts per task
    [DATA] attacking ftp://127.0.0.1:21
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ATTEMPT] target 127.0.0.1 - login: user1 password: password123
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ERROR] 127.0.0.1: FTP: Login failed
    [ATTEMPT] target 127.0.0.1 - login: user1 password: password
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ERROR] 127.0.0.1: FTP: Login failed
    [ATTEMPT] target 127.0.0.1 - login: user1 password: 123456
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ERROR] 127.0.0.1: FTP: Login failed
    [ATTEMPT] target 127.0.0.1 - login: user2 password: password123
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ERROR] 127.0.0.1: FTP: Login failed
    [ATTEMPT] target 127.0.0.1 - login: user2 password: password
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ERROR] 127.0.0.1: FTP: Login failed
    [ATTEMPT] target 127.0.0.1 - login: user2 password: 123456
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ERROR] 127.0.0.1: FTP: Login failed
    [ATTEMPT] target 127.0.0.1 - login: user3 password: password123
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ERROR] 127.0.0.1: FTP: Login failed
    [ATTEMPT] target 127.0.0.1 - login: user3 password: password
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ERROR] 127.0.0.1: FTP: Login failed
    [ATTEMPT] target 127.0.0.1 - login: user3 password: 123456
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ERROR] 127.0.0.1: FTP: Login failed
    [STATUS] 0 of 9 tasks completed, 1 task remaining
    Hydra finished.

    你可以看到,现在会显示每次尝试的信息,展示正在尝试的用户名和密码。这对于监控攻击进展和识别任何潜在问题很有用。

使用 -V 选项运行以显示尝试信息

在这一步中,我们将再次重新运行 FTP 攻击,但这次使用 -V 选项。与 -v 选项相比,-V 选项提供了不同级别的详细程度。它专注于以简洁的格式显示每次登录尝试,使你更容易跟踪攻击的进度。

Hydra 中的 -V 选项与 -v 类似,但提供更紧凑的输出。它不会显示每次尝试的详细连接信息,而只是显示正在尝试的用户名和密码。当你想监控攻击进度而又不想被过多信息淹没时,这会很有用。

我们将继续使用前几步中的相同用户名和密码列表(users.txtpasswords.txt)。

  1. 使用 -V 选项重新运行 FTP 攻击

    执行以下命令:

    hydra -L ~/project/users.txt -P ~/project/passwords.txt -V ftp://127.0.0.1
    • -L ~/project/users.txt:指定用户名列表文件。
    • -P ~/project/passwords.txt:指定密码列表文件。
    • -V:启用专注于尝试信息的输出。
    • ftp://127.0.0.1:指定 FTP 服务和目标服务器的地址。

    注意:和之前一样,由于 127.0.0.1 上没有运行 FTP 服务器,攻击将会失败。不过,此命令展示了 -V 选项的使用方法。

    输出会比使用 -v 选项时更简洁。你会看到每次登录尝试以简单的格式显示,展示正在尝试的用户名和密码。输出将类似于以下内容:

    Hydra v9.5 (c) 2023 by van Hauser/THC - Use freely but carefully.
    Hydra starting at 2023-10-27 10:10:00
    [DATA] 1 task, 3 login attempts per task, 3 password attempts per task
    [DATA] attacking ftp://127.0.0.1:21
    [ATTEMPT] target 127.0.0.1 - login: user1 password: password123
    [ATTEMPT] target 127.0.0.1 - login: user1 password: password
    [ATTEMPT] target 127.0.0.1 - login: user1 password: 123456
    [ATTEMPT] target 127.0.0.1 - login: user2 password: password123
    [ATTEMPT] target 127.0.0.1 - login: user2 password: password
    [ATTEMPT] target 127.0.0.1 - login: user2 password: 123456
    [ATTEMPT] target 127.0.0.1 - login: user3 password: password123
    [ATTEMPT] target 127.0.0.1 - login: user3 password: password
    [ATTEMPT] target 127.0.0.1 - login: user3 password: 123456
    [STATUS] 0 of 9 tasks completed, 1 task remaining
    Hydra finished.

    此输出不如 -v 选项的输出详细,但仍能清晰地展示攻击的进度。

比较详细程度级别

在这一步中,我们将比较前几步中使用的不同详细程度级别:无详细输出、-v(详细模式)和 -V(显示尝试信息)。了解这些级别之间的差异,能让你在使用 Hydra 时,根据具体需求选择最合适的详细程度。

让我们总结一下每个详细程度级别的特点:

  • 无详细输出:这是默认行为。Hydra 只会显示成功的登录尝试或错误消息。它提供的信息量最少,适用于在后台运行攻击,或者你只关心成功登录的情况。
  • -v (详细模式):此选项会提供每次连接尝试的详细信息,包括正在尝试的用户名和密码、连接状态以及出现的任何错误。它对于排查连接问题、了解攻击进度和识别潜在问题很有用。
  • -V (显示尝试信息):此选项以简洁的格式显示每次登录尝试,只显示正在尝试的用户名和密码。它在详细程度和清晰度之间取得了很好的平衡,让你在监控攻击进度时不会被过多信息淹没。

为了进一步说明这些差异,让我们考虑一个场景:Hydra 正在尝试破解 FTP 服务器上用户名 user1 的密码。

  • 无详细输出:如果登录尝试失败,Hydra 可能会显示一条通用的错误消息,如 [ERROR] 127.0.0.1: FTP: Login failed。如果登录尝试成功,它将显示成功登录的信息。

  • -v (详细模式):如果登录尝试失败,Hydra 可能会显示详细信息,如下所示:

    [ATTEMPT] target 127.0.0.1 - login: user1 password: password123
    [STATUS] 0.00 tries/min, 0 tries in 0 min, 1 task
    [ERROR] 127.0.0.1: FTP: Login failed

    此输出显示了正在尝试的具体用户名和密码、连接状态以及错误消息。

  • -V (显示尝试信息):如果登录尝试失败,Hydra 将显示:

    [ATTEMPT] target 127.0.0.1 - login: user1 password: password123

    此输出仅显示正在尝试的用户名和密码,没有任何额外的连接详细信息。

选择合适的详细程度级别

详细程度级别的选择取决于你的具体需求和偏好。

  • 如果你想在后台运行攻击,并且只关心成功登录的情况,请使用无详细输出模式。
  • 如果你需要详细信息来进行故障排除或了解攻击进度,请使用 -v 选项。
  • 如果你想简洁地了解攻击进度,请使用 -V 选项。

总之,通过尝试不同的详细程度级别,你可以更好地了解 Hydra 的工作原理,并根据具体需求选择最合适的详细程度。至此,关于比较 Hydra 详细程度级别的实验就完成了。

总结

在本次实验中,我们通过执行 FTP 登录攻击来探索 Hydra 的详细模式。首先,我们针对一个虚拟的 FTP 服务器(127.0.0.1)进行了一次基本攻击,且未开启详细输出,使用的是在 ~/project 目录下创建的用户名和密码列表。这展示了 Hydra 的默认行为,即抑制详细的登录尝试信息。

随后,实验引导我们使用 -v-V 选项来提高 Hydra 输出的详细程度,使我们能够观察到每次登录尝试的更多细节。通过比较不同详细程度下攻击的输出,我们更好地理解了如何利用 Hydra 的详细程度选项来监控和排查攻击过程中出现的问题。