介绍
在本次实验中,你将学习如何通过创建和修改用户名和密码列表,为 Hydra 暴力破解攻击准备必要的文件。你将生成包含常见凭证的文本文件,并通过添加更多变体对其进行定制,以提高测试效果。
本练习涵盖创建 usernames.txt 和 passwords.txt 文件,增加更多条目来扩展这些文件,并验证 Hydra 是否能够正确加载这些文件。这些准备好的列表将作为后续身份验证破解尝试的基础。
创建用户名列表文件
在这一步中,你将创建一个文本文件,其中包含可用于测试身份验证系统的常见用户名列表。这个用户名列表对于 Hydra 攻击至关重要,因为它为该工具提供了在暴力破解或字典攻击期间尝试的潜在账户名。
- 首先,确保你处于正确的工作目录中。
cd命令用于更改当前目录,在本次实验中,我们使用~/project作为工作目录:
cd ~/project
- 使用 nano(一个简单的命令行文本编辑器)创建一个名为
usernames.txt的新文本文件。以下命令将创建一个新文件或打开一个现有文件:
nano usernames.txt
- 现在,你要添加在各种系统中常用作默认凭证的常见用户名。将这些用户名逐行输入或粘贴进去:
admin
root
user
test
guest
administrator
- 在 nano 中保存更改:
- 按
Ctrl+O(写入)保存。 - 按
Enter确认文件名 (usernames.txt)。 - 按
Ctrl+X退出编辑器。
- 使用
cat命令显示文件内容,验证文件是否正确创建。这将显示文件中存储的具体内容:
cat usernames.txt
你应该会看到你输入的用户名列表,每个用户名占一行。在后续步骤中,这个文件将作为 Hydra 的输入,该工具将系统地尝试每个用户名(与另一个文件中的密码组合)来测试身份验证系统。
创建密码列表文件
在这一步中,你将创建一个包含常见密码的文本文件,该文件将与步骤 1 中的用户名列表一起用于使用 Hydra 测试身份验证系统。密码列表对于暴力破解攻击至关重要,因为它们包含系统可能容易受到攻击的常用凭证。
- 首先,确保你处于正确的工作目录(如果还没在该目录的话)。
~/project目录是我们存储所有攻击文件的地方,以便保持文件的组织性:
cd ~/project
- 使用 nano 创建一个名为
passwords.txt的新文本文件。nano 是一个简单的文本编辑器,大多数 Linux 发行版都预装了它,非常适合初学者:
nano passwords.txt
- 将以下常见密码添加到文件中(每行一个)。根据安全研究,这些是最常用的弱密码之一:
password
123456
admin
12345678
qwerty
123456789
- 按以下步骤保存文件:
Ctrl+O(写入)—— 这将保存你的更改。- 按
Enter确认文件名。 Ctrl+X退出 nano 并返回终端。
- 通过显示文件内容来验证文件是否正确创建。
cat命令是一种无需打开编辑器即可快速检查文件内容的方法:
cat passwords.txt
你应该会看到你输入的密码列表,每个密码占一行。在后续步骤运行 Hydra 时,这个密码列表将与步骤 1 中的用户名列表结合使用。确保两个文件都正确格式化,这样 Hydra 就能在攻击期间系统地测试所有可能的用户名 - 密码组合。
编辑包含常用凭证的列表
在这一步中,你将通过添加更多在身份验证系统中常用的凭证,来完善前几步创建的用户名和密码列表。这些添加的内容很重要,因为现实世界中的系统通常有默认或常用的凭证,而这些凭证可能容易受到暴力破解攻击。
- 首先,确保你处于存储凭证文件的正确工作目录中。这样能确保你所有的编辑操作都在正确的位置进行:
cd ~/project
- 使用 nano 文本编辑器打开用户名列表进行编辑。nano 是一个简单的命令行编辑器,非常适合初学者:
nano usernames.txt
- 将以下额外的常见用户名添加到现有列表中。这些是许多系统使用的典型默认账户,非常适合用于测试:
sysadmin
webmaster
support
backup
oracle
mysql
按
Ctrl+O(写入)保存文件,然后按Enter确认,最后按Ctrl+X退出 nano。这些键盘快捷键对于使用命令行编辑器至关重要。现在,使用相同的步骤打开密码列表进行编辑:
nano passwords.txt
- 将以下额外的常见密码添加到现有列表中。这些是用户经常选择的弱密码,因此将它们包含在测试中很重要:
letmein
welcome
password1
123123
12345
111111
使用相同的方法保存密码文件:按
Ctrl+O、Enter,然后按Ctrl+X。通过显示文件内容来验证两个文件是否包含更新后的凭证。
&& echo "---"部分在显示两个文件时添加了一个视觉分隔符:
cat usernames.txt && echo "---" && cat passwords.txt
你应该会看到两个列表现在都包含了更全面的凭证集。当使用 Hydra 测试身份验证系统时,这些增强后的列表将提供更好的覆盖范围,因为它们既包含了系统默认账户,也包含了在现实场景中经常出现的常用弱密码。
将列表保存到可访问的目录
在这一步中,你将学习如何通过创建一个专用目录并设置正确的文件权限,来为 Hydra 攻击正确组织你的凭证列表。这很重要,因为 Hydra 在尝试破解密码时需要能够访问这些文件。
- 首先,如果你还不在项目目录中,请导航到该目录。这样可以确保你所有的文件都组织在一个地方:
cd ~/project
- 创建一个名为
hydra_lists的新目录,专门用于存储你的凭证文件。使用单独的目录有助于保持工作空间的整洁,并使文件更易于查找:
mkdir hydra_lists
- 将你的用户名和密码文件都移动到这个新目录中。
mv命令会将文件从当前位置物理移动到新目录:
mv usernames.txt passwords.txt hydra_lists/
- 通过列出目录内容来验证文件是否成功移动。
-l选项会显示详细信息,包括文件权限:
ls -l hydra_lists/
你应该会看到 usernames.txt 和 passwords.txt 都列在其中,并显示它们的权限。
- 设置适当的权限,以确保 Hydra 可以读取这些文件。
644权限表示文件所有者可以读写,而其他用户只能读取:
chmod 644 hydra_lists/*
- 通过再次检查目录来确认权限是否正确。
-rw-r--r--权限字符串表示文件已正确配置:
ls -l hydra_lists/
输出应该显示两个文件的权限都是 -rw-r--r--,这意味着所有用户都可以读取这些文件,但只有所有者可以写入 —— 这是用于 Hydra 攻击的凭证文件的理想权限设置。
验证文件在 Hydra 中加载
在这最后一步,你将验证 Hydra 能否正确读取和处理你在前面步骤中创建的凭证文件。在发起实际攻击之前,这是一项重要的检查,因为它能确保你的用户名和密码列表格式正确,并且 Hydra 可以访问这些文件。
- 首先,确保你处于存储凭证文件的正确工作目录中。这一点至关重要,因为 Hydra 需要知道在哪里可以找到你的用户名和密码列表:
cd ~/project
- 现在,我们将使用
-V标志以详细输出模式运行 Hydra 进行测试。此命令告诉 Hydra:- 使用用户名列表 (
-L hydra_lists/usernames.txt) - 使用密码列表 (
-P hydra_lists/passwords.txt) - 针对本地主机的 SSH 服务进行测试
- 出于测试目的,仅使用 1 个线程 (
-t 1)
- 使用用户名列表 (
hydra -L hydra_lists/usernames.txt -P hydra_lists/passwords.txt -V -t 1 localhost ssh
- 当命令成功运行时,你应该会看到类似以下的输出。这里的关键信息是“login tries”计数,它确认了 Hydra 已读取了两个文件:
Hydra v9.2 (c) 2022 by van Hauser/THC & David Maciejak
[DATA] max 1 task per 1 server, overall 1 task, 42 login tries (l:6/p:7), ~42 tries per task
[DATA] attacking ssh://localhost:22/
[VERBOSE] Resolving addresses ... done
验证输出后,按
Ctrl+C停止测试。由于我们只是在测试文件加载,因此无需让它完成。要确认两个文件都被正确读取,请检查输出中显示的登录尝试次数。这个数字应该等于你列表中的用户名数量乘以密码数量。例如,如果你有 6 个用户名和 7 个密码,你应该会看到 42 次登录尝试(6×7 = 42)。这个乘法结果确认了 Hydra 正在正确地组合你文件中所有可能的凭证对。
总结
在本次实验中,你学习了如何通过在 Linux 系统中创建和管理文本文件,为 Hydra 攻击准备用户名和密码列表。练习内容包括使用 nano 编辑器创建 usernames.txt 和 passwords.txt 文件,用常见的凭证填充这些文件,并使用 cat 命令验证文件内容。
你还练习了基本的 Linux 文件操作,包括目录导航、文本编辑和文件验证。这些技能是设置有效暴力破解攻击的基础,因为格式正确的凭证列表对于发挥 Hydra 的安全测试能力至关重要。


