本文主要是针对比赛题目进行分析和解题思路分享,只进行知识分享,不具一定的实战能力,后台不解答涉及可能侵害他人权利的问题,切勿用于违法犯罪活动。如果有工作方面的解答需求,请后台联系添加微信私聊。
本文方法的要求(局限性):需要获取到解密后的磁盘镜像,或者获取到相关文件,且密码不能过于复杂,否则会需要大量时间。本文主要参考了这篇文章,主要适用于 MacOS 10.8+ 版本的系统:
https://apple.stackexchange.com/questions/220729/what-type-of-hash-are-a-macs-password-stored-in/220863
提取并生成密码哈希
首先需要明确MacOS系统中有哪些用户,需要破解哪个用户的密码,等确定后,可以定位到:\Macintosh HD\private\var\db\dslocal\nodes\Default\users
目录下,寻找该用户的配置文件。
在这里,我需要破解 aaaa 用户的密码,所以我打开 aaaa.plist
文件:
可以恢复/复制之后在 PListEditor 中打开,也可以加入到 XWF 的自定义查看器中,直接在右键快速查看:
打开后,切换到 List View Tab,找到 ShadowHashData
:
双击打开后,会弹出一个新的窗口,其中就有我们需要的哈希。
由于hashcat需要形如这样的哈希格式,所以我们参照上面的方法和官方的文档,构造我们要使用的哈希:
$ml$35460$93a94bd24b5de64d79a5e49fa372827e739f4d7b6975c752c9a0ff1e5cf72e05$752351df64dd2ce9dc9c64a72ad91de6581a15c19176266b44d98919dfa81f0f96cbcb20a1ffb400718c20382030f637892f776627d34e021bad4f81b7de8222
继续回去看 ShadowHashData 的组成:
目前,hashcat 支持破解 SALTED-SHA512-PBKDF2 的哈希,所以我们主要对框选部分的数据进行处理。主要需要处理 entropy、salt和iterations,其中前两者需要转为十六进制格式,最后的iterations直接写入就行。
针对前两者,Base64解码后直接转为十六进制即可,我是在CyberChef中完成的:
分别解码之后,按照 $ml$ITERATIONS$SALT$HASH
的格式构造即可,也就得到了形如上面示例的哈希:
$ml$75757$65fd5e2ac480866b8ce853a66ddfffdfbbd36f55dc68fb09e24f22ba8ac465b7$353021b6361cec5483fec86641ceaadc7aa74503d9d480474d19955632f25b1af81e98fe3704389d607fac6ea39269863e8cc97e47f3010e31000afc5ad6653923fb1b06cb89b2f7dc1ab3f9815106bb8ff894c87a914f6d1435066792bd5b6683f36396b01b78303fcf9fbc360828be9a97cf732a98b680f001c8dd4d5cbeec
破解
根据hashcat文档,我们采用 7100 模式进行破解。具体破解方式有很多种,可以字典破解,也可以掩码暴力破解,根据具体情况而定。本哈希的对应的密码是 571
,所以为了示例需要,就使用掩码破解:
hashcat -m 7100 macos_hash.txt -a 3 ?d?d?d
破解完成后,此处就是密码:
说明
现在MacOS设备普遍使用了硬件级加密,多数情况下想提取数据,基本就是对已经解开的电脑进行的,所以个人认为实战中此破解意义不大,但是对于个别考察这个考点的赛题来说,还是比较实用的。
由于密码本身算法的原因,此破解的速度非常慢,所以赛中遇到此类题目,一定要尽可能寻找题目的线索和暗示,否则可能会浪费大量时间。
毋庸置疑,直接在Windows中使用hashcat,效果是最好的,但是考虑到性能消耗的缘故,可以考虑在虚拟机中运行,限制软件消耗的资源,将有限的资源匀给别的取证软件。