Как предотвратить сохранение пароля WiFi на разделе восстановления?

11

Мне всегда было интересно, как мой 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похоже, что они могут содержать зашифрованные данные.

N1000
источник
Судя по одной из ваших последних публикаций, у вас есть MacBook Pro (середина 2012 года), верно? Если да, то это Intel Base Mac и не имеет PRAM, как это было с Mac на базе PowerPC. Mac на базе Intel имеют NVRAM. Пожалуйста, предоставьте ссылку на статью, которую вы упомянули.
user3439894
@ user3439894 спасибо за урок истории :) Обновил вопрос. Я думаю, что эта проблема не зависит от Mac и OS X (заметили это впервые в 10.7).
n1000
1
Вы спросили: « Есть ли способ запретить OS X сохранять пароль в разделе восстановления? », И по предоставленным вами ссылкам выясняется, что пароль хранится в NVRAM, а не в разделе Recovery HD, две разные вещи. Если в Терминале, который вы используете, вы nvram -pможете узнать по выходным данным, какая переменная прошивки содержит пароль Wi-Fi? Если да, вы можете очистить только одну переменную без сброса всей NVRAM. Используйте sudo nvram -d variable_nameв Терминале.
user3439894
@ user3439894 Интересно. Я обновил вопрос.
n1000

Ответы:

15

Меня всегда удивляло одно и то же: как не позволить 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списке есть текущая сеть, но список пуст
n1000
Благодарю. Я добавил правку с примечанием о том, как удалить переменную, но я не знаю, как предотвратить ее возвращение.
Майк Майерс
Разве вам не нужно работать от имени пользователя root для доступа к nvram? Похоже, они шифруют пароль. Разве этого не должно быть достаточно с точки зрения безопасности?
видеогай
Вам не нужно запускаться с правами root для чтения nvram, но его нужно удалить.
Майк Майерс
1
Что касается того, шифруют ли они пароль: учетные данные беспроводной сети хранятся не как пароль / фраза-пароль, а на самом деле PSK, который находится в двоичном формате. Когда он отображается, он может выглядеть зашифрованным, но это не так. Это закодированная шестнадцатеричная строка. С командой airportd читать легче, чем когда вы запускаете команду nvram. Я только что протестировал с OS X 10.11, и метод команды nvram все еще работает. Что касается airportd, то теперь он игнорирует команду readNVRAM, независимо от того, являетесь ли вы пользователем root или нет. Я не уверен, что они изменились. На его странице руководства все еще говорится, что команда существует, но она больше не работает?
Майк Майерс