调整 Hydra 攻击速度和线程

HydraHydraBeginner
立即练习

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

介绍

在这个实验(Lab)中,你将学习如何通过调整线程配置来优化 Hydra 的暴力破解攻击性能。你将通过实际的 SSH 攻击场景,探索不同的线程设置如何影响攻击速度和系统资源使用。

这些练习将指导你修改线程数,使用密码列表执行攻击,并分析性能差异。你将获得 Hydra 并行处理能力的实践经验,同时理解攻击效率和系统负载之间的平衡。


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/verbose_mode("Verbose Mode Usage") hydra/HydraGroup -.-> hydra/task_limit("Task Limit Configuration") hydra/HydraGroup -.-> hydra/timeout_setting("Timeout Adjustment") hydra/HydraGroup -.-> hydra/rate_control("Rate Limiting Control") hydra/HydraGroup -.-> hydra/service_options("Service-Specific Options") subgraph Lab Skills hydra/single_username -.-> lab-549913{{"调整 Hydra 攻击速度和线程"}} hydra/single_password -.-> lab-549913{{"调整 Hydra 攻击速度和线程"}} hydra/ssh_attack -.-> lab-549913{{"调整 Hydra 攻击速度和线程"}} hydra/verbose_mode -.-> lab-549913{{"调整 Hydra 攻击速度和线程"}} hydra/task_limit -.-> lab-549913{{"调整 Hydra 攻击速度和线程"}} hydra/timeout_setting -.-> lab-549913{{"调整 Hydra 攻击速度和线程"}} hydra/rate_control -.-> lab-549913{{"调整 Hydra 攻击速度和线程"}} hydra/service_options -.-> lab-549913{{"调整 Hydra 攻击速度和线程"}} end

理解 Hydra 线程选项

在这一步中,你将学习 Hydra 的线程选项以及它们如何影响暴力破解攻击的速度。Hydra 是一种流行的密码破解工具,它支持使用多个线程进行并行攻击。线程允许 Hydra 同时尝试多个密码组合,与一次尝试一个密码相比,可以显著加快破解过程。

  1. 首先,在你的 LabEx 虚拟机(VM)中打开一个终端,并导航到默认工作目录:

    cd ~/project
  2. 让我们查看 Hydra 的帮助菜单,以了解与线程相关的选项:

    hydra -h | grep -i thread

    grep -i thread 命令过滤输出,仅显示与线程相关的信息,从而更容易找到我们需要的内容。你应该看到类似于以下的输出:

    -t TASKS  run TASKS number of connects in parallel (default: 16)
  3. -t 选项控制 Hydra 将使用的并行连接(线程)数。可以将线程视为工人——更多的工人可以同时完成更多的工作。更多的线程意味着更快的攻击速度,但也意味着更高的资源使用率和网络流量。这一点很重要,因为使用过多的线程可能会使你的系统过载,或者在目标系统上触发安全警报。

  4. 让我们创建一个小的测试密码列表来演示线程行为:

    cat > test_passwords.txt << EOF
    test1
    test2
    test3
    test4
    test5
    EOF
  5. 现在让我们看看不同的线程数如何影响攻击速度。首先,尝试使用 1 个线程:

    hydra -l testuser -P test_passwords.txt 127.0.0.1 ssh -t 1 -vV

    请注意它是如何一次尝试一个密码的,只有一个子进程。

  6. 现在尝试使用 4 个线程:

    hydra -l testuser -P test_passwords.txt 127.0.0.1 ssh -t 4 -vV

    你将看到多个子进程同时工作,并行尝试不同的密码。这种并行执行应该明显快于单线程版本。

  7. 最后,尝试使用 8 个线程:

    hydra -l testuser -P test_passwords.txt 127.0.0.1 ssh -t 8 -vV

    即使我们只有 5 个密码,Hydra 仍然会创建 8 个子进程,但只有 5 个会积极工作。这演示了线程数如何影响并行处理。

设置一个简单的 SSH 攻击

