引言
在本实验中,你将通过学习如何破解 NTLM (NT LAN Manager) 哈希值,深入了解密码安全的世界。NTLM 是微软 Windows 系统用于存储用户密码的哈希算法。理解如何破解这些哈希值是渗透测试和安全审计中的一项基本技能。
你将使用 Hashcat,一个强大且流行的密码恢复工具,对一个示例 NTLM 哈希值执行字典攻击。在本实验结束时,你将理解密码破解的基本过程,并认识到使用强大、复杂密码的重要性。
理解 NTLM 哈希值
在本步骤中,你将学习 NTLM 哈希值的基础知识。在尝试破解它们之前,掌握这些基础知识至关重要。
NTLM (NT LAN Manager) 是微软开发的一套安全协议。其关键功能之一是处理身份验证。当你设置 Windows 系统的密码时,它不会以明文形式存储。相反,它会使用 NTLM 算法转换为一个哈希值。
NTLM 哈希值是一个 128 位的值,通常表示为 32 个字符的十六进制字符串。例如,密码 "password" 的 NTLM 哈希值为 8846f7eaee8fb117ad06bdd830b7586c。
由于哈希是一个单向过程,你无法直接“解哈希”来获取原始密码。然而,攻击者可以使用字典攻击或暴力破解攻击等技术来猜测密码,哈希他们的猜测,然后查看是否与目标哈希匹配。这就是我们将在本实验中探讨的过程。
本步骤无需执行任何命令。请继续下一步创建示例哈希文件。
创建示例 NTLM 哈希文件
在本步骤中,你将创建一个包含示例 NTLM 哈希值的文件。在实际的渗透测试中,你首先需要从 Windows 系统的安全账户管理器 (SAM) 数据库中提取这些哈希值。在本教育性实验中,我们将创建一个包含已知哈希值的文本文件。
你所有的工作都将在 ~/project 目录下进行。首先,使用 echo 命令创建一个名为 ntlm_hash.txt 的文件,并将一个示例 NTLM 哈希值写入其中。这个哈希值对应一个常见的弱密码。
echo "8846f7eaee8fb117ad06bdd830b7586c" > ~/project/ntlm_hash.txt
现在,使用 cat 命令显示文件内容,以验证文件是否已正确创建。
cat ~/project/ntlm_hash.txt
你应该会看到以下输出,这就是你刚刚保存的哈希值:
8846f7eaee8fb117ad06bdd830b7586c
哈希文件准备就绪后,你现在可以继续为破解过程做准备了。
为 NTLM 选择正确的哈希模式
在本步骤中,你将学习如何在 Hashcat 中识别 NTLM 哈希值的正确哈希模式。
Hashcat 是一个功能强大的工具,支持数百种不同的哈希类型,从 Web 应用程序密码哈希到操作系统哈希。为了正确工作,你必须准确告知 Hashcat 你正在尝试破解的哈希类型。这通过使用特定的模式编号来完成。
你可以通过搜索 Hashcat 的帮助菜单来查找 NTLM 的模式编号。使用 grep 命令过滤输出以查找 "NTLM"。
hashcat --help | grep NTLM
输出将列出与 NTLM 相关的各种哈希类型。查找标准 NTLM 的条目。
...
1000 | NTLM | Operating System
...
从输出中可以看到,NTLM 的模式编号是 1000。在下一步中,你将使用这个编号来告诉 Hashcat 如何解释 ntlm_hash.txt 文件中的哈希值。
对 NTLM 哈希发起字典攻击
在本步骤中,你将使用 Hashcat 对 NTLM 哈希发起字典攻击。字典攻击是一种通过尝试一个包含常见单词和短语的列表来破解密码的方法,这个列表被称为 "wordlist" 或 "dictionary"。
本实验的设置脚本已经将一个流行的单词列表 rockyou.txt 下载到你的 ~/project 目录中。现在,你将构建 Hashcat 命令来启动攻击。
命令结构如下:
hashcat: 程序名称。-m 1000: NTLM 的哈希模式,你在上一步中已确定。~/project/ntlm_hash.txt: 包含目标哈希值的文件路径。~/project/rockyou.txt: 单词列表的路径。--force: 此选项告诉 Hashcat 即使检测到环境中可能存在问题也要运行,这在虚拟化实验中很有用。
现在,在你的终端中执行完整的命令:
hashcat -m 1000 ~/project/ntlm_hash.txt ~/project/rockyou.txt --force
Hashcat 将开始运行。这个过程可能需要几分钟时间,因为它会加载单词列表并开始比较哈希值。你将看到类似以下的输出:
hashcat (vX.X.X) starting...
...
Session..........: hashcat
Status...........: Running
Hash.Type........: NTLM
Hash.Target......: 8846f7eaee8fb117ad06bdd830b7586c
Time.Started.....: ...
Time.Estimated...: ...
Guess.Base.......: File (~/project/rockyou.txt)
...
Session..........: hashcat
Status...........: Cracked
...
"Status...........: Cracked" 消息表明 Hashcat 已成功找到密码。
分析破解的 NTLM 密码
在本步骤中,你将查看和分析 Hashcat 发现的已破解密码。
一旦 Hashcat 成功破解了一个哈希值,它就会将结果保存在一个名为 "potfile"(意为 "金罐")的文件中。这可以防止你在未来重复破解相同的哈希值。该文件的默认位置是 ~/.local/share/hashcat/hashcat.potfile。
查看已破解密码的最简单方法是使用 Hashcat 的 --show 选项。此命令告诉 Hashcat 显示你输入文件中提供的哈希值的任何已破解密码。
运行以下命令:
hashcat -m 1000 ~/project/ntlm_hash.txt --show
Hashcat 将检查其 potfile 并显示你的哈希值的结果:
8846f7eaee8fb117ad06bdd830b7586c:password
输出格式为 hash:plaintext_password。如你所见,哈希值 8846f7eaee8fb117ad06bdd830b7586c 的原始密码是 password。
你也可以直接使用 cat 命令查看原始的 potfile:
cat ~/.local/share/hashcat/hashcat.potfile
这将显示相同的结果。你现在已经成功破解了一个 NTLM 哈希值并恢复了原始密码。
总结
在本实验中,你已成功对 NTLM 哈希执行了基础的密码破解攻击。
你学习了:
- 什么是 NTLM 哈希以及它们如何在 Windows 系统中使用。
- 如何使用 Hashcat,一个强大的密码恢复工具。
- 字典攻击的概念以及像
rockyou.txt这样的单词列表的重要性。 - 识别正确的哈希类型、发起攻击和查看已破解密码的过程。
这个练习展示了弱密码是如何轻易被攻破的。它强调了使用强壮、独特且复杂的密码,以及健壮的哈希机制,对于保护系统和数据免受未经授权访问至关重要。


