使用 Hydra 详细模式

HydraBeginner
立即练习

介绍

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

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

运行不带详细模式的 FTP 攻击

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

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

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

现在,导航到你的 ~/project 目录,这是本实验环境中的默认工作目录:

cd ~/project

接下来,你将为你的攻击创建一个简单的用户名列表和密码列表。

  1. 创建用户名列表:

    在你的 ~/project 目录中创建一个名为 users.txt 的文件。此文件将包含用户名列表,每行一个用户名。使用 nano 文本编辑器创建和编辑该文件:

    nano users.txt

    将以下用户名添加到文件中:

    user1
    user2
    user3

    要在 nano 中保存文件:

    1. Ctrl + X 退出。
    2. Y 确认保存。
    3. Enter 确认文件名。
  2. 创建密码列表:

    类似地,在你的 ~/project 目录中创建一个名为 passwords.txt 的文件。此文件将包含密码列表,每行一个密码。使用 nano 创建和编辑该文件:

    nano passwords.txt

    将以下密码添加到文件中:

    password123
    password
    123456

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

  3. 运行不显示详细输出的 FTP 攻击:

    现在,你将对目标 FTP 服务器运行 Hydra 攻击。为了演示,你将使用虚拟目标 127.0.0.1重要提示: 不要尝试攻击未经明确授权的系统。

    在你的终端中执行以下命令:

    hydra -L users.txt -P passwords.txt ftp://127.0.0.1

    让我们分解这个命令:

    • -L users.txt: 指定用户名列表文件。由于你位于 ~/project 目录中,可以使用相对路径 users.txt
    • -P passwords.txt: 指定密码列表文件。同样,可以使用相对路径 passwords.txt
    • ftp://127.0.0.1: 指定 FTP 服务和目标服务器的地址。

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

    输出将类似于以下内容:

    Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - 请勿在军事或秘密服务组织或用于非法目的中使用(这并非具有约束力,这些***无论如何都忽略法律和道德)。
    
    Hydra (https://github.com/vanhauser-thc/thc-hydra) 开始于 2025-05-30 09:45:40
    [数据] 每台服务器最多 9 个任务,总共 9 个任务,9 次登录尝试 (l:3/p:3),每个任务约 1 次尝试
    [数据] 攻击 ftp://127.0.0.1:21/
    1 of 1 目标已完成,未找到有效密码
    Hydra (https://github.com/vanhauser-thc/thc-hydra) 结束于 2025-05-30 09:45:52

    如你所见,在不使用详细模式的情况下,Hydra 提供了最少的输出——仅关于攻击配置、正在攻击的目标以及最终结果的基本信息。没有显示各个登录尝试。

使用 -v 参数重新运行以查看详细信息

本步骤将重新运行上一步的 FTP 攻击,但这次你将使用 -v 选项启用详细输出。详细输出将提供有关每次登录尝试的更多详细信息,这对于故障排除或了解攻击进度很有帮助。

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

你将继续使用你在上一步中创建的相同用户名和密码列表(users.txtpasswords.txt)。确保你仍然在 ~/project 目录中。

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

    在你的终端中执行以下命令:

    hydra -L users.txt -P passwords.txt -v ftp://127.0.0.1

    让我们分解这个命令:

    • -L users.txt: 指定用户名列表文件。
    • -P passwords.txt: 指定密码列表文件。
    • -v: 启用详细输出。这是你添加的新选项。
    • ftp://127.0.0.1: 指定 FTP 服务和目标服务器的地址。

    注意: 与上一步一样,由于 127.0.0.1 上没有运行 FTP 服务器,攻击将失败。但是,此命令演示了 -v 选项的使用。

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

    Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - 请勿在军事或秘密服务组织或用于非法目的中使用(这并非具有约束力,这些***无论如何都忽略法律和道德)。
    
    Hydra (https://github.com/vanhauser-thc/thc-hydra) 开始于 2025-05-30 09:45:54
    [数据] 每台服务器最多 9 个任务,总共 9 个任务,9 次登录尝试 (l:3/p:3),每个任务约 1 次尝试
    [数据] 攻击 ftp://127.0.0.1:21/
    [详细] 解析地址 ... [详细] 解析完成
    进程 1216: 无法连接 [无法访问],重试 (1 of 1 重试)
    进程 1218: 无法连接 [无法访问],重试 (1 of 1 重试)
    进程 1217: 无法连接 [无法访问],重试 (1 of 1 重试)
    ...
    [错误] 进程 ID 为 1220 的子进程终止,无法连接
    [错误] 进程 ID 为 1224 的子进程终止,无法连接
    [错误] 进程 ID 为 1219 的子进程终止,无法连接
    ...
    [详细] 由于错误过多,已禁用子进程 7
    [详细] 由于错误过多,已禁用子进程 8
    ...
    1 of 1 目标已完成,未找到有效密码
    Hydra (https://github.com/vanhauser-thc/thc-hydra) 结束于 2025-05-30 09:46:07

    你可以看到,详细模式提供了有关连接过程的更多详细信息,包括:

    • DNS 解析详细信息
    • 各个进程的连接尝试和重试
    • 每个失败连接的特定错误消息
    • 由于错误而禁用子进程的信息

    此级别的详细信息对于故障排除连接问题和了解攻击失败的原因特别有用。

使用 -V 参数运行以查看尝试次数

本步骤将再次运行 FTP 攻击,但这次使用 -V 选项。-V 选项提供的详细程度与 -v 不同。它专注于以简洁的格式显示每次登录尝试,使跟踪攻击进度更容易。

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

你将继续使用前几步中创建的相同用户名和密码列表(users.txtpasswords.txt)。确保你仍然在 ~/project 目录中。

  1. 使用 -V 输出重新运行 FTP 攻击:

    在你的终端中执行以下命令:

    hydra -L users.txt -P passwords.txt -V ftp://127.0.0.1

    让我们分解这个命令:

    • -L users.txt: 指定用户名列表文件。
    • -P passwords.txt: 指定密码列表文件。
    • -V: 启用以尝试为中心的输出。这是你添加的新选项。
    • ftp://127.0.0.1: 指定 FTP 服务和目标服务器的地址。

    注意: 与之前一样,由于 127.0.0.1 上没有运行 FTP 服务器,攻击将失败。但是,此命令演示了 -V 选项的使用。

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

    Hydra v9.2 (c) 2021 by van Hauser/THC & David Maciejak - 请勿在军事或秘密服务组织或用于非法目的中使用(这并非具有约束力,这些***无论如何都忽略法律和道德)。
    
    Hydra (https://github.com/vanhauser-thc/thc-hydra) 开始于 2025-05-30 09:46:09
    [数据] 每台服务器最多 9 个任务,总共 9 个任务,9 次登录尝试 (l:3/p:3),每个任务约 1 次尝试
    [数据] 攻击 ftp://127.0.0.1:21/
    [尝试] 目标 127.0.0.1 - 登录 "user1" - 密码 "password123" - 1 of 9 [子进程 0] (0/0)
    [尝试] 目标 127.0.0.1 - 登录 "user1" - 密码 "password" - 2 of 9 [子进程 1] (0/0)
    [尝试] 目标 127.0.0.1 - 登录 "user1" - 密码 "123456" - 3 of 9 [子进程 2] (0/0)
    [尝试] 目标 127.0.0.1 - 登录 "user2" - 密码 "password123" - 4 of 9 [子进程 3] (0/0)
    [尝试] 目标 127.0.0.1 - 登录 "user2" - 密码 "password" - 5 of 9 [子进程 4] (0/0)
    [尝试] 目标 127.0.0.1 - 登录 "user2" - 密码 "123456" - 6 of 9 [子进程 5] (0/0)
    [尝试] 目标 127.0.0.1 - 登录 "user3" - 密码 "password123" - 7 of 9 [子进程 6] (0/0)
    [尝试] 目标 127.0.0.1 - 登录 "user3" - 密码 "password" - 8 of 9 [子进程 7] (0/0)
    [尝试] 目标 127.0.0.1 - 登录 "user3" - 密码 "123456" - 9 of 9 [子进程 8] (0/0)
    [重试尝试] 目标 127.0.0.1 - 登录 "user1" - 密码 "password123" - 10 of 18 [子进程 0] (1/9)
    ...
    1 of 1 目标已完成,未找到有效密码
    Hydra (https://github.com/vanhauser-thc/thc-hydra) 结束于 2025-05-30 09:46:21

    此输出以清晰的结构化格式显示每个登录尝试,包括:

    • 目标 IP 地址
    • 正在尝试的用户名和密码(用引号引起来)
    • 尝试次数和总尝试次数
    • 处理尝试的子进程 ID
    • 连接失败时的重试尝试(显示为 REDO-ATTEMPT)

    此格式提供了对攻击进度的极佳可视性,而无需详细的连接调试信息。

比较详细级别

本步骤将比较你在之前的步骤中使用的不同详细级别:无详细输出、-v(详细)和 -V(显示尝试)。理解这些级别之间的差异,可以让你在使用 Hydra 时根据具体需求选择最合适的详细程度。

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

  • 无详细输出: 这是默认行为。Hydra 只会显示基本的攻击信息、配置细节和最终结果。它提供最少的信息,适用于在后台运行攻击或你只关心成功的登录和总体结果的情况。

  • -v (详细): 此选项提供有关连接过程的详细技术信息,包括 DNS 解析、各个进程的连接尝试、重试机制以及详细的错误消息。它对于故障排除连接问题和了解攻击为何在网络层失败尤其有用。

  • -V (显示尝试): 此选项以结构化的格式显示每个登录尝试,显示正在尝试的特定用户名和密码组合、尝试计数器以及子进程信息。它提供了对攻击进度的极佳可视性,而不会因为网络连接的过多技术细节而造成信息过载。

为了进一步说明差异,让我们考虑 Hydra 尝试攻击 FTP 服务器时看到的内容:

  • 无详细输出: 你只看到基本的配置和最终结果:

    [数据] 每台服务器最多 9 个任务,总共 9 个任务,9 次登录尝试 (l:3/p:3),每个任务约 1 次尝试
    [数据] 攻击 ftp://127.0.0.1:21/
    1 of 1 目标已完成,未找到有效密码
  • -v (详细): 你会看到详细的连接信息和错误处理:

    [详细] 解析地址 ... [详细] 解析完成
    进程 1216: 无法连接 [无法访问],重试 (1 of 1 重试)
    [错误] 进程 ID 为 1220 的子进程终止,无法连接
    [详细] 由于错误过多,已禁用子进程 7
  • -V (显示尝试): 你会看到每个具体的登录尝试及其凭据:

    [尝试] 目标 127.0.0.1 - 登录 "user1" - 密码 "password123" - 1 of 9 [子进程 0] (0/0)
    [尝试] 目标 127.0.0.1 - 登录 "user2" - 密码 "password" - 5 of 9 [子进程 4] (0/0)
    [重试尝试] 目标 127.0.0.1 - 登录 "user1" - 密码 "password123" - 10 of 18 [子进程 0] (1/9)

选择合适的详细级别:

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

  • 如果你想在后台运行攻击,并且只关心成功的登录和基本结果,请使用无详细输出。
  • 如果你需要详细的技术信息来故障排除连接问题、网络问题或了解攻击为何在协议层失败,请使用 -v 选项。
  • 如果你想监控正在尝试的特定用户名和密码组合,并通过你的词表跟踪攻击进度,请使用 -V 选项。

总之,通过尝试不同的详细级别,你可以更好地理解 Hydra 的工作原理,并为你的具体需求选择最合适的详细程度。-V 选项对于监控攻击进度特别有用,而 -v 则更适合调试连接问题。

总结

在本实验中,你通过执行 FTP 登录攻击,探索了 Hydra 的详细模式。你首先针对一个虚拟 FTP 服务器 (127.0.0.1) 运行了一次基本的攻击,没有使用详细输出,并使用了在 ~/project 目录中创建的用户名和密码列表。这演示了 Hydra 的默认行为,其中会抑制详细的登录尝试信息。

然后,实验指导你使用 -v-V 选项来增加 Hydra 输出的详细程度,让你可以观察每个登录尝试的更多细节。通过比较不同详细级别下攻击的输出,你更好地理解了如何使用 Hydra 的详细选项来监控和排除攻击故障。