Полученный пароль можно использовать для разблокировки Мака с целью получения полного доступа.
Автор: Ulf Frisk
FileVault2 позволяет злоумышленникам, обладающим физическим доступом к заблокированному или спящему Маку, получить пароль в чистом виде при помощи устройства стоимостью 300$, поддерживающего интерфейс Thunderbolt. Полученный пароль можно использовать для разблокировки Мака с целью получения полного доступа. Для устранения проблемы необходимо накатить патчи, выпущенные компанией Apple в декабре 2016 года.
Все, включая ваших коллег, полицию, завистливую домработницу или вора (список далеко не полный), могут получить полный доступ к вашим данным в случае наличия физического доступа к системе. Исключение: если ваш Мак полностью выключен. Если спящий режим – Мак остается уязвимым.
Сценарий до безобразия прост. Подключаете к Маку устройство, поддерживающее Thunderbolt , инициируете перезагрузку (комбинация клавиш ctrl + cmd + power) и в течение 30 секунд ждете отображение паролей. Весь процесс продемонстрирован на видео ниже:
Как такое возможно?
По сути, подобное возможно по двум причинам.
Первая проблема – перед стартом Мак не защищает себя от атак, связанных с прямым доступом к памяти (Direct Memory Access, DMA). EFI (Extensible Firmware Interface; Расширяемый Интерфейс Прошивки), используемый на ранней стадии, позволяет вредоносным устройствам, поддерживающим интерфейс Thunderbolt, читать и писать в память. На этой стадии MacOS еще не запустился и располагается на зашифрованном диске, который должен быть разблокирован перед стартом операционной системы. После запуска MacOS, по умолчанию активируются DMA-защиты.
Вторая проблема – пароль к FileVault хранится в открытом виде в памяти и после расшифровки диска автоматически не удаляется, а кладется в различные участки памяти – которые перемещаются в процессе перезагрузок, но внутри ограниченного диапазона.
Обе проблемы сильно упрощают получение пароля. Нужно лишь подключить устройство для DMA-атаки и перезагрузить MacOS. После перезагрузки ранее активированные DMA-защиты отключаются, но содержимое, включая пароли, остается в памяти. Существует временное окно, длинной несколько секунд, перед тем, как участок памяти, содержащий пароль, перезаписывается.
Рисунок 1: Схема подсоединения устройства PCILeech, предназначенного для DMA-атаки, к ноутбуку с MacOS
После подсоединения PCILeech на машине злоумышленника запускается команда mac_fvrecover.
Рисунок 2: Получение пароля из FileVault при помощи PCILeech. Корректный пароль – DonaldDuck
Детали реализации атаки
После ввода пароль хранится в памяти в кодировке Unicode. Если комбинация состоит только из символов Ascii, каждые два байта будут нулевыми. В окне пароля вводим «случайную» фразу, которая не встречается в памяти. В нашем примере используется последовательность eerrbbnn, которая в памяти хранится как 6500650072007200620062006e006e. При попытке найти эту последовательность с помощью PCILeech вы заметите, что фраза хранится в нескольких областях памяти, как показано на рисунке ниже.
Рисунок 3: Поиск в памяти закодированной тестовой последовательности eerrbbnn
После нахождения участков памяти, можно считать информацию. Возможно, потребуется повторное подключение оборудования к Маку, если первый акт завершился неудачно.
Если найдены правильные участки, пароль виден невооруженным взглядом. Дополнительно можно просканировать другие сигнатуры, например, phd0, находящейся вначале страницы памяти.
Рисунок 4: Фраза в начале участка памяти
Можно ли реализовать эту атаку самостоятельно?
Легко! Загрузите приложение PCILeech с Github и закажите оборудование. Извлечение пароля успешно тестировалось на нескольких моделях Macbook и Macbook Air (все с интерфейсом Thunderbolt 2). Схема не тестировалась на более новых Маках с коннектором USB-C.
Взлом пароля может не получиться, если используются специальные символы, которые не включены в Ascii. В таких случаях дамп памяти будет сохранен, и поискать пароль можно вручную.
Не забывайте, что реализация подобных схем на Маках, которые вам не принадлежат, противоречит закону.
Дополнительные замечания
Извлечение пароля лишь одна из возможностей, доступных до тех пор, пока вы не накатите свежие обновления. Поскольку EFI-память перезаписывается, можно осуществить еще более неприятные вещи.
Хронология событий выглядит следующим образом:
Конец июля: найдена проблема.
Заключение
Обновление от Apple полностью закрыло проблему. По крайней мере, в той степени, в которой мне удалось проверить. Теперь доступ к памяти невозможен до загрузки macOS. На данный момент macOS – одна из самых безопасных платформ с точки зрения данного вектора атаки.
Ваша приватность умирает красиво, но мы можем спасти её. Присоединяйтесь к нам!