如何防止将WiFi密码存储在恢复分区上?


13

我一直想知道引导恢复分区并且锁定主系统分区(filevault2)后,Mac如何连接到Internet。

今天,一些谷歌搜索发现(例如,此处此处以及在askdifferent上),WiFi密码显然存储在NVRAM中,并且需要重置以删除密码。作为一个有安全意识的人,这对我来说是无法接受的。使用全盘加密(即Filevault2)时,我希望系统相对于我的网络来说也很安全。

那么有没有办法防止OS X在恢复分区中提供密码?我不确定它最初是如何或何时进入NVRAM的。

UPDATE1:NVRAM包含以下键:(nvram -p):

BootCampHD
SystemAudioVolume
SystemAudioVolumeDB
aht-results
backlight-level
bluetoothActiveControllerInfo
bluetoothInternalControllerInfo
boot-gamma
efi-apple-recovery
efi-boot-device
efi-boot-device-data
fmm-computer-name
good-samaritan-message
gpu-policy
prev-lang:kbd

密钥efi-apple-recoveryefi-boot-device它们看起来可能包含加密的数据。


根据您最近发表的一篇文章,您拥有MacBook Pro(2012年中),对吗?如果是,则这是基于Intel的Mac,并且不具有基于PowerPC的Mac的PRAM。基于Intel的Mac具有NVRAM。请提供您提到的文章的链接。
user3439894 2015年

@ user3439894感谢您的历史课:)更新了问题。我猜这个问题独立于Mac和OS X(在10.7中首先注意到)。
n1000

1
您询问“ 那么有没有一种方法可以防止OS X将密码存储在恢复分区上? ”,并且从您提供的链接中可以看出,密码存储在NVRAM中而不是Recovery HD分区中,这是两件事。如果在终端中使用,nvram -p可以从输出中得知哪个固件变量持有Wi-Fi密码?如果是,则可以仅清除一个变量,而无需重置整个NVRAM。sudo nvram -d variable_name在终端中使用。
user3439894 2015年

@ user3439894有趣。我更新了问题。
n1000

Answers:


17

我一直想知道同一件事:如何防止OS X将WPA密码(或PSK)存储在NVRAM中。

使用“ nvram”,我无法找到我认为拥有这些凭据的变量。今天,我尝试启动Linux的USB活动映像并运行Chipsec。它列出EFI变量的命令比在OS X中运行nvram获得的结果要多得多。MacBook Pro(2010年中)中的变量包括:

  • 当前网络
  • 首选网络
  • 安全密码

目前的网络变量的数据包括我的家庭路由器的SSID,在明文。然后将其填充0字节直到结尾,即32字节,并表示预共享密钥(PSK)的64个十六进制数字。

优选的网络变量看起来像相同的内容当前的网络

安全密码变量持完全相同的字节数为EFI密码我设置的,所以我想这是固件锁定密码。我怀疑它使用了某种掩蔽/编码。我的一种理论是,这些密码存储为键盘扫描码或其他内容,但是我还没有足够的信息。

也许使用Chipsec或其他EFI工具,您可以将这些EFI变量清零并在它们上设置访问控制/权限标志,以使它们无法被重写。也许甚至将它们归零也可以为您解决(如果您只需要转售笔记本电脑之类的东西)。我不知道OS X是否定期重写它们,还是仅在更改WPA凭据时才重写它们。

编辑:我刚学到一个从NVRAM检索wifi密码的命令: /usr/libexec/airportd readNVRAM

另外,通过附加GUID,nvram实际上可以读取以下值:

  • nvram 36C28AB5-6566-4C50-9EBD-CBB920F83843:current-network
  • nvram 36C28AB5-6566-4C50-9EBD-CBB920F83843:preferred-networks
  • nvram 36C28AB5-6566-4C50-9EBD-CBB920F83843:preferred-count

因此,也许您可​​以将这些变量吹走,看看它如何进行。

编辑2:如先前的评论所述,删除EFI变量的方法如下(删除需要使用sudo):sudo nvram -d 36C28AB5-6566-4C50-9EBD-CBB920F83843:current-network

目前尚不清楚该变量是否会返回。


有趣的见解。如果您了解更多信息,请及时向我们更新!恕我直言,这个问题的完整答案理想上将提供一些删除密码的说明...当我这样做时/usr/libexec/airportd readNVRAM,列出的是当前网络,但Recovery Networks列表为空。
n1000

谢谢。我添加了有关如何删除变量的注释的编辑,但是我不知道如何防止其返回。
Mike Myers

您不是必须以root用户身份运行才能访问nvram吗?看起来他们在加密密码。从安全角度来看,这还不够吗?
videoguy

您无需以root用户身份运行即可读取nvram,但确实需要将其删除。
Mike Myers 2015年

1
至于它们是否加密密码:无线网络凭据不是存储为密码/口令,而是存储为PSK(二进制)。当显示时,它看起来可能是加密的,但实际上不是。这是一个编码的十六进制字符串。使用airportd命令比运行nvram命令更容易阅读。我刚刚使用OS X 10.11进行了测试,并且nvram命令方法仍然有效。至于机场,无论您是否是root用户,现在似乎都忽略了“ readNVRAM”命令。我不确定他们改变了什么。它的手册页上仍然显示该命令存在,但是它不再有效?
Mike Myers 2015年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.