
Доказательство концепции Intel Management Engine JTAG
Вся информация предоставлена исключительно в образовательных целях. Следуйте этим инструкциям на свой страх и риск. Ни авторы, ни их работодатель не несут ответственности за любой прямой или косвенный ущерб или убытки, возникшие в результате действий или бездействия любого лица или организации на основе информации, содержащейся на этой странице.
Введение
Необходимое программное обеспечение
Генерация полезной нагрузки
Генерация токена разблокировки
Подготовка образа SPI Flash
Интеграция файлов в образ прошивки
Отключение подписи OEM
Сборка образа прошивки
Запуск основного CPU
Запись образа в SPI Flash
Подготовка USB-отладочного кабеля
Патчинг конфигурационных файлов OpenIPC
Расшифровка конфигурационных файлов OpenIPC
Добавление ядра LMT в конфигурацию
Установка переменной окружения IPC_PATH
Первичная проверка работоспособности JTAG
Отображение потока CPU ME
Остановка ядер
Отладка ME: краткое руководство
Чтение произвольной памяти
Чтение ROM
Почему TXE?
Список протестированных платформ
Авторы
Лицензия
Уязвимость INTEL-SA-00086 позволяет активировать JTAG для ядра Intel Management Engine. Мы разработали наш [JTAG PoC][8] для платформы Gigabyte Brix GP-BPCE-3350C. Хотя мы рекомендуем будущим исследователям использовать ту же платформу, платформы других производителей с чипсетом Intel Apollo Lake также должны поддерживать PoC (для версии TXE 3.0.1.1107).
Уязвимость INTEL-SA-00086 связана с переполнением буфера при обработке файла, хранящегося в MFS ([внутренняя файловая система ME][6]). Полный путь к файлу — /home/bup/ct. Вам потребуется интегрировать его в прошивку ME с помощью Intel Flash Image Tool (FIT) — одной из утилит Intel System Tools, предоставляемых Intel OEM-производителям оборудования на базе чипсетов Intel PCH. Вот структура корневого каталога пакета Intel System Tools:

Утилиты Intel ME (TXE, SPS) System Tools не предназначены для конечных пользователей, поэтому вы не найдете их на официальном сайте Intel. Однако некоторые OEM-производители публикуют их в составе обновлений программного обеспечения вместе с драйверами устройств. Итак, для интеграции нашего PoC вам понадобятся Intel TXE System Tools версии 3.x, которые можно найти в интернете.
Вам необходимо установить Intel System Studio, пробную версию которого можно загрузить с сайта Intel. В наших экспериментах мы использовали Intel System Studio 2018.
PoC нацелен на прошивку Intel TXE версии 3.0.1.1107. Образ SPI Flash для Gigabyte GB-BPCE-3350C версии F5 содержит необходимую версию прошивки.
Все наши скрипты написаны на Python. Мы рекомендуем использовать Python 2.7. Кроме того, скриптам требуется пакет pycrypto. Чтобы установить pycrypto, выполните следующую команду:
pip install pycrypto
Эта утилита необходима только в том случае, если вам нужно запустить CPU.
EFI Human Interface Infrastructure (HII) — это специальный механизм для создания пользовательского интерфейса в UEFI, а также обработки и управления пользовательским вводом. EFI HII определяет значения по умолчанию для всех опций, включая скрытые. Как только опция, связанная с DCI, найдена, её можно активировать в конфигурации по умолчанию, а DCI можно включить, восстановив заводские настройки BIOS. Для запуска основного CPU вам понадобится AMI BIOS Configuration Program версии 5.xx, которую также можно найти в интернете.
Запустите скрипт me_exp_bxtp.py:
me_exp_bxtp.py -f <file_name>
Скрипт генерирует необходимые данные и экспортирует их в указанный файл (укажите либо полный путь к файлу, либо, в пределах текущего каталога, просто имя; по умолчанию — ct.bin). Этот файл будет использоваться позднее программой FIT.
Запустите скрипт me_utok_bxtp.py:
me_utok_bxtp.py -f <file_name>
Скрипт генерирует необходимые данные и экспортирует их в указанный файл (укажите либо полный путь к файлу, либо, в пределах текущего каталога, просто имя; по умолчанию — utok.bin). Этот файл будет использоваться позднее программой FIT.
Пропустите этот шаг, если вам не нужно запускать CPU.
Чтобы активировать опцию DCI Enable, запустите утилиту AMIBCP и откройте в ней образ SPI-прошивки, поставляемый с вашей платформой. Для Gigabyte Brix GP-BPCE-3350C откройте файл, загруженный по указанной выше ссылке Gigabyte (путь к файлу образа в архиве: F5/image.bin).

Теперь нужно включить опцию HDCIEN на вкладке Setup Configuration.
Чтобы интегрировать файлы ct.bin и utok.bin, запустите утилиту FIT (fit.exe) и откройте в ней образ SPI-прошивки.

Если вы используете другую аппаратную платформу и у вас нет доступа к TXE 3.0.1.1107, вы можете загрузить образ SPI Flash для Gigabyte GB-BPCE-3350C версии F5 и извлечь раздел TXE через FIT. FIT при открытии образа извлекает различные разделы общего образа SPI (SPI-дескриптор, прошивку UEFI/BIOS, прошивку Intel ME и токен разблокировки) и сохраняет их в папке *"image_name"/Decomp *.

Таким образом, вы можете найти файл с необходимой прошивкой Intel TXE по пути /Decomp/TXE Region.bin
Затем в FIT откройте образ SPI для вашей конкретной платформы и замените файл, содержащий прошивку Intel TXE, версией, полученной из образа GB Brix 3350c (поле "Intel(R) TXE Binary File" на вкладке Flash Layout):
