
Intel Management Engine JTAG Prova de Conceito - Instruções de 2022
Todas as informações são fornecidas apenas para fins educacionais. Siga estas instruções por sua conta e risco. Nem os autores nem seu empregador são responsáveis por qualquer dano ou perda direta ou consequente decorrente de qualquer pessoa ou organização que aja ou deixe de agir com base nas informações contidas nesta página.
Introdução
Software Necessário
Gerando o Payload
Gerando o Token de Desbloqueio
Preparando a Imagem SPI Flash
Integrando Arquivos na Imagem de Firmware
Desabilitando a Assinatura OEM
Construindo a Imagem de Firmware
Inicialização da CPU Principal
Gravando a Imagem na SPI Flash
Preparando o Cabo de Depuração USB
Aplicando Patch nos Arquivos de Configuração do OpenIPC
Descriptografando os Arquivos de Configuração do OpenIPC
Adicionando o Núcleo LMT à Configuração
Definindo a Variável de Ambiente IPC_PATH
Realizando uma Verificação Inicial da Operabilidade do JTAG
Exibir Thread da CPU ME
Parando os Núcleos
Depuração do ME: Início Rápido
Lendo Memória Arbitrária
Lendo a ROM
Por que TXE?
Lista de Plataformas Testadas
Autores
Licença
A vulnerabilidade INTEL-SA-00086 permite ativar o JTAG para o núcleo do Intel Management Engine. Desenvolvemos nosso [PoC de JTAG][8] para a plataforma Gigabyte Brix GP-BPCE-3350C. Embora recomendemos que aspirantes a pesquisadores usem a mesma plataforma, plataformas de outros fabricantes com o chipset Intel Apollo Lake também devem suportar o PoC (para a versão 3.0.1.1107 do TXE).
Como o Gigabyte Brix GP-BPCE-3350C não está mais amplamente disponível no mercado, estas instruções foram atualizadas para ter como alvo o AAEON UP Squared SKU UPS-APLX7-A20-0864 (Intel Atom® x7-E3950). Se você comprar esta placa, certifique-se de também obter a fonte de alimentação, o adaptador serial e qualquer adaptador USB-para-serial. Além disso, o UP Squared só precisa de um cabo de depuração USB básico para realizar a depuração DCI. O cabo de depuração USB deve ser conectado à porta onde o cabo USB amarelo é mostrado aqui.
A vulnerabilidade INTEL-SA-00086 envolve um estouro de buffer ao manipular um arquivo armazenado no MFS (o [sistema de arquivos interno do ME][6]). O caminho completo do arquivo é /home/bup/ct. Você precisará integrar uma versão desse arquivo que explora a vulnerabilidade no firmware do ME usando o Intel Flash Image Tool (FIT), uma das Ferramentas de Sistema da Intel fornecidas pela Intel a OEMs de hardware baseado em chipsets Intel PCH.
Os utilitários das Ferramentas de Sistema do Intel ME (TXE, SPS) não são destinados a usuários finais — portanto, você não pode encontrá-los no site oficial da Intel. No entanto, alguns OEMs os publicam como parte de atualizações de software juntamente com drivers de dispositivos. Portanto, para integrar nosso PoC, você precisa do "CSTXE System Tools v3", que pode ser encontrado aqui.
Você precisa instalar o Intel System Studio para realizar a depuração via JTAG. Em nossos experimentos originais, usamos o Intel System Studio 2018. Estas instruções foram atualizadas para o Intel System Studio 2020, que pode ser obtido aqui.
O PoC tem como alvo a versão 3.0.1.1107 do firmware Intel TXE. O repositório de imagens "CSTXE 3.0" nos fóruns Win-Raid contém a versão necessária do firmware TXE.
Todos os nossos scripts são escritos em Python. Recomendamos usar o Python 2.7 Também os scripts requerem o pacote pycrypto. Para instalar o pycrypto, execute o seguinte comando:``` pip install pycrypto
## Realizando depuração x86 de linha de base via DCI
Embora o objetivo deste guia seja habilitar a depuração JTAG na ME por meio de um exploit, é uma boa prática primeiro fazer uma verificação de sanidade e garantir que você consiga realizar a depuração JTAG normal da placa UP Squared via DCI. A AAEON não envia mais seus BIOS com a DCI habilitada, pois afirmaram em seus fóruns que isso levava a instabilidade. (E versões mais antigas do BIOS anteriores à v5.0 que tinham a DCI habilitada não funcionarão mais com hardware mais novo, devido a uma mudança de hardware do fornecedor de DRAM.) Portanto, para habilitar a JTAG via DCI na UP Squared, você deve executar 3 etapas:
1) Realize o patch binário descrito por Satoshi Tanda [aqui](https://forum.up-community.org/discussion/comment/12877#Comment_12877) (embora deva dizer para usar UEFITool 0.28 e não 2.8).
2) Habilite a DCI através do menu de configuração do BIOS pressionando F7 na inicialização, inserindo a senha padrão da UP (*upassw0rd*), no menu Main, navegando até "CRB Setup" -> "CSB Chipset" -> "South Cluster Configuration" -> "Miscellaneous Configuration" -> "DCI Enable (HDCIEN)" e definindo-a como habilitada. Em seguida, saia do menu de configuração do BIOS, salve a alteração de configuração e reinicie o sistema.
3) Abra "C:\IntelSWTools\system_studio_2020\system_debugger_2020\target_indicator\bin\TargetIndicator.exe" e confirme que, quando você tiver esse sistema conectado à UP Squared via cabo de depuração, seja exibido um indicador azul de que a DCI é possível, como abaixo:

Você pode então iniciar ":\Program Files (x86)\IntelSWTools\sw_dev_tools\system_debugger_2020\system_debug_legacy\xdb.bat", conectar-se ao alvo, interrompê-lo e executar passo a passo para confirmar que você tem capacidades básicas de depuração.