引言
在网络安全和数字取证领域,你经常会遇到加密哈希(cryptographic hashes)。哈希是一个固定大小的字节字符串,它是将任意数据块应用单向数学函数的结果。在尝试破解密码哈希之前,你必须首先识别用于创建它的算法,例如 MD5、SHA-1 或 NTLM。
在本实验(lab)中,你将学习识别未知哈希类型这一基本技能。你将使用 Linux 中常见的命令行工具来分析示例哈希列表,并确定它们对应的算法。这是任何密码破解活动的关键第一步。
收集各种示例哈希列表
在此步骤中,你将创建一个包含几种不同类型哈希的文本文件。该文件将作为后续步骤中识别工具的输入。每种哈希算法都会生成一个具有特定长度和字符集的哈希,识别工具正是通过这些特征来区分它们。
首先,使用 cat 命令配合 Here Document (<<EOF) 在 ~/project 目录下创建一个名为 hashes.txt 的文件。该文件将包含三种常见的哈希类型:MD5、SHA-1 和 NTLM。
在你的终端中执行以下命令:
cat << EOF > hashes.txt
d41d8cd98f00b204e9800998ecf8427e
da39a3ee5e6b4b0d3255bfef95601890afd80709
32ed87bd5fdc5e204e2620a05a069858
EOF
创建文件后,你可以再次使用 cat 命令来验证其内容。
cat hashes.txt
你应该会看到以下输出,确认这三个哈希已保存到文件中:
d41d8cd98f00b204e9800998ecf8427e
da39a3ee5e6b4b0d3255bfef95601890afd80709
32ed87bd5fdc5e204e2620a05a069858
现在你已经有了哈希列表,可以开始识别它们了。
在 Kali 中使用 hashid 工具
在此步骤中,你将使用 hashid 工具来分析你在 hashes.txt 文件中保存的哈希。hashid 是一个命令行实用程序,它通过分析哈希的长度和字符组成来识别不同的哈希类型。它是哈希分析初始阶段一个简单而强大的工具。
要使用 hashid,你只需将包含哈希的文件作为参数提供。该工具将处理文件中的每一行,并尝试识别该行上的哈希。
在你的 hashes.txt 文件上运行 hashid:
hashid hashes.txt
该工具将分析每个哈希,并将结果打印到终端。输出将显示哈希字符串,后跟一个可能的哈希算法列表。
--File 'hashes.txt'--
d41d8cd98f00b204e9800998ecf8427e
[+] MD5
[+] Domain Cached Credentials (DCC)
da39a3ee5e6b4b0d3255bfef95601890afd80709
[+] SHA-1
[+] RipeMD-160
32ed87bd5fdc5e204e2620a05a069858
[+] NTLM
[+] MD4
[+] MD5
--End of file 'hashes.txt'--
如你所见,hashid 为每个哈希提供了一个或多个潜在匹配项。在下一步中,你将学习如何解释此输出。
分析 hashid 的输出
在此步骤中,你将学习如何解释 hashid 的输出。虽然该工具会提供一个可能性列表,但你通常需要使用上下文或进一步分析来缩小正确的哈希类型范围。
让我们分解一下上一步的输出:
- 对于第一个哈希 (
d41d8cd98f00b204e9800998ecf8427e),hashid建议了 MD5 和 **Domain Cached Credentials (DCC)**。MD5 是这种格式哈希最常见的类型。 - 对于第二个哈希 (
da39a3ee5e6b4b0d3255bfef95601890afd80709),建议的是 SHA-1 和 RipeMD-160。SHA-1 是一个非常常见的选择。 - 对于第三个哈希 (
32ed87bd5fdc5e204e2620a05a069858),hashid列出了 NTLM、MD4 和 MD5。在 Windows 环境中,NTLM 是一个非常可能的候选。
hashid 还可以显示密码破解工具 Hashcat 使用的相应模式代码。要做到这一点,请使用 -m 标志,后跟一个单独的哈希。让我们检查第一个哈希的 Hashcat 模式。
hashid -m d41d8cd98f00b204e9800998ecf8427e
输出现在将包含每种潜在哈希类型的 Hashcat 模式编号。
--Hash 'd41d8cd98f00b204e9800998ecf8427e'--
[+] MD5 [HC: 0]
[+] Domain Cached Credentials (DCC) [HC: 1100]
这告诉你,对于 Hashcat,MD5 对应模式 -m 0。此信息对于设置破解会话至关重要。
使用在线哈希分析工具获取第二意见
在此步骤中,你将使用另一个命令行工具 hash-identifier 来获取哈希类型的第二意见。在任何分析中,使用多种工具来验证你的发现都是一个好习惯,因为不同的工具可能有不同的数据库和算法。
hash-identifier 是一个交互式 Python 脚本。你运行该命令,它会提示你输入要识别的哈希。
首先,在终端中输入其名称来启动该工具:
hash-identifier
你将看到一个提示要求输入哈希。
#########################################################################
## __ __ __ __ _ _ _ #
## / / / /___ ____ ___ ___ / /_ _______/ /_ (_)_________| | / / #
## / /_/ / __ \/ __ `__ \/ _ \/ __ \/ ___/ __ \/ / / ___/ ___/ |/ / #
## / __ / /_/ / / / / / / __/ /_/ / /__/ / / / / / /__/ / / /| / #
## /_/ /_/\____/_/ /_/ /_/\___/_.___/\___/_/ /_/_/_/\___/_/ /_/ |_/ #
## #
## by c0decracker #
#########################################################################
HASH:
现在,复制 hashes.txt 文件中的一个哈希,例如第二个 (da39a3ee5e6b4b0d3255bfef95601890afd80709),将其粘贴到提示符后,然后按 Enter。
该工具将分析哈希并提供其结论。
HASH: da39a3ee5e6b4b0d3255bfef95601890afd80709
Possible Hashs:
[+] SHA-1
[+] RipeMD-160
Least Possible Hashs:
输出证实了 hashid 的发现,即该哈希最可能是 SHA-1。你可以按 Ctrl+C 退出 hash-identifier 工具。
将已识别的哈希类型与 Hashcat 的 -m 代码匹配
在最后一步中,你将学习如何找到 Hashcat(世界上最快的密码恢复工具)使用的正确模式 (-m) 代码。虽然 hashid -m 可以提供此信息,但你也可以直接从 Hashcat 广泛的帮助菜单中找到它。这对于确认模式或查找不常见哈希类型的代码很有用。
Hashcat 要求你使用 -m 标志的数字代码来指定哈希类型。要查找正确的代码,你可以使用 grep 来搜索 Hashcat 的帮助输出。
让我们找到 MD5 的模式。运行以下命令:
hashcat --help | grep "MD5"
输出将是所有与 MD5 相关的模式的长列表。查找纯 MD5 条目。
...
0 | MD5 | Raw Hash
...
如你所见,标准 MD5 哈希的模式是 0。
现在,我们对 SHA-1 做同样的事情:
hashcat --help | grep "SHA-1"
...
100 | SHA-1 | Raw Hash
...
SHA-1 的模式是 100。
最后,让我们找到 NTLM 的模式:
hashcat --help | grep "NTLM"
...
1000 | NTLM | Raw Hash
...
NTLM 的模式是 1000。通过正确识别哈希类型及其对应的 Hashcat 模式,你现在已准备好配置密码破解攻击。
总结
在本实验中,你学习了识别未知哈希类型的基本过程,这是密码破解的关键前提。你首先创建了一个包含各种哈希示例的文件。然后,你使用了两个强大的命令行工具 hashid 和 hash-identifier 来分析这些哈希并确定其可能的算法。最后,你学习了如何将已识别的哈希类型与 Hashcat 广泛的模式列表进行交叉引用,以找到破解会话的正确 -m 代码。这项技能对于任何参与渗透测试或数字取证的网络安全专业人员来说都是不可或缺的。


