Ключ BitLocker может быть легко извлечен из трафика SPI

Ключ BitLocker может быть легко извлечен из трафика SPI

Атака требует физический доступ к целевой машине только на несколько минут с использованием автоматизированных инструментов.

Полное шифрование диска является одним из основных способов современной защиты конечных точек, позволяющий эффективно обезопасить конфиденциальные данные от физической кражи. Для получения доступа к ключу шифрования использовались различные атаки, основанные на сниффинге интерфейса доверенного платформенного модуля (Trusted Platform Module, TPM) или прямого доступа к памяти (Direct Memory Access, DMA). Но специалисты из F-Secure рассказали об еще одном методе атак — сниффинге SPI-интерфейса TPM с использованием общедоступных инструментов. Кроме того, эксперты выпустили инструмент, позволяющий извлечь ключ BitLocker из похищенного трафика SPI.

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

BitLocker — функция полного шифрования диска от Microsoft для Windows. Начиная с Windows 10 версии 1511, BitLocker использует алгоритм шифрования AES-XTS для шифрования всего объема данных. По умолчанию длина ключа составляет 128 бит, но также можно настроить использование 256-битного ключа.

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

Обычно микросхема TPM представляет собой отдельный модуль на материнской плате, а ЦП обменивается данными с микросхемой TPM через концентратор контроллера платформы (PCH) или южный мост. Спецификация TPM описывает три различных интерфейса связи: LPC, SPI и I2C. Кроме того, для TPM разрешены два разных типа пакетов IC: TSSOP-28 и QFN-32. Пакет QFN-32 усложняет сниффинг, затрудняя физический контакт.

Последовательный периферийный интерфейс (SPI) — протокол синхронной последовательной связи, поддерживающий полнодуплексную связь с высокоскоростной тактовой частотой. Он использует архитектуру ведущий-ведомый, при которой ведущее устройство всегда инициирует связь. Для прослушивания шины требуется логический анализатор, который может захватывать четыре сигнала одновременно. Минимальная частота дискретизации зависит от скорости, используемой в шине. Стандарт TPM определяет, что микросхема TPM с интерфейсом SPI должна поддерживать диапазон тактовой частоты 10–24 МГц. Однако в стандарте также указано, что могут поддерживаться более высокие тактовые частоты.

Для доступа к микросхеме TPM обычно необходимо разобрать ноутбук, что не очень практично. Однако прошивка UEFI часто хранится во флеш-чипе на основе SPI, который имеет пакет SOIC-8. Данный тип упаковки очень легко подсоединяется к обычным зондам. Поскольку к одной шине SPI можно подключить несколько устройств, микросхема флэш-памяти и микросхема TPM, вероятно, используют одну и ту же шину. Кроме того, к микросхеме флэш-памяти обычно можно получить доступ, только сняв заднюю крышку или клавиатуру, и поэтому микросхема флэш-памяти является идеальной целью для прослушивания сообщений на шине SPI. Эта тактика исключает необходимость пайки, и атака может быть выполнена в удобные сроки.

В рамках эксперимента специалисты использовали ноутбук Dell Latitude E5470 под управлением Windows 10 с поддержкой BitLocker, а TPM защищает VMK без дополнительного PIN-кода. В этой конкретной модели доступ к TPM можно получить, сняв заднюю крышку. Чип Nuvoton NPCT650JAOYX TPM 2.0 поставляется с пакетом QFN-32, и зондировать чип напрямую невозможно. Контакты синхронизации на обеих микросхемах соединены вместе, подтверждая, что они используют одну и ту же шину SPI.

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

Сигналы SPI были записаны с помощью логического анализатора Saleae Logic Pro 8. Широкий шаг выводов корпуса SOIC-8 позволяет без труда закрепить датчики, а весь процесс захвата может занять менее одной минуты.

В разделе 7.4 «Спецификация профиля TPM клиентской платформы ПК» описывается протокол SPI для микросхемы TPM 2.0. Ключевыми элементами здесь являются транзакции чтения и записи, которые выглядят почти одинаково. Транзакция начинается, когда хост отправляет командный байт, за которым следует трехбайтовый адрес. После этого 1–64 байта данных транзакции отправляются ЦП или TPM, в зависимости от типа транзакции. Однако TPM может вставлять состояние ожидания между байтами адреса и данных, чтобы задержать передачу. Чип TPM вставляет состояние ожидания, переводя линию MISO в низкий уровень на последнем бите адреса, и линия переводится в низкий уровень, пока микросхема TPM не будет готова к приему или передаче данных.

Командный байт кодирует тип транзакции и размер передачи. Когда старший бит в командном байте равен 1, считывается тип транзакции. В противном случае тип записи. Шесть младших значащих битов декодируют размер передачи от 1 до 64 байтов.

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

Хотя TPM имеет несколько разных регистров, важны только регистры TPM_DATA_FIFO_x. Они действуют как буферы между хостом и TPM при обмене данными для команд или ответов. Следовательно, сброса содержимого регистров FIFO достаточно, чтобы поймать незапечатанный ключ. Кроме того, BitLocker использует только Locality 0, который ограничивает отслеживаемые регистры TPM_DATA_FIFO_0, и этот конкретный регистр декодируется по адресу 0xD40024.

Остается определить VMK из байтового потока. К счастью, структуры BitLocker общедоступны. Запись метаданных VMK имеет формат, аналогичный записи метаданных FVE. Специалисты создали шаблон поиска, который соответствует возможным VMK в потоке байтов. После извлечения VMK диск можно расшифровать и смонтировать. Последняя версия (0.7.3) Dislocker поддерживает дешифрование тома с помощью VMK. Поэтому не нужно вручную разбирать и расшифровывать ключ FVEK.

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

Ищем темную материю и подписчиков!

Одно найти легче, чем другое. Спойлер: это не темная материя

Станьте частью научной Вселенной — подпишитесь