Skip to content
KitploitKITPLOIT
ИнструментыБлог
Отправить
ИнструментыБлог
Отправить

Инструменты для хакинга, пентеста и кибербезопасности — ваш арсенал защиты!

Kitploit — это каталог инструментов для хакинга, кибербезопасности и пентестинга. Находите последние обновления проектов для поиска уязвимостей, анализа систем, автоматизации тестирования и усиления вашей безопасности.

··Ленты·Контакты·Конфиденциальность·© 2026 Kitploit

Каталог инструментов

Категории

Все категории
Loading categories
IntelTXE-PoC — Доказательство концепции Intel Management Engine JTAG | Kitploit
Инструменты/GitHubGitHub/ptresearch/inteltxe-poc
Безопасность встроенных системГенерация полезной нагрузкиАнализ уязвимостейОбратная инженерияОтладчикиАппаратный ХакингАппаратная БезопасностьАнализ ПрошивокЭксплуатация Бинарных ФайловArchived
GitHubptresearch/inteltxe-poc

IntelTXE-PoC

5491066 лет назадПроверено Kitploit

Популярное

Смотреть все →

Откройте для себя самые используемые инструменты нашего сообщества.

Изучить все инструменты

Просмотрите нашу коллекцию инструментов

Смотреть все инструменты →
Поделиться

Доказательство концепции 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 для платформы Gigabyte Brix GP-BPCE-3350C. Хотя мы рекомендуем будущим исследователям использовать ту же платформу, платформы других производителей с чипсетом Intel Apollo Lake также должны поддерживать PoC (для версии TXE 3.0.1.1107).

Необходимое программное обеспечение

Intel System Tools

Уязвимость INTEL-SA-00086 связана с переполнением буфера при обработке файла, хранящегося в MFS (внутренняя файловая система ME). Полный путь к файлу — /home/bup/ct. Вам потребуется интегрировать его в прошивку ME с помощью Intel Flash Image Tool (FIT) — одной из утилит Intel System Tools, предоставляемых Intel OEM-производителям оборудования на базе чипсетов Intel PCH. Вот структура корневого каталога пакета Intel System Tools:

screenshot

Утилиты Intel ME (TXE, SPS) System Tools не предназначены для конечных пользователей, поэтому вы не найдете их на официальном сайте Intel. Однако некоторые OEM-производители публикуют их в составе обновлений программного обеспечения вместе с драйверами устройств. Итак, для интеграции нашего PoC вам понадобятся Intel TXE System Tools версии 3.x, которые можно найти в интернете.

Intel System Studio

Вам необходимо установить Intel System Studio, пробную версию которого можно загрузить с сайта Intel. В наших экспериментах мы использовали Intel System Studio 2018.

Прошивка Intel TXE

PoC нацелен на прошивку Intel TXE версии 3.0.1.1107. Образ SPI Flash для Gigabyte GB-BPCE-3350C версии F5 содержит необходимую версию прошивки.

Python

Все наши скрипты написаны на Python. Мы рекомендуем использовать Python 2.7. Кроме того, скриптам требуется пакет pycrypto. Чтобы установить pycrypto, выполните следующую команду:

root@kitploit:~
pip install pycrypto

AMIBCP

Эта утилита необходима только в том случае, если вам нужно запустить CPU.

EFI Human Interface Infrastructure (HII) — это специальный механизм для создания пользовательского интерфейса в UEFI, а также обработки и управления пользовательским вводом. EFI HII определяет значения по умолчанию для всех опций, включая скрытые. Как только опция, связанная с DCI, найдена, её можно активировать в конфигурации по умолчанию, а DCI можно включить, восстановив заводские настройки BIOS. Для запуска основного CPU вам понадобится AMI BIOS Configuration Program версии 5.xx, которую также можно найти в интернете.

Генерация полезной нагрузки

Запустите скрипт me_exp_bxtp.py:

root@kitploit:~
me_exp_bxtp.py -f <file_name>

Скрипт генерирует необходимые данные и экспортирует их в указанный файл (укажите либо полный путь к файлу, либо, в пределах текущего каталога, просто имя; по умолчанию — ct.bin). Этот файл будет использоваться позднее программой FIT.

