Исследование компьютера, системный накопитель которого зашифрован посредством BitLocker, может оказаться намного сложнее, если ключ шифрования основан не на установленном пользователем пароле, а на данных, которые защищены аппаратным модулем TPM. В этом исследовании рассказывается об особенностях защиты ключей в TPM и возможных способах обхода этой защиты.
Что такое TPM и как он мешает исследовать компьютер
Trusted Platform Module (TPM) — система хранения криптографических ключей в персональных компьютерах. Она может быть реализована как в виде отдельного чипа, установленного на материнской плате компьютера, так и являться частью центрального процессора (технология Intel PTT). Отдельный чип TPM чаще всего распаян на материнской плате, но для некоторых плат поставляется отдельным модулем.
Чипы TPM Infineon Optiga:
Отдельный модуль TPM для материнских плат Asus:
Система состоит из криптографического процессора и встроенной памяти. Официально устройства с TPM в Россию не поставляются, так как содержат несертифицированные средства шифрования. Однако, наши российские коллеги регулярно сталкиваются с компьютерами, на которых этот чип присутствует. TPM обеспечивает генерацию, хранение и ограничение использования криптографических ключей. Операционные системы предоставляют разработчикам интерфейсы для работы с TPM, а также используют TPM для работы с ключами шифрования.
В этой статье я расскажу про Windows Bitlocker, который используется для шифрования дисков, и который может для этих целей использовать TPM модуль.
При проектировании системы шифрования дисков разработчики Windows использовали модель угроз, предотвращающую следующие события:
- Логин в операционную систему в обход пароля пользователя
- Перенос диска на другой компьютер и его анализ
- Изменение конфигурации компьютера с целью анализа диска
- Запуск на компьютере других операционных систем для доступа к диску
Но при этом для пользователя использование системы не представляет никаких неудобств, и в большинстве случаев ему достаточно просто включить компьютер и ввести свой пароль. Защиту можно усилить, установив на Bitlocker пин-код или сохранив секретный элемент на USB накопителе.
Как устроена защита
BitLocker использует симметричное шифрование диска, как и остальные подобные приложения. Шифрованием диска занимается центральный процессор. Основным секретным элементом является мастер-ключ, который может быть получен следующими способами:
- Расшифрован паролем на диск, если используется такая защита.
- Расшифрован ключом восстановления (Recovery Key). Ключ восстановления генерируется при создании любого контейнера или диска BitLocker и сохраняется пользователем либо в файл, либо в облако Microsoft. При некоторых условиях ключ сохраняется в облако Microsoft автоматически, без уведомления пользователя.
- Извлечен из TPM модуля при соблюдении определенных условий.
Работа Bitlocker с системой TPM:
Работа TPM модуля очень напоминает блокчейн. Строится «цепочка доверия», которая сохраняется в регистрах PCR (Platform Configuration Register).
Рассмотрим работу TPM модуля по шагам:
- Включаем компьютер. Управление передается первому «доверенному» модулю, который имеет название SRTM (Static root of trust for measures). Обычно этот модуль находится в ПЗУ материнской платы и не может быть изменен. Уязвимость в этом модуле может поставить под угрозу всю систему безопасности. Эффект подобной уязвимости можно наблюдать в эксплоите checkm8 для платформы Apple iOS. SRTM делает первую запись в цепочке: считает хеш от программного кода BIOS и записывает его в регистр PCR
- Управление передается UEFI BIOS-у, который формирует дальнейшие компоненты цепочки. Анализируется конфигурация компьютера, разбивка жесткого диска, загрузчик (boot loader), загрузочные секторы диска (Master Boot Record) и множество других параметров. При этом в хешировании полученных данных участвует и предыдущий регистр PCR. Таким образом, все компоненты цепочки связаны между собой и любое нарушение приведет к изменению содержимого PCR регистров.
- Заполнив несколько PCR регистров, BIOS передает управление загрузчику, который запускает код из MBR жесткого диска. Еще несколько записей в цепочке загрузки.
- Наконец, запускается ядро операционной системы, которое тоже записывает в цепочку свои параметры.
Таким образом, при загруженной операционной системе мы получаем уникальный набор контрольных сумм, хранящихся в PCR регистрах модуля TPM. Модуль TPM не позволяет произвольным образом изменить содержимое PCR регистров; можно лишь добавить очередной компонент цепочки.
Загрузка компьютера с TPM модулем:
Шифрование BitLocker
Итак, пользователь включил шифрование жесткого диска BitLocker. По случайному закону генерируется мастер-ключ, а также ключ восстановления. Мастер-ключ записывается в модуль TPM, а также шифруется при помощи ключа восстановления и в таком виде сохраняется в заголовке диска. При перезапуске компьютера происходит следующее:
- Все PCR регистры обнуляются.
- Происходит инициализация, запуск BIOS, bootloader, MBR, ядра операционной системы.
- Операционная система пытается получить ключ шифрования диска из TPM. При запросе TPM чип анализирует содержимое цепочки, хранящейся в регистрах PCR. Если цепочка повреждена, ключ шифрования не выдается, при этом выдается сообщение о необходимости ввода ключа восстановления.
Таким образом, при выключенном компьютере мы можем получить ключ шифрования диска только в случае запуска оригинальной системы. Изменение любого компонента системы приведет к необходимости ввода Recovery ключа.
Как работать с защитой TPM
Чаще всего к нам в руки попадает выключенный компьютер, о конфигурации которого ничего неизвестно. Самый первый шаг, который необходимо сделать в этой ситуации – снять побайтовый образ диска. Это можно сделать, например, при помощи утилиты Elcomsoft System Recovery. Перед снятием образа мы увидим список разделов диска, а также способ их шифрования, если он присутствует. Если мы имеем дело с защитой диска при помощи TPM, программа сообщит, что диск зашифрован BitLocker-ом, но хеш пароля извлечь невозможно. Для расшифровки диска понадобится найти либо ключ восстановления, либо мастер-ключ, хранящийся в TPM модуле. В этой статье я не буду останавливаться подробно на механизмах получения ключа восстановления. Отмечу лишь, что он может быть сохранен пользователем в файл на другом диске, в Active Directory, а также в облако Microsoft. В следующих разделах мы рассмотрим различные способы получения мастер-ключа из модуля TPM.
Получение мастер-ключа из памяти компьютера
После снятия образа диска можно попробовать включить компьютер и загрузиться с основного диска, защищенного BitLocker-ом. Если пользователь не установил пароль на вход в операционную систему, либо этот пароль известен, диск расшифруется полученным из TPM ключом. Исключение составляет ситуация, когда доступ к модулю TPM защищен дополнительным PIN-кодом. При нескольких попытках неправильного ввода такого кода модуль TPM блокирует доступ к мастер-ключу и доступ к диску становится возможным только при вводе Recovery ключа. Если у нас получилось загрузить ОС и залогиниться, мастер-ключ BitLocker-а находится в памяти компьютера. Его можно найти, используя портативную версию Elcomsoft Forensic Disk Decryptor. Этой же программой можно подключить снятый образ диска для анализа.
Конечно же, в этом случае возможен и анализ загруженной системы с активной пользовательской сессией. Но получение мастер-ключа и работа с образом более надежна; помимо прочего, мы получаем абсолютно точный образ системы, которая была изъята, без изменений, произошедших при старте ОС. Наши иностранные коллеги называют такой подход “forensically sound”.
Атаки методами холодной загрузки и через порты FireWire/Thunderbolt
Если загрузка ОС произошла успешно, но невозможно войти в систему, так как неизвестен пароль пользователя, можно попробовать прочитать содержимое памяти компьютера. Существует два известных способа: прямой доступ к памяти через шину PCI и метод «холодной загрузки» (cold boot).
Интерфейсы FireWire, Thunderbolt и PC Card имеют прямой доступ к шине PCI, которая, в свою очередь, имеет прямой доступ к памяти компьютера (Direct Memory Access или DMA). Компьютеры с ОС Windows довольно редко оснащены такими интерфейсами, но нам может повезти, если, например, пользователь установил Windows на Мак с помощью драйверов Bootcamp. Для дампа памяти компьютера через шину PCI можно воспользоваться бесплатной утилитой inception, установив ее на любой компьютер с Linux.
К сожалению, такой способ работает только для Windows 7 и 8. В более старших версиях Windows доступ DMA через Thunderbolt уже закрыт. Дамп памяти, сделанный в inception, можно загрузить в Elcomsoft Forensic Disk Decryptor и, как уже было описано выше, найти мастер-ключ, с помощью которого можно либо полностью расшифровать образ диска, либо подключить его к системе для анализа.
Еще один вид атаки основан на том, что содержимое оперативной памяти компьютера обнуляется не мгновенно, а лишь спустя несколько секунд после выключения питания. Многие модули памяти способны сохранять свое состояние в течение нескольких минут и иногда даже часов, если их охладить до отрицательной температуры. На этом их свойстве и основана атака методом «холодной загрузки» (cold boot). Для атаки нам потребуется любой баллончик с хладагентом, например, предназначенный для тестирования термонестабильных электронных компонентов.
Включаем исследуемый компьютер, замораживаем память при помощи баллончика, сразу отключаем питание (ни в коем случае нельзя делать штатный shutdown средствами операционной системы), перезагружаемся с USB накопителя с Linux, на котором установлено расширение ядра LiME.
Далее создаём дамп оперативной памяти. Признаюсь честно, в нашей лаборатории мы ни разу не делали этот тип атаки. Но некоторые наши партнеры рассказывали, что у них получалось воспроизвести такую атаку и получить дамп памяти. Если других способов не осталось, вполне можно попробовать!
Заморозка памяти ноутбука:
Атака на TPM модуль через Sleep Mode
В любых системах обеспечения безопасности встречаются уязвимости. Не избежали этой участи и модули TPM. В 2018 году корейские исследователи Seunghun Han, Wook Shin, Jun-Hyeok Park и HyoungChun Kim из National Security Research Institute представили на конференции Usenix научную работу под названием «Страшный сон».
Когда компьютер уходит в «спящий режим», TPM сохраняет свое состояние в NVRAM, а при выходе из этого режима восстанавливает его. И вот в этот момент некоторые модели модулей TPM позволяют подменить содержимое PCR регистров. Модуль TPM также ведет свой внутренний журнал, что позволяет узнать всю «цепочку доверия» в тот момент, когда в штатном режиме загружалась Windows, и модуль отдавал мастер-ключ шифрования диска. Исследователи тут же поставили в известность крупнейших производителей материнских плат: Intel, Lenovo, Gigabyte, Dell, hp. Уязвимость была закрыта в обновлениях BIOS. Однако очень немногие пользователи устанавливают обновления BIOS, так что в мире ещё много компьютеров, уязвимых к этой атаке.
Seunghun Han написал две утилиты:
Napper for TPM: https://github.com/kkamagui/napper-for-tpm
Имеет смысл запустить сначала его; это утилита для проверки TPM модуля на предмет наличия уязвимости «страшных снов». На странице есть ссылка на скачивание образа Live CD; достаточно записать его на USB накопитель (я для этих целей обычно пользуюсь отличной отечественной программой Rufus) и загрузить с нее исследуемый компьютер. К сожалению, все компьютеры в нашей тестовой лаборатории оказались неуязвимыми к этой атаке.
Вторая утилита это сам эксплоит: https://github.com/kkamagui/bitleaker
К сожалению, ее нет в виде Live CD, поэтому придется повозиться сначала с установкой Ubuntu на USB накопитель или внешний диск, а потом собрать и установить Bitleaker согласно инструкции. Для загрузки этой системы нужно либо отключить Secure Boot, либо подписать модифицированные загрузчик и ядро своей подписью и внести публичный ключ в BIOS компьютера. Подробную инструкцию можно найти, например, здесь.
Учтите, что добавление нового доверенного сертификата тоже изменяет содержимое регистров PCR, поэтому я бы советовал просто отключить Secure Boot при загрузке.
Атака на TPM путем анализа сигналов
Модуль TPM «общается» с компьютером через шину данных LPC (Low Pin Count). Эта шина используется для передачи данных от «медленных» устройств, к примеру, последовательных портов COM, и имеет частоту всего 33 МГц. Передаваемые по шине данные никак не зашифрованы, поэтому у нас есть возможность перехватить передаваемый мастер-ключ путем анализа сигналов. Denis Andzakovic показывает нам, как у него это получилось для TPM версий 1.2 и 2.0.
Для версии 1.2 он использует логический анализатор DSLogic Plus (цена в России около 10 тыс рублей), имеющий интерфейс USB и позволяющий анализировать до 16 каналов одновременно. Впрочем, этот анализатор автор не советует использовать, так как пришлось решать проблемы с синхронизацией и даже патчить его прошивку. Но, тем не менее, результат получен и мастер-ключ успешно извлечен из модуля.
Для версии 2.0 использовалось еще более дешевое устройство — Lattice ICEStick. Это FPGA модуль с интерфейсом USB, в который можно залить прошивку, предназначенную специально для сниффинга TPM модулей.
Осталось лишь аккуратно припаять проводки к нужным ножкам TPM чипа (для материнских плат, в которых модуль TPM вставляется в специальный разъём, достаточно просто подключиться между разъёмом и модулем), включить сниффер и получить мастер-ключ.
Конечно же, если BitLocker защищен еще и пин-кодом, такой способ не сработает. Очевидно, что этот способ не работает и для Intel PTT, так как мы не имеем физического доступа к интерфейсу модуля.
FPGA Lattice iCEStick:
Подключение TPM чипа:
Заключение
Модуль TPM в сочетании с BitLocker обеспечивает достаточно стойкую защиту дисков от несанкционированного доступа. Несмотря на то, что сам чип не занимается шифрованием диска, в отличие от, например, чипа T2, получить доступ к ключу шифрования — непростая задача. Все описанные способы извлечения, безусловно, должны быть в арсенале эксперта-криминалиста и использоваться в соответствии с ситуацией.
Источник: https://blog.elcomsoft.ru/2021/01/moduli-tpm-chto-nuzhno-znat-ekspertu-kriminalistu/