
Prueba de concepto de JTAG para Intel Management Engine - Instrucciones 2022
Toda la información se proporciona únicamente con fines educativos. Siga estas instrucciones bajo su propio riesgo. Ni los autores ni su empleador son responsables de ningún daño o pérdida directa o consecuente que surja de cualquier persona u organización que actúe o deje de actuar sobre la base de la información contenida en esta página.
Introducción
Software requerido
Generar el payload
Generar el token de desbloqueo
Preparar la imagen SPI Flash
Integrar archivos en la imagen de firmware
Deshabilitar el firmado OEM
Compilar la imagen de firmware
Arranque de la CPU principal
Escribir la imagen en SPI Flash
Preparar el cable de depuración USB
Parchear los archivos de configuración de OpenIPC
Descifrar los archivos de configuración de OpenIPC
Agregar LMT Core a la configuración
Configurar la variable de entorno IPC_PATH
Realizar una verificación inicial de la operabilidad de JTAG
Mostrar el hilo ME de la CPU
Detener núcleos
Depuración de ME: Inicio rápido
Leer memoria arbitraria
Leer ROM
¿Por qué TXE?
Lista de plataformas probadas
Autores
Licencia
La vulnerabilidad INTEL-SA-00086 permite activar JTAG para el núcleo de Intel Management Engine. Desarrollamos nuestro [PoC de JTAG][8] para la plataforma Gigabyte Brix GP-BPCE-3350C. Aunque recomendamos que los futuros investigadores utilicen la misma plataforma, las plataformas de otros fabricantes con el chipset Intel Apollo Lake también deberían ser compatibles con el PoC (para la versión de TXE 3.0.1.1107).
Debido a que la Gigabyte Brix GP-BPCE-3350C ya no está ampliamente disponible comercialmente, estas instrucciones se han actualizado para dirigirse en su lugar a la AAEON UP Squared SKU UPS-APLX7-A20-0864 (Intel Atom® x7-E3950). Si compra esta placa, asegúrese de adquirir también la fuente de alimentación, el adaptador serie y cualquier adaptador USB a serie. Además, la UP Squared solo necesita un cable de depuración USB básico para realizar la depuración DCI. El cable de depuración USB debe conectarse al puerto donde se muestra el cable USB amarillo aquí.
La vulnerabilidad INTEL-SA-00086 implica un desbordamiento de búfer al manejar un archivo almacenado en MFS (el [sistema de archivos interno de ME][6]). La ruta completa del archivo es /home/bup/ct. Necesitará integrar una versión de este archivo que explote la vulnerabilidad en el firmware de ME utilizando Intel Flash Image Tool (FIT), una de las Intel System Tools proporcionadas por Intel a los OEM de hardware basado en chipsets Intel PCH.
Las utilidades de Intel ME (TXE, SPS) System Tools no están destinadas a usuarios finales, por lo que no puede encontrarlas en el sitio web oficial de Intel. Sin embargo, algunos OEM las publican como parte de actualizaciones de software junto con los controladores de dispositivos. Por lo tanto, para integrar nuestro PoC necesita "CSTXE System Tools v3", que se puede encontrar aquí.
Necesita instalar Intel System Studio para realizar la depuración JTAG. En nuestros experimentos originales, utilizamos Intel System Studio 2018. Estas instrucciones se han actualizado para Intel System Studio 2020, que se puede obtener aquí.
El PoC tiene como objetivo el firmware Intel TXE versión 3.0.1.1107. El repositorio de imágenes "CSTXE 3.0" en foros Win-Raid contiene la versión necesaria del firmware TXE.
Todos nuestros scripts están escritos en Python. Recomendamos usar Python 2.7 Además, los scripts requieren el paquete pycrypto. Para instalar pycrypto, ejecute el siguiente comando:``` pip install pycrypto
## Realización de depuración x86 de referencia mediante DCI
Si bien el propósito de esta guía es habilitar la depuración JTAG en el ME mediante un exploit, es una buena práctica realizar primero una comprobación de cordura y asegurarse de que se puede realizar la depuración JTAG normal de la placa UP Squared a través de DCI. AAEON ya no distribuye sus BIOS con DCI habilitado, ya que indicaron en sus foros que esto provocaba inestabilidad. (Y las versiones anteriores de la BIOS anteriores a la v5.0 que tenían DCI habilitado ya no funcionarán con hardware más nuevo, debido a un cambio de hardware del proveedor de DRAM). Por lo tanto, para habilitar DCI JTAG en la UP Squared, debes realizar 3 pasos:
1) Realiza el parcheo binario descrito por Satoshi Tanda [aquí](https://forum.up-community.org/discussion/comment/12877#Comment_12877) (aunque debería decir que se use UEFITool 0.28, no 2.8).
2) Habilita DCI a través del menú de configuración de la BIOS presionando F7 al arrancar, ingresando la contraseña UP predeterminada (*upassw0rd*), desde el menú principal, bajando hasta "CRB Setup" -> "CSB Chipset" -> "South Cluster Configuration" -> "Miscellaneous Configuration" -> "DCI Enable (HDCIEN)" y configurándolo como habilitado. Luego sal del menú de configuración de la BIOS, guarda el cambio de configuración y reinicia el sistema.
3) Abre "C:\IntelSWTools\system_studio_2020\system_debugger_2020\target_indicator\bin\TargetIndicator.exe" y confirma que, cuando tengas ese sistema conectado a la UP Squared mediante el cable de depuración, se muestre un indicador azul de que DCI es posible, como el siguiente:

Luego puedes iniciar ":\Program Files (x86)\IntelSWTools\sw_dev_tools\system_debugger_2020\system_debug_legacy\xdb.bat", conectarte al objetivo, interrumpirlo y ejecutarlo paso a paso para confirmar que tienes capacidades de depuración de referencia.