介绍
在这个实验中,你将学习如何使用 Hydra(网络安全领域中一种流行的密码破解工具)对 SSH 服务执行暴力破解攻击。本练习涵盖 Hydra 的安装、使用弱凭据设置目标服务器,以及使用准备好的密码字典执行攻击。
你将获得配置 SSH 测试环境和分析 Hydra 暴力破解能力的实践经验。这个实验演示了真实的攻击场景,同时在受控环境中加强了道德黑客(ethical hacking)的原则。
在这个实验中,你将学习如何使用 Hydra(网络安全领域中一种流行的密码破解工具)对 SSH 服务执行暴力破解攻击。本练习涵盖 Hydra 的安装、使用弱凭据设置目标服务器,以及使用准备好的密码字典执行攻击。
你将获得配置 SSH 测试环境和分析 Hydra 暴力破解能力的实践经验。这个实验演示了真实的攻击场景,同时在受控环境中加强了道德黑客(ethical hacking)的原则。
在这一步中,我们将安装 Hydra,这是一个强大的密码破解工具,用于对各种网络服务进行暴力破解攻击。Hydra 对于渗透测试(penetration testing)特别有用,因为它可以系统地尝试不同的用户名和密码组合,以获取对安全系统的访问权限。它支持多种协议,包括 SSH(我们将在本实验中使用)、FTP、HTTP 等。
首先,在你的 LabEx VM 环境中打开终端。终端是你用于在 Linux 中运行命令的主要界面。确保你在默认的工作目录中,我们将在那里执行所有的实验工作:
cd ~/project
在安装任何新软件之前,最好更新你的软件包列表。这确保你将获得最新版本的 Hydra 及其所有依赖项:
sudo apt update
现在我们将使用 apt
软件包管理器安装 Hydra,它处理基于 Debian 的系统(如 Ubuntu)上的软件安装。 -y
标志自动确认安装:
sudo apt install -y hydra
安装完成后,让我们通过检查其版本来验证 Hydra 是否已正确安装。 head -n 1
命令仅显示输出的第一行,其中包含版本信息:
hydra -h | head -n 1
你应该看到类似于以下的输出:
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.
Hydra 还为那些喜欢 GUI 工具的人提供了图形界面版本。虽然我们将在本实验中使用命令行版本,但你可以选择使用以下命令安装 GTK+ GUI 版本:
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、配置用于测试的 SSH 服务器以及创建有针对性的用户名/密码列表。
你练习了执行基于字典的攻击和分析结果,展示了如何利用弱凭据。这种实践经验突出了在网络安全中对强密码和安全身份验证方法的迫切需求。