使用字典破解Office密码的技术指南

本文详细介绍了如何使用自定义字典和工具如Hashcat、John the Ripper破解Microsoft Office文档加密,包括Office 2013的AES加密方法、哈希提取、字典构建技巧,以及实际案例和性能分析。

如何使用字典破解Office密码

Kent Ickler//

TLDR:我们使用自定义字典破解Microsoft Office文档加密,然后用同样的字典攻击LinkedIn哈希数据库。

背景

最近我收到几个关于更好方法破解加密Excel文件的问题。问题来自BHIS扩展社区的用户,他们使用商业密码恢复工具,并利用分布式CPU和GPU处理能力。问题是他们的哈希速度仍然慢得离谱,使得暴力破解不适用。

在讨论我们在John the Ripper(JTR)和Hashcat上的典型哈希破解流程时,用户回应说:“我15年前就用过那个…人们现在还那么做吗?”
是的…是的,我们仍然那么做。

事实上,JTR和Hashcat至今都在积极开发。
公平地说,我不能说商业软件是否更快(更好、更快、更强),但我要说的是,如果它包括专业支持并且你正在处理复杂的事情,那总是很好的。Black Hills Information Security系统管理员有一个信条:我们既不支持专有也不支持开源;我们支持安全意识。商业软件肯定有其利基市场,快速调查密码恢复软件显示了一些有趣的产品,特别是在分布式工作负载方面,开源社区在这方面难以找到显著增长。

Office加密

缓慢的哈希破解是Microsoft Office应用程序在存储密码哈希和加密文档方面所做的努力的结果。加密方法比早期Office版本复杂得多。Office 2013加密使用128位AES和SHA-512算法。用于创建哈希的处理能力越多,尝试多个组合以找到匹配哈希就越困难。

未来研究

有趣的是,Microsoft还在所有Office 2013加密文档中留下了一个后门,允许使用主密钥。Microsoft甚至制作了DocRecrypt工具,允许IT管理员通过使用域上的证书签名服务来解密或重新加密Office文档,而无需原始密码。社区已经研究了这些和其他攻击向量,可能会产生完全绕过哈希破解加密文档的潜在攻击向量。

设置加密文档

首先,我创建了一个Excel文档并填充了一些虚构数据。

现在,我要“用密码加密”

让我们尝试使用一个我认为可能在常见字典中的密码:buckeye31。
(旁注,我使用了“shuf -n 1 rockyou.txt”)

保存文档后,我尝试再次打开它以验证其是否加密。

我们不想实际破解Excel文件本身——我们只想破解用于加密Excel文件的密码的哈希。为此,我们需要一个工具来读取Excel文件,并为我们提供文件加密处理中使用的密码的明文哈希。通常,我会参考Hashcat-Utils,但我需要的工具不在那里。由于我们在同一破解系统上编译了JTR,我将使用JTR的office2john.py。

Office2john.py [EXCEL文件] > hash.txt

Office2John.py识别了哈希并确定它使用MS Office 2013的加密方法,所以尽管使用Office 2016,哈希机制看起来仍然相同。我可以从这里开始使用JTR,但我仍然偏爱Hashcat,尽管必须查找哈希类型代码,而如果我只使用JTR就不需要这样做。我需要将JTR Office 2013哈希切割成Hashcat能理解的东西,并且我需要从Hashcat的帮助文件中找到哈希方法代码。

为了转换这个JTR格式的字符串以便Hashcat能正确读取,我需要从office2john.py创建的行中删除前导的“EncryptedBook.xlsx”。我们可以使用Hashcat的–username标志,但我更喜欢创建一个干净的哈希列表文件。所以我会使用cut:

Cut hash.txt -d”:” -f 2 >hashhc.txt

现在,让我们给Hashcat一些上下文:
使用hashcat64.bin –help,我可以找到Office 2013的哈希方法代码是9600

很快,我想在我们的HashCat设备上检查9600哈希方法的基准:
Hashcat64.bin -m 9600 -b

