
Intel Management Engine JTAG Proof of Concept - 2022 Anleitung
Alle Informationen dienen ausschließlich Bildungszwecken. Befolgen Sie diese Anweisungen auf eigenes Risiko. Weder die Autoren noch ihr Arbeitgeber übernehmen Verantwortung für direkte oder Folgeschäden oder Verluste, die aus Handlungen oder Unterlassungen von Personen oder Organisationen auf der Grundlage der auf dieser Seite enthaltenen Informationen entstehen.
Einführung
Erforderliche Software
Erzeugen der Payload
Erzeugen des Unlock-Tokens
Vorbereiten des SPI-Flash-Images
Integrieren von Dateien in das Firmware-Image
Deaktivieren der OEM-Signierung
Erstellen des Firmware-Images
BringUP der Haupt-CPU
Schreiben des Images auf den SPI-Flash
Vorbereiten des USB-Debug-Kabels
Patchen von OpenIPC-Konfigurationsdateien
Entschlüsseln von OpenIPC-Konfigurationsdateien
Hinzufügen des LMT-Cores zur Konfiguration
Festlegen der Umgebungsvariable IPC_PATH
Durchführen einer ersten Überprüfung der JTAG-Betriebsfähigkeit
CPU-ME-Thread anzeigen
Anhalten von Cores
ME-Debugging: Schnellstart
Lesen von beliebigem Speicher
ROM lesen
Warum TXE?
Liste der getesteten Plattformen
Autoren
Lizenz
Die Schwachstelle INTEL-SA-00086 ermöglicht die Aktivierung von JTAG für den Intel Management Engine-Kern. Wir haben unseren [JTAG-PoC][8] für die Plattform Gigabyte Brix GP-BPCE-3350C entwickelt. Obwohl wir angehenden Forschern empfehlen, dieselbe Plattform zu verwenden, sollten Plattformen anderer Hersteller mit dem Intel Apollo Lake-Chipsatz den PoC ebenfalls unterstützen (für TXE-Version 3.0.1.1107).
Da der Gigabyte Brix GP-BPCE-3350C nicht mehr breit im Handel erhältlich ist, wurden diese Anweisungen aktualisiert und zielen stattdessen auf das AAEON UP Squared SKU UPS-APLX7-A20-0864 (Intel Atom® x7-E3950). Wenn Sie dieses Board kaufen, besorgen Sie sich unbedingt auch das Netzteil, den Seriell-Adapter und einen beliebigen USB-zu-seriell-Adapter. Darüber hinaus benötigt das UP Squared nur ein einfaches USB-Debug-Kabel, um DCI-Debugging durchzuführen. Das USB-Debug-Kabel sollte an den Port angeschlossen werden, an dem das gelbe USB-Kabel hier gezeigt wird.
Die Schwachstelle INTEL-SA-00086 beinhaltet einen Pufferüberlauf bei der Verarbeitung einer Datei, die auf MFS (dem [internen ME-Dateisystem][6]) gespeichert ist. Der vollständige Dateipfad ist /home/bup/ct. Sie müssen eine Version dieser Datei, die die Schwachstelle ausnutzt, mithilfe des Intel Flash Image Tool (FIT) in die ME-Firmware integrieren – eines der Intel System Tools, die Intel OEMs von Hardware auf Basis von Intel-PCH-Chipsätzen bereitstellt.
Die Intel ME (TXE, SPS) System Tools-Dienstprogramme sind nicht für Endbenutzer bestimmt – daher finden Sie sie nicht auf der offiziellen Intel-Website. Einige OEMs veröffentlichen sie jedoch als Teil von Software-Updates zusammen mit Gerätetreibern. Für die Integration unseres PoC benötigen Sie also „CSTXE System Tools v3", das Sie hier finden.
Sie müssen Intel System Studio installieren, um JTAG-Debugging durchzuführen. In unseren ursprünglichen Experimenten haben wir Intel System Studio 2018 verwendet. Diese Anweisungen wurden für Intel System Studio 2020 aktualisiert, das Sie hier erhalten.
Der PoC zielt auf Intel TXE-Firmware-Version 3.0.1.1107. Das „CSTXE 3.0"-Image-Repository in den Win-Raid-Foren enthält die erforderliche TXE-Firmware-Version.
Alle unsere Skripte sind in Python geschrieben. Wir empfehlen die Verwendung von Python 2.7 Außerdem benötigen die Skripte das Paket pycrypto. Führen Sie zum Installieren von pycrypto den folgenden Befehl aus:``` pip install pycrypto
## Durchführen von Basis-x86-Debugging über DCI
Obwohl der Zweck dieses Handbuchs darin besteht, JTAG-Debugging im ME über einen Exploit zu ermöglichen, ist es eine gute Praxis, zunächst eine Plausibilitätsprüfung durchzuführen und sicherzustellen, dass Sie normales JTAG-Debugging des UP-Squared-Boards über DCI durchführen können. AAEON liefert seine BIOS-Versionen nicht mehr mit aktiviertem DCI aus, da sie in ihren Foren angaben, dass dies zu Instabilitäten führte. (Und ältere BIOS-Versionen vor v5.0, die DCI aktiviert hatten, funktionieren mit neuerer Hardware aufgrund einer Hardwareänderung des DRAM-Herstellers nicht mehr.) Um DCI-JTAG auf dem UP Squared zu aktivieren, müssen Sie daher 3 Schritte ausführen:
1) Führen Sie das von Satoshi Tanda [hier](https://forum.up-community.org/discussion/comment/12877#Comment_12877) beschriebene binäre Patchen durch (obwohl es heißen sollte, UEFITool 0.28 und nicht 2.8 zu verwenden).
2) Aktivieren Sie DCI über das BIOS-Konfigurationsmenü, indem Sie beim Booten F7 drücken, das Standard-UP-Passwort (*upassw0rd*) eingeben, vom Hauptmenü zu "CRB Setup" -> "CSB Chipset" -> "South Cluster Configuration" -> "Miscellaneous Configuration" -> "DCI Enable (HDCIEN)" navigieren und es auf aktiviert setzen. Verlassen Sie dann das BIOS-Setup-Menü, speichern Sie die Konfigurationsänderung und starten Sie das System neu.
3) Öffnen Sie "C:\IntelSWTools\system_studio_2020\system_debugger_2020\target_indicator\bin\TargetIndicator.exe" und bestätigen Sie, dass bei angeschlossenem System am UP Squared über das Debug-Kabel ein blauer Indikator angezeigt wird, der anzeigt, dass DCI möglich ist, wie unten gezeigt:

Sie können dann ":\Program Files (x86)\IntelSWTools\sw_dev_tools\system_debugger_2020\system_debug_legacy\xdb.bat" starten, sich mit dem Ziel verbinden, die Ausführung unterbrechen und einen Einzelschritt durchführen, um zu bestätigen, dass Sie über grundlegende Debugging-Fähigkeiten verfügen.