Генерация токена разблокировки

Запустите скрипт me_utok_bxtp.py:

root@kitploit:~
me_utok_bxtp.py -f <file_name>

Скрипт генерирует необходимые данные и экспортирует их в указанный файл (укажите либо полный путь к файлу, либо, в пределах текущего каталога, просто имя; по умолчанию — utok.bin). Этот файл будет использоваться позднее программой FIT.

Подготовка образа SPI Flash

Активация опции DCI

Пропустите этот шаг, если вам не нужно запускать CPU.

Чтобы активировать опцию DCI Enable, запустите утилиту AMIBCP и откройте в ней образ SPI-прошивки, поставляемый с вашей платформой. Для Gigabyte Brix GP-BPCE-3350C откройте файл, загруженный по указанной выше ссылке Gigabyte (путь к файлу образа в архиве: F5/image.bin).

screenshot

Теперь нужно включить опцию HDCIEN на вкладке Setup Configuration.

Интеграция полезной нагрузки

Чтобы интегрировать файлы ct.bin и utok.bin, запустите утилиту FIT (fit.exe) и откройте в ней образ SPI-прошивки.

screenshot

Другая аппаратная платформа

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

screenshot

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

screenshot

Интеграция файлов в образ прошивки

Теперь нам нужно указать в FIT файлы, которые мы сгенерировали для /home/bup/ct и Unlock Token. На вкладке Debug в FIT можно указать Trace Hub Binary и Unlock Token для интеграции в прошивку. Это должны быть уже созданные нами файлы.

screenshot

Отключение подписи OEM

Просто удалите поле OEM Public Key Hash в FIT:

screenshot

Сборка образа прошивки

Соберите образ, выбрав Build Image в меню Build.

screenshot

Проигнорируйте сообщение о настройках BootGuard (нажмите «Yes»):

screenshot

Если к этому моменту всё было сделано правильно, процесс сборки должен завершиться успешно, и FIT выведет примерно такое консольное сообщение:

screenshot

Запуск основного CPU

Пропустите этот шаг, если вам не нужно запускать CPU.

Для запуска CPU необходимо активировать режим HAP. Должен быть установлен 0-й бит байта по смещению +0x102:

screenshot

Запись образа в SPI Flash

Для записи образа в SPI flash настоятельно рекомендуем использовать программатор SPI.
Обязательно сделайте резервную копию исходной прошивки, чтобы можно было восстановить её в случае сбоя!

Подготовка USB-отладочного кабеля

Для подключения к платформе вам понадобится отладочный кабель USB 3.0. Либо купите специально изготовленный для этой цели кабель, либо соберите свой собственный из кабеля USB 3.0 AM–AM, изолировав контакты D+, D- и Vcc.

screenshot

Патчинг конфигурационных файлов OpenIPC

Intel разрабатывает и предоставляет пользователям два программных пакета, которые можно использовать для JTAG-отладки платформ и основного CPU: DAL (DFx Abstraction Layer) и OpenIPC. И DAL, и OpenIPC входят в состав Intel System Studio. После установки Intel System Studio 2018 OpenIPC находится в следующем каталоге:

Windows

root@kitploit:~
C:\Intel\OpenIPC_1.1740.2381.100

Linux

root@kitploit:~
/opt/intel/system_studio_2018/system_debugger_2018/debugger/openipc

Конфигурация OpenIPC зашифрована и не поддерживает ядро TXE. Поэтому расшифруйте конфигурацию и добавьте в неё описание TXE.

Расшифровка конфигурационных файлов OpenIPC

Чтобы расшифровать конфигурационные файлы, извлеките ключ из библиотеки StructuredData (Linux: libStructuredData_x64.so, Windows: StructuredData_x64.dll) в каталоге OpenIPC/Bin с помощью скрипта openipc_key_extract.py для IDA Pro. Передайте ключ (в нашем случае 4504fb02be0a9c4c84df2a89cf508bc3) скрипту config_decryptor.py вместе с путём к каталогу OpenIPC.

root@kitploit:~
config_decryptor.py –k 4504fb02be0a9c4c84df2a89cf508bc3 –p C:\Intel\OpenIPC

