- Что такое TPM и почему он мешает расшифровать диск
- Архитектура защиты
- Как устроена защита
- Загрузка
- Системный раздел зашифрован BitLocker
- Смена метода шифрования накопителя
- Требования для восстановления данных с тома BitLocker
- Разблокировать диск, зашифрованный BitLocker, в среде Windows
- Как разблокировать зашифрованный Bitlocker диск, если Windows не загружается
- Восстановление данных с помощью пароля BitLocker
- Расшифровка тома Bitlocker с помощью ключа восстановления
- Как открыть зашифрованный BitLocker диск в Linux
- Пытаемся получить ключ шифрования из оперативной памяти
- Атака методом холодной загрузки
- Метод доступа через DMA
- Сниффер для TPM
- Страшный сон TPM
- Защита от взлома BitLocker
Что такое TPM и почему он мешает расшифровать диск
Trusted Platform Module (TPM) — технология безопасности, представленная в виде дополнительной микросхемы, впаянной или установленной на материнской плате компьютера. Несмотря на то, что устройства с TPM официально в Россию не поставляются, поскольку содержат несертифицированные средства шифрования, технология присутствует в большинстве ноутбуков.
Микросхема TPM либо впаяна в материнскую плату (но не включена в BIOS), либо, что бывает гораздо чаще, присутствует в «виртуальном» виде из-за использования платформы Intel PTT (Intel Platform Trust Technology).
Для пользователя и операционной системы между этими подходами нет практической разницы, но с точки зрения уязвимостей и их эксплуатации разница есть.
Если рассматривать модуль TPM как аппаратный «довесок», то он состоит из криптографического процессора и небольшого объема встроенной памяти. При этом для шифрования данных не используется криптографический сопроцессор — как, например, Apple сделала с чипом T2.
В рамках модели безопасности TPM основной функцией чипа является безопасное хранение и генерация криптографических ключей, а также аппаратный контроль за правомерностью их использования исключительно доверенными агентами. В типовой конфигурации операционная система Windows выступает в роли доверенного агента, и не какого-нибудь, а того, где был сгенерирован тот или иной криптографический ключ.
Разумеется, интерфейсы для работы с TPM и ключами шифрования доступны как для самой операционной системы, так и для ее компонентов и приложений, что тем не менее не означает полного отсутствия контроля.
Почему некоторые диски, зашифрованные BitLocker, можно взломать методом грубой силы, а другие, точно такие же, нельзя? Настораживает тот факт, что на таких дисках вообще не используется пароль — по сути, перебирать там нечего. Ключ шифрования хранится в аппаратном модуле TPM, и именно этот модуль будет решать, следует ли ключ выдается по запросу, запрещается доступ или полностью блокируется, и заставляет контейнер расшифровываться другим способом.
(В скобках отмечу, что «наоборот» — это резервный ключ, так называемый ключ восстановления доступа, он всегда сохраняется при создании тома, либо на диске, либо в облаке Microsoft, либо в Active Directory ключ шифрования диска, зашифрованный этим ключом, также хранится в заголовке тома BitLocker.)
Если вы сталкивались с экраном, подобным приведенному ниже, вы поймете, о чем я говорю.
Если хотите, можете прочитать, где взять ключ восстановления доступа. Продолжу рассказ о модулях TPM.
Архитектура защиты
С точки зрения пользователя, защита, предлагаемая TPM, не только полностью прозрачна, но и полностью невидима. Я много раз слышал случаи, когда владелец устройства утверждал, что шифрования нет — при этом системный раздел был зашифрован с помощью BitLocker. И если иногда можно было усомниться в заявлениях пользователей, то в других случаях их слова не вызывали подозрений.
Обычно это относится к функции шифрования устройства BitLocker, описанной в разделе Общие сведения о функции шифрования устройства BitLocker в Windows 10. Не вдаваясь в подробности, Windows (независимо от выпуска — эта функция поддерживается даже в Windows 10 Home) будет автоматически шифровать системный раздел в фон при выполнении нескольких условий:
- Устройство оснащено микросхемой TPM или технологией Intel PTT и включено.
- Устройство поддерживает режим Modern Standby.
- Пользователь с правами администратора вошел в систему с учетной записью Microsoft или использовал учетную запись домена для входа.
- Система автоматически сгенерирует ключ восстановления BitLocker и загрузит его в учетную запись Microsoft или Active Directory пользователя.
В ранних версиях Windows дополнительно требовалось, чтобы оперативная память была распаяна, а в качестве системы использовался твердотельный накопитель, но я не нашел упоминания об этом в последних версиях документации платформы.
Итак, вы вошли в систему как администратор с учетной записью Microsoft. Системный диск был зашифрован, а вы даже не заметили. Через некоторое время вы перезагрузили систему. Что-то изменилось в процессе загрузки? С точки зрения пользователя абсолютно ничего: компьютер запустился, Windows запросила пароль. На данный момент зашифрованный диск BitLocker уже разблокирован, но вы даже не прикасались к компьютеру. С какой стороны это называется защитой?
Но с чем. При проектировании архитектуры защиты разработчики Windows использовали модель угроз, предназначенную для предотвращения следующих событий:
- Войдите в операционную систему, минуя стандартные механизмы аутентификации.
- Извлекает диск и передает его на другой компьютер для последующей расшифровки.
- Запись и расшифровка образа диска.
- Загрузка компьютера с внешнего диска для расшифровки системного раздела.
- Измените конфигурацию загрузки, чтобы расшифровать системный раздел.
Таким образом, если вы знаете пароль для входа, вы не будете испытывать никаких неудобств, что диск зашифрован. Но если у вас нет пароля, вы даже не сможете запустить поиск: база данных SAM хранится на зашифрованном диске, и вы не будете иметь к ней доступа, пока не справитесь с шифрованием. Для параноиков доступны расширенные возможности безопасности: например, можно дополнительно установить пин-код на системный раздел, сохранить ключ на USB-накопителе или использовать оба способа одновременно. В разделе противодействия атакам упоминается именно этот метод.
Как устроена защита
BitLocker использует симметричное шифрование диска. По умолчанию используется AES со 128-битным ключом. В новых версиях Windows 10 используется режим XTS; более старые версии операционной системы и первый выпуск Windows 10 используют режим CBC.
Как именно выполняется шифрование: центральным процессором (командами AES-NI) или контроллером диска — сложный вопрос. До недавнего времени Windows предпочитала механизмы шифрования, встроенные в контроллер диска или SSD, но уязвимость в реализации таких механизмов, обнаруженная исследователями в ряде моделей, заставила Microsoft отказаться от этой практики и внедрить шифрование с использованием ЦП. Однако это относится только к вновь созданным томам; уже зашифрованные диски будут продолжать использовать механизм, использовавшийся при их создании.
С нашей точки зрения, оба механизма эквивалентны. Для расшифровки диска в любом случае нужен мастер-ключ, который можно получить одним из нескольких способов:
- Расшифруйте с помощью пароля, если раздел зашифрован таким образом.
- Расшифровать ключом восстановления).
- Извлечение непосредственно из TPM.
Я уже достаточно написал об атаках на пароли; извлечение ключа восстановления — интересная тема, заслуживающая отдельной статьи. Сейчас нас интересует только третий вариант — извлечение ключа из модуля TPM.
Загрузка
Модуль TPM или технология Intel PTT используется, в том числе, для аппаратного управления «доверенной загрузкой» (Trusted boot). Цель «доверенной загрузки» — обеспечить загрузку именно той операционной системы и той конфигурации, которая использовалась при создании ключей. Для этого используется технология, аналогичная блокчейну.
Выстраивается своеобразная «цепочка доверия» — последовательность блоков с информацией об этапах загрузки, расположенных в хронологическом порядке. Так же, как и в блокчейне, информацию в цепочке нельзя изменить — только дополнить. «Цепочка доверия» хранится в PCR (реестр конфигурации платформы).
Сначала рассмотрим работу механизма «доверенной загрузки» и роль модуля TPM без шифрования. Во время загрузки выполняются следующие операции.
- При включении компьютера управление берет на себя первый доверенный модуль SRTM (Статический корень доверия для измерения), который находится в доступной только для чтения области ПЗУ. Важный момент: SRTM по определению статичен и устойчив к изменениям. Уязвимость в этом модуле может поставить под угрозу всю систему безопасности, как это произошло в случае с уязвимостью checkm8, обнаруженной в загрузчиках Apple. Дополнительные сведения о SRTM и других технологиях см в разделе DRTM в ответе Stack Exchange «Как TPM выполняет измерения целостности в системе?».
- SRTM выполняет первую запись в цепочке: контрольная сумма BIOS записывается в регистр PCR0. Если в системе зарегистрирован руткит, доверенная цепочка загрузки будет прервана (см. Как System Guard в Защитнике Windows защищает Windows 10 от руткитов»).
- Теперь управление берет на себя надежный UEFI BIOS, который является дополнительным компонентом в цепочке. При этом анализируются многие параметры: таблица MBR, загрузчик и другие. В цепочку добавляется следующая контрольная сумма, при создании которой используется информация из предыдущего регистра PCR. Нарушение любого из компонентов приводит к изменению содержимого регистров PCR и прерыванию надежной загрузки.
- Управление передается загрузчику, который считывает и выполняет код с MBR-диска. Это добавляет еще несколько записей в цепочку загрузки.
- Запускается ядро операционной системы, которое добавляет следующие элементы в цепочку.
- Операционная система загружена. В результате на выходе получается набор данных в регистрах PCR, однозначно описывающий весь процесс загрузки. Содержимое регистров PCR защищено от модификации на аппаратном уровне модулем TPM.
Отлично, система загрузилась, содержимое регистров PCR указывает на доверенный статус загрузки. Теперь добавим шифрование.
Системный раздел зашифрован BitLocker
В предыдущем сценарии системный раздел не был зашифрован. Теперь представьте, что используется зашифрованная система.
Когда пользователь включает шифрование загрузочного раздела (или Windows автоматически шифрует загрузочный диск с помощью BitLocker Device Encryption в автоматическом режиме), мастер-ключ генерируется случайным образом. Кроме того, также создается ключ восстановления (тоже случайный набор данных).
Главный ключ хранится в модуле TPM, а его копия шифруется с помощью ключа восстановления и записывается в зашифрованном виде на головку диска. При этом обязательно сохраняется ключ восстановления (если иное не указано в политиках безопасности конкретной системы).
Если говорить об автоматическом шифровании устройства BitLocker, то ключ попадает в учетную запись Microsoft того пользователя с правами администратора, который впервые зашел в систему с учетной записью Microsoft (а не локальной учетной записью Windows) или в Active Directory. При инициированном пользователем шифровании ключ восстановления можно сохранить на диске или распечатать.
Итак, диск зашифрован, компьютер перезагружен. В котором:
- Модуль TPM удаляет содержимое всех регистров PCR.
- Шаги 1-5 доверенной загрузки системы выполняются до загрузки ядра. Загрузка ядра ОС возможна благодаря тому, что ядро системы хранится на отдельном небольшом разделе, который не зашифрован BitLocker, а файлы подкачки, гибернация и база данных SAM уже находятся на зашифрованном основном разделе.
- Ядро пытается продолжить загрузку. Это требует монтирования зашифрованного раздела, который, в свою очередь, требует ключа для его расшифровки. Ключ хранится в TPM; ядро запрашивает его у модуля.
- После получения запроса доверенный платформенный модуль анализирует содержимое PCR, чтобы проверить цепочку загрузки. Если все в порядке, модуль TPM выдаст системе ключ шифрования, ядро смонтирует системный раздел, и загрузка продолжится. Обратите внимание, что зашифрованный раздел BitLocker уже смонтирован, когда пользователь видит пароль учетной записи Windows.
- Если чип обнаруживает, что цепочка доверия разорвана, ключ не выдается. Пользователь увидит следующее сообщение.
Доверенный платформенный модуль может отказать в выдаче ключа, если системный компонент, участвующий в создании доверенной цепочки загрузки, изменен. Например, обновление UEFI BIOS, изменение MBR или загрузчика системы приведет к такому результату, о котором регулярно сообщают на форумах. Нарушение цепочки доверия особенно неприятно тем пользователям, которые даже не подозревали, что их загрузочный диск зашифрован.
В то же время требование ввести ключ восстановления встречается не так часто, как могло бы быть, учитывая частоту обновлений Windows. Почему? Дело в том, что при обновлении компонентов, участвующих в создании цепочки доверия, система временно отключает BitLocker на системном разделе.
В этом случае главный ключ расшифровывается и записывается на головку диска в виде открытого текста, что позволяет ядру монтировать зашифрованный раздел без отправки запроса в TPM. После обновления соответствующих компонентов Windows запишет ключ обратно в доверенный платформенный модуль, поддерживая доверенное состояние загрузки в актуальном состоянии.
Аналогичным образом необходимо обновить сторонние компоненты, например версии UEFI BIOS и микропрограммы для некоторых аппаратных компонентов (например, встроенных датчиков отпечатков пальцев). При обновлении этих компонентов пользователь обычно получает сообщение о том, что BitLocker необходимо приостановить.
Это можно сделать либо интерактивно из панели управления (Система и безопасность → Шифрование диска BitLocker → Приостановить защиту), либо из командной строки (manage-bde -pause) или PowerShell (Suspend-BitLocker). Как правило, соответствующий инструмент установки делает это автоматически.
Смена метода шифрования накопителя
В редакторе локальной групповой политики (не поддерживается Windows 10 Home) вы можете выбрать метод шифрования для дисков с данными. По умолчанию используется 128-битный XTS AES для несъемных дисков и 128-битный AES-CBC для съемных жестких дисков и флэш-накопителей.
Чтобы изменить метод шифрования:
- откройте редактор с помощью Выполнить (Win+R) и командой gpedit.msc
- Следуйте по пути: Конфигурация компьютера → Административные шаблоны → Компоненты Windows → Шифрование диска Bitlocker
- откройте «Выберите уровень шифрования диска и уровень стойкости шифра». В зависимости от вашей версии Windows (1511 или ниже), с которой будет взаимодействовать зашифрованный диск, выберите нужную локальную политику.
Выберите метод и нажмите «ОК”.
После изменения политики Bitlocker сможет защитить паролем новый носитель с выбранными параметрами.
Требования для восстановления данных с тома BitLocker
Чтобы восстановить данные с диска, зашифрованного BitLocker, у вас должна быть хотя бы одна из следующих функций защиты BitLocker:
- Пароль BitLocker (тот самый, который вы вводите в графическом интерфейсе Windows при разблокировке зашифрованного диска);
- Ключ восстановления BitLocker;
- Системный загрузочный ключ (boot key — .bek) — ключ на флешке, позволяющий автоматически расшифровывать загрузочный раздел, не требуя от пользователя ввода пароля.
Ключ восстановления BitLocker представляет собой уникальную последовательность из 48 символов. Ключ восстановления генерируется при создании тома Bitlocker, его можно распечатать (и хранить в надежном месте, например в сейфе), сохранить в виде текстового файла на локалку (это не рекомендуется, т.к диск поврежден, вы не сможете расшифровать свои данные) или внешний диск, или сохранить в свою учетную запись Microsoft.
Ключ восстановления Bitlocker можно найти в вашей учетной записи Microsoft по адресу https://onedrive.live.com/recoverykey .
Администратор также может настроить ключи восстановления BitLocker для хранения в учетной записи компьютера в Active Directory.
Если у вас нет доступа к ключу восстановления, вы больше не сможете получить доступ к своим данным. В конце концов, BitLocker предназначен только для защиты ваших файлов от посторонних.
Несколько нюансов по поводу восстановления данных с диска BitLocker. Данные должны быть восстановлены на отдельный диск, размер которого не должен быть меньше размера поврежденного диска. В процессе восстановления все содержимое на этом диске будет стерто и заменено расшифрованными данными из тома BitLocker.
В нашем примере диск F: (размер 2 ГБ) — это флешка, содержимое которой зашифровано с помощью BitLocker. Почему-то эта флешка не открывается. Для восстановления данных мы установили дополнительный внешний диск Data (G:), емкостью (10 ГБ).
Разблокировать диск, зашифрованный BitLocker, в среде Windows
Самая простая ситуация, когда вам нужно разблокировать зашифрованный BitLocker диск в самой Windows. Возможно, у вас есть внешний диск или флэш-накопитель USB, защищенный BitLocker, который не открывается, или вы хотите открыть зашифрованный диск на другом компьютере.
Подключите диск к компьютеру и перейдите в Панель управления -> Система и безопасность -> Шифрование диска BitLocker (доступно в Профессиональной и более поздних версиях Windows).
В списке дисков выберите зашифрованный BitLocker диск и нажмите кнопку Разблокировать диск.
В зависимости от метода безопасности введите пароль, PIN-код восстановления и подключите смарт-карту. Если вы не знаете пароль, но у вас все еще есть ключ восстановления, выберите Дополнительные параметры —> Введите ключ восстановления.
Если у вас есть несколько ключей восстановления, вы можете определить, какой ключ восстановления вам нужен, используя идентификатор, отображаемый в окне. Если вы ввели правильный ключ, диск будет разблокирован, и вы сможете получить доступ к данным на нем.
Как разблокировать зашифрованный Bitlocker диск, если Windows не загружается
Давайте рассмотрим ситуацию, когда ваш системный диск зашифрован с помощью Bitlocker и по какой-то причине Windows перестала загружаться (синий экран смерти, зависание при запуске, неправильные обновления и т.д.)
Попробуйте запустить среду восстановления Windows (она запускается автоматически, если Windows не запускается 3 раза подряд). Если WinRE не работает, вы можете загрузить компьютер с установочного диска Windows 10, диска восстановления MsDaRT или другого загрузочного диска. Чтобы запустить командную строку, выберите «Отладка» -> «Дополнительные параметры» -> «Командная строка» или нажмите Shift+F10.
Проверяем состояние всех дисков на компьютере в окне командной строки (так находим зашифрованный Bitlocker диск):
Управлять статусом bde
В результате выполнения команды один (или несколько) дисков должен содержать следующий текст: «Шифрование диска BitLocker: том D». Итак, у вас зашифрован диск D.
Разблокируйте его, выполнив команду:
управлять-bde -разблокировать D: -pw
Команда запросит пароль BitLocker:
Введите пароль, чтобы разблокировать этот том:
Если пароль правильный, появится сообщение:
Пароль разблокировал том D:.
Ваш диск расшифрован, и вы можете приступить к восстановлению операционной системы.
Чтобы полностью отключить защиту диска BitLocker, запустите:
manage-bde -protectors -disable D:
Перезагрузите компьютер. Теперь загрузочный диск не зашифрован.
Читайте также: Как передать файлы с телефона на компьютер – скачать информацию (фото, документы, видео) и быстро переместить
Восстановление данных с помощью пароля BitLocker
В первую очередь попробуйте восстановить данные таким способом (подойдет на Windows 10, 8.1/Server 2012/R2/2016 и выше):
- Запустите командную строку с правами администратора:
- Запустите команду:
ремонт-bde F:G:-pw –Force
, где F: диск с данными Bitlocker, G: диск, на который вы хотите извлечь расшифрованные данные; - Во время выполнения команды необходимо указать пароль Bitlocker (тот же, который пользователь вводит в графическом интерфейсе Windows для доступа к зашифрованному тому).
Расшифровка тома Bitlocker с помощью ключа восстановления
Для расшифровки данных, расположенных на поврежденном томе, содержимое которого зашифровано Bitlocker, нам нужен ключ восстановления или ключ загрузки системы (если системный раздел зашифрован).
Запустите восстановление данных с помощью ключа восстановления:
ремонт-bde F:G:-rp 288409-515086-417208-646712-162954-590172-127512-667568 –Force
Если для шифрования системного раздела с Windows используется Bitlocker, а для загрузки системы используется специальный загрузочный ключ на флешке, зашифрованный том можно расшифровать следующим образом:
repair-bde F: G: -rk I:3F558473-943D-4330-8449-62C36BA53345.BEK –Force
Где файл 3F558473-943D-4330-8449-62C36BA53345.BEK — ключ шифрования диска BitLocker на флешке I: (по умолчанию этот файл скрыт).
После выполнения процедуры восстановления данных и расшифровки, перед открытием диска, на который было извлечено содержимое тома Bitlocker, необходимо его подтвердить. Для этого выполните следующую команду и дождитесь ее завершения:
Чкдск G: /f
Примечание. Если вам не удалось восстановить данные с зашифрованного диска вышеперечисленными способами, попробуйте создать посекторную копию поврежденного диска с помощью утилиты DDRescue Linux (или другой аналогичной утилиты для восстановления данных с поврежденных разделов). Затем попробуйте восстановить данные из полученной копии по описанному сценарию.
Как открыть зашифрованный BitLocker диск в Linux
Вы также можете открыть зашифрованный BitLocker диск из Linux. Для этого вам понадобится средство DisLocker и ключ восстановления BitLocker .
В некоторых дистрибутивах (например, Ubuntu) уже есть инструмент для блокировки. Если инструмент не установлен, загрузите и скомпилируйте его вручную.
tar -xvjf dislocker.tar.gz
Файл INSTALL.TXT предлагает вам установить пакет libfuse-dev:
sudo apt-get установить libfuse-dev
Теперь соберите пакет.
cd src/сделать сделать установить
Перейдите в каталог mnt и создайте два каталога (для зашифрованного и расшифрованного раздела):
cd /mntmkdir Encr-partmkdir Decr-part
Найдите зашифрованный раздел (команда fdisk -l) и расшифруйте его с помощью ключа восстановления другого каталога.
dislocker -r -V /dev/sdb1 -p your_bitlocker_recovery_key /mnt/Encr-part
В этом примере мы используем инструмент DisLocker в режиме FUSE (Файловая система в пользовательском пространстве, что позволяет непривилегированным пользователям создавать свои собственные файловые системы. В режиме FUSE расшифровывается только блок, к которому система имеет доступ («на лету»), Это увеличивает время доступа к данным, но этот режим намного безопаснее.
Монтируем раздел:
mount -o loop Driveq/dislocker-file /mnt/Decr-part
Теперь вы должны увидеть все файлы в зашифрованном разделе.
Допустим, у вас в руках компьютер (чаще всего ноутбук), системный раздел которого зашифрован, а пароль для входа в аккаунт неизвестен, или в случае пользователей, которые чаще всего сталкиваются с такой проблемой , «не подходит». Цель — получить доступ к данным, среди которых конечно много ценных уникальных файлов, и конечно нет ни одного бэкапа (иначе они не были бы уникальными, правда?).
Даже если системный раздел зашифрован, первым шагом будет создание образа диска. Для этого вам, скорее всего, потребуется загрузиться с флешки — вариантов тут множество, от разных версий Linux до универсальных средств вроде Elcomsoft System Recovery.
Затем проанализируйте заголовок тома BitLocker и попытайтесь определить, какие средства защиты можно использовать для подключения диска. Проще всего это сделать в Elcomsoft System Recovery, где отобразится список протекторов, доступных для конкретного тома.
Чаще всего предохранители включают доверенный платформенный модуль или пароль. Комбинации TPM + PIN или TPM + USB встречаются гораздо реже. Почти всегда в списке протекторов есть ключ восстановления. Вот полный список возможных комбинаций протекторов:
- Ключ восстановления, ключ восстановления. Почти всегда присутствует. Позволяет разблокировать том, введя длинный ключ восстановления (генерируется при создании тома);
- ТПМ. «Вы здесь». Ключ, хранящийся в TPM;
- Пароль. Чаще всего используется для шифрования внешних дисков и несистемных разделов. Крайне редко встречается на загрузочных дисках;
- USB. Эдакий «колхоз», позволяющий активировать защиту BitLocker на загрузочном диске, если на компьютере нет ни модуля TPM, ни поддержки Intel PTT. Для активации нужно редактировать политики Windows, поэтому относится к разряду экзотических;
- TPM + PIN-код, TPM + USB, TPM + PIN-код + USB. Для этих комбинаций потребуются все перечисленные протекторы. Они крайне редки. Комбинация TPM + PIN-код рекомендуется в документации Microsoft в качестве защиты от определенных типов атак.
Пытаемся получить ключ шифрования из оперативной памяти
Самый простой способ получить доступ к зашифрованному разделу, работающему независимо от установленных протекторов, — это извлечь ключ шифрования непосредственно из оперативной памяти компьютера. Это самый известный тип атаки, от которого очень сложно защититься. Но даже Microsoft признает, что полностью защитить содержимое зашифрованного диска от злоумышленника, который может проникнуть в компьютер, сложно или даже невозможно.
Ключ шифрования попадает в оперативную память компьютера на завершающем этапе доверенной загрузки, когда ядро системы начинает загружать ОС. Отследить этот момент легко: в системе появится окно входа, где будет запрошен пароль.
Microsoft активно продвигает авторизацию без пароля — простой PIN-код, обычно состоящий из четырех цифр. Всего четыре цифры? У вас может возникнуть соблазн попытаться угадать PIN-код. Почему ПИН-код лучше пароля, подробно объясняет, почему не стоит.
Исключением является использование дополнительного протектора (например, комбинации TPM + PIN). В этом случае доверенный платформенный модуль не выдаст ключ, пока не будет введен правильный PIN-код. Попытка поднять его — плохая идея (см врезку).
Конечно, если известен пароль (или PIN) от аккаунта, расшифровка тома тривиальна: достаточно сделать образ оперативной памяти и начать поиск ключей шифрования (это возможно, например, в портативной версии Elcomsoft Forensic). Расшифровка диска). Нас также интересует вариант, когда пароль от аккаунта неизвестен.
Атака методом холодной загрузки
Метод основан на том, что содержимое оперативной памяти компьютера сбрасывается не сразу, а только через некоторое время после отключения питания. Если модули ОЗУ охлаждаются до отрицательной температуры, время выдержки становится вполне достаточным, чтобы успеть переставить модули в тестовом стенде, а затем сразу начать загрузку в Linux с расширением ядра LiME.
Последовательность действий здесь такая:
- Получаем доступ к модулям оперативной памяти. Если они впаяны, то метод не сработает.
- Включаем исследуемый компьютер, ждем окно запроса пароля.
- Заморозить модули оперативной памяти.
- Отключаем питание (ни в коем случае не используем функцию выключения!).
- Быстро переносим модули на испытательный стенд.
- Загрузитесь сразу с флешки, извлеките дамп памяти.
- Мы пытаемся найти ключи шифрования.
Метод сложный и рискованный; он редко используется даже в оборудованных лабораториях.
- Достоинства метода: высокая эффективность, сложность защиты.
- Недостатки: Чрезвычайно сложный и трудоемкий, высокий риск повреждения оборудования.
Метод доступа через DMA
Если ваш компьютер оснащен интерфейсом FireWire, Thunderbolt 3 или PC Card и работает под управлением более старой версии Windows, вы можете попробовать получить доступ к содержимому оперативной памяти через них. Атака основана на том, что перечисленные выше интерфейсы имеют прямой доступ к шине PCI, которая, в свою очередь, имеет прямой доступ к памяти компьютера (Direct Memory Access, DMA).
Сам образ памяти создается инструментом Inception для Linux.
К сожалению, метод сильно устарел: работал на компьютерах под управлением Windows 7 и 8. Уже в Windows 8.1 прямой доступ к памяти был закрыт, если система находится в спящем режиме или экран устройства заблокирован (окно с запросом пароля для входа в появляется). Если вам повезло и вам удалось создать дамп памяти, вы можете исследовать его в Elcomsoft Forensic Disk Decryptor в полностью автоматическом режиме.
- Достоинства метода: простота использования.
- Минусы: эксплойт давно закрыт, работает только на старых системах, требует портов FireWire, Thunderbolt 3 или PC Card.
Сниффер для TPM
Еще одна уязвимость TPM заключается в самой архитектуре модуля. Возможно, именно этот метод представляет наибольший интерес по совокупности факторов. С одной стороны, он не требует охлаждения модулей оперативной памяти и работает на всех современных системах, использующих TPM; с другой стороны, для его использования требуется специальное оборудование и опыт работы с паяльником, а для систем, использующих эмулятор Intel PTT вместо модуля TPM, он вообще не подойдет.
Связь аппаратного модуля TPM с остальными компонентами компьютера организована через шину данных Low Pin Count (LPC) или последовательный периферийный интерфейс (SPI).
Оба варианта используются для передачи данных с устройств, работающих на низкой скорости. Шина LPI работает на частоте 33 МГц, а данные передаются открытым текстом без шифрования. Следовательно, возможен перехват передаваемого мастер-ключа с помощью атаки «человек посередине». Для этого подключитесь к шине LPC (или интерфейсу SPI) и используйте логический анализатор.
Денис Андзакович продемонстрировал, как работает этот метод, извлекая ключи BitLocker из TPM.
Методы немного отличаются для TPM 1.2 и TPM 2.0. В первом случае Денис использовал логический анализатор DSLogic Plus с интерфейсом USB. Несмотря на успех атаки, автору пришлось преодолеть слишком много препятствий в решении проблем с синхронизацией и декодированием.
Сегодня встретить TPM версии 1.2 уже сложно; большинство устройств, где доступен этот модуль, используют версию 2.0. Для нее решение оказалось еще проще: Денис использовал модуль FPGA с интерфейсом USB Lattice ICEStick, в который была загружена специализированная прошивка для сниффинга TPM-модулей.
Подключение осуществляется к контактам GND, LCLK, LFRAME#, LRESET# и LAD0:3. Для анализируемого Денисом устройства Surface 3 (кстати, оперативная память в нем распаяна специально для противодействия атакам холодного старта) пришлось использовать паяльник, но для десктопных версий чипа достаточно будет просто подключить к разъему.
Затем Денис выполняет команду
1 | $sudo python3 parse/read_serial.py/dev/ttyUSB1 |tee log1 |
и запускает устройство. Вот как это выглядит на экране.
Данные от FPGA структурированы следующим образом:
1 | b’32-битный адрес 8-битные данные чтение (00) или запись (02)’ |
Для извлечения главного ключа тома использовалась следующая команда:
12 | $cut-f2-d’ log1 | grep ’24..00$’ > | perl -pe ‘s/.{8}(..) eddc44e588459ebdb244d97baa |
Мастер-ключ был получен:
1 | 9a126146b5b285c93f7c4bcd372f91d0181fe7eddc44e588459ebdb244d97baa |
Затем Денис монтирует том с помощью утилиты dislocker, предназначенной для работы с зашифрованными томами BitLocker в Linux.
Интересно, что модули TPM 2.0 поддерживают зашифрованный обмен трафиком — теоретически это может предотвратить подобные атаки. Однако Windows не использует этот режим, поэтому уязвимость еще не закрыта.
- Плюсы метода: работает всегда, если используется аппаратный модуль TPM и нет предварительного предохранителя (например, TPM+PIN).
- Недостатки: достаточно высокая трудоемкость, требуется дополнительное оборудование, легко предотвратить вводом дополнительного загрузочного PIN-кода.
Страшный сон TPM
Сравнительно недавно была обнаружена следующая уязвимость. В 2018 году корейские исследователи Сынхун Хан, Ук Шин, Джун Хёк Пак и ХёнЧхун Ким из Исследовательского института национальной безопасности представили на конференции Usenix исследовательскую работу под названием «[Ужасный сон]».
Исследователи обнаружили, что когда компьютер переходит в спящий режим, модуль TPM сохраняет регистры в NVRAM и восстанавливает их при выключении. Выяснилось, что в некоторых моделях модулей TPM есть возможность подменить содержимое регистров PCR и получить доступ к внутреннему журналу TPM, что позволяет узнать всю «цепочку доверия» при обычной загрузке системы.
Исследователи уведомили об уязвимости производителей материнских плат, в том числе Intel, Lenovo, Gigabyte, Dell и HP, которые выпустили обновления BIOS для устранения уязвимости. Однако на многих компьютерах по-прежнему работают более старые версии BIOS, что позволяет использовать уязвимость.
Исследователи выпустили два инструмента, первый из которых позволяет проверить наличие уязвимости в модуле TPM, а второй — использовать уязвимость в случае ее обнаружения.
Проверка уязвимости: Napper для TPM.
Эксплуатация уязвимости: Bitleaker.
Чтобы проверить наличие уязвимости, загрузите образ Live CD с https://github.com/kkamagui/napper-for-tpm/releases, запишите его на USB-накопитель, перезагрузите компьютер, сначала отключите безопасную загрузку в BIOS и выберите Нэппер из меню.
После загрузки запустите Napper, щелкнув соответствующий значок. Подробная инструкция представлена на этой странице.
При обнаружении уязвимости отображается соответствующее сообщение.
К сожалению, завершить эксперимент на своем компьютере не удалось: вместо модуля TPM я использую эмулятор Intel PTT, неуязвимый для данного вида атак. Если обнаружена уязвимость, следующим шагом будет запуск инструмента Bitleaker.
Защита от взлома BitLocker
В статье о смягчении последствий BitLocker описывается, как Microsoft противостоит этим атакам. (Поскольку Microsoft использует автоматический перевод на русский язык очень низкого качества, рекомендую прочитать статью на языке оригинала.)
От прямого доступа к памяти через FireWire/Thunderbolt спасает механизм защиты портов DMA, появившийся в Windows 10 версии 1803 (апрель 2018). Начиная с этой версии Windows, новые устройства на базе процессоров Intel имеют базовую защиту от атак DMA через порты Thunderbolt 3, включенную по умолчанию. Однако отмечу, что защита доступна только для относительно недавних компьютеров, так как для ее активации требовалось изменение прошивки и/или BIOS. Например, на моем не самом старом компьютере, построенном на базе Intel Core i7 9-го поколения менее года назад, эту защиту не удалось активировать.
Проверить, защищен ли ваш компьютер, можно с помощью встроенной в Windows утилиты MSINFO32.EXE.
Microsoft рекомендует защищаться от атак получением мастер-ключа из памяти вашего компьютера, установив дополнительный предварительный протектор — PIN-код, который потребует TPM-чип для продолжения загрузки. Точно так же компания рекомендует защитить себя от прослушивания TPM: абсолютно ничего не изменится, если вам удастся подсмотреть данные, не зная PIN-кода.
Попытка подобрать PIN-код быстро введет модуль TPM в режим паники, где он либо вообще откажется сотрудничать, либо сделает вид, что все в порядке, но не выдаст ключ шифрования, даже если введенный PIN-код превратится чтобы быть правильным.
Однако от атаки с холодной загрузкой, если в руки злоумышленника попадал включенный компьютер с уже разблокированным диском BitLocker, четкой защиты не предлагалось: разработчики с тоской отмечают, что «метод не защищает от физических атак при злоумышленник получает физический доступ к компонентам компьютера, открыв крышку устройства».
Разработчики рекомендуют защищаться от атаки под названием «кошмар» одним из трех способов: ввести загрузочный PIN-код (совпадает с рекомендацией Microsoft), обновить BIOS или отключить гибернацию в настройках BIOS.