在 Hashcat 中使用 PRINCE 攻击模式

Kali LinuxBeginner
立即练习

引言

Hashcat 是一个强大且功能多样的密码恢复工具,以其速度和对众多哈希算法及攻击模式的支持而闻名。其最具创新性的功能之一是 PRINCE (Probabilistic Relevant Incremental Nonce-based Candidate-generator Extension) 攻击。

与仅尝试列表中的单词的标准字典攻击不同,PRINCE 攻击通过以各种方式组合给定单词列表中的单词来生成新的密码候选。这使得它对于由两个或多个字典单词连接而成的密码非常有效,这是创建令人难忘但看似复杂的密码的常见模式。

在本实验中,你将学习 Hashcat 中 PRINCE 攻击模式的基础知识。你将准备一个单词列表,针对示例哈希执行 PRINCE 攻击,分析生成的候选密码,最后将其与规则文件结合,以应对更复杂的密码变体。

理解 PRINCE 的概率性单词生成

在本步骤中,你将学习 PRINCE 攻击模式的核心概念。PRINCE 攻击在 Hashcat 中由攻击模式标志 -a 8 指定。它的优势在于从较小的单词列表中创建新的密码候选,而不是依赖于庞大的字典。它通过算法组合你源列表中的单词,生成更大、更复杂的潜在密码集。

例如,如果你的单词列表包含 "apple" 和 "pie",PRINCE 可以生成诸如 "apple"、"pie"、"applepie"、"pieapple"、"appleapple" 等候选密码。

让我们开始确认 Hashcat 帮助菜单中的 PRINCE 攻击模式选项。你可以使用 grep 来过滤大量的帮助输出,找到相关的行。

在你的终端中执行以下命令:

hashcat --help | grep "PRINCE"

你将看到定义 PRINCE 攻击模式的行,确认其可用性及其对应的攻击模式编号。

      8 | PRINCE

这证实了 -a 8 是调用 PRINCE 攻击的正确标志。

准备一个小的基础单词列表

在本步骤中,你将创建一个小的基础单词列表。PRINCE 攻击的有效性直接关系到输入单词列表的质量。即使是一个小而精心挑选的单词列表,也能发挥巨大的威力。在本实验中,我们将创建一个包含几个简单单词的文件。

本实验第一部分的目标密码是 "labexrocks"。因此,我们的单词列表应包含基础单词 "labex" 和 "rocks"。

使用 echo 命令和输出重定向,在当前目录(~/project)创建一个名为 wordlist.txt 的文件。

echo -e "labex\nrocks\npass\nword" > wordlist.txt

-e 标志启用对反斜杠转义字符的解释,因此 \n 会为每个单词创建一个新行。

现在,使用 cat 命令验证你新创建的单词列表的内容。

cat wordlist.txt

你应该看到以下输出,确认文件已正确创建:

labex
rocks
pass
word

你现在拥有一个准备好进行 PRINCE 攻击的基础单词列表。

使用 -a 8 执行 PRINCE 攻击

在本步骤中,你将使用你创建的单词列表来破解一个示例 MD5 哈希。本实验的设置脚本已经创建了一个名为 hash.txt 的文件,其中包含密码 "labexrocks" 的 MD5 哈希。

让我们构建 Hashcat 命令:

  • hashcat: 可执行文件。
  • -m 0: 指定哈希模式。0 对应 MD5。
  • -a 8: 指定攻击模式,即 PRINCE。
  • hash.txt: 包含目标哈希的文件。
  • wordlist.txt: 你的基础单词列表。

现在,在你的终端中运行完整的命令:

hashcat -m 0 -a 8 hash.txt wordlist.txt

Hashcat 将会初始化并开始攻击。由于单词列表很小,并且密码是其中单词的直接组合,因此过程会非常快。你将看到显示会话详情的输出,最重要的是,破解出的密码。

输出将类似于此(部分细节可能有所不同):

...
Dictionary cache built:
* Filename..: wordlist.txt
* Passwords.: 4
* Bytes.....: 22
* Keyspace..: 468

2d4a2b23999534c734b26e1b31b5579d:labexrocks

