F-Secure розповів про метод атак SPI-інтерфейсу TPM
F-Secure розповів про метод атак нюхання SPI-інтерфейсу TPM
Повне шифрування диска є одним з основних способів сучасного захисту кінцевих точок, що дозволяє ефективно захистити конфіденційні дані від фізичної крадіжки. Для отримання доступу до ключа шифрування використовувалися різні атаки, засновані на нюханні модуля TPM або прямого доступу до пам'яті (DMA). Фахівці з F-Secure розповіли про ще один метод атак - нюхання SPI інтерфейсу ТРМ за допомогою загальнодоступних інструментів. Крім того, фахівці випустили інструмент, що дозволяє витягти ключ BitLocker з вкраденого трафіку SPI.
Модуль ТРМ часто використовується для запечатування повного ключа шифрування диска, а сам чіп зазвичай захищений від ряду різних атак. Однак зв'язок між центральним процесором і модулем ТРМ за замовчуванням не шифрується, що робить його вразливим для нюхання.
BitLocker - це повнофункціональна функція шифрування дисків від Microsoft для Windows. Починаючи з Windows 10, версії 1511, BitLocker використовує алгоритм шифрування AES-XTS для шифрування всього обсягу даних. За замовчуванням довжина ключа становить 128 біт, але ви також можете налаштувати використання 256-бітного ключа.
Модуль Trusted Platform — криптографічний співпроцесор, який реалізує заздалегідь визначений набір криптографічних операцій, захищене сховище ключів і набір регістрів конфігурації платформи (ПЛР). Модуль ТРМ є одним із найбільш часто використовуваних засобів захисту для BitLocker. Одним з ключових переваг ТРМ є можливість розкрити частину секрету після перевірки цілісності платформи. Ця перевірка досягається шляхом вимірювання кожного кроку в процесі завантаження і збереження результатів в ПЛР. Секрет може бути прив'язаний до конкретних значень ПЛР, і він може бути оприлюднений лише в тому випадку, якщо поточний стан ПЛР відповідає цим вихідним значенням.
Зазвичай чіп TPM є окремим модулем на материнській платі, а центральний процесор зв'язується з чіпом TPM через концентратор контролера платформи (PCH) або південний міст. Специфікація TPM описує три різні інтерфейси зв'язку: LPC, SPI та I2C. Крім того, для ТРМ допускаються два різних типи пакетів IC: TSSOP-28 і QFN-32. Пакет QFN-32 ускладнює нюхання, ускладнюючи фізичний контакт.
Послідовний периферійний інтерфейс (SPI) - це синхронний протокол послідовного зв'язку, який підтримує повнодуплексний зв'язок з високошвидкісною тактовою частотою. У ньому використовується хазяйсько-рабська архітектура, в якій майстер завжди ініціює спілкування. Для прослуховування шини необхідний логічний аналізатор, здатний вловлювати чотири сигнали одночасно. Мінімальна частота дискретизації залежить від швидкості, яка використовується в автобусі. Стандарт TPM визначає, що чіп SPI TPM повинен підтримувати тактовий діапазон 10–24 МГц. Однак стандарт також стверджує, що можуть підтримуватися більш високі тактові частоти.
Для доступу до чіпа ТРМ зазвичай доводиться розбирати ноутбук, що не дуже практично. Однак прошивка UEFI часто зберігається в флеш-чіпі на основі SPI, який має пакет SOIC-8. Цей вид упаковки дуже легко підключити до звичайних зондів. Оскільки кілька пристроїв можна підключити до однієї шини SPI, флеш-чіп і чіп TPM, ймовірно, мають одну шину. Крім того, доступ до чіпа флеш-пам'яті зазвичай можна отримати, тільки знявши задню кришку або клавіатуру, і тому чіп флеш-пам'яті є ідеальною мішенню для прослуховування повідомлень на шині SPI. Така тактика позбавляє від необхідності пайки, а атака може бути виконана в зручні терміни.
В рамках експерименту фахівці використовували ноутбук Dell Latitude E5470 під управлінням Windows 10 з підтримкою bitLocker, а ТРМ захищає VMK без додаткового ПІН-коду. У цій конкретній моделі доступ до модуля ТРМ можна отримати, знявши задню кришку. Чіп Nuvoton NPCT650JAOYX TPM 2.0 поставляється з пакетом QFN-32, і безпосередньо промацати чіп неможливо. Контакти ГРМ на обох чіпах з'єднуються між собою, підтверджуючи, що в них використовується одна і та ж шина SPI.
У кожному пристрої SPI є своя виділена лінійка SS, але ноутбук має всього два пристрої, підключених до шини. Отже, SS лінійку TPM можна побудувати, взявши заперечення з лінійки SS чіпа флеш-пам'яті. Лінію СС також можна просто проігнорувати. Однак в даній ситуації можливе декодування обміну флеш-пам'яттю як TPM-зв'язку.
Сигнали SPI записувалися за допомогою логічного аналізатора Saleae Logic Pro 8. Широкий крок пін-ауту пакета SOIC-8 дозволяє легко приєднувати датчики, а весь процес захоплення може зайняти менше однієї хвилини.
У розділі 7.4 «Специфікація профілю TPM клієнтської платформи ПК» описується протокол SPI для чіпа TPM 2.0. Ключовими елементами тут є читання і написання угод, які виглядають практично ідентично. Транзакція починається, коли хост надсилає команду байт, за якою слідує трибайтна адреса. Після цього в центральний процесор або ТРМ відправляється 1-64 байта даних про транзакції, в залежності від типу транзакції. Однак модуль ТРМ може вставляти стан очікування між байтами адреси та даними, щоб затримати передавання. Чіп TPM вставляє стан очікування, підштовхуючи лінію MISO до низького рівня на останньому біті адреси, і лінія перекладається на низький рівень до тих пір, поки чіп TPM не буде готовий до прийому або передачі даних.
Командний байт кодує тип транзакції та розмір передачі. Коли високий біт в командному байті дорівнює 1, зчитується тип транзакції. В іншому випадку тип запису. Шість значущих бітів низького порядку декодують розмір передачі від 1 до 64 байт.
Маючи на увазі цю інформацію, можна здійснювати транзакції трММ. Логіка 2 не може аналізувати транзакції TPM SPI за замовчуванням. Однак він підтримує високорівневі користувацькі аналізатори, які можуть додатково аналізувати розшифрований трафік SPI. Експерти розробили аналізатор, який декодує транзакції TPM з потоку SPI і показує їх в Logic 2.
Хоча модуль ТРМ має кілька різних регістрів, важливими є лише TPM_DATA_FIFO_x регістрів, і вони діють як буфери між хостом і модулем ТРМ при спілкуванні для команд або відповідей. Тому скидання вмісту регістрів FIFO досить, щоб зловити незапечатаний ключ. Крім того, BitLocker використовує тільки Locality 0, що обмежує контрольовані регістри TPM_DATA_FIFO_0, і саме цей регістр розшифровується за адресою 0xD40024.
Залишилося визначити ВМК по потоку байтів. На щастя, тканини BitLocker є загальнодоступними. Запис метаданих VMK має формат, подібний до запису метаданих FVE. Вони створили шаблон пошуку, який відповідає можливому ВМК в байтовому потоці. Після того як ВМК витягнутий, диск можна розшифрувати і змонтувати. Остання версія (0.7.3) Dislocker підтримує розшифровку гучності за допомогою VMK. Тому не потрібно вручну розбирати і розшифровувати ключ FVEK.
Таким чином, експерти продемонстрували, що ключ BitLocker можна легко витягти з трафіку SPI без дорогих інструментів. Атака вимагає фізичного доступу до цільової машини всього на кілька хвилин за допомогою автоматизованих інструментів.
