介绍
在这个实验中,你将学习使用 Hydra(一款多功能的密码破解工具)所必需的命令和技术。你将探索基本的命令结构,包括用户名(-l
/-L
)、密码(-p
/-P
)和端口(-s
)等关键选项的规范,同时练习针对测试服务器的简单 SSH 攻击。
这些练习将指导你完成目标配置、攻击执行和输出解释。通过完成这个实验,你将获得使用 Hydra 核心功能对网络服务进行基本暴力破解尝试的实践经验。
重要提示:这个实验是为桌面界面设计的。请勿在单终端界面中运行命令。
在这个实验中,你将学习使用 Hydra(一款多功能的密码破解工具)所必需的命令和技术。你将探索基本的命令结构,包括用户名(-l
/-L
)、密码(-p
/-P
)和端口(-s
)等关键选项的规范,同时练习针对测试服务器的简单 SSH 攻击。
这些练习将指导你完成目标配置、攻击执行和输出解释。通过完成这个实验,你将获得使用 Hydra 核心功能对网络服务进行基本暴力破解尝试的实践经验。
重要提示:这个实验是为桌面界面设计的。请勿在单终端界面中运行命令。
在这一步中,我们将探索 Hydra 的基本命令结构,Hydra 是一款通过暴力破解攻击来测试密码安全性的强大工具。在我们开始之前,重要的是要理解 Hydra 会系统地尝试不同的用户名和密码组合来攻击网络服务,以识别薄弱的凭据。
基本的 Hydra 命令遵循以下模式:
hydra [[[-l LOGIN | -L FILE] [-p PASS | -P FILE]] | [-C FILE]] [-e nsr] [-o FILE] [-t TASKS] [-M FILE [-T TASKS]] [-w TIME] [-W TIME] [-f] [-s PORT] [-x MIN:MAX:CHARSET] [-SuvV46] [service://server[:PORT][/OPT]]
让我们分解最常用的选项,以了解每个部分的作用:
-l
或 -L
:这些选项允许你指定用于测试的单个用户名(-l
),或者包含多个用户名的文件(-L
)。-p
或 -P
:与用户名类似,这些选项允许你测试单个密码(-p
),或者来自文件的多个密码(-P
)。-t
:控制 Hydra 同时进行的尝试次数(并行线程)。-s
:当你要测试的服务没有使用其标准端口号时,此选项非常重要。-vV
:在攻击期间显示详细的进度信息。-o
:将你的结果保存到指定的文件中,以供稍后查看。为了验证 Hydra 是否正常工作并查看所有可用的选项,我们将从一个简单的命令开始,该命令显示帮助菜单:
hydra -h
运行此命令后,你应该会看到 Hydra 的完整选项和命令列表。此输出确认该工具已正确安装,并为我们的安全测试练习做好了准备。当你需要检查特定命令语法时,帮助菜单也是一个有用的参考。
在这一步中,你将学习如何在使用 Hydra 时指定目标主机和端口。这对于将你的攻击导向正确的服务至关重要。可以把它想象成写信封——你需要正确的目的地(IP/主机名)和特定的邮箱(端口)来传递你的消息。
在 Hydra 中指定目标信息的基本格式是:
hydra [options] < service > :// < target > [:port]
让我们分解每个组成部分:
<service>
:你正在攻击的协议或服务(例如,ssh、ftp、http)。这告诉 Hydra 尝试哪种类型的身份验证。<target>
:目标服务器的 IP 地址或主机名。这就像你试图访问的建筑物地址。[:port]
:可选的端口号。服务通常在标准端口上运行(例如,SSH 的 22 端口),但有时为了安全起见,它们会被移动到不同的端口。为了练习,我们将使用在本地主机(127.0.0.1)的 22 端口上运行的测试 SSH 服务器。这意味着我们正在攻击自己的机器,这对于学习来说是安全的。尝试以下命令来验证目标规范:
hydra -vV -l testuser -p testpass ssh://127.0.0.1:22
以下是此测试命令中发生的情况:
-vV
使 Hydra 显示详细的输出,以便你可以看到正在发生的事情-l testuser
指定一个测试用户名-p testpass
提供一个测试密码ssh://127.0.0.1:22
告诉 Hydra 尝试在我们本地机器上进行 SSH 身份验证注意:这只是一个演示语法的测试命令。当你了解各个部分如何组合在一起时,我们将在后面的步骤中使用真实的凭据(credentials)。
在这一步中,我们将探索 Hydra 如何处理用于暴力破解攻击的身份验证凭据(authentication credentials)。理解这些选项至关重要,因为 Hydra 需要知道在尝试登录目标系统时要尝试哪些组合。
Hydra 提供了三种主要方法来指定凭据,每种方法都适用于不同的场景:
hydra -l username -p password ssh://127.0.0.1
此命令针对 SSH 服务尝试一个用户名/密码组合。
hydra -L usernames.txt -P passwords.txt ssh://127.0.0.1
在这里,Hydra 将尝试 usernames.txt
中的用户名和 passwords.txt
中的密码之间的每种可能的组合。
hydra -C creds.txt ssh://127.0.0.1
这使用一个文件,其中每行包含一个用户名和密码,并用冒号分隔(username:password)。
让我们创建测试文件来练习这些选项。首先,我们将创建一个简单的用户名列表,其中包含常见的管理帐户:
echo -e "admin\nroot\ntestuser" > usernames.txt
接下来,我们将创建一个密码列表,其中包含一些在现实系统中经常发现的弱密码:
echo -e "password\n123456\nadmin123" > passwords.txt
现在,我们可以运行一个带有详细输出(-vV
)的测试命令,以查看 Hydra 如何处理这些文件:
hydra -vV -L usernames.txt -P passwords.txt ssh://127.0.0.1
-vV
标志使 Hydra 显示详细的输出,以便你可以观察攻击进度并了解每个步骤中发生的事情。
在这一步中,你将结合之前的所有学习内容,使用 Hydra 执行一个完整的 SSH 暴力破解攻击。我们将使用在本地主机(127.0.0.1)上运行的测试 SSH 服务器,以及我们之前准备的凭据。这个实践练习将帮助你了解 Hydra 如何系统地尝试不同的用户名和密码组合来攻击 SSH 服务。
在发起攻击之前,让我们验证我们的目标设置是否正常工作。我们将尝试手动 SSH 连接,以确认该服务正在运行:
ssh [email protected]
(当提示输入密码时,键入 "Ctrl+C" 返回到你的会话)
这个手动测试帮助我们确认 SSH 服务是活动的,并且响应连接尝试。当 Hydra 运行时,它将进行类似的连接尝试,但会使用多次尝试来自动化该过程。
LabEx VM 在环境变量 PASSWORD
中提供了 labex
的密码。让我们将其添加到密码文件中以进行测试:
重要提示:在桌面界面中运行以下命令,否则你将无法获得
PASSWORD
环境变量。
echo "labex" > usernames.txt
echo -e "$PASSWORD" >> passwords.txt
现在让我们运行实际的 Hydra 攻击命令。在这里,我们将所有准备好的组件放在一起——用户名列表、密码列表和目标信息:
hydra -vV -L usernames.txt -P passwords.txt -t 4 ssh://127.0.0.1
让我们分解每个参数的作用:
-vV
:启用详细输出,以便你可以实时查看 Hydra 的进度-L usernames.txt
:指定包含要尝试的潜在用户名的文件-P passwords.txt
:指定包含要测试的潜在密码的文件-t 4
:设置要使用的并行连接(线程)数ssh://127.0.0.1
:将我们的目标标识为本地主机上的 SSH 服务该命令将系统地测试我们用户名和密码列表中的所有组合。在我们的受控测试环境中,这将有意地无法找到有效的凭据,但你将确切地看到 Hydra 如何处理这些组合。详细的输出将向你展示 Hydra 所做的每次尝试,帮助你了解暴力破解过程。
请注意 Hydra 如何自动处理失败的尝试并继续进行下一个组合。这证明了自动化工具相对于手动测试的强大之处。当 Hydra 处理我们测试文件中的所有可能组合时,该过程可能需要一些时间。
在这一步中,我们将研究如何在运行 SSH 攻击后读取和理解 Hydra 的输出。这非常重要,因为输出会告诉我们攻击是否成功,并提供有价值的调试信息。作为初学者,你将学习识别结果中的关键成功指标。
当你在第 4 步中执行 SSH 攻击命令时,Hydra 生成的输出如下所示:
[DATA] attacking ssh://127.0.0.1:22/
[VERBOSE] Resolving addresses ... done
[STATUS] 80.00 tries/min, 80 tries in 00:01h, 19 to do in 00:01h
[22][ssh] host: 127.0.0.1 login: testuser password: testpass
1 of 1 target successfully completed, 1 valid password found
让我们分解每个部分的含义:
[DATA]
行显示了正在被攻击的目标服务和地址[STATUS]
提供有关攻击进度的实时统计信息[port][service] host: IP login: username password: password
为了文档记录和以后的分析,你可以使用 -o
选项将 Hydra 的输出保存到文件中。这将创建你的测试结果的永久记录:
hydra -vV -L usernames.txt -P passwords.txt -t 4 -o results.txt ssh://127.0.0.1
命令完成后,你可以使用以下命令查看保存的结果:
cat results.txt
该文件将包含你在终端中看到的相同输出,允许你稍后查看结果或与团队成员共享。
在这个实验中,你已经学习了使用 Hydra 进行密码破解攻击的基本命令和技术。这些练习涵盖了核心命令语法,包括使用 -l
/-L
和 -p
/-P
标志指定用户名/密码,使用 -s
配置端口,以及基本的 Hydra 安装验证。
你还通过实际的 SSH 攻击示例,练习了使用 <service>://<target>[:port]
格式指定目标。这些基础技能使你能够执行基本的 Hydra 操作,同时了解正确的命令结构和目标定义。