在对方没有察觉的情况下破解Mac密码
关闭电源的MacBook可在不到三分钟的时间内完成。只需几个命令,黑客就有可能在不知情的情况下提取目标的密码哈希并对其进行破解。
本文的目标是获取目标的.plist文件,其中包含散列密码。然后,使用Python脚本将.plist文件转换为Hashcat可以解释的格式,它强制要求它显示密码。执行此攻击的最简单方法需要物理访问目标MacBook,恢复模式,USB闪存驱动器,另一台MacBook和Hashcat。
也可以通过在目标MacBook上创建临时用户来执行命令来省略USB闪存驱动器和攻击者的MacBook。完成后,可以删除临时用户。但是,对于本指南,我们将显示USB闪存驱动器方法。
恢复模式是Mac设备支持的几种启动模式之一。它包括许多用于重新安装macOS,重置帐户密码和配置固件密码的工具。虽然此功能旨在帮助用户锁定其帐户并擦除内部硬盘驱动器,但它经常被黑客试图获取未经授权的敏感文件访问权限所滥用。
从Mojave 10.14开始,macOS不再允许用户(甚至root用户)在操作系统运行时修改包含散列密码的.plist文件。现在只能使用恢复模式获取此数据。
-
不要错过:如何转储存储在Firefox浏览器中的密码
需要USB闪存驱动器才能将目标的.plist文件从MacBook移动到攻击者。本教程中使用的USB闪存驱动器是FAT32格式的,但NTFS和APFS格式也可以使用。
特色Python脚本中有一些特定于macOS的命令,可以很容易地将.plist文件转换为Hashcat可以解释的格式。这就是为什么需要另一台MacBook(或目标MacBook上至少另一个帐户)的原因。
要找出目标的Mac密码而不更改它,哈希将需要暴力破解。MacOS在保护目标密码方面做得非常出色。无法以纯文本格式查看用户密码。基于CPU的破解解决方案(如JohnTheRipper)将花费数十年时间来破解单个散列,因此无效。强烈建议使用具有良好GPU的Hashcat。
步骤1进入恢复模式
要访问恢复模式,请首先确保目标MacBook完全关闭。然后,在按住键盘上的Command + R的同时按电源按钮。大约30秒后,将出现Apple徽标,并且可以释放Command + R键。如果出现以下屏幕,则表示已成功启用恢复模式,读者可以继续执行本教程中的下一步。
图像来自Apple如果MacBook请求密码,则表示固件受到保护并配置为防止恢复模式攻击。不幸的是,这意味着目标MacBook不容易受到本文所示的攻击。
步骤2禁用SIP(有条件)
Apple的系统完整性保护(SIP)是一项安全功能,旨在限制部分macOS被修改。从Mojave开始,/ var / db / dslocal / nodes / Default /目录在SIP保护范围内,如果有人试图查看它,将返回“不允许操作”消息。它甚至可以防止root用户更改和访问选择的目录。
在一次测试中,我发现即使在恢复模式下也无法查看或修改默认/目录。这有点异常,因为其他测试允许在没有首先禁用SIP的情况下访问Default /。
要确定是否需要禁用SIP,请在恢复模式下打开终端。在屏幕顶部的菜单栏中,选择“Utilities”,然后选择“Terminal”。然后,使用以下ls -R命令。
ls -R /Volumes/<hard drive name>/var/db/dslocal/nodes/Default/
此命令将尝试递归(-R)列出Default /目录中的文件。如果输出返回许多.plist文件,请不要禁用SIP并继续执行本教程中的下一步。如果输出返回“Operation not allowed ”,请使用以下csrutil命令禁用SIP 。
csrutil disable
Successfully disabled System Integrity Protection. Please restart the machine for the changes to take effect.
出现重启提示后,再次关闭并启动进入恢复模式。禁用SIP后,可以安全地继续本教程的下一步。
步骤3提取目标Plist
将USB闪存盘插入目标MacBook。等几秒钟让它自动安装。然后,使用以下cp命令将所需的.plist文件复制到USB驱动器。目标.plist将使用目标的用户名(例如,tokyoneon.plist)。
cp /Volumes/<hard drive name>/var/db/dslocal/nodes/Default/users/<username>.plist /Volumes/<usb name>/
请务必在上面的命令中更改<硬盘驱动器名称>。这可能是“macOS”,但如果目标在几年前购买MacBook并升级到Mojave或High Sierra,可能会有所不同。在这种情况下,硬盘驱动器名称可能显示为“Macintosh HD”或某些变体。另外,将<usb name>更改为插入MacBook的USB闪存盘。
而已。已经提取了必要的文件,目标MacBook可以关闭,本教程的其余部分需要攻击者拥有的单独的MacBook。如果在上一步中禁用了SIP,请在使用以下命令关闭之前重新启用它。
csrutil enable
步骤4将Plist复制到Attack的机器
使用攻击者的MacBook,插入包含目标的.plist的USB闪存驱动器,并将其复制(cp)到/ tmp /目录。/ tmp /目录在下一步中被硬编码到Python脚本中,以使其足够通用,以供所有读者遵循。只要目标的.plist文件位于/ tmp /目录中,Python脚本就能将其转换为哈希。
cp /Volumes/<usb name>/<username>.plist /tmp/
步骤5下载并执行Hashdump Python脚本
用于将提取的.plist文件转换为Hashcat首选格式的Python脚本取自Empire框架,可以在GitHub上找到。打开终端并使用以下curl命令下载hashdump脚本。该-o参数将保存脚本与“hashdump.py”文件名。
curl 'https://raw.githubusercontent.com/tokyoneon/hashdump.py/master/hashdump.py' -o hashdump.py
然后,使用chmod命令授予脚本执行权限。
chmod +x hashdump.py
最后,使用root权限执行hashdump.py脚本。
sudo python hashdump.py
[('tokyoneon', '$ml$27548$ba6261885e349ecb847854136cf32e9561cd1af65616f7ce11abb3f04786729c$88ad7849c5b30cce20b9d6ecde9e5be3b6736646965e0414d45d40510a574f864bafd9c5dc06fdb3cb189b877c3aa1312c2e4497ea854d3653f5861365d41a4250042a78c93dace17d212ccbb6584e3350efe95bd138f27b1705ad97166d2f11fb749b6138139a9e1ebeecb1a96750db53dbf75434c4b320b500589fa64bf5f8')]
删除哈希周围的文本(如下所示)并将其保存到名为“hash.txt”的文件中。然后,将hash.txt移动到Hashcat机器。
$ml$27548$ba6261885e349ecb847854136cf32e9561cd1af65616f7ce11abb3f04786729c$88ad7849c5b30cce20b9d6ecde9e5be3b6736646965e0414d45d40510a574f864bafd9c5dc06fdb3cb189b877c3aa1312c2e4497ea854d3653f5861365d41a4250042a78c93dace17d212ccbb6584e3350efe95bd138f27b1705ad97166d2f11fb749b6138139a9e1ebeecb1a96750db53dbf75434c4b320b500589fa64bf5f8
第6步破解哈希
要使用Hashcat破解目标的哈希,请使用以下命令。
hashcat -a 0 -m 7100 /path/to/hash.txt /path/to/wordlists/passwords.txt -w 4 --potfile-path /tmp/cracked_hash.pot
使用-a 0参数指定字典攻击或“直接模式” 。特定于macOS的散列模式使用-m 7100参数启用,并且对于从10.8或更高版本中提取的所有macOS散列都是必需的。要提高Hashcat的整体性能,请将-w(或--workload-profile)设置为4,以最大限度地提高破解速度。最后, - potfile-path参数用于将破解的哈希保存到指定的文件。
还可以执行混合攻击,其中数字组合被附加到词列表中的每个词的末尾。例如,“password12”和“password77”。
hashcat -a 6 -m 7100 /path/to/hash.txt /path/to/wordlists/everyword.txt ?d?d -w 4 --potfile-path /tmp/db.pot
使用-a 6参数启用混合攻击。这次包含479,000个英语单词的“ everyword ”单词表与?d?d结合使用,它告诉Hashcat将每个可能的两位数组合附加到单词表中的每个密码。要附加三位或四位数,请分别使用“?d?d?d”和“?d?d?d?d”。
在Hashcat运行时,将显示以下数据。如果密码正确猜测,它将出现在终端的底部,Hashcat将停止。
Session..........: hashcat
Status...........: Running
Hash.Type........: macOS v10.8+ (PBKDF2-SHA512)
Hash.Target......: $ml$27548$ba6261885e349ecb847854136cf32e9561cd1af65...d41a42
Guess.Base.......: File (/root/wordlists/passwords.txt)
Guess.Queue......: 1/1 (100.00%)
Speed.Dev.#1.....: 7740 H/s (98.63ms) @ Accel:256 Loops:64 Thr:512 Vec:1
Recovered........: 0/1 (0.00%) Digests, 0/1 (0.00%) Salts
Progress.........: 0/329968 (0.00%)
Rejected.........: 0/0 (0.00%)
Restore.Point....: 0/329968 (0.00%)
Candidates.#1....: 123456 -> zzzzzzzz9
HWMon.Dev.#1.....: Temp: 57c Fan: 31% Util:100% Core:1873MHz Mem:3802MHz Bus:16
[s]tatus [p]ause [b]ypass [c]heckpoint [q]uit =>
哈希破解注意事项
确定哈希将要破解多长时间很难推测。基于几个因素,字典和混合攻击可能需要不同的时间。
-
单词列表长度 - 显然,包含数十亿字的单词表可能需要数小时,数天甚至数月才能完成。在对macOS哈希执行暴力攻击时,建议使用特定于目标的小词列表。
-
散列迭代 - 并非所有macOS散列都是相同的。哈希迭代被用作“减速因子”,这在计算单个密码尝试时基本上迫使CPU和GPU花费更长的时间。在我对Mojave和High Sierra的测试中,迭代次数各不相同。在某些情况下,迭代次数设置为27,000。其他时间超过45,000。从我的一轮测试中不清楚这个值是随机设置还是特定于每个版本的macOS。有一件事是肯定的,这个值越大,Hashcat必须用来破解单个哈希的时间越长。较高的迭代次数可能是每秒25,000次密码尝试与1,000次密码尝试之间的差异。要确定提取的.plist中使用的迭代次数,请再次查看目标的哈希值(如下所示)。在哈希开始时,在第二个和第三个美元符号($)之间,迭代次数(27,
$ml$27548$ba6261885e...
-
GPU模型 - 使用旧的GeForce GTX 1060显卡和27,548次迭代的哈希,每秒可执行约8,000次密码尝试。所使用的GPU类型将极大地影响攻击的整体性能。建议不要使用早于GTX 750ti的GPU。
如何保护自己免受恢复模式攻击
用户可以采取一些措施来抵御此类攻击(见下文)。有关一般的macOS保护建议。
-
启用固件密码保护。要防止攻击者启动到实时USB,单用户模式或恢复模式,请设置固件密码。如果有人尝试将MacBook引导至单用户,启动管理器,目标磁盘或恢复模式,则固件仅在引导时提示输入其他密码。但是,如果从MacBook上物理移除磁盘,单独的固件密码将无法保护硬盘驱动器。要获得更多保护,请启用硬盘加密。
-
启用FileVault加密。可以通过导航到“系统偏好设置”,然后“安全和隐私”,然后单击“打开FileVault”(可能需要先解锁设置)来启用FileVault。完成后,每次Mac启动时,MacBook都会重新启动并需要密码才能解锁计算机。不允许任何帐户自动登录,访问单用户模式也需要密码。这是防止对加密磁盘进行攻击的最佳方法,即使它是从笔记本电脑中物理删除的。一个复杂的密码长度超过21个字符,建议以防止专用蛮力攻击的硬件。