Модули TPM: что нужно знать эксперту-криминалисту

5 января, 2021, Andrey Malyshev
Рубрика: «Разное»
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

Исследование компьютера, системный накопитель которого зашифрован посредством BitLocker, может оказаться намного сложнее, если ключ шифрования основан не на установленном пользователем пароле, а на данных, которые защищены аппаратным модулем TPM. В этом исследовании рассказывается об особенностях защиты ключей в TPM и возможных способах обхода этой защиты.

Что такое TPM и как он мешает исследовать компьютер

Trusted Platform Module (TPM) — система хранения криптографических ключей в персональных компьютерах. Она может быть реализована как в виде отдельного чипа, установленного на материнской плате компьютера, так и являться частью центрального процессора (технология Intel PTT). Отдельный чип TPM чаще всего распаян на материнской плате, но для некоторых плат поставляется отдельным модулем.

Чипы TPM Infineon Optiga:

Отдельный модуль TPM для материнских плат Asus:

Система состоит из криптографического процессора и встроенной памяти. Официально устройства с TPM в Россию не поставляются, так как содержат несертифицированные средства шифрования. Однако, наши российские коллеги регулярно сталкиваются с компьютерами, на которых этот чип присутствует. TPM обеспечивает генерацию, хранение и ограничение использования криптографических ключей. Операционные системы предоставляют разработчикам интерфейсы для работы с TPM, а также используют TPM для работы с ключами шифрования.

В этой статье я расскажу про Windows Bitlocker, который используется для шифрования дисков, и который может для этих целей использовать TPM модуль.

При проектировании системы шифрования дисков разработчики Windows использовали модель угроз, предотвращающую следующие события:

  1. Логин в операционную систему в обход пароля пользователя
  2. Перенос диска на другой компьютер и его анализ
  3. Изменение конфигурации компьютера с целью анализа диска
  4. Запуск на компьютере других операционных систем для доступа к диску

Но при этом для пользователя использование системы не представляет никаких неудобств, и в большинстве случаев ему достаточно просто включить компьютер и ввести свой пароль. Защиту можно усилить, установив на Bitlocker пин-код или сохранив секретный элемент на USB накопителе.

Как устроена защита

BitLocker использует симметричное шифрование диска, как и остальные подобные приложения. Шифрованием диска занимается центральный процессор. Основным секретным элементом является мастер-ключ, который может быть получен следующими способами:

  1. Расшифрован паролем на диск, если используется такая защита.
  2. Расшифрован ключом восстановления (Recovery Key). Ключ восстановления генерируется при создании любого контейнера или диска BitLocker и сохраняется пользователем либо в файл, либо в облако Microsoft. При некоторых условиях ключ сохраняется в облако Microsoft автоматически, без уведомления пользователя.
  3. Извлечен из TPM модуля при соблюдении определенных условий.

Работа Bitlocker с системой TPM:

Работа TPM модуля очень напоминает блокчейн. Строится «цепочка доверия», которая сохраняется в регистрах PCR (Platform Configuration Register).

Рассмотрим работу TPM модуля по шагам:

  1. Включаем компьютер. Управление передается первому «доверенному» модулю, который имеет название SRTM (Static root of trust for measures). Обычно этот модуль находится в ПЗУ материнской платы и не может быть изменен. Уязвимость в этом модуле может поставить под угрозу всю систему безопасности. Эффект подобной уязвимости можно наблюдать в эксплоите checkm8 для платформы Apple iOS. SRTM делает первую запись в цепочке: считает хеш от программного кода BIOS и записывает его в регистр PCR
  2. Управление передается UEFI BIOS-у, который формирует дальнейшие компоненты цепочки. Анализируется конфигурация компьютера, разбивка жесткого диска, загрузчик (boot loader), загрузочные секторы диска (Master Boot Record) и множество других параметров. При этом в хешировании полученных данных участвует и предыдущий регистр PCR. Таким образом, все компоненты цепочки связаны между собой и любое нарушение приведет к изменению содержимого PCR регистров.
  3. Заполнив несколько PCR регистров, BIOS передает управление загрузчику, который запускает код из MBR жесткого диска. Еще несколько записей в цепочке загрузки.
  4. Наконец, запускается ядро операционной системы, которое тоже записывает в цепочку свои параметры.

Таким образом, при загруженной операционной системе мы получаем уникальный набор контрольных сумм, хранящихся в PCR регистрах модуля TPM. Модуль TPM не позволяет произвольным образом изменить содержимое PCR регистров; можно лишь добавить очередной компонент цепочки.

Загрузка компьютера с TPM модулем:

Шифрование BitLocker

Итак, пользователь включил шифрование жесткого диска BitLocker. По случайному закону генерируется мастер-ключ, а также ключ восстановления. Мастер-ключ записывается в модуль TPM, а также шифруется при помощи ключа восстановления и в таком виде сохраняется в заголовке диска. При перезапуске компьютера происходит следующее:

  1. Все PCR регистры обнуляются.
  2. Происходит инициализация, запуск BIOS, bootloader, MBR, ядра операционной системы.
  3. Операционная система пытается получить ключ шифрования диска из 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, получить доступ к ключу шифрования — непростая задача. Все описанные способы извлечения, безусловно, должны быть в арсенале эксперта-криминалиста и использоваться в соответствии с ситуацией.


  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  
  •  

REFERENCES:

Elcomsoft Forensic Disk Decryptor

Elcomsoft Forensic Disk Decryptor обеспечивает моментальный доступ к содержимому зашифрованных дисков, созданных BitLocker, FileVault 2, PGP Disk, TrueCrypt и VeraCrypt. Доступны режимы полной расшифровки и оперативного доступа к информации. Ключи для расшифровки содержимого зашифрованных дисков извлекаются из слепка оперативной памяти компьютера, методом атаки через порт FireWire либо анализом файла гибернации. Возможно использования паролей и депонированных ключей.

Официальная страница Elcomsoft Forensic Disk Decryptor »


Elcomsoft System Recovery

Elcomsoft System Recovery поможет восстановить доступ к учётным записям к локальным учётным записям Windows и универсальной учётной записи Microsoft Account и создать образ диска для последующего анализа. Поддерживается как моментальный сброс, так и восстановление оригинального пароля. С помощью Elcomsoft System Recovery можно предоставить административные привилегии любому пользователю. Продукт поставляется вместе с лицензионной загрузочной средой Windows PE.

Официальная страница Elcomsoft System Recovery »

НАШИ НОВОСТИ