47,178 h/sec并不算好,但肯定比几百好。
现在,我使用的密码在rockyou.txt中(事实上,我是从那个文件中随机提取的)。让我们看看我们的rockyou.txt有多大:

14,344,393。不计开销,大约需要5分钟
开始吧:
hashcat64.bin -m 9600 hasheshc.txt /opt/wordlists/rockyou.txt -o hashes.pot

四分钟后…

不出所料,密码在rockyou.txt中被找到。
但如果我们只知道它有一些小写字母后跟几个数字呢?
hashcat64.bin -m 9600 -a 3 hasheshc.txt ?l?l?l?l?l?l?d?d -o hashes.pot

七天。哇,疼。

等等…如果我们只知道它是8个字符但其他一无所知呢?
hashcat64.bin -m 9600 -a 3 hasheshc.txt ?a?a?a?a?a?a?a?a -o hashes.pot

好吧。
重点是,如果你使用字典,可以节省大约4577年,或者…一个8字符的字母数字密码对于MS Office加密来说显然相当不错。

不同的方法怎么样?

我不是一个大的足球迷,但如果我知道Excel文件的作者是,我可能会尝试构建一个自定义字典。我将使用cewl在这个Wikipedia页面上查找关于大学足球的关键词,以帮助我构建一个字典文件。

cewl –depth 0 -w customdict.txt https://en.wikipedia.org/wiki/List_of_college_team_nicknames_in_the_United_States

这生成了一个1626个单词的自定义字典。
让我们也在那里添加所有大写和小写:
cp customdict.txt customdict.more.txt

cat customdict.txt | tr ‘[:upper:]’ ‘[:lower:]’ » customdict.more.txt

cat customdict.txt | tr ‘[:lower:]’ ‘[:upper:]’ » customdict.more.txt

现在我们达到了4878个单词。
让我们再进一步,运行hashcat-utils的expander来扩展所有这些单词。
(注意,我必须重新编译expander以扩展到8个字符…)
cat customdict.more.txt | /opt/hashcat-utils/src/expander.bin > customdict.more.expanded.txt

392,322个单词。现在怎么办?
现在,让我们使用Hashcat的混合字典攻击在字典末尾添加几个数字:
hashcat64.bin –session HashBlog1 -a 6 -m 9600 hashhc.txt customdict.more.expanded.txt ?d?d -o hash.pot

然后…
27秒内,我们有了一个赢家。

字典是处理密集型哈希的关键。
如果你像大多数人一样不使用随机字母数字和符号,任何人知道的关于你的任何事情,包括你的体育偏好,都可以用在单词列表中以减少破解只有你(认为你)知道的密码的停机时间。

等等,这一切都是虚构的,你一开始就知道密码。没有人会实际使用那些密码…
只是为了好玩,让我们在已知的LinkedIn ~60M哈希发布上测试我们的custom.more.expanded.txt单词字典。由于它使用SHA1并且哈希将非常快,我们将在字典中的每个单词末尾添加几个字母数字。
hashcat64.bin -a 6 -m 100 68_hash.txt customdict.more.expanded.txt ?a?a -o test.pot

我们用我们源自大学足球的字典击中了约6000万LinkedIn哈希的1.27%,耗时22秒

链接

DigINinja的CeWL:https://digi.ninja/projects/cewl.php
John the Ripper:http://www.openwall.com/john/
Hashcat:https://hashcat.net/hashcat/
Hashcat-utils:https://github.com/hashcat/hashcat-utils
Microsoft Office文档加密:https://technet.microsoft.com/en-us/library/cc179125.aspx

相关博客

Black Hills Information Security Hashcat博客:
https://www.blackhillsinfosec.com/tag/hashcat/
Black Hills Information Security密码破解设备构建:
https://www.blackhillsinfosec.com/build-password-cracker-nvidia-gtx-1080ti-gtx-1070/
Black Hills Information Security:如何破解受密码保护的MS Office文档的密码:
https://www.blackhillsinfosec.com/crack-passwords-password-protected-ms-office-documents/

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计