介绍
Hashcat 是一款强大且多功能的密码恢复工具,在网络安全领域被广泛用于测试密码强度和恢复丢失的密码。它支持众多的哈希算法和多种攻击模式。
在这个 Lab 中,你将专注于最基本的密码破解技术之一:字典攻击。你将学习如何使用 Hashcat 的“Straight”(直通)攻击模式(-a 0)来使用自定义的词典(wordlist)破解一个简单的 MD5 哈希。这种实践经验将为你理解密码破解的工作原理打下坚实的基础。
Hashcat 是一款强大且多功能的密码恢复工具,在网络安全领域被广泛用于测试密码强度和恢复丢失的密码。它支持众多的哈希算法和多种攻击模式。
在这个 Lab 中,你将专注于最基本的密码破解技术之一:字典攻击。你将学习如何使用 Hashcat 的“Straight”(直通)攻击模式(-a 0)来使用自定义的词典(wordlist)破解一个简单的 MD5 哈希。这种实践经验将为你理解密码破解的工作原理打下坚实的基础。
在这一步,你将了解字典攻击及其在 Hashcat 中的实现方式。
字典攻击是一种通过系统地尝试一个列表(称为字典或词典/wordlist)中的每一个单词作为密码,来破解受密码保护的系统的方法。这是一种简单但有效的技术,尤其针对弱密码或常见密码。
Hashcat 将此方法称为“Straight”(直通)攻击,其攻击模式编号为 0。你使用 -a 选项来指定攻击模式。
让我们使用 hashcat --help 命令来查看攻击模式 0 的示例。我们可以将输出通过管道(pipe)传递给 grep 来查找特定的行。
hashcat --help | grep -- "-a 0"
你将看到以下输出,展示了使用 -a 0 进行字典攻击的示例:
Wordlist | $P$ | hashcat -a 0 -m 400 example400.hash example.dict
Wordlist + Rules | MD5 | hashcat -a 0 -m 0 example0.hash example.dict -r rules/best64.rule
这证实了要执行字典攻击,你将在 Hashcat 命令中使用 -a 0 选项,其中 -a 0 代表 Straight(字典)攻击模式。
在这一步,你将准备字典攻击所需的两个基本文件:一个包含目标哈希的文件和一个词典文件。所有操作都将在 ~/project 目录下执行。
首先,让我们创建一个文件来存储我们的目标哈希。我们将使用字符串 "password123" 的 MD5 哈希值,即 482c811da5d5b4bc6d497ffa98491e38。
使用 echo 命令创建一个名为 my_hash.txt 的文件,其中包含此哈希值。
echo "482c811da5d5b4bc6d497ffa98491e38" > my_hash.txt
接下来,创建一个名为 my_wordlist.txt 的简单词典文件。一个真实的词典可能包含数百万个单词,但对于这个 Lab 来说,我们将创建一个很小的、包含正确密码的词典。
echo "password" > my_wordlist.txt
echo "123456" >> my_wordlist.txt
echo "password123" >> my_wordlist.txt
echo "qwerty" >> my_wordlist.txt
现在,使用 cat 命令验证两个文件的内容。
首先,检查哈希文件:
cat my_hash.txt
预期输出:
482c811da5d5b4bc6d497ffa98491e38
然后,检查词典文件:
cat my_wordlist.txt
预期输出:
password
123456
password123
qwerty
你现在已经准备好了一个目标哈希和一个词典,可以进行攻击了。
在这一步,你将对你准备好的 MD5 哈希发起字典攻击。
为此,你需要构建一个 Hashcat 命令,该命令需要指定攻击模式、哈希类型、哈希文件和词典文件。
命令结构如下:
hashcat [选项] [哈希文件] [词典文件]
以下是我们将使用的选项:
-a 0: 指定 Straight(字典)攻击模式。-m 0: 指定哈希类型。0 对应于 MD5。正确匹配哈希类型至关重要。--force: 在虚拟化环境或使用 CPU 运行时,此选项通常需要用来绕过某些警告并强制 Hashcat 运行。现在,执行命令开始攻击:
hashcat -a 0 -m 0 my_hash.txt my_wordlist.txt --force
Hashcat 将启动并显示一个状态屏幕。由于我们的词典非常小,该过程会几乎立即完成。输出将与以下内容类似(某些细节如开始时间会有所不同):
hashcat (v6.2.6) starting
... (一些初始警告和信息) ...
Session..........: hashcat
Status...........: Cracked
Hash.Type........: MD5
Hash.Target......: 482c811da5d5b4bc6d497ffa98491e38
Time.Started.....: Sun Nov 19 10:30:00 2023 (0 secs)
Time.Estimated...: Sun Nov 19 10:30:00 2023 (0 secs)
Guess.Base.......: File (my_wordlist.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.#*.........: 133.7 kH/s (0.02ms) @ Accel:128 Loops:1 Thr:1 Vec:8
Recovered........: 1/1 (100.00%) Digests
Progress.........: 4/4 (100.00%)
Rejected.........: 0/4 (0.00%)
Restore.Point....: 3/4 (75.00%)
Restore.Sub.#*...: Salt:0 Amplifier:0-1 Iteration:0-1
Candidates.#*....: password123 -> qwerty
Hardware.Mon.#*..: Temp: 45c
Started: ...
Stopped: ...
Status...........: Cracked 这一行表明密码已在你的词典中成功找到。
在这一步,你将仔细查看上一步的输出,以了解其含义。当 Hashcat 成功破解哈希时,它会将结果保存到一个称为“potfile”的文件中,并在屏幕上报告成功。
我们来分解一下状态输出中的关键行:
Status...........: Cracked: 这是最重要的指示。它确认至少有一个哈希被成功破解。如果显示 Exhausted,则意味着 Hashcat 尝试了词典中的每一个单词但没有成功。Hash.Type........: MD5: 确认正在针对的哈希算法。Hash.Target......: 482c811da5d5b4bc6d497ffa98491e38: 显示正在被攻击的哈希值。Guess.Base.......: File (my_wordlist.txt): 表明密码候选的来源是我们的词典文件。Recovered........: 1/1 (100.00%) Digests: 这显示在提供的 1 个总哈希中,有 1 个已被恢复(破解)。Progress.........: 4/4 (100.00%): 这表明我们词典中的全部 4 个单词都已被测试。成功破解后,Hashcat 会自动将其破解的哈希及其对应的明文密码存储在其 potfile 中。该文件的默认位置是 ~/.local/share/hashcat/hashcat.potfile。这可以防止你在未来浪费时间重新破解相同的哈希。
你可以通过列出其内容来验证 potfile 是否已创建,但我们将在下一步使用一个更直接的 Hashcat 功能。
在这一步,你将学习如何使用一个方便的 Hashcat 选项来查看已破解的密码。
虽然你可以直接查看 potfile 内部,但 Hashcat 提供了 --show 选项,用于显示给定文件中已破解哈希的密码。它会将你的哈希文件与 potfile 进行交叉引用,并打印出所有找到的匹配项。
要使用此选项,你需要提供原始哈希文件并指定哈希类型,就像你进行攻击时所做的那样。
运行以下命令:
hashcat -m 0 my_hash.txt --show
Hashcat 会立即以 hash:password 的格式打印结果。
482c811da5d5b4bc6d497ffa98491e38:password123
此输出清晰地显示了原始 MD5 哈希及其对应的明文密码 "password123"。
作为比较,你也可以查看 potfile 的原始内容。这将显示相同的信息,但当你想要检查特定哈希时,--show 通常更简洁。
cat ~/.local/share/hashcat/hashcat.potfile
预期输出:
482c811da5d5b4bc6d497ffa98491e38:password123
使用 --show 是检查 Hashcat 数据库中是否已有已破解密码的标准方法。
在这个实验中,你学习了使用 Hashcat 执行字典攻击的基础知识。你通过测试一个小型的、定制的词典中的候选词,成功破解了一个 MD5 哈希。
你获得了以下关键技能的实践经验:
-a 0)。-a 0) 和哈希类型 (-m 0),对 MD5 哈希发起攻击。--show 选项查看已破解的密码。这些知识构成了探索更高级密码破解技术以及理解使用强大、唯一密码重要性的关键基础。