Добавление ядра LMT в конфигурацию

Поставляемая версия OpenIPC не содержит необходимой информации о ядре TXE. Поэтому нам нужно применить патч (patch.diff) к расшифрованным конфигурационным файлам OpenIPC. Вот как это сделать:

root@kitploit:~
patch -p2 < patch.diff

Установка переменной окружения IPC_PATH

После расшифровки и патчинга установите переменную окружения IPC_PATH в новый каталог OpenIPC, чтобы ipccli использовал модифицированную версию OpenIPC. Например:

Windows

root@kitploit:~
set IPC_PATH=c:\Intel\OpenIPC\Bin

Первичная проверка работоспособности JTAG

Активатор блокирует последующую загрузку, удерживая процесс BUP в цикле после активации JTAG. После запуска платформа не будет подавать признаков жизни (монитор не включается, индикаторы клавиатуры не загораются, звуковой сигнал BIOS POST не воспроизводится). Поэтому вам нужно будет проверить с помощью отладки DCI, что платформа «застряла» в модуле BUP.

Как и DAL, библиотека OpenIPC включает интерфейс командной строки (CLI), написанный на Python и предоставляемый в виде библиотеки для Python в составе Intel System Studio, который можно установить в систему с помощью pip. Установочный пакет для ipccli находится по следующему пути: Windows

root@kitploit:~
<Program Files(x86)>\IntelSWTools\system_debugger_2018\debugger\ipccli\ ipccli-1.1740.544.100-py2.py3-none-any.whl

Linux

root@kitploit:~
/opt/intel/system_studio_2018/system_debugger_2018/debugger/ipccli/ipccli-1.1811.727.100-py2.py3-none-any.whl

Чтобы установить ipccli, выполните следующую консольную команду:

root@kitploit:~
pip install ipccli-1.1740.544.100-py2.py3-none-any.whl

После установки ipccli доступен в среде выполнения соответствующей версии Python (той, из которой был вызван pip). Чтобы начать работу с OpenIPC, выполните в консоли Python следующие команды:

root@kitploit:~
import ipccli
ipc = ipccli.baseaccess()

Механизм подключения к целевой платформе через DCI запускается, и в результате появляется следующее консольное сообщение:

screenshot

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

screenshot

Если подключение DCI успешно, убедитесь, что регистр PERSONALITY устройства DFX_AGGRAGATOR равен 3. Регистр PERSONALITY имеет код IR (Instruction Register), равный 0x54. Чтобы прочитать его, выполните следующие команды:

root@kitploit:~
dfx_agg = ipc.devs.mdu_dfx_agg_tap0
ipc.irdrscan(dfx_agg, 0x54, 32)

Вот как должен выглядеть результат выполнения этой команды:

screenshot

Отладка ME: краткое руководство

Утилита ipccli поставляется с довольно подробной HTML-документацией, которую можно найти в папке Python-пакета ipccli:

root@kitploit:~
<Python Dir>\Lib\site-packages\ipccli\html\Index.html

Отображение потока CPU ME

Если предыдущие шаги выполнены правильно, то при подключении к платформе через ipccli ядро TXE доступно через CSE Tap, и ipccli позволяет получить к нему доступ, применив следующий путь ipccli:

root@kitploit:~
ipc.devs.cse_c0.threads[0]

Но поскольку PoC блокирует загрузку платформы до инициализации основного CPU, его ядра недоступны через JTAG, и к ядру ME можно обратиться с помощью следующей команды:

root@kitploit:~
ipc.threads[0]

Остановка ядер

Чтобы остановить выполнение инструкций процессора ME, выполните следующую команду:

root@kitploit:~
me = ipc.devs.cse_c0.threads[0]
me.halt()

Чтобы остановить выполнение инструкций процессора CPU, выполните следующую команду:

root@kitploit:~
core = ipc.threads[0]
core.halt()

screenshot

В консоли отображается логический адрес инструкции, на которой была выполнена остановка.

Чтение произвольной памяти

OpenIPC позволяет читать память после остановки, например:

root@kitploit:~
ipc.threads[0].mem("0xf0080004P", 4)

Можно указать логический адрес (sel:offset), линейный адрес (модификатор L) или физический адрес (модификатор P).

