Мне всегда было интересно, как мой Mac мог подключиться к Интернету, когда раздел восстановления загружен, а основной системный раздел заблокирован (filevault2).
Сегодня некоторые поиски показали (например, здесь , здесь , а также в askdifferent ), что пароль WiFi, очевидно, хранится в памяти NVRAM, и его необходимо сбросить, чтобы удалить пароль. Как человек, который заботится о безопасности, это неприемлемо для меня. Когда я использую Full Disk Encryption (т.е. Filevault2), я ожидаю, что система будет безопасна, в том числе и для моей сети.
Так есть ли способ запретить OS X сделать пароль доступным в разделе восстановления? Я не уверен, как и когда он попадет в NVRAM.
ОБНОВЛЕНИЕ1 : 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-recovery
и efi-boot-device
похоже, что они могут содержать зашифрованные данные.
nvram -p
можете узнать по выходным данным, какая переменная прошивки содержит пароль Wi-Fi? Если да, вы можете очистить только одну переменную без сброса всей NVRAM. Используйтеsudo nvram -d variable_name
в Терминале.Ответы:
Меня всегда удивляло одно и то же: как не позволить OS X хранить парольную фразу WPA (или PSK) в NVRAM.
Используя 'nvram', я никогда не мог найти переменную, которая, как мне казалось, содержала эти учетные данные. Сегодня я попробовал загрузиться с живого образа Linux на USB и запустить Chipsec . Его команда для перечисления переменных EFI имеет гораздо больше результатов, чем я получал, запустив nvram в OS X. Среди переменных в моем MacBook Pro (середина 2010 года) были:
Данные переменной current-network включают SSID моего домашнего маршрутизатора в виде открытого текста. Затем он дополняется 0 байтами до конца, что составляет 32 байта, и представляет 64 шестнадцатеричные цифры Pre-Shared Key (PSK) .
Preferred-сеть переменный выглядит таким же содержимое , как ток-сеть .
Безопасности пароль переменная содержит точно такое же количество байтов , как пароль EFI я установил, так что я предполагаю , что это пароль блокировки прошивки. Я подозреваю, что он использует какую-то маскировку / кодировку. У меня была теория, что эти пароли хранятся в виде кодов сканирования клавиатуры или чего-то еще, но у меня пока недостаточно информации.
Возможно, используя Chipsec или другой инструмент EFI, вы можете обнулить эти переменные EFI и установить для них флаг контроля доступа / разрешений, чтобы их нельзя было переписать. Возможно, даже обнуление их будет для вас обходным путем (если вам просто нужно перепродать ноутбук или что-то в этом роде). Мне неизвестно, регулярно ли их перезаписывает OS X или когда вы меняете свои учетные данные WPA.
РЕДАКТИРОВАТЬ : я только что узнал о команде для получения паролей Wi-Fi из NVRAM:
/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
списке есть текущая сеть, но список пуст