在这一步中,你将使用 Hydra 准备一个简单的 SSH 攻击场景。这个演示将帮助你了解密码破解工具如何在受控环境中工作。为了安全起见,我们将使用一个全面的密码列表,并以你自己的机器上运行的本地 SSH 服务器为目标。

  1. 首先,确保你在正确的工作目录中:

    cd ~/project
  2. 密码列表文件 passwords.txt 已经创建,其中包含一套全面的常用密码。这个更大的列表将帮助我们更好地演示不同的线程配置对攻击性能的影响。验证密码文件是否已正确创建:

    cat passwords.txt
  3. 在这个实验(Lab)中,我们将以本地 SSH 服务器(127.0.0.1)为目标,也就是你自己的机器。这比攻击远程系统更安全。首先,检查 SSH 是否正在运行:

    sudo service ssh status

    如果未运行,请使用以下命令启动它:sudo service ssh start

使用默认线程运行攻击

在这一步中,你将使用 Hydra 通过默认线程设置执行 SSH 暴力破解攻击。Hydra 默认自动使用 16 个并行线程,这意味着它将同时尝试 16 种不同的密码组合。使用我们更大的密码列表,你将能够更清楚地观察到线程配置的影响。

  1. 首先,导航到你的工作目录:

    cd ~/project
  2. 针对本地 SSH 服务器运行 Hydra 攻击:

    hydra -l testuser -P passwords.txt 127.0.0.1 ssh -vV
  3. 仔细观察输出。你将看到:

    • Hydra 以 16 个任务(线程)启动
    • 每次登录尝试都会实时显示
    • 当前速度以每分钟尝试次数衡量
    • 当找到正确的密码时,会显示成功的登录
  4. 为了获得精确的计时测量结果,请使用 time 实用程序运行该命令:

    time hydra -l testuser -P passwords.txt 127.0.0.1 ssh -vV
  5. 仔细记录这些计时结果。使用我们更大的密码列表,当你调整线程数时,你将能够看到明显的性能差异。

增加线程并比较速度

在这一步中,你将学习如何调整 Hydra 的线程数会影响密码破解性能。我们将比较来自不同线程设置的结果,以了解速度和资源使用之间的权衡。

  1. 首先,确保你在正确的工作目录中:

    cd ~/project
  2. 使用增加的线程(32)运行 Hydra 并测量执行时间:

    time hydra -l testuser -P passwords.txt 127.0.0.1 ssh -vV -t 32
  3. 现在使用更高的线程(64)进行测试,看看性能是否继续提高:

    time hydra -l testuser -P passwords.txt 127.0.0.1 ssh -vV -t 64
  4. 分析增加线程如何影响:

    • 总体攻击持续时间
    • 系统资源使用情况(在 time 输出的 User/System 列中可见)
    • 网络连接尝试速率(在 Hydra 的详细输出中显示)

使用减少的线程测试攻击

在这一步中,我们将探索减少 Hydra 的线程数如何影响密码破解性能。我们将使用较低的线程数进行测试,以了解速度和资源使用之间的平衡。

  1. 首先,确保你在正确的工作目录中:

    cd ~/project
  2. 使用 8 个线程(之前最小线程数的一半)运行 Hydra 并测量执行时间:

    time hydra -l testuser -P passwords.txt 127.0.0.1 ssh -vV -t 8
  3. 现在仅使用 4 个线程进行测试,以了解最小的实际配置:

    time hydra -l testuser -P passwords.txt 127.0.0.1 ssh -vV -t 4
  4. 考虑在实际使用中的这些实际权衡:

    • 较高的线程(16-64)用于在强大的系统上进行快速攻击
    • 较低的线程(4-8)用于隐蔽或资源受限的环境
    • 网络影响随线程数而变化——更多的线程会产生更多可检测的流量

总结

在这个实验(Lab)中,你已经学习了如何配置 Hydra 的攻击速度和线程设置,以实现高效的暴力破解攻击。关键要点包括使用 -t 参数来控制并行连接,并通过使用不同值的实际测试来分析线程数如何影响性能。

你还获得了设置 SSH 攻击场景、创建密码列表以及观察线程数、攻击速度和系统资源使用之间关系的第一手经验。这个实践练习有助于演示在各种测试环境中优化 Hydra 的技术。