Чтение ROM

Системный агент ME (MISA) позволяет получить начальный физический адрес области ROM, которая включает вектор сброса ME. Вы можете получить адрес ROM через регистр Hunit ROM Memory Base (HROMMB) по смещению 0xe20 MISA MMIO (0xf0000000P):

screenshot

ROM всегда располагается от ROMBASE до 0xffffffff. Чтобы скопировать ROM в файл, выполните следующую команду:

root@kitploit:~
ipc.threads[0].memsave("<file path>", "0xfffe0000p", 0x20001)

Важно указать размер как 0x20001, а не 0x20000 (в противном случае OpenIPC сталкивается с проблемами из-за 64-битного доступа, который невозможен для 32-битного ядра ME). Последний байт файла можно отбросить, поскольку он не является частью ROM.

Почему TXE?

Платформа даёт больше возможностей для отладки без специального адаптера Intel CCA-SVT и позволяет отлаживать самые ранние стадии ядра TXE с помощью обычного отладочного кабеля USB.

Связанные URL:

Intel ME: путь статического анализа

Секреты Intel DCI

Intel ME: объяснение файловой системы Flash

Как взломать выключенный компьютер или запустить неподписанный код в Intel Management Engine

Внутри Intel Management Engine

Отключение Intel ME 11 через недокументированный режим

Список протестированных платформ

  • Gigabyte Mini-PC Barebone (BRIX) GB-BPCE-3350C (rev:1.1, 1.2)
  • Beelink M1

Авторы

Mark Ermolov (@_markel___)

Maxim Goryachy (@h0t_max)

Исследовательская группа

Mark Ermolov (@_markel___)

Maxim Goryachy (@h0t_max)

Dmitry Sklyarov (@_Dmit)

Лицензия

Copyright (c) 2018 Mark Ermolov, Maxim Goryachy at Positive Technologies

Настоящим предоставляется бесплатное разрешение любому лицу, получившему копию этого программного обеспечения и связанных с ним файлов документации (далее — «Программное обеспечение»), без ограничений использовать Программное обеспечение, включая, без ограничений, права на использование, копирование, изменение, слияние, публикацию, распространение, сублицензирование и/или продажу копий Программного обеспечения, а также разрешать лицам, которым предоставляется Программное обеспечение, делать это при соблюдении следующих условий: указанное выше уведомление об авторских правах и данное разрешение должны быть включены во все копии или значительные части Программного обеспечения.

ПРОГРАММНОЕ ОБЕСПЕЧЕНИЕ ПРЕДОСТАВЛЯЕТСЯ «КАК ЕСТЬ», БЕЗ КАКИХ-ЛИБО ГАРАНТИЙ, ЯВНЫХ ИЛИ ПОДРАЗУМЕВАЕМЫХ, ВКЛЮЧАЯ, НО НЕ ОГРАНИЧИВАЯСЬ, ГАРАНТИЯМИ ТОВАРНОЙ ПРИГОДНОСТИ, ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ И ОТСУТСТВИЯ НАРУШЕНИЯ ПРАВ. НИ ПРИ КАКИХ ОБСТОЯТЕЛЬСТВАХ АВТОРЫ ИЛИ ПРАВООБЛАДАТЕЛИ НЕ НЕСУТ ОТВЕТСТВЕННОСТИ ЗА КАКИЕ-ЛИБО ПРЕТЕНЗИИ, УБЫТКИ ИЛИ ИНУЮ ОТВЕТСТВЕННОСТЬ, БУДЬ ТО В РЕЗУЛЬТАТЕ ИСПОЛНЕНИЯ ДОГОВОРА, ГРАЖДАНСКОГО ПРАВОНАРУШЕНИЯ ИЛИ ИНЫМ ОБРАЗОМ, ВОЗНИКАЮЩИЕ ИЗ ИЛИ В СВЯЗИ С ПРОГРАММНЫМ ОБЕСПЕЧЕНИЕМ ИЛИ ЕГО ИСПОЛЬЗОВАНИЕМ ИЛИ ИНЫМИ ДЕЙСТВИЯМИ С НИМ.

Скачать инструмент