使用 Hydra 攻击多个目标

HydraHydraBeginner
立即练习

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

简介

在本次实验中,你将学习如何使用 Hydra 同时攻击多个目标。本实验重点在于利用 Hydra 的功能,对目标主机列表进行密码破解尝试。

本实验将引导你完成以下操作:创建一个包含 IP 地址或主机名的目标列表文件,使用 -M 选项将该文件加载到 Hydra 中,对目标发起并行 SSH 攻击,最后检查输出结果,以确定在多个主机上成功登录的情况。通过这次实践,你将掌握在渗透测试和安全审计场景中使用 Hydra 的实用技能。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL hydra(("Hydra")) -.-> hydra/HydraGroup(["Hydra"]) hydra/HydraGroup -.-> hydra/target_ip("Target IP Specification") hydra/HydraGroup -.-> hydra/target_service("Target Service Selection") hydra/HydraGroup -.-> hydra/ssh_attack("SSH Brute Force") hydra/HydraGroup -.-> hydra/task_limit("Task Limit Configuration") hydra/HydraGroup -.-> hydra/multiple_targets("Multiple Targets Attack") hydra/HydraGroup -.-> hydra/success_detection("Login Success Detection") subgraph Lab Skills hydra/target_ip -.-> lab-550760{{"使用 Hydra 攻击多个目标"}} hydra/target_service -.-> lab-550760{{"使用 Hydra 攻击多个目标"}} hydra/ssh_attack -.-> lab-550760{{"使用 Hydra 攻击多个目标"}} hydra/task_limit -.-> lab-550760{{"使用 Hydra 攻击多个目标"}} hydra/multiple_targets -.-> lab-550760{{"使用 Hydra 攻击多个目标"}} hydra/success_detection -.-> lab-550760{{"使用 Hydra 攻击多个目标"}} end

创建目标列表文件

在这一步中,你将创建一个目标列表文件。该文件将包含 Hydra 尝试连接并破解密码的 IP 地址或主机名列表。这是任何渗透测试或安全审计场景中的关键步骤。

首先,让我们了解一下什么是目标列表文件。它只是一个文本文件,其中每行代表一个目标主机。目标主机可以是 IP 地址(例如,192.168.1.100)或主机名(例如,example.com)。

现在,让我们来创建目标列表文件。我们将使用 nano 文本编辑器,它已经安装在你的 LabEx 虚拟机中。

  1. 打开 nano 编辑器:

    nano ~/project/targets.txt

    此命令会在 ~/project 目录中打开一个名为 targets.txt 的新文件。如果该文件不存在,nano 会创建它。

  2. 将以下 IP 地址添加到 targets.txt 文件中。每个 IP 地址应占一行:

    192.168.1.100
    192.168.1.101
    192.168.1.102

    你可以随意使用任何你想要的 IP 地址。这些只是示例。在实际场景中,你会用你被授权测试的系统的实际 IP 地址替换这些示例。

  3. 保存文件并退出 nano。为此,请按 Ctrl+X,然后按 Y 确认保存,最后按 Enter 接受文件名。

  4. 验证文件是否已创建并包含正确的内容。你可以使用 cat 命令显示文件内容:

    cat ~/project/targets.txt

    你应该会看到你输入的 IP 地址列表。

    192.168.1.100
    192.168.1.101
    192.168.1.102

你现在已成功在 ~/project 目录中创建了一个名为 targets.txt 的目标列表文件。下一步将使用此文件将目标加载到 Hydra 中。

使用 -M 选项加载目标

在这一步中,你将学习如何使用 -M 选项将上一步创建的目标列表文件加载到 Hydra 中。-M 选项告诉 Hydra 从文件中读取目标主机列表。当你有大量目标需要测试时,这尤其有用。

在继续之前,让我们简要讨论一下带有 -M 选项的 Hydra 命令的语法。基本语法如下:

hydra -M <target_file> <service> <options>

其中:

  • <target_file> 是包含目标主机列表的文件的路径。
  • <service> 是你要攻击的服务(例如,ssh、ftp、http)。
  • <options> 是你要使用的任何其他选项,如用户名、密码列表等。

现在,让我们构建一个基本的 Hydra 命令,从我们之前创建的 targets.txt 文件中加载目标。在这个例子中,我们将使用 ssh 服务。我们还将指定一个用户名和一个密码列表(为了演示目的,我们将创建一个虚拟密码列表)。

  1. 创建一个虚拟密码列表文件:

    echo "password" > ~/project/passwords.txt

    此命令在 ~/project 目录中创建一个名为 passwords.txt 的文件,并将单词 "password" 添加到其中。在实际场景中,你会使用更全面的密码列表。

  2. 现在,执行 Hydra 命令,从 targets.txt 文件中加载目标,并尝试使用 passwords.txt 文件为用户 root 破解 SSH 密码:

    hydra -L ~/project/users.txt -P ~/project/passwords.txt -M ~/project/targets.txt ssh

    注意: 此命令可能会失败,因为你的 targets.txt 文件中的 IP 地址可能没有运行 SSH 服务器,即使有,你可能也没有正确的凭据。这一步主要是为了演示如何从文件中加载目标。

    为了避免错误,让我们创建一个 users.txt 文件,其中包含一个在大多数系统上可能存在的用户名。

    echo "root" > ~/project/users.txt

    现在,重新运行 Hydra 命令:

    hydra -L ~/project/users.txt -P ~/project/passwords.txt -M ~/project/targets.txt ssh

    你可能会看到与连接被拒绝或凭据不正确相关的错误。这是预期的。重要的是 Hydra 正在尝试连接到 targets.txt 文件中列出的目标。

    输出将显示 Hydra 尝试连接到 targets.txt 文件中的每个 IP 地址。它将针对每个目标尝试使用用户名 "root" 和密码 "password"。由于这些可能是不正确的,尝试将失败。

在这一步中,你已经成功学习了如何使用 Hydra 中的 -M 选项从文件中加载目标。这是进行大规模密码破解攻击的一项基本技能。

运行并行 SSH 攻击

在这一步中,你将学习如何使用 Hydra 运行并行 SSH 攻击。并行运行攻击可以显著加快破解过程,尤其是在处理多个目标时。Hydra 允许你使用 -t 选项指定要运行的并行任务数量。

-t 选项控制 Hydra 将建立的并行连接数量。线程数量越多,攻击速度越快,但也会给目标系统和你自己的系统带来更大的压力。找到适合你具体情况的平衡点非常重要。

让我们修改之前的 Hydra 命令,以指定数量的线程运行 SSH 攻击。

  1. 执行以下 Hydra 命令,以 4 个线程运行 SSH 攻击:

    hydra -L ~/project/users.txt -P ~/project/passwords.txt -t 4 -M ~/project/targets.txt ssh

    在这个命令中,-t 4 选项告诉 Hydra 使用 4 个并行线程。这意味着 Hydra 将同时尝试连接 4 个不同的目标。

    同样,你可能会看到与连接被拒绝或凭据不正确相关的错误。这是预期的。这一步的目的是演示如何使用 -t 选项并行运行攻击。

    输出将显示 Hydra 尝试连接 targets.txt 文件中的 IP 地址,但现在它将以 4 个并发连接进行。

  2. 尝试不同的 -t 选项值。尝试增加线程数量,看看它如何影响攻击速度。注意你自己系统和目标系统的资源。一个好的起点是将线程数量加倍:

    hydra -L ~/project/users.txt -P ~/project/passwords.txt -t 8 -M ~/project/targets.txt ssh

    观察输出并注意性能的任何变化。

重要注意事项:

  • 资源使用:增加线程数量会增加你系统的 CPU 和网络使用。监控你系统的资源,确保不会使其过载。
  • 目标系统负载:运行过多的线程可能会使目标系统不堪重负,可能导致它们崩溃或无响应。尊重目标系统,避免使用过多的线程。
  • 检测:以大量线程运行攻击更容易被入侵检测系统(IDS)发现。

在这一步中,你已经成功学习了如何使用 Hydra 的 -t 选项运行并行 SSH 攻击。这是加快密码破解攻击的关键技术。

检查多主机的输出

在这一步中,你将学习如何解读 Hydra 在攻击多个主机时的输出。Hydra 的输出提供了有关攻击尝试成功或失败的宝贵信息。

当 Hydra 成功破解密码时,它将以以下格式显示凭据:

[<service>] host: <host>  login: <username>   password: <password>

例如:

[ssh] 192.168.1.100:22 login: root   password: password

这表明 Hydra 成功破解了主机 192.168.1.100 上用户 root 的 SSH 密码,密码为 password

当 Hydra 未能破解密码时,它通常会显示诸如 "Login failed" 或 "Invalid credentials" 之类的错误消息。

让我们分析上一步的输出。

  1. 重新运行上一步的 Hydra 命令:

    hydra -L ~/project/users.txt -P ~/project/passwords.txt -t 4 -M ~/project/targets.txt ssh
  2. 检查输出。你可能会看到针对每个目标主机的一系列 "Login failed" 或 "Invalid credentials" 消息。这是因为你使用的用户名和密码可能不正确。

    输出可能如下所示:

    Hydra v9.6 (c) 2024 by van Hauser/THC - use freely but only for legal purposes.
    Hydra starting at 2024-10-27 10:00:00
    [DATA] 1 task, 3 servers, 1 userfiles, 1 passfiles -> max 1 task per 1 server, overall 1 task per attack
    [DATA] attacking ssh://192.168.1.100:22
    [STATUS][ssh] 192.168.1.100:22 - Login failed for user 'root'
    [DATA] attacking ssh://192.168.1.101:22
    [STATUS][ssh] 192.168.1.101:22 - Login failed for user 'root'
    [DATA] attacking ssh://192.168.1.102:22
    [STATUS][ssh] 192.168.1.102:22 - Login failed for user 'root'
    Hydra finished.

    如果 Hydra 成功破解了密码,你会看到一条类似于上述示例的行,表明成功的凭据。

  3. 为了更好地说明成功登录的情况,让我们创建一个 Hydra 更有可能成功的场景。这需要一个易受攻击的 SSH 服务器。由于我们没有现成的此类服务器,我们将修改 targets.txt 文件,使其指向 localhost,并尝试以当前用户身份登录。这仍然可能失败,但在没有专门的易受攻击目标的情况下,这是最接近“成功”的场景。

    首先,将 127.0.0.1 添加到你的 targets.txt 文件中:

    echo "127.0.0.1" >> ~/project/targets.txt

    现在,尝试破解本地主机上当前用户(labex)的 SSH 密码。你需要知道 labex 用户的密码。如果你还没有设置密码,可以尝试将密码列表留空,这将尝试使用空密码。

    hydra -l labex -P ~/project/passwords.txt -t 4 -M ~/project/targets.txt ssh

    注意: 除非你为 labex 用户设置了非常简单的密码,或者允许无密码 SSH 登录,否则这可能仍然会失败。

即使攻击失败,关键是要理解如何解读 Hydra 的输出。查找表明成功登录的行,并注意错误消息,以了解攻击失败的原因。

在这一步中,你已经学习了如何检查 Hydra 在攻击多个主机时的输出,以及如何解读结果。这是理解密码破解尝试成功或失败的关键技能。

总结

在本次实验中,你学习了如何创建一个包含 IP 地址或主机名的目标列表文件,这对于渗透测试和安全审计至关重要。你使用 nano 文本编辑器在 ~/project 目录下创建了一个 targets.txt 文件,并添加了多个目标 IP 地址,每个地址占一行。然后使用 cat 命令验证了文件内容。

本次实验还介绍了如何使用 -M 选项将创建的目标列表文件加载到 Hydra 中。这使得 Hydra 能够同时高效地攻击多个主机,简化了密码破解过程。