Session..........: hashcat
Status...........: Cracked
Hash.Name........: MD5
Hash.Target......: 2d4a2b23999534c734b26e1b31b5579d
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (wordlist.txt)
Guess.Mode.......: PRINCE
Speed.#*.........: ...
Recovered........: 1/1 (100.00%) Digests
Progress.........: 468/468 (100.00%)
Rejected.........: 0/468 (0.00%)
Restore.Point....: 468/468 (100.00%)
Restore.Sub.#*...: ...
Candidate.Engine.: PRINCE
Candidates.#*....: ...
Hardware.Mon.#*..: ...
...

2d4a2b23999534c734b26e1b31b5579d:labexrocks 这一行清楚地显示了原始哈希和恢复的密码。你已成功使用 PRINCE 攻击破解了密码。

分析生成的候选密码

在本步骤中,你将探索 PRINCE 在后台的操作。除了破解哈希,你还可以指示 Hashcat 将其生成的密码候选直接输出到控制台。这可以通过 --stdout 标志来实现。这是理解你的基础单词列表如何被转换的一个绝佳方式。

让我们使用 --stdout 和我们的 wordlist.txt 来查看生成的候选密码。

hashcat --stdout -a 8 wordlist.txt

这将在你的屏幕上打印大量的组合。为了使输出更易于管理,你可以将其通过管道传递给 head 命令,只查看前 10 行。

hashcat --stdout -a 8 wordlist.txt | head -n 10

输出将显示 PRINCE 生成的前几个候选密码。

pass
word
labex
rocks
passpass
password
passlabex
passrocks
wordpass
wordword

正如你所见,PRINCE 从原始单词开始,然后开始创建新的组合。我们之前破解的密码 "labexrocks" 将在此列表的更下方生成。这展示了 PRINCE 将一个小单词列表扩展成一个更大、更有效的密码猜测集的能力。

将 PRINCE 与规则文件结合以增加复杂性

在本步骤中,你将学习如何通过将 PRINCE 攻击与规则文件结合来使其更加强大。规则文件对 PRINCE 生成的每个候选密码应用特定的变异。这允许你测试常见的变体,如大小写转换、添加数字或附加特殊字符。

实验设置提供了哈希文件 hash2.txt(用于密码 "Labexrocks")和一个名为 best64.rule 的常用规则文件。此规则文件包含 64 条最有效的密码篡改规则。

攻击流程将是:

  1. PRINCE 生成一个候选密码(例如,“labexrocks”)。
  2. Hashcat 将 best64.rule 中的规则应用于该候选密码(例如,将首字母大写 -> "Labexrocks")。
  3. 修改后的候选密码将针对哈希进行测试。

要将 PRINCE 攻击与规则文件结合,只需添加 -r 标志,后跟规则文件的路径。

执行以下命令:

hashcat -m 0 -a 8 hash2.txt wordlist.txt -r best64.rule

Hashcat 现在将运行 PRINCE 攻击,但生成的每个候选密码在测试之前都会被 best64.rule 中的规则修改。

你将在输出中看到成功的破解:

...
15895e67271a552214b5e422d5752e47:Labexrocks

Session..........: hashcat
Status...........: Cracked
...

恢复的密码是 "Labexrocks"。之所以能找到它,是因为 PRINCE 生成了 "labexrocks",而 best64.rule 中的一条规则将首字母大写,从而匹配了目标密码。这种攻击模式的组合在实际场景中非常有效。

总结

在本实验中,你已成功学会了如何在 Hashcat 中使用 PRINCE 攻击模式。你已亲身体验了最富创意和最有效的密码破解技术之一。

你已学会:

  • 理解 PRINCE 攻击 (-a 8) 的概念及其如何概率性地生成密码候选。
  • 准备一个简单、有针对性的单词列表作为攻击的基础。
  • 执行基本的 PRINCE 攻击来破解由单词连接而成的密码。
  • 使用 --stdout 标志来分析 PRINCE 生成的候选密码并理解其逻辑。
  • 将 PRINCE 攻击与规则文件 (-r) 结合,以破解包含大小写等变体的更复杂密码。

PRINCE 攻击是任何安全专业人士工具箱中的强大工具,尤其是在处理由多个单词组成的密码时。掌握其使用方法以及与其他攻击模式的结合,将显著增强你的密码恢复能力。