 Okay, das besetzen hier, also das ist, bitte heißt Maxim Goriachi willkommen zur 34 C3, zu seinem Vortrag über die interna der Inter-Management Engine, ich rede heute über Inter-Debug-Möglichkeiten. Das ist das zweite Mal, dass ich auf einer Konferenz rede, hintereinander. Das erste Mal habe ich darüber erzählt über die Debug-Möglichkeiten vom Inter-Direct-Interface und jetzt erzähle ich über die Inter-Management Engine. Das ist eine properitäre Implementierung von einem industriebekannten Protokoll und ich erzähle darüber wie das benutzt werden kann für Forschung und wie man es in der Praxis benutzen kann. Leider konnte mein Kollege Mark nicht kommen. Ich werde über unsere Forschung allein berichten und ich glaube ihr habt Hunger und ich mache es schnell. Unser Management Engine Forschungsteam bei Positive Engine beinhaltet mein Kollegen Mark Emoloff und mich selbst, Mark Emoloff ist mein Kollege und wir fanden diese Verletzlichkeit in der Inter-Management Ent-Management. Er ist Systemprogrammierer und Ingenieur und ein Reverse-Engineer. Dimitri Slatov ist der Reverse-Engineer, hat 11 Versionen dekodiert und ihr könnt seine Arbeit auf unseren GitHub-Pages finden und falls ihr irgendwelche Fragen habt, das könnt ihr uns jederzeit kontaktieren. Ich werde erzählen was InterME ist, wie es implementiert ist und wie man einen JTAC aktivieren kann. Ich werde erzählen im Detail wie diese Technik funktioniert. Wie viele Leute wissen was InterME ist? Ich werde es euch erzählen. Die In-Cal Management Engine ist als Thema sehr beliebt. Es war sehr schlecht dokumentiert, aber es hat viel Zugriff auf die komplette Hardware. Es hat Zugriff auf die Hardware, es hat die Fähigkeit, alles abzufangen, was man am Computer tut. Zum Beispiel mit Tastatur, USB-Geräten und andere Busse im Computer. Es hat auch viel zu tun mit vielen Trust-Computing-Features der Intel CPUs wie der TPM. Intel hat das folgende Design für die ME benutzt. Es hat ein 32-Bit Microcontroller als Hauptprozessor. Es hat als Betriebssystem Minix laufen mit einer Java-Vacuum-Maschine. Und es wechselwirkt mit CPU, GPUs und allem möglichen Speicher. Viele Technologien sind mit der Hilfe von der Management Engine implementiert, zum Beispiel Active Management Technology. Wie viele Leute hier wissen, was JTAG ist? JTAG steht für Joint-Test-Action Group. Es ist beschrieben im IEEE Standard 1149. Es kann man im Standard finden. Es ist auch auf unserem Blog ein Paper erklärt, wo das Design beschrieben wird in feinem Detail. Intel hat die eigenen Funktionen dazu gefügt. Intel hat das selbst nicht so gut beschrieben. Manche Informationen werden in Dokumenten und Patenten gefunden. Unser Papier war auf der Folie. Intel hat das direkte Verbindungs-Interface-Technologie eingeführt. In der Beschreibung kann man in der Dokumentation finden und in unserer Arbeit finden. Das Diagramm zeigt zwei Arten von Verbindungen. Wenn man ein spezifisches Gerät benutzt oder ein normales USB-3-Kabel benutzt. Das Zielsystem braucht keine spezielle Maschine. Diese Technologie funktioniert direkt aus ohne Weiteres. Man kann dieses JTAG durch USB-3-Parts checken. Es funktioniert auf Platt. Dieses DCI implementiert ein... Es implementiert ein properitäres Protokoll. Das heißt... In diesem Protokoll hat man unabhängige Leitungen, die unabhängige Verbindungen zwischen... Man benutzt die normalen USB-3-Kabel-Möglichkeiten. Das ist ein spezielles Gerät, das auf dem Hostsystem beruht und seine Signale durch das common USB-Interface benutzt. Das Interface ist integriert im PCH und funktioniert als normales JTAG. Wenn man das JTAG für ME-Geräte benutzt, dann hat man fast komplette Kontrolle über die Management Engine. Die Frage ist, wie man die ME dann... Die Frage ist jetzt, was man für hardware, für dieses JTAG-Debugging von der ME braucht. Die erste Frage ist, mit Ja zu beantworten. Es gibt eine spezielle Passion, die heißt U-Token, also Unlocktoken, also Entschlüsselungstoken auf einem Flash-Speicher, also ME-Speicher in dieser Partition. In der Partition findet man verschiedene Öffnungsmethoden, Rot und Orange, die FX bedeutet, ist ein Begriff für Entwurf für Herstellerbarkeit, Testbarkeit und Debugbarkeit. Und DFX ist benutzt, um Herstellungsfehler zu finden, um Herstellungsfehler bei integrierten Schaltkreisen zu finden, und normalerweise funktioniert das beruht das auf Boundary Scan von der normalen Technik und Intel erweitert das in eine proprietäre Technologie. Es gibt interne Logik, also interne Testlogik, benutzt und die Verbindung zwischen der internen Logik wird mit einem DFX-Interface realisiert. Das ist so etwas Ähnliches wie USB. Es gibt so ein spezielles Gerät, das heißt DFX-Aggregator, dass die Verbindung zu DFX regeln soll. Es gibt zwei Arten, Orange, Orange. Hersteller können JTAG-Debug-Features benutzen. Diese Partition muss unterzeichnet sein mit einem digitalen Schlüssel vom Hersteller. Noch interessanter ist die rote Veröffnung, das gibt vollen Zugriff auf die internen Geräte. Das öffnet JTAG für die Memory Engine Core und öffnet JTAG für den ISH Kern. Die Intel Management Engine benutzt zwei Geräte für Hardware, die Bugging. Irgendwas, das Baub und Rom benutzen das Gerät. Das ist das CSE Register. Wir wissen bloß, was eines dieser Bits tut. Das ist der Intel-Effnungsmechanismus. Dieser Begriff heißt, dass man die Plattform gefragt hat, den Red Unlock zu machen, die rote Öffnung zu öffnen. Das ist der DFX-Aggregator. Das Personal-Register wählt zwischen Rot und Orange Entschlüsselung auf. Das Concent-Register bedeutet, das liestige Einbitt vom Concent-Register ermöglicht das Schreiben von Daten in das DFX-Personalty-Register. Die Öffnung von Rot funktioniert nach diesem Zustanddiagramm in zwei Schritten. Das Gerät, das BUB, heißt, das öffnet eine Partition. Wenn die Partition gefunden wird, dann testet überprüft das BUB die Signatur der Partition und die Identifizierung der Plattform. Außerdem checkt BUB die Zeit. Das Gerät, das U-Toc heißt, hat eine Zeitbegrenzung. Danach, wenn das alles okay ist, dann erlaubt BUB das Zugriff auf die U-Toc-Partition. Wenn die Plattform dann nicht schon offen ist, dann setzt BUB das CSC-Zero-Ingregister und setzt die Management-Engine zurück. Im ROM passiert Folgendes. Das CSC-Zero-Ingregister wird geprüft. Falls das gesetzt ist, dann wird das Register zurückgesetzt und Concent- und Quersonalty werden angeschaltet. Das heißt, da werden Bits gesetzt. Danach setzt das ROM die Management-Engine Schlüssel zurück. Aber wenn das bereits aktiv ist, dann wird der Concent-Gregister nicht gesetzt. Wenn man JTEC anschalten möchte, dann braucht man die Management-Engine nicht neu starten, falls man in die zweite Branch geht. Wie kann man die Rote Aktivierung, also die für alles ohne die Intel Schlüssel aufmachen? Wir haben eine Vulnerability in BUB-Modul dokumentiert. Hier wird die falsche Größe weitergegeben an den Buffer, sodass man einen Buffer Overflow hat. Diese Verwundbarkeit haben wir bereits demonstriert. Mithilfe dieser Verwundbarkeit können wir JTEC für die Management-Engine aktivieren und um die ME zu erforschen. Und die intern nahe der ME ist die rote Öffnung hilfreich. Nach vier einfachen Schritten. Als erstes wird der Hersteller-Mod für das Ziel aktiviert. Dann wird etwas, was DCI-Strap heißt, in der Flaschbeschreibung gesetzt. Dann wird diese Verwundbarkeit benutzt, um den Wert 3 in das DFX-Personalitätsregister zu schreiben. Und dann ist dieser rote Mod aktiviert. Dann kann man praktisch die Internat des Geräts erforschen. Auf der Hausseite gibt es ein Problem. Das ist das Intel DAL, das ist DFX Abstraction Layer. Für dieses Debugging gibt es keine Software. Aber das ist ein kleines Problem. Jetzt reden wir über den Software-Teil vom Technologiesteck. Intel hat Libraries, die diese ganzen Möglichkeiten des DFX Software zugänglich macht. Es werden verschiedene Plattformen und CPU-Architektoren unterstützt. Und verschiedene Platinen werden unterstützt. Wir wissen, dass DAL die Grundlage ist für alle möglichen Testgeräte, die Intel benutzt. Es wird also geliefert mit Intel System Studio. Und es kann runtergeladen werden ohne NDA. DAL ist fast komplett NC Sharp geschrieben. Und hat die gleiche Struktur. Ganz außen hat es ein Interface, ein Bibliotheks-Schicht, eine Treiberschicht und eine Transportschicht. Wir haben ein bisschen Dokumentation dazu gefunden in offizieller Präsentation. Ihr könnt euch unseren letzten Vortag anschauen für weitere Details, wie die interne Struktur von diesem Gerät ist. Die Architektur von DAL ist in zwei Strukturen, in zwei Teile geteilt, physisch und logisch. Es besteht aus drei Komponenten. JTAG, ETC-Bus und noch ein weiteres. Es präsentiert Funktionalität, die man für Stibageln benutzen kann. Das Problem ist, dass die öffentliche Version von dem Programm keine Konfiguration für MI breitstellt. Aber das hat uns nicht weiter gestört und wir haben eine Lösung gefunden. Wie ich gesagt habe, DAL hat Konfiguration, die ein bisschen anders ist. Wir haben durch Reverse-Engineering von der DAL Bibliothek herausgefunden, dass es ein verschüsseltes XML-Datei ist. Es wird mit AES verschüsselt und mit PKBDF2 mit einem fixen Salt. Hier seht ihr den Salt und den Key. Damit können wir die Konfiguration von DAL ändern. Damit können wir vielleicht auch den Mikrochord der CPU entschlüsseln. Jeder kann aufgrund der öffentlichen XML-Files jeder Konfigurations-Files für die Management-Engine schreiben. Hier sieht man die interne Struktur von der LPCR der Kerne. Die CLTAP ist in vier Teile gespalten. Hier sind also die verschiedenen Komponenten gezeigt. Wie konfiguriert man seine eigenen Konfirmationen? Es sind vier Schritte. Als erstes muss man die XML-Files entschlüsseln. Als zweites muss man ans Toppo-SPD die folgenden Zeilen anhängen. Man muss das Standard-DAL in Gepung für Management-Engine Debugging machen. Dann kann man seinen Computer wieder zum persönlichen Computer machen. Jetzt ist Demo-Time. Es startet eine Version von System Studio und entschlüsseln Files mit der DAL-Konfiguration. Da werden einfach die Zeilen eingefügt. Das ist für die H-Serie von PCH. Das untere ist für die LP-Serie. Das sind die Management-Engine Kerne. Das gelingt zwischen ML Core und CLTAP. Das ist die Ausführung. Wir laden ein paar Bibliotheken. Wir setzen ein paar Stopp-Punkte im Programm. Wir sind auf dem Zurücksetz-Vektor der Management-Engine. Wie man hier sehen kann, ist ein JTT-Tabeller mit der aktuellen Ausführungsposition, den Registern, den LDT-Wert. Jetzt setzen wir die Management-Engine zurück und einzeln die Instruktionen auszuführen. Jetzt schauen wir uns die Segmenten an mit dem JTT-Wert wieder. Jetzt eine Demonstration von der Black Hat. Das ist unser Stand. Das ist die Host-Plattform. Wir initialisieren die Einstellung für den Kerner Management-Engine. Das ist nicht von mir. Dort sehen wir den Zurücksetz-Vektor. Wir haben hier zwischen den eine besondere Verbindung. Eine besondere Verbindung zwischen der Host-CPU und der Management-Engine. Jetzt lesen wir ein paar der Register von der Management-Engine und setzen den Wert dieses Registers von dem anderen Computer. Wie Magie. Ich habe auch eine Live-Demonstration. Falls das Internet funktioniert. Das ist meine Arbeitsmaschine. Aber das Internet ist ja nicht so gut. Das tut mir leid. Vielleicht funktioniert es später. Was wir bisher geschafft haben, wir mithilfe dieser Verhundbarkeit konnten wir JTAG aktivieren für die Management-Engine. Außerdem haben wir den Startcode der Management-Engine gelesen und haben eine Möglichkeit gefunden, den Schlüssel der Plattform herauszufinden aus dem Flash-Data-System. Was das heißt, ist, dass man entschlüsseln kann. Dass man Dateien entschlüsseln und auch integrieren kann in die Dateien der Management-Engine. Ohne dass die Management-Engine etwas davon mitbekommt. Hier sind unsere GitHub Links für die Research. Und der zweite Link zeigt auf unseren Blogs. Und hier sind unsere Literaturen. Vielen Dank für Ihre Aufmerksamkeit. Es gibt Fragen. Wenn irgendjemand eine Frage für Maxime hat, bitte anstellen an den Mikrofon. Eins, zwei, drei, vier. Auf der einen Seite, fünf bis acht. Auf der anderen Seite. Falls ihr das online anschaut, dann gibt es Signalengel. Und die das abhören. Du hast erzählt, dass du den Römmen gelesen hast. Habt ihr den Damp mit jemand anders verglichen? Nicht das Gleiche. Wir haben einen Unterschied gefunden. Aber es hängt damit zusammen. Der Bypasscode fängt in Protected Mode, also in Beschützten Mode an. Ah, das Raum. Das startet in einem anderen Modus. Es ist also funktionell quasi das Gleiche? Wir haben einen Unterschied in der Kryptografie gefunden. Aber ich glaube, das ist nicht wichtig. Wenn ihr den Seil verletzt, bitte tut das leise. Wir sind noch beifragen und antworten. Danke. Nix-Tiff-Forge. Mikrofon 5. Ihr habt gesagt, das Personalregister auf Rot gesetzt. Signalmanaged wird das Reset aufbrechen. Muss man das jedes Mal neu setzen? Oder funktioniert das nach dem Reboot? Man muss das jedes Mal neu machen. Nach dem Reboot ist es wieder weg. Signalengel. Gibt es eine Frage aus dem Internet? Wo ist der USB-Port? Auf der Hauptplatine, auf der Mainboard. Wo findet man den internen USB-Port auf dem Interboard? USB hat jetzt Zugriff für DFX Funktionalität. Man braucht den Port nicht physikalisch zu finden. Falls ihr eine Plattform habt mit Skellec, dann gibt es diese Funktion immer auf euren USB-Ports. Wenn natürlich dieser Port direkt ans PCH verbunden ist, wenn das Port durch ein anderen Controller verbunden ist, dann kann man da nicht zugreifen. Das heißt, man kann beliebigen Schlüssel von der MI extrahieren. Zum Beispiel remote, also ferne Installation. Wir wissen nicht, wie das miteinander zusammenhängt. Wir wissen nicht, wie wir die Schlüssel aus der MI extrahieren. Oder wie die daraus berechnet werden. Mikrophone 1. Habt ihr irgendwelche Nachrichten von Intel empfangen? Meinen Sie, dass haben wir diese Information mit Intel geteilt? Haben Sie auf irgendeine Art und Weise darauf reagiert? Sie haben gesagt, okay, nicht viel, außer ein paar Patches. Signalengel, gibt es weitere Fragen aus dem Internet? Wie kann man den JTAG-Zugriff deaktivieren? Soll man die einfach deaktivieren, die ganze MI, oder wie macht man das? Meinen Sie, wie Intel, die Funktionalität, wie kann Intel das System sichern und wie kann man sein eigenes System sichern? Okay, das ist ein Bug, das ist ein Feature. Du hast keine Chance, JTAG anzuschalten für ME, falls ihr keinen U-Tag habt oder eine Verwundbarkeit besteht. JTAG kann man für die Management-Engine nur anschalten, wenn es eine Verletzlichkeit in einem anderen Modul gibt, zum Beispiel in EMT, dann geht das nicht. Es ist ein Feature, es ist kein Bug. Man kann DCI im Flash-Deskript abschalten, um das DCI-Problem zu fixen, das wir letztes Jahr gefunden haben und das ist dann okay. Mikrofon 4, eine der früheren, eine Earthlight hat gesagt, dass es eine JVM darauf gibt, warum? Es ist langweilig und es ist mit IGX verbunden. Ich weiß keine Details, ich weiß es nicht genau. Mikrofon 5. Auf der letzten Folie hast du die Extraktion von Plattformschlüsseln erwähnt, sind die genug, um ein Firmware-Update zu signieren, dass du so änderst, dass die Management-Engine das akzeptieren würde. Bitte wiederholen. Noch mal umformuliert, das habe ich verstanden. Die Firmware wird signiert durch einen öffentlichen Schlüssel von Intel. Ich habe den privaten Schlüssel von Intel nicht und dieser Schlüssel ist nicht in die Management-Engine eingebaut. Es ist nur der Plattform-Schlüssel und dieser Schlüssel für symmetrische Verschlüsselung zu signieren und für sich signieren von Files im Filesystem. Wer Files für diesen Schlüssel hast, kannst du nur das Management-Engine-Filesystem ändern, aber leider kann man das Ausführungsmodul, die Schlüssel für das Ausführungsmodul ist in einem Anderswo gespeichert. Es gibt keinen einfachen Weg, das System von der Management-Engine zu kastrieren. Kann ich irgendwie nur Freisafter auf der ME laufen lassen? Können Sie noch mal die Frage wiederholen bitte? Kann ich irgendwie dafür sorgen, dass auf der Management-Engine nur Freisafter läuft ohne weitere Proprethäre auf der Flash? Meinst du, wie man das Dateisystem modifizieren kann? Ja, wie man die Firmware ersetzen kann? Nein, das geht nicht, weil wir können keine Änderungen machen zwischen der Kette zwischen Bob-Modul und Raum nicht auftrennen. Zum Kernel von der Management-Engine und dem Bob-Modul weiß ich nicht, wie man die Funktionalität benutzen kann, um die ME zu ändern. Aber man kann spezielles Gerät mit der Detektionsfunktion bauen nach dem Rebuten mit einem Reset-Vektor, der auf etwas anderes zeigt. Aber das ist unmöglich. Mikrofon 2. Ist es Ihnen irgendwie bewusst, wo die Management-Engine gelegt worden ist? Leider ist die ME der Kernel der Management-Engine leider nur auf Minix basiert. Die Intel-Leute haben den Kernel fast komplett neu geschrieben. Man kann jetzt vielleicht reverse-engineieren. Vielleicht kann man Informationen von Intel bekommen. Ein vertraulicherer Erklärung unterschreibt Mikrofon 8. Wird es jemals möglich, seine eigenen öffentlichen Schlüssel fürs Raum zu benutzen? Könnte man eigene öffentliche Schlüssel hinzufügen oder überprüft die Management-Engine, die öffentlichen Schlüssel? Die Management-Engine überprüft nur den Hash des öffentlichen Schlüssel. Wir wissen, dass der Raumversion mit zwei Schlüsseln verschlüsselt. Wir haben nur einen Schlüssel gefunden. Im Raum wird überprüft, nimmt die SSA-Signatur für das öffentliche Schlüssel, ob die existiert, in einer Weitliste von zulässigen Schlüsseln. Im Raum sind acht Hashes hart verschlüsselt. Es gibt also eine Weitliste zulässiger Schlüssel. Falls die deine Schlüssel in dieser Liste sind, kann man jede Firma benutzen. Aber diese Liste von Hashes ist in dem nicht schreibbaren Speicher im Raum. Was ist der allgemeine Eindruck bezüglich der Sicherheit der Management-Engine? Meinst du, wie verwundbar die ME im Allgemeinen ist, in anderen Modulen? Wie gut ist die Sicherheit der Management-Engine? Im Allgemeinen ist es ziemlich gut. Wir haben dynamische Analyse drauflaufen lassen. Das war okay. Mikrofon 7. Haben Sie Pläne, bestimmte Pläne der Management-Engine zu untersuchen? Ja, natürlich. Intel hat die Version 11 von der Management-Engine veröffentlicht. Ich weiss, dass es Hauffmann-Tabels gibt. Die nächste Runde dieses Spiels ist eröffnet. Gibt es eine weitere Frage bei Mikrofon 7? Wenn ich dich richtig verstanden habe, das heißt, dass man eine Skylake-CPU und ein USB-3-Port hat, dass man Zugriff auf die Management-Engine bekommen kann. Genau. Wenn ich ein Chip hätte, sollte ich sie gepatched bekommen. Wie kriegt man das durch ein Windows-Patch oder ein BIOS-Update? Es gibt Möglichkeiten, das zu benutzen. Wenn man ein SPI-Programmierer hat, kann man das Flash neu beschreiben. Meinst du, wie man das auslösen kann? Nein, die Frage war, wie wird Intel einen Patch für diese Verwundbarkeit verteilen? Es ist immer möglich, dass die Intel nur einen Fehler in der BARB-Funktion veröffentlicht. Forscher können das immer zurückdegradieren auf eine frühere Version der Management-Engine mit einem SPI-Programmierer. Funktioniert das? Mikrofon 1. In der Demo haben wir die Verbindung zwischen den beiden Maschinen mit einer blauen Box gesehen. Aber es gibt auch noch eine andere Möglichkeit, die Computer mit USB-Kabeln zu verbinden. Gibt es irgendeine Möglichkeit, das ohne die blaue Box zu machen? Ja, wir haben es probiert. Wir haben nur USB-3 die Backkabel benutzt. Aber für uns ist es nicht möglich, weil wir zwei ... Den Zustand von BARB um die Management-Engine zu programmieren, aber dazu muss man die Ausführung stoppen. Wir bilden uns die Blue Box, weil man dann nichts stoppen muss. Signal Angel. Plan dir einen Dampf vom Masken rum zu veröffentlichen. Wenn ich nach dem Mosker zurückgehe, dann weiß ich mehr. Fragen? Bitte kommen Sie zum Mikrofon. Mit dem ein Applaus für Maxim.