
Intel Management Engine JTAG Prova di concetto
Tutte le informazioni sono fornite esclusivamente a scopo didattico. Segui queste istruzioni a tuo rischio e pericolo. Né gli autori né il loro datore di lavoro sono responsabili di eventuali danni diretti o consequenziali o perdite derivanti da qualsiasi persona o organizzazione che agisca o ometta di agire sulla base delle informazioni contenute in questa pagina.
Introduzione
Software Richiesto
Generazione del Payload
Generazione del Token di Sblocco
Preparazione dell'Immagine SPI Flash
Integrazione dei File nell'Immagine del Firmware
Disattivazione della Firma OEM
Creazione dell'Immagine del Firmware
Avvio della CPU Principale
Scrittura dell'Immagine sulla SPI Flash
Preparazione del Cavo di Debug USB
Applicazione di Patch ai File di Configurazione di OpenIPC
Decrittazione dei File di Configurazione di OpenIPC
Aggiunta del Core LMT alla Configurazione
Impostazione della Variabile d'Ambiente IPC_PATH
Verifica Iniziale del Funzionamento del JTAG
Visualizzazione del Thread ME della CPU
Arresto dei Core
Debug di ME: Avvio Rapido
Lettura di Memoria Arbitraria
Lettura della ROM
Perché TXE?
Elenco delle Piattaforme Testate
Autori
Licenza
La vulnerabilità INTEL-SA-00086 consente di attivare il JTAG per il core Intel Management Engine. Abbiamo sviluppato la nostra [PoC JTAG][8] per la piattaforma Gigabyte Brix GP-BPCE-3350C. Sebbene consigliamo agli aspiranti ricercatori di utilizzare la stessa piattaforma, anche le piattaforme di altri produttori basate sul chipset Intel Apollo Lake dovrebbero supportare la PoC (per la versione TXE 3.0.1.1107).
La vulnerabilità INTEL-SA-00086 comporta un buffer overflow durante la gestione di un file archiviato su MFS (il [file system interno di ME][6]). Il percorso completo del file è /home/bup/ct. Dovrai integrarlo nel firmware di ME utilizzando Intel Flash Image Tool (FIT), uno degli Intel System Tools forniti da Intel agli OEM di hardware basato su chipset Intel PCH. Ecco la struttura della directory root del pacchetto Intel System Tools:

Le utility Intel ME (TXE, SPS) System Tools non sono destinate agli utenti finali—quindi non è possibile trovarle sul sito web ufficiale di Intel. Tuttavia, alcuni OEM le pubblicano come parte degli aggiornamenti software insieme ai driver di periferica. Quindi, per integrare la nostra PoC è necessario Intel TXE System Tools versione 3.x, che può essere trovato online.
È necessario installare Intel System Studio, la cui versione di prova può essere scaricata dal sito di Intel. Nei nostri esperimenti abbiamo utilizzato Intel System Studio 2018.
La PoC prende di mira il firmware Intel TXE versione 3.0.1.1107. L'immagine SPI Flash per Gigabyte GB-BPCE-3350C versione F5 contiene la versione necessaria del firmware.
Tutti i nostri script sono scritti in Python. Consigliamo di utilizzare Python 2.7 Inoltre gli script richiedono il pacchetto pycrypto. Per installare pycrypto, esegui il seguente comando:
pip install pycrypto
Questa utility è necessaria solo se devi avviare la CPU.
EFI Human Interface Infrastructure (HII) è un meccanismo speciale per creare un'interfaccia utente nell'UEFI, oltre che per elaborare e gestire l'input dell'utente. EFI HII identifica i valori predefiniti per tutte le opzioni, incluse quelle nascoste. Una volta trovata l'opzione relativa a DCI, è possibile attivarla per la configurazione predefinita e DCI può essere abilitato ripristinando le impostazioni di fabbrica del BIOS. Per avviare la CPU principale è necessario AMI BIOS Configuration Program versione 5.xx, che può essere trovato anch'esso online.
Esegui lo script me_exp_bxtp.py:
me_exp_bxtp.py -f <file_name>
Lo script genera i dati necessari e li esporta nel file specificato (indica il percorso completo del file oppure, nella directory corrente, semplicemente un nome, ct.bin per impostazione predefinita). Questo file verrà utilizzato in seguito da FIT.
Esegui lo script me_utok_bxtp.py:
me_utok_bxtp.py -f <file_name>
Lo script genera i dati necessari e li esporta nel file specificato (indica il percorso completo del file oppure, nella directory corrente, semplicemente un nome, utok.bin per impostazione predefinita). Questo file verrà utilizzato in seguito da FIT.
Salta questo passaggio se non devi avviare la CPU.
Per attivare l'opzione DCI Enable, esegui l'utility AMIBCP e usala per aprire l'immagine del firmware SPI fornita con la tua piattaforma. Per la Gigabyte Brix GP-BPCE-3350C, apri il file scaricato dal link Gigabyte indicato sopra (percorso del file immagine nell'archivio: F5/image.bin).

Ora dobbiamo abilitare l'opzione HDCIEN nella scheda Setup Configuration.
Per integrare i file ct.bin e utok.bin, esegui l'utility FIT (fit.exe) e usala per aprire l'immagine del firmware SPI.

Se stai utilizzando un'altra piattaforma hardware e non hai accesso a TXE 3.0.1.1107, puoi scaricare un'immagine SPI Flash per Gigabyte GB-BPCE-3350C versione F5 ed estrarre la sezione TXE tramite FIT. FIT estrae diverse sezioni dell'immagine SPI complessiva (SPI descriptor, firmware UEFI/BIOS, firmware Intel ME e Unlock Token) quando l'immagine viene aperta e le salva nella cartella *"image_name"/Decomp *.

Quindi puoi trovare il file con il firmware Intel TXE necessario in /Decomp/TXE Region.bin
Successivamente, in FIT, apri l'immagine SPI per la tua piattaforma specifica e sostituisci il file contenente il firmware Intel TXE con la versione ottenuta dall'immagine GB Brix 3350c ("Intel(R) TXE Binary File" nella scheda Flash Layout):