使用 Hydra 进行 SSH 暴力破解

HydraBeginner
立即练习

介绍

在本实验中,你将学习如何使用 Hydra 对 SSH 服务执行暴力破解攻击。Hydra 是网络安全领域中广受欢迎的密码破解工具。本次练习涵盖了 Hydra 的安装、配置带有弱凭据的目标服务器,以及使用准备好的字典文件执行攻击。

你将获得配置 SSH 测试环境和分析 Hydra 暴力破解能力的实战经验。本实验在展示真实攻击场景的同时,也进一步强化了在受控环境下的道德黑客原则。

这是一个引导式实验,提供了逐步指导以帮助你学习和练习。请仔细遵循说明完成每个步骤并获取实践经验。历史数据表明,这是一个初学者级别的实验,完成率为 81%。它获得了学习者 100% 的好评率。

安装 Hydra

在这一步中,我们将安装 Hydra。这是一款功能强大的密码破解工具,用于对各种网络服务进行暴力破解攻击。Hydra 在渗透测试中非常有用,因为它能够系统地尝试不同的用户名和密码组合,从而获取受保护系统的访问权限。它支持多种协议,包括 SSH(本实验所使用的协议)、FTP、HTTP 等。

  1. 首先,在你的 LabEx 虚拟机环境中打开终端。终端是你运行 Linux 命令的主要界面。确保你处于默认的工作目录中,我们将在这里进行所有的实验工作:

    cd ~/project
  2. 在安装任何新软件之前,更新软件包列表是一个良好的习惯。这可以确保你获取到最新版本的 Hydra 及其所有依赖项:

    sudo apt update
  3. 现在我们将使用 apt 软件包管理器安装 Hydra,它负责处理 Ubuntu 等基于 Debian 系统上的软件安装。-y 标志会自动确认安装:

    sudo apt install -y hydra
  4. 安装完成后,让我们通过检查版本来验证 Hydra 是否已正确安装。head -n 1 命令仅显示输出的第一行,其中包含版本信息:

    hydra -h | head -n 1
    显示 Hydra 版本的输出

    你应该会看到类似如下的输出:

    Hydra v9.2 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.
  5. 对于更倾向于使用图形界面工具的用户,Hydra 还提供了图形界面版本。虽然我们在本实验中将使用命令行版本,但你可以根据需要选择安装 GTK+ 图形界面版本:

    sudo apt install -y hydra-gtk
    显示 Hydra 版本的输出

搭建目标 SSH 服务器

在这一步中,我们将配置一个本地 SSH 服务器,作为后续步骤中密码破解的目标。这使我们能够在受控环境中练习渗透测试技术。SSH(安全外壳协议)是一种用于计算机之间安全远程登录的协议,为了学习目的,我们将搭建一个存在漏洞的版本。

  1. 首先,确保你处于默认的工作目录。这很重要,因为我们希望将所有的实验文件集中管理:

    cd ~/project
  2. 安装 OpenSSH 服务器软件包。该软件会将你的机器转变为一个可以接收远程连接的 SSH 服务器:

    sudo apt install -y openssh-server
  3. 创建一个专门的测试用户账号,并设置一个弱密码(仅用于演示目的)。在现实场景中,攻击者寻找的正是这类弱密码:

    sudo useradd -m testuser
    echo "testuser:password123" | sudo chpasswd
  4. 配置 SSH 以允许密码身份验证(仅限本实验临时使用)。出于安全考虑,许多系统默认禁用密码身份验证,但我们在这里将其启用,以演示暴力破解攻击的工作原理:

    sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
  5. 重启 SSH 服务以应用更改。通常在修改配置后,需要重启服务才能使更改生效:

    sudo service ssh restart
  6. 验证 SSH 服务器是否正在运行。此命令会检查我们的 SSH 服务器是否已正常激活并正在监听连接:

    sudo service ssh status

    你应该看到显示服务处于 active (running) 状态的输出。如果没有,则之前的步骤可能存在错误,需要进行排查。

  7. 在本地测试 SSH 连接。最后这一检查步骤可确保在进入攻击阶段之前一切运行正常:

    ssh testuser@localhost -o StrictHostKeyChecking=no

    当系统提示时,输入密码 password123。成功登录后,输入 exit 返回主会话。-o StrictHostKeyChecking=no 选项可防止 SSH 要求你验证服务器的指纹,这在实验环境中是可以接受的。

    本地 SSH 连接测试结果

准备用户名和密码列表

在这一步中,我们将创建包含潜在用户名和密码的文本文件,Hydra 将使用这些文件尝试 SSH 身份验证。这些文件对于基于字典的暴力破解攻击至关重要。字典攻击的工作原理是系统地尝试预定义列表中用户名和密码的所有可能组合,因此准备一份高质量的列表至关重要。

  1. 首先,确保你处于默认的工作目录。这有助于保持项目文件的整洁,并方便稍后引用它们:

    cd ~/project
  2. 使用 nano 文本编辑器创建一个用户名列表文件。在暴力破解攻击中,通常会首先尝试常见的用户名,因为许多系统使用默认或可预测的用户名:

    nano usernames.txt

    添加以下常见用户名(按 Ctrl+O 保存,然后按 Ctrl+X 退出):

    admin
    root
    testuser
    user
    guest
  3. 创建一个密码列表文件。像这样简单的弱密码经常被使用,通常是安全测试中的首要目标:

    nano passwords.txt

    添加以下常见密码:

    password
    password123
    123456
    qwerty
    letmein
  4. 通过显示文件内容来验证文件是否创建正确。此确认步骤可确保你的列表中没有拼写错误或格式问题:

    cat usernames.txt
    cat passwords.txt

    你应该会在终端中看到你创建的列表。

  5. (可选)使用 crunch 生成额外的密码变体。该工具可以根据指定的模式自动生成组合,从而帮助创建更全面的密码列表:

    sudo apt install -y crunch
    crunch 4 6 0123456789 -o num_passwords.txt

    这将创建长度在 4 到 6 位之间的纯数字密码。该命令指定了最小长度(4)、最大长度(6)和字符集(数字 0-9)。

对 SSH 运行 Hydra

在这一步中,我们将使用 Hydra 对本地 SSH 服务器执行暴力破解攻击。暴力破解是一种尝试多种用户名/密码组合直到找到正确组合的方法。我们将使用之前准备好的字典文件来自动化这一过程。

  1. 首先,导航到包含字典文件的项目目录。这可以确保 Hydra 能够找到我们创建的文件:

    cd ~/project
  2. 现在我们将使用特定参数执行 Hydra。命令结构告诉了 Hydra 攻击对象以及攻击方式。让我们来分解一下:

    hydra -L usernames.txt -P passwords.txt ssh://localhost -t 4 -vV

    参数说明:

    • -L usernames.txt:指向我们的潜在用户名列表
    • -P passwords.txt:指定我们的密码字典文件
    • ssh://localhost:目标是本机上的 SSH 服务
    • -t 4:通过限制为 4 个并发尝试来控制速度
    • -vV:在终端中显示详细进度
  3. 当 Hydra 运行时,它会实时显示每一次尝试。当它找到有效的凭据时,它们会清晰地出现在输出中,如下所示:

    [22][ssh] host: localhost   login: testuser   password: password123
    Hydra 运行结果显示
  4. (可选)为了保留结果的永久记录,我们可以将其保存到文件中。这对于文档记录或进一步分析非常有用:

    hydra -L usernames.txt -P passwords.txt ssh://localhost -t 4 -o results.txt
  5. 扫描完成后,你可以使用以下命令查看保存的结果:

    cat results.txt

总结

在本实验中,你学习了如何使用 Hydra 这一强大的密码破解工具对 SSH 进行暴力破解攻击。练习内容涵盖了安装 Hydra、配置用于测试的 SSH 服务器,以及创建针对性的用户名/密码列表。

你实践了执行基于字典的攻击并分析了结果,这展示了弱凭据是如何被利用的。这次实战经验强调了在网络安全中采用强密码和安全身份验证方法的紧迫性。