
Intel Management Engine JTAG Prova di concetto - Istruzioni 2022
Tutte le informazioni sono fornite solo a scopo educativo. Segui queste istruzioni a tuo rischio. Né gli autori né il loro datore di lavoro sono responsabili per danni diretti o consequenziali o perdite derivanti da qualsiasi persona o organizzazione che agisca o non agisca 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
BringUP della CPU principale
Scrittura dell'immagine sulla SPI Flash
Preparazione del cavo USB di debug
Applicazione delle patch ai file di configurazione OpenIPC
Decifratura dei file di configurazione OpenIPC
Aggiunta del core LMT alla configurazione
Impostazione della variabile d'ambiente IPC_PATH
Esecuzione di un controllo iniziale del funzionamento del JTAG
Mostra thread CPU ME
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 raccomandiamo ai potenziali ricercatori di utilizzare la stessa piattaforma, anche le piattaforme di altri produttori con il chipset Intel Apollo Lake dovrebbero supportare la PoC (per la versione TXE 3.0.1.1107).
Poiché la Gigabyte Brix GP-BPCE-3350C non è più ampiamente disponibile in commercio, queste istruzioni sono state aggiornate per puntare invece alla AAEON UP Squared SKU UPS-APLX7-A20-0864 (Intel Atom® x7-E3950). Se acquisti questa scheda, assicurati di procurarti anche l'alimentatore, l'adattatore seriale e un qualsiasi adattatore USB-to-serial. Inoltre, la UP Squared necessita solo di un cavo USB di debug di base per eseguire il debug DCI. Il cavo USB di debug deve essere collegato alla porta in cui è mostrato il cavo USB giallo qui.
La vulnerabilità INTEL-SA-00086 comporta un buffer overflow nella gestione di un file archiviato su MFS (il [file system interno di ME][6]). Il percorso completo del file è /home/bup/ct. Dovrai integrare una versione di questo file che sfrutti la vulnerabilità nel firmware ME utilizzando Intel Flash Image Tool (FIT), uno degli Intel System Tools forniti da Intel agli OEM di hardware basati su chipset Intel PCH.
Le utility degli Intel System Tools per ME (TXE, SPS) non sono destinate agli utenti finali—quindi non puoi trovarle sul sito ufficiale Intel. Tuttavia, alcuni OEM le pubblicano come parte degli aggiornamenti software insieme ai driver di dispositivo. Quindi, per integrare la nostra PoC hai bisogno di "CSTXE System Tools v3", che puoi trovare qui.
Devi installare Intel System Studio per eseguire il debug JTAG. Nei nostri esperimenti originali abbiamo usato Intel System Studio 2018. Queste istruzioni sono state aggiornate per Intel System Studio 2020, che può essere ottenuto da qui.
La PoC punta alla versione 3.0.1.1107 del firmware Intel TXE. Il repository di immagini "CSTXE 3.0" presso i forum Win-Raid contiene la versione necessaria del firmware TXE.
Tutti i nostri script sono scritti in Python. Consigliamo di usare Python 2.7 Inoltre, gli script richiedono il pacchetto pycrypto. Per installare pycrypto, esegui il seguente comando:``` pip install pycrypto
## Esecuzione del debug x86 di base tramite DCI
Sebbene lo scopo di questa guida sia abilitare il debug JTAG nel ME tramite un exploit, è buona pratica effettuare prima un sanity check e assicurarsi di poter eseguire il debug JTAG normale della scheda UP Squared tramite DCI. AAEON non distribuisce più i propri BIOS con DCI abilitato, come dichiarato sui loro forum, poiché ciò portava a instabilità. (E le versioni del BIOS precedenti alla v5.0 che avevano DCI abilitato non funzioneranno più con l'hardware più recente, a causa di una modifica hardware del fornitore di DRAM.) Pertanto, per abilitare DCI JTAG su UP Squared, è necessario eseguire 3 passaggi:
1) Eseguire la patch binaria descritta da Satoshi Tanda [qui](https://forum.up-community.org/discussion/comment/12877#Comment_12877) (anche se dovrebbe dire di usare UEFITool 0.28, non 2.8).
2) Abilitare DCI tramite il menu di configurazione del BIOS premendo F7 all'avvio, inserendo la password UP predefinita (*upassw0rd*), dal menu principale scendendo fino a "CRB Setup" -> "CSB Chipset" -> "South Cluster Configuration" -> "Miscellaneous Configuration" -> "DCI Enable (HDCIEN)" e impostandola su enabled. Quindi uscire dal menu di setup del BIOS, salvare la modifica della configurazione e riavviare il sistema.
3) Aprire "C:\IntelSWTools\system_studio_2020\system_debugger_2020\target_indicator\bin\TargetIndicator.exe" e verificare che, quando il sistema è collegato alla UP Squared tramite il cavo di debug, venga visualizzato un indicatore blu che segnala che DCI è possibile, come quello qui sotto:

È quindi possibile avviare ":\Program Files (x86)\IntelSWTools\sw_dev_tools\system_debugger_2020\system_debug_legacy\xdb.bat", connettersi al target, interromperne l'esecuzione ed eseguire il single step per confermare di avere capacità di debug di base.