 Unser Sprecher für den nächsten Talk ist Igor Sochinsky und Nikola Koller. Beide machen sehr viel reverse Engineering, also Rekonstruktion von Hardware. Einer von Ihnen hat ein Pfeifensripp geschrieben, um die Intel Management Engines zu abzuschalten. Und heute möchten Sie darüber sprechen, wie, also über die Intel Management Engine sprechen und was real und was mythen sind. Und unter anderem auch, was halt im Internet so behauptet wurde und was davon war und was falsch ist. Eine Runder Applaus für die beiden. Test, test, test. Könnt ihr mich hören? Okay. Vielen Dank, alle. Das sind eine ganze Menge Leute im Publikum. Es ist das erste Mal, dass ich vor so vielen Leuten spreche. Und mal schauen. Nur ein bisschen über mich. Ich bin ein Software-Entwickler und war in der Firma Hex-Race seit 2008. Aber als Hobby und in meiner Freizeit mache ich halt reverse Engineering. Also, ich bin kein Sicherheitsforscher. Also, alles ist, also mein normaler Job ist halt einfach Programmierer. Das ist einfach nur mein Hobby. Aber als mein Hobby habe ich Sachen gehackt, einfach aus Spaß. Zum Beispiel hier ist jetzt der Amazon Kindle 1. Generation, der hässliche. Und ich habe da ein bisschen mit rumgespielt. Und das war, das war für das iPhone, den seriellen Port. Und ich habe da mal ein bisschen mit rumgespielt. Dann habe ich mich interessiert, wurde ich zunehmend interessiert für andere Technologien. Ich bin Nikola Korna. Ich mache auch reverse engineering als Hobby und interessiere mich für ja selbst gemachte Hardware. Ich bin momentan ein Student für, ja, elektronische Engineering in Milano. Und ich liebe es, meine eigenen Sachen von Grund auf selbst zu bauen. Also zum Beispiel diesen PCB. Und eine kleine Einscheincode, also Ausschluss. Alles, was wir hier vorstellen, ist basiert auf öffentlichen Informationen und unseren eigenen Nachforschung. Natürlich können wir nicht versichern, dass alles 100%ig richtig ist. Es ist einfach das, was unsere Meinung und unsere Sicht auf die Dinge ist. Und wir haben auch keine Verschweigbarkeitsklauseln mit Intel oder irgendwelche anderen Beziehungen mit Intel. Okay, lass uns weiter schauen. Und jetzt ein wenig über Intel Management Engine. Also ME ist, heutzutage heißt es Management Engine. Ursprünglich hieß es Manageability Engine. Das war so 2010 ungefähr. Heutzutage nennt Intel as Converged Security and Manageability Engine. Also eine Engine, die alles zusammenbringt. Also es hatte früher einen anderen Namen, aber es ist im Prinzip all das gleiche. Also viele Sachen, die zusammengekommen sind. Und es hieß auch einmal Trusted Execution Engine, also Vertraute Engine. Und es gab auch, und auf Servern gibt es auch Server Platform Services, also SPS, das auf Servern eingesetzt wird für Intel CPUs. Was ist jetzt Intel ME offiziell? Auf Ihrer Webseite sagen Sie, auf vielen Intel Chat Chips gibt es ein Untersystem, welches verschiedene Aufgaben wahrnimmt und es muss korrekt funktionieren, damit der PC ebenfalls seine Aufgaben wahrnehmen kann. Und das gilt ebenfalls, wenn der Computer im Schlafmodus ist. Also es ist halt ziemlich vage und ungenau, wie Sie das Ganze beschreiben. Und was andere Leute dann sagen, ein Mythos ist, dass es eine Hintertür ist für die NSA und es keinen sinnvollen, zivilen Zweck hat. Und ja, also dieser Mythos hängt auch damit zusammen, dass ich auch mal ein Talk darüber gaten habe, wie man halt die Intel Management Engine benutzen kann, um halt Admin Zugriff zu kriegen auf dem Rechner. Und... Anmerkung des Übersetzers, er spricht jetzt über die Details von dem Exploit. Und der Prinzip geht es darum, dass er herausgefunden hat, dass gewisse Funktionalität in der Management Engine implementiert wurde. Und dann hat er sich das halt genau damit auseinandergesetzt. Und das Ding war eigentlich... Ich habe eigentlich nicht wirklich ein richtiges Rootkit geschaffen, sondern es war einfach so ein Titel, um Aufsehen zu erregen. Aber ich habe halt damit rumgespielt und Sachen... und dadurch Sachen möglich gemacht, um halt Zugang zu kriegen. Okay, also die Management Engine hat ein Mikro-Kontroller auf der CPU... Also es verwendet ein Mikro-Kontroller auf der CPU und dieser Mikro-Kontroller kontrolliert dann die Management Engine. Und jetzt Anmerkungen des Übersetzers. Jetzt liest er gerade von seinen Slides einen Textauszug. Dieser Textauszug ist für uns als Übersetzer leider nicht lesbar. So, ein weiterer Textauszug von Reddit. Da gab es eine Diskussion und ein Beitrag sagt, es geht darum, dass Leute im Internet der Meinung sind, dass dieser Chips von der NSA motiviert war und dass diese NSA für die NSA als Vektor in diese Chips eingebaut wurde. Und es gibt dann Verschwörungsthemen, dass die US-Regierung alle CPUs weltweit kontrollieren will mit dieser Management Engine. Und hier ist ein weiteres Beispiel über eine Diskussion und eine anonyme Person fragt, wie kann ich mein Risiko reduzieren, wenn es einen weiteren unabhängigen Computer in meinem Computer gibt, auf den ich keinen Einfluss habe und den ich nicht deaktivieren kann. Und das hört sich alles sehr schlimm an. Aber ist das wirklich wahr? Und meine Meinung, nachdem ich mir das alles genau angeschaut habe, also nachdem ich mir diese ganzen gefährlichen Sachen angeschaut habe und nur um das zu beantworten, und ich sage, es gibt wahrscheinlich schon einen sinnvollen Einsatz weg und der Mythos ist wahrscheinlich nicht wahr. Und Management Engine wurde erschaffen, um tatsächliche Probleme zu lösen. Hier dazu ein bisschen Geschichte in Bezug auf Fernsteuerung in den späten 90ern. Und da gab es Firmen, die halt nicht für jeden Computer eine Tastatur und ein Monitor haben, um die Computer zu steuern. Und dafür wurden verschiedene Technologien entwickelt, die hier abgebildet sind. Zum Beispiel 1997 wurde Wake on LAN, also das Aktivieren eines Computers über ein LAN-Paket entwickelt und auch die Ausführung von beliebigen Code über das Netzwerk. Und in 2001 hat Intel weitere Standards entwickelt und allerdings dieser Standard basierte auf dem UDP-Protokoll und es hat keine Entgrüpferschlüsselung mitgebracht. Aber 2003 kam dann ein weiteres Protokoll mit Entschlüsselung und es gab dann auch weitere Nachforschung und Intel hat dann das AMT auf dem Intel Developer Forum vorgestellt und wir haben neue Technologie, also Intel sagte, dass diese Technologie wirklich sehr gut ist, ihr braucht sie, also diese AMT Management Engine. Und der Chip hat den Features auf dem Mutterboard installiert und das ist auch ein Und damit war es möglich, ein Image über das Netzwerk zu booten und so konnte man den Computer dann über das Netzwerk fernsteuern mit einer seriellen Konsole überladen. Und das Protokoll basierte seinerzeit ebenfalls auf XML. Und das Ganze war ziemlich populär und die Frage war dann halt, warum packt man das so ein Funktionalität auf die Netzwerkkarte und nicht auf die Southbridge? Und mehr Plattformen können dann ebenfalls davon profitieren. Und Sie haben es weiterentwickelt, also 2007 haben Sie die erste Variante dieser Fernwehr veröffentlicht. Und Sie haben die Quad-Systemtechnologie herausgebracht, die dazu führt, dass wenn der Prozessor zu heiß wird, dass die Ventilatoren stärker oder anspringen und versuchen, die CPU runter zu kühlen. Und dieses Feature wird die Arbeit, also die Funktionsweise der Prozessor verbessern. Sie haben ebenfalls Diebsterschutz zu implementieren und Sie haben ebenfalls weitere Ansätze verfolgt, zum Beispiel jetzt für Trusted Computing, weil viele Fernwinskurs, die für Microsoft dieses Prinzip halt sehr vorangetrieben haben. Und 2009 haben Sie ein Generation 2 Tool, also Sie haben dafür eine neue CPU veröffentlicht. Und erstmalig war dann auch KVM Support, also Kernel Virtualization Features. Ich bin mir gerade doch nicht sicher, ob KVM was mit Virtualisierung zu tun hat. Auf jeden Fall das VLC-Protokoll ist zur Fernsteuerung von Computern und die CPUs haben das dann auch unterstützt. Auf jeden Fall gab es eine ganze Reihe von Technologien, die Intel zu ihren CPUs hinzugefügt hat, aber Intel hat sehr viele Features hinzugefügt, nicht unbedingt im Sinne der Sicherheit, sondern einfach, weil sie nützlich waren. Und zum Beispiel die Kontrolle der Uhr im Computer, nun haben die CPUs entsprechende Technologie, um sowas zu steuern. Und für den Kunden war das dann günstiger, weil er Material sparen konnte. Und es war etwas sicherer, weil sobald die Uhren gestellt sind, sind sie halt geschützt und können nicht durch andere Software im System geändert werden. Und auch Siebverschutz wurde hinzugefügt, und ein dynamischer Allizierungslader wurde ebenfalls hinzugefügt, und Silikon-Wercoint-Round-Capability, um Bugs in Hardware zu beheben, und heutzutage können sie halt eine neue Firmware veröffentlicht für ihre CPUs und dadurch sind die Bugs behoben. Und das war die Motivation für all diese Sachen, und ich denke, es ist ziemlich naheliegend, dass sie diese Sachen zu Management Engine hinzugefügt haben, um halt auch ihren Kunden Geld zu sparen, und weil es nützlich jetzt Zwecke erfüllt. Und vor kurzem wurde entdeckt, dass Intel dieses HAP-Bit hinzugefügt hat zu ihren CPUs, mit denen man die Management Engine ausschalten kann. Und, dass die Frage war dann halt auch, wenn die NSA-Kontrolle über dieses Bit hat, warum würde die NSA ein Interesse daran haben, wenn sie eh den Computer kontrollieren können? Hier ist noch ein Sex-Auszug. M.I. wurde nicht erstellt, um Menschen auszuspielen, sondern es wurde geschaffen, weil es nützlich für Administratoren sei. Und unter anderem auch, weil es halt viel mehr Möglichkeiten auf viel tiefer tiefgehender Ebene ermöglichen. Wahrscheinlich war das Ganze auch eine schlechte Idee, aber es hat eben auch Vorteile, oder es hatte eigentlich gute Ideen dahinter. Aber es war halt nicht so gedacht, wie es dann im Endeffekt geworden ist. Ein weiterer Mythos ist, dass die Management Engine immer aktiviert, selbst in der Computer an ist. Also an für sich war aber nicht so hundertprozentig. Also wenn der Computer schläft, dann kann der Computer in M.I. sein, also der CPU schläft, dann ist die Management Engine immer noch teilweise aktiv. Und auch wenn der Computer selbst aus ist, dann ist ebenfalls die Management Engine ausgeschaltet, nach einiger Zeit. Aber sie kann noch in einem Wake on Learn-Modus sein. Also es ist nicht vollständig aus, aber es ist im Prinzip aus. Und es wartet halt nur noch auf Netzwerkpakete, oder dass der Rechner sich halt wieder anschaltet. Und wenn man ein Computer ausschaltet, dann ist er viel gewöhnlich aus. Wenn man M.I.N.T. hat, kann man das im Computer festlegen, ob die Management Engine ausgeschaltet sein soll, wenn der Computer ausgeschaltet wird. Und diese Einstellung hängt von eurem System ab. Manchmal ist es konfiguriert, manchmal ist es das nicht. Ein weiterer Mythos. Man kann ein Computer blockieren mit einem Befehl, den man über die Luft schickt. Das war einmal wahr, aber das ist mittlerweile nicht mehr wahr. Es war nur in der Reihe von M.I. Person 4.19 verfügbar. Und dafür muss auch der Diebscher-Schutz aktiviert sein und der Computer muss ein Abo haben mit dem Diebscher-Schutz. Und einige Zeit lang hatten die CPUs auch 3G-Support. Aber das hat auch nicht immer funktioniert. Und dafür musste auch Kontakt zu den Intel-Servern bestehen, um das wirklich zu aktivieren. Und sie haben das auch wieder entfernt nach einiger Zeit. Dieses Feature gibt es nicht mehr. Und die Diebscher-Schutz-Lösung gibt es nicht mehr. Es gibt sie nicht mehr. Ein weiterer Mythos. Es hat Zugriff auf alle Daten im Rechner. Und die Realität ist, es ist etwas kompliziert. Es kann Zugriff auf den Rahmen haben. Es kann nicht die Festplatte direkt lesen. Es kann schon noch Zugreifen auf die Festplatte auf Umwegen, aber ein direkter Zugriff auf die Festplatte ist nicht möglich. Und nach der Dokumentation, besondere Speicherbereiche, also spezielle Geschütze, Speicherbereiche können nicht abgefragt werden von der Management Engine. Und es hat Zugriff auf die integrierte Grafikkarte, aber es kann nicht den Framebuffer direkt auslesen. Also es kann auch nicht Daten direkt entschlüsseln aus anderen Speicherbereichen. Es kann allerdings IDE oder USB-Geräte auf dem Host emulieren und dadurch dann auf Datasysteme zugreifen. Aber das ist jetzt eigentlich nicht direkt das Management Engine, sondern einfach ein anderes Modul, das die Management Engine benutzt. Also wir wissen vieles nicht. Es kann einige Sachen zugreifen, aber auf einige Sachen zugreifen, aber nicht auf alles. Mythos 5 ist eine Blackbox und wir können es nicht auditieren, weil es closed source ist. Und wir haben hier eine Twitter-Nachricht, die besagt und es ging darum, dass es einen Angriff auf die Implementierung der Spezifikationen gab. Anmerkung, dass sie Übersetzer ist. Es ist gerade echt schwierig, den Vortrag zu folgen. Also der Tweet besagt, dass man sich den RFC nicht dazu anschauen soll und überprüfen soll, ob es alle Sachen macht, die es machen soll. Alle Sachen nicht macht, die es nicht machen soll und bei allen Sachen, die es machen kann, davon ausgehen soll, dass es diese macht und dann überprüfen, ob es diese wirklich macht. Und dann gibt es noch Blackbox-Analyse oder Verifizierung. Und viele, also generell kennen halt viele Produkte, auch verifiziert werden oder auf ihre Funktionalität verifiziert werden, ohne den Quellcode zu haben. Das ist ja nichts, was neu erfunden werden muss. Und es gibt eine Masterarbeit, die lautet Security Evaluation of Interest Management Technology, also eine Sicherheitsanalyse der Management Engine. Und das Ergebnis dieser Arbeit ist, dass er versucht hat, Lücken in der Spezifikation finden konnte, erfinden kann. Und er hat tatsächlich Lücken in der Spezifikation gefunden und das waren tatsächlich Bucks. Zum Beispiel der CPU sollte nicht die Activation Server pingen, bevor andere Bedingungen eingetreten sind. Und dann stellt sich aber auch voraus, dass Intel die Spezifikation nicht vollständig richtig implementiert hat. Und jetzt, nachdem Intel diese Fernware angepasst hat, ist alles viel mehr konform in Bezug auf die Spezifikation und auch was Bucks angeht. Und die Fernware von der MI ist im Flash-Speicher auslesbar, also ist nicht verschlüsselt, also man muss halt nur rausfinden, wie man die Sachen ausliest. Und ich denke auch, dass es ein besseres Ansatz ist, als den Bineacode zu analysieren. Und man sieht, was tatsächlich ausgeführt wird und nicht, was die Autoren denken, was ausgeführt wird. Und das ist viel besser, als wenn man jetzt irgendwelche Kommentare hat, die einen nur verwirren. Und wir haben auch zum Beispiel jetzt eine Goto-Instruktion gesehen und da war nicht wirklich klar, was sie eigentlich macht. Und so was sieht man halt echt nur, wenn jetzt keine Pre-Processor-Anweisung den Blick auf solche Sachen versperren. Es dauert natürlich sehr lange, diese Sachen zu analysieren. Ja, es dauert sehr lange, das alles zu analysieren. Und wir haben einige Bucks dann auch gefunden und auch andere Leute haben noch Bucks gefunden. Und es hat schon gereicht, einfach das Netzwerk oder den Netzwerkverkehr zu beobachten, um Bucks zu finden. Ein anderer Sicherheitswirke oder ein anderer Fehler, der gefunden wurde, bezog sich auf die Digisum, die in den Netzwerkverketen drin waren. Und auch das wurde ohne den Zugriff auf den Quellcode herausgefunden. Und das Letzte war ein Puffer-Überlauf, der ebenfalls durch statische Analyse im Fernwehrcode herausgefunden wurde. Und um zusammenzufassen, man kann also auch ohne Quellcode und auch ohne Rekonstruktion oder Reverse-Engineering herausfinden, wie so ein System funktioniert. Und Mythos 6, man kann mit der Management Engine ein unerkennbares Rootkit schaffen, das sehr gut verbogen ist. Und da haben einige Leute schon drauf gearbeitet und sie haben ein Back in einigen Biosys gefunden. Und damit konnte man dann auch auf das MI-Modul zugreifen. Und es war ihnen auch möglich, in das MI-Speicher Code hineinzuschleusen und dadurch Code auszuführen. Das Problem ist eigentlich, die Infektion muss bei jedem Neustart erfolgen, weil die Änderungen nicht dauerhaft sind. Und Intel hat das mittlerweile auch behoben, sodass das nicht mehr möglich ist. Und Patrick Steben hat ein Buch geschrieben, wie man dem A-Angriffe erkennen kann. Einmerkung des Übersetzers, ich verstehe jetzt nicht genau, was mit DMA gemeint ist. Dann zum nächsten Mythos, Mythos 7. Benutzer können nichts machen bezüglich Menschen mit Engine. Und ich denke, das ist ein Mythos. Also was können wir machen? Ja, ungefähr ein Jahr vor einem Jahr habe ich mit Korbut rumgespielt. Und ich habe mich gefragt, was kann ich dagegen tun? Wie kann ich die Intel ME-Filme vielleicht entfernen? Und die Häufig-Stätten-Fragen von Liebeboot hatten eine Antwort. Und zwar haben die gesagt, dass vor Version 6, also vor, mit auf System vor 2008, kann das entfernt werden. Aber leider ist es halt nicht mehr verfügbar, weil es halt mit Version 6 aufgehört hat. Und wenn man jetzt die ME-Filme entfernt, dann wird der PC nicht mehr hochfahren oder nach 30 Minuten sich automatisch ausschalten. Also es wirkt so, als wäre es ein künstliches Späher und nicht wirklich erforderlich. Und wir versuchen, ob wir das vielleicht umgehen können. Und ich habe auf der Mailing List von Korbut eine E-Mail gefunden, auf der in der Stand, dass einer versucht hat, die ersten 4 Kilobyte von der Intel ME-Filme zu entfernt hat und hat festgestellt, dass der PC sich immer noch einschalten ließ und auch nicht nach 30 Minuten ausging. Und ein paar Tage später fand er sogar heraus, dass er sogar weitere Teile entfernt konnte, ohne den Bootvorgang zu beeinflussen. Und also habe ich ausprobiert, das nachzumachen. Und um das nicht mit einem Hex-Editor Manuel zu machen, habe ich ein Vorgang geschrieben, ME Cleaner, ein Python Script, dass es ermöglicht, jede Intel ME-Filme zu dem wirklich, wirklich nötigsten Minimum drunterzubrechen. Also lasst uns anfangen, wo ist überhaupt die Intel ME-Filme? Die Intel ME-Filme ist auf dem gleichen Speicherchip wie der BIOS und der UEFI in derselben Speicherbereich. Und die Lesen und Schreiben ist dadurch sehr einfach, wenn man entweder einen externen Programmiertrip verwenden kann, übers SPI-Interface. Oder in manchen Fällen kann man auch ein Tool benutzen, um den BIOS zu flaschen und darauf zu zugreifen. Das ist überhaupt als möglich, weil die Chips in dem System partitioniert sind. Das ist der Intel Flash Recypter, der eben verschiedene Partitionen im SPI-Chip enthält. Also wir haben zuerst eine Descriptor-Region, also eine Art Partitions-Tabelle und verschiedene Partitionen, also zuerst den BIOS oder eben auch die Intel ME-Filmware oder so. Diese Regionen können eben analysieren, extrahiert und bearbeitet werden mit Tools wie AfD-Tool vom Coreboot-Projekt. Also erster Schritt, lasst uns erstmal versuchen, alles zu entfernen, bis auf den FTPR, also der scheint für den Bootvorgang erforderlich zu sein. Ja, die Intel firmware ist auch partitioniert und es gibt eine FTPR, das ist die firmware Partition Table mit einer Liste von allen Partitionen innerhalb der firmware. Und wir können sehen, dass es den FTPR Partition und es gibt eine Partition NFTP mit dem Network Stack dazu, also mit der Netzwerkfunktionale steht. Und die kann man sehr einfach entfernen, weil es gibt diese Einträge und jeder hat Offset, also eine Bereichgröße und ein Startpointer, sodass man einfach diesen Bereich überschreiben kann. Die Partitionen sind zwar signiert, aber sie sind einzeln signiert, sodass man einfach die gesamte Partition entfernen und wenn man dann ist die Signatur auch direkt mit weg. Darüber hinaus ist die FTP, also diese Partition Table nicht signiert ist, also können wir die auch beliebig bearbeiten. Also hat er es ausprobiert und die Ergebnisse auf sein PC geflecht und es hat funktioniert. Der nächste Schritt war zu versuchen die LZMA Module zu entfernen. Hier wird es ein bisschen komplizierter, also lasst uns erstmal das Layout von der Intel ME-Firmware anschauen. Also zuerst haben wir den SPI-Tip, der eventuell verschiedene Bereiche, zum Beispiel den Descriptor, den BIOS und die ME-Firmware und innerhalb der ME-Firmware gibt es wiederum verschiedene Partitions, zum Beispiel den FTPR und den FTP, die wir gerade schon gesehen haben und innerhalb von dieser Partition gibt es verschiedene Module. Die Module können entweder kompromiert sein auf zwei verschiedene Methoden, zum Beispiel LZMA, und sie haben verschiedene Kompressionsmethoden verwendet. Auf der anderen Seite ... Ich verstehe Ihnen gerade akustisch sehr schlecht. Sie haben versucht, die früheren, also die zuerst geladenen Menü mit Huffmann zu kompromieren und die Menü die später erst geladen werden mit LZMA. Also verschiedene Partitionen haben verschiedene Strukturen, aber wir unterlisieren uns nur für den FTPR-Partitionen und das ist eine Code-Partition. Darüber hinaus ist die Struktur von den Partitionen verschieden in den verschiedenen Generationen von Intel ME. Also die erste Generation ist nicht interessant für uns, weil man ja die Intel ME schon so entfernen konnte komplett. Also lass uns mit Generation 2 anfangen. Das ist das Schema der Generation 2. Also wir haben einen Manifestbereich, der die Signatur der Moduliste enthält und wir haben verschiedene Modulen. Und jedes Modul hat einen Namen, einen Startpunkt, eine Größe und eben einen Hash, also eine Prüfsommer. Das heißt, dass die Module nicht wirklich signiert sind, sondern nur gehasht und die Liste der Hashes-Gescheinung signiert ist. Das heißt, wenn man einen Hash modifiziert, dann weiß es nicht, dass andere Module, die davor geladen werden, nicht geladen werden. Das heißt, wir können den Bootvorgang des Systems eben abrichten, indem wir einen Hash-Signier verändern, dann werden alle Module davor geladen und alle Module ab den Zeitpunkt nicht mehr. Und das habe ich ausgenutzt, um alle Partitionen außer FTPR zu entfernen und nur die Huffmann-kompromierten Module zu behalten. Und der hat es wieder auf seinen Rechner geflasht und ausgebildet und das funktioniert immer noch. Aber es gibt immer noch die Huffmann-Module und dagegen wollte ich auch noch was unternehmen. Und das gab leider nur sehr wenig Online-Dokumentation für die Huffmann-Module. Also habe ich mich auf den Source-Codes von einem Dekomprimierer berufen. Während die LZME-Modules einfach nur ein großer Block an Daten waren, sind die Huffmann-kompromierten-Module fragmentiert. Also es gibt eine Partitions-Tabelle, einen Huffmann-Stream und es gibt eine Local-Locker-Tail, also eine Nachschlagetabelle, die eine Liste enthält mit Einträgen, welche erstmal ein Valid-Fleck haben, also ob sie gültig sind oder nicht. Und ein Offset, also eine Startpunkt. Und der Startpunkt zeigt auf die Huffmann-Chance. Also wir haben ein fix... also wir haben zwar eine fixierte Länge der dekompromierten Daten, aber die kompromierten Daten haben eine variable Größe. Und das wurde wahrscheinlich verwendet von Intel um die Kompromierung der Huffmann-Module noch zu verbessern seitens Intel. Aber als ich das einmal verstanden hatte, war das einzige, was ich machen musste, eine Liste zu erstellen, alle Module, die nicht entfernt werden konnten, weil sie Teil eines Moduls waren, das ich nicht entfernen wollte und alle anderen zu entfernen. Also habe ich ausprobiert, das erst mal das Modul zu entfernen mit den unwichtigsten Namen, FTCS, und es funktionierte wieder. Also das macht ich weiter und versuchte auch zu finden, welche Module wirklich erforderlich waren zum Huffahren erforderlich sind. Und es sind wirklich nur zwei Module, die für den Boot erforderlich sind. Und das erste ist BUP, der initialisiert das ganze System und schaltet diesen 30-Minutes-Wortstock auf, also der das System nach 30 Minuten herunter fährt. Und dann gibt es nur das RMP-Modul, was nicht immer vorhanden ist, und es ist sehr klein, nur 2 KB oder so, und das enthält nur Konfigurationsdaten, die vom BUP-Modul verwendet werden. Interessanterweise gibt es keinen Kernel, weil der Kernel konnte auch entfernt werden. Also wirkt es so, als könnte man mit Generation 2 einen vollfunktionsfähigen PC haben, ohne dass der Kernel in Intel-Management-Engine laufen muss. Ja, dann lass uns zum nächsten Schritt gehen, statt 4 und versuche den freien Speicher wieder zurückzubekommen. Warum? Ja, ich habe Coreboard verwendet und das Intel-Firmware-Engine ist ungefähr 5 Megabyte groß. Aber nach den ganzen Entfernungen ist es natürlich viel kleiner und ich wollte diesen freien Speicher freibekommen, um da ein Linux-König direkt in den Chip reinzuspeichern. Warum? Ja, warum nicht? Also habe ich angefangen, erst einmal den Speicherbereich abzuschneiden, weil das letzte Modul aufhört, aber das hat nicht so gut funktioniert. Und ja, wie erwartet, er hat Intel-Management-Engine das nicht bemerkt, weil der Speicherbereich mehr gebraucht werde. Aber das war mir nicht genug, weil es immer noch viel Speicher gibt, der zwischen den Modulen steht, zum Beispiel zwischen dem FPT, also der Partitionsherbille und dem FDPR, da ist viel freier Speicher zwischen und der ist natürlich dann verloren. Weil da die Partitionen waren, die ich jetzt entfernt habe und die jetzt nicht mehr da sind, also ungefähr ein Megabyte und ich wollte diesen freien Speicherplatz irgendwie wieder bekommen. Also musste ich irgendwie herausfinden, wie ich die Partitionen aneinander schieben kann, sodass dazwischen kein freier Speicherplatz mehr verloren geht. Also heißt es, ich muss die Partitionen verschieden und dann den Offset in der Partitionsherbille, also den Startphone-Partitionsherbille verantassen. Aber dummerweise geht es nicht in der Generation II, weil es danach aussieht, als ob manche Startpunkte nicht auf den Startpunkt des Moduls zeigen, sondern auf die Position relativ zur Partitionsherbille, also den Abstand sozusagen. Und aber zum Glück waren sie nicht signiert. Also nach einer Menge Versuche und mein Laptop auf zu flaschen, habe ich herausgefunden, welche davon für dieses Verhalten verantwortlich waren und habe sie entfernt und das Ergebnis ausprobiert und es funktioniert erneut. Und das ist wieder, das ist die aktuelle Situation, ausgehend von einem 5 Megabyte großen Abbild, die jetzt nur noch 84 Kilobyte, der ja immer aber noch sehr, sehr viel freien Speicherplatz enthält, die ich nicht wieder bekommen konnte. Also Ausgehend von 5 Megabyte, wir haben jetzt nur noch so ungefähr 50 Kilobyte. Nur mal einen Eindruck davon zu bekommen, das ist der größten Vergleich zwischen meinen Speicherabbilden. Also es gibt eine sehr kleine Partition und dafür jetzt aber ein Intelkernel in das Speicherabbild entgegelt. Im FTPR ist das Einzige, was wir wirklich benutzen, das BOP und teilweise dieses AOMP, also wirklich, wirklich wenig Speicher. Und jetzt würde ich gerne meine Arbeit natürlich auch auf Generation 3 übertragen. Also bitte geht jetzt nicht raus, bei Generation 3 war es nämlich wirklich, wirklich viel, viel einfacher, weil die interne Partitionsstruktur sich verändert hat. Also ohne irgendwas anzupassen, konnte ich alles entfernen bis auf den FTPR, weil da die Struktur identisch war, aber die interne Struktur der Partition hat sich verändert. Und das ist das neue Schema der interne Partition, die Code Partitions. Es fängt an mit dem Code Partition Directory, also dem Verzerr hin ist der einzelnen Code Partition. Da gibt es drei verschiedene Art von Einträgen. Also der Name der Partition Dot Man, also das ist der Alte. Dann gibt es noch Metadaten und Daten des Moduls. Und auch das, der Vorgang der Signaturen hat sich verändert. Also es gibt jetzt drei verschiedene Methode, die sich gegenseitig signieren. Aber zum Glück werden die Hashys immer noch nicht über Ausflächen überprüft. Also können wir weiterhin einfach die Hashys manipulieren, ohne dass das System das bemerkt und nicht mehr bootet. Also das ist die Liste der verschiedenen Typen an Modulen, die es gibt. Und ich habe wieder angefangen auszuprobieren, welche Module wirklich erforderlich sind und welche nicht. Und es wirkt so, als ob es nur vier Module gibt, die wirklich erforderlich sind. Und zwar Syslib, das ist eine sehr, sehr kleine Partition. Vermutlich das, was dem RORMP entspricht, den Kernel und erneut diese BUP-Partition, die den Time Addictiviert und den Bootprozess kontrolliert. Also ein paar Wochen später, also nach ein paar Wochen an meiner Arbeit, haben Sicherheitsforscher deren Ergebnisse veröffentlicht und meine Arbeit bestätigt und darüber hinaus noch einen Zusatz gefunden. Und zwar, dass Intel, MEDN, also die Management Engineering Generation, hat einen K-Switch, also einen Ausschalter sozusagen, das HRP-Bit. Wenn man darüber mehr erfahren möchte über dieses HRP-Bit, sollte man diesen Blockplus lesen. Hier sage ich nur, dass es ein Bit ist. Wenn man das auf Einsetzt, dann scheitert sich die Management Engine einfach aus. Ah, direkt nachdem das BUP-Module, also das Startmodul geladen wurde. Der Ego, Scott Shinji, hat noch ein weiteres Bit gefunden, und zwar das Alt-Media-Able-Bit, was dasselbe bewirkt, aber in der zweiten Generation. Also haben wir zwei verschiedene Bits, einer in Generation 2 und eines in Generation 3, was die Intel Management Engine deaktivieren kann, ohne dass wir den Code modifizieren müssen. Also im Endeffekt haben wir rausgefunden, dass die Kombination aus dem HRP-Bit in Generation 3 und das Alt-Media-Able-Bit in Generation 2 zusammen und auch das Entfernen von Code uns ermöglicht, die Intel Management Engine komplett zu deaktivieren, direkt nach der Initialisierung der Hardware. Darüber hinaus zwingen diese Bits dazu, die Management Engine dazu sich abzuschalten, aber darüber hinaus auch noch den System trotzdem zu signalisieren, dass alles gut ist. Also werden sich heimbar für kommerzielle Implementation von BIOS-System zu benutzen. Um das zu überprüfen, habe ich das Programm Intel ME-Tool vom Coreboot-Project verwendet. Und das sind die Ausgaben von einem ThinkPad X220T mit einem Sandwich-Prozessoren. Und es gibt zwar ein Erword-Code, das das Image Failure, also Fehler des Speicherabbildes, also er hat es versucht zu laden, aber eben das Evaluieren der Hashes ist irgendwann abgebrochen worden. Aber der aktuelle Vorschrift steht immer noch auf dem BUP, also die Management Engine versucht immer noch den Körner zu laden, aber das geht nicht, weil er nicht gehasht ist. Während man das Alt ME Disable-Bit verwendet, stellt man fest, dass der Status von der Management Engine sich verändert hat und der jetzt besagt, dass die ME Disable-Bit ist und keinen Fehler bereitstellt. Also ist alles in Ordnung. Und dank der Nachvorstellung der, also von euch, von anderen Leuten, habe ich herausgefunden, dass das Programm ME Cleaner auf den meisten System mit aktuellen Prozessoren über verschiedenste Generationen hinweg erfolgreich funktioniert. Und auch die Größe der Firmware verringert sich um einen großen Bereich. Also in Generation 2 geht es von ungefähr 5 Megabyte oder 1,5 Megabyte, hinter dem, welche Firmware man verwendet, auf 84 Kilobyte runter. Und in Generation 3 sogar von 6,6 Megabyte oder 2 Megabyte, in welcher Version man installiert, hatte auf 33 Kilobyte. Also wirklich ein großer Sprung. Und viele, viele der Funktionen, die man nicht haben wollte, sind jetzt weg. Also es gibt jetzt keinen Intel ME-Körner mehr in Generation 2. Es gibt keinen Networkstack mehr oder keinen AMD in der Management Engine mehr. Der dynamische Application Loader und die Trusted Platform Module ist auch eben entfernt worden. Es kann sein, dass schlimme Dinge passieren. Also auf manchen PCs, je nachdem welche Firmware man installiert hat, kann es sein, dass der PC sich aufhängt. Also der PC geht nicht mehr an. Manchmal kann es dazu führen, dass man einen verzögerten Startvergang hat. Also dass es in ein paar Sekunden dauert, bis es losgeht. In manchen Systemen mit einem Doppelbios wird, wenn man den ME-Cleaner ausgeführt hat, werden die Änderungen wieder rückgängig gemacht. Also das wird automatisch wieder rückgängig gemacht. Und manchmal gibt es irgendwelche Wadenmeldungen beim Bootvergang. Und es sagt, dass man F2 drücken muss, um vorzufahren. Aber das ist alles eigentlich gar nicht so schlimm. Darüber hinaus sind manche Funktionen jetzt nicht mehr da. Also man kann zum Beispiel nicht mehr übertakten, weil die ICC Partition, die zum Übertakten erforderlich ist, vom Ecleaner jetzt entfernt wurde. Das gleiche gilt für AMT und PAVP. Also PAVP ist der abgesicherte Audio- und Video-Fahrt. Also irgendwas mit DRM könnte jetzt nicht mehr funktionieren und Teile von SGX und eventuell noch weiter ist. Also manche sagen halt, das ist ja eigentlich gut. Aber ich würde das trotzdem gerne nochmal abprüfen. Also machen wir mal einen Demo, eine Vorführung. Also da ist das ursprüngliche ME-Image, was es mit ME-Balt groß ist. Jetzt führen wir ME-Cleaner darauf aus und das ist jetzt abgeschlossen. Und wir können jetzt sehen, dass das modifizierte ME-Image jetzt nur noch 40 Kilo alt groß ist. Und man kann sehen, dass der Vergleich von den beiden zeigt, hat gezeigt, dass nur noch eine Partition vorhanden ist. Jetzt schreiben wir die aktuelle Firmware, die läuft in eine Datei. Und es gibt so ein paar Warnmeldungen aus, aber wir ignorieren das mal. Alles ist, was kann schon schiefgehen. Und jetzt extrahieren wir die Firmware von diesem Dump. Und wie man sieht hier, eine 44 Kilo bald große Flash Region 2, die ist 44 Kilo bald groß, das ist die Intermanagement Engine. Und wenn man die vergleicht mit der, die ich jetzt gerade eben erzeugt habe, sieht man, dass es dieselbe ist. Also das zeigt, dass ich meine aktuelle modifizierte Version auch gerade ausführe. Und wie man sieht, ist die Intermanagement Engine beim Initialisieren feskel steckt und der Status sagt aus, dass die Intermanagement Engine deaktiviert ist. Und es kann nicht sagen, welche Funktion es bereitstellt, weil eben dieser Teil der Firma entfernt wurde. Ja, was könnt ihr tun? Ihr könnt zuerst einmal M.E. Kleiner auf eurem eigenen Rechner ausprobieren, seid natürlich vorsichtig, weil es kann natürlich immer etwas schiefgehen, es ist ein bisschen gefährlich. Also man sollte sich vorher eine Möglichkeit überlegen, den Prinzip wieder herzustellen, wenn es falsch liegt. Ja, wenn es nicht, egal ob es gut läuft oder schlecht, in beiden Fällen bitte Bescheid sagen. Und darüber hinaus möchte ich noch einigen Leuten danken, dass sie direkt oder indirekt mir bei dieser Nachforschung geholfen haben. Ja, hier gibt es noch einige Quellen. Und ja, das war es. Hier sieht es noch einige Links zu unseren Projekten. Und das sind auch einige Projekte, um mit der Management Engine zu arbeiten. Wenn euch das interessiert und damit könnt ihr auch die Images auslesen und speichern und damit weiterarbeiten. Und ich, es wird doch ein Wiki geben und dann können wir zusammen mehr Informationen zusammen tragen und mehr Untersuchungen anstellen und besser verstehen, wie es funktioniert und noch mal Sachen herausfinden. Und ich denke, wir können jetzt einige Fragen nehmen. Danke Igor, danke Nikola. Wenn ihr eine Frage stellen wollt, stellt euch bitte in die Schlangen an den Mikrofon. Hier sind sechs Mikrofonen im Raum, also sucht euch einfach das nächste. Und wenn ihr gehen wollt, dann bitte nur auf der rechten Seite, danke. Gibt es Fragen aus dem Internet? Hallo? Momentan noch nicht. Danke. Gut, dann Mikrofon Nummer eins. Kann die Management Engine gemapptes Input Output darauf zugreifen? Ich denke nicht, denn das verwendet DMR, also Direct Man and Me Access und ich denke nicht, dass Direct Man and Me Access darüber funktioniert. Aber ich habe es natürlich nicht überprüft. Aber ihr könnt mal Maxim fragen, vielleicht kann er es ausprobieren und überprüfen, ob es funktioniert. Aber soweit ich sagen kann, nein. Ich hoffe, das beantwortet die Frage. Mikrofon Nummer drei, bitte. In deinem Vortrag hast du das Problem beschrieben, dass ein Computer unbuttbar werden kann. Also wie sicher ist es jetzt, euer Programm, oder wie sicher ist es, Forschung damit zu betreiben und diese Sachen auszuführen von euch? Okay. Zuerst, kein einziger Laptop wurde beschädigt oder verletzt während dieser Nachforschung. Ich habe meinen eigenen Laptop ungefähr 40- oder 50-mal gebrickt, also aufhängen lassen und das muss ich nicht immer noch. Also ich denke mal, das beantwortet dann die Frage schon teilweise. Also ja, wenn man Zugriff hat auf ein externes Programm und einen gültigen Dump, eine gültige Kopie der Filmwehr hat, dann kann man das immer wieder zurückspielen. Also man sollte immer ein externes Programm verwenden und wirklich, wirklich vorsichtig sein bei den ersten Kopien der Filmwehr. Zum Beispiel habe ich einen SPI Chip wirklich, wirklich kaputt gemacht. Also ich habe ihn dann ausgebaut und einen anderen eingelötet und darüber die Filmwehr zurückgeflasht und es funktioniert immer noch. Also immer mit einem externen Programm erarbeiten, aber dann ist man sicher. Mikrofon Nr. 4, bitte. Hi. Also sehr guter Vortrag, eine kleine Frage. Sorgt dafür, wenn man die MI ausschaltet, ob das den Stromverbrauch reduziert. Ich denke, ich denke ja. Aber weil man keine Intermanagement Engine mehr laufen hat, kann man es nicht überprüfen. Aber also der Punkt ist, dass die Intel ME so produziert ist, dass der Stromverbrauch wirklich, wirklich minimal ist. Also wird wahrscheinlich die Entfernung der Intermanagement Engine nicht so viel ändern. Also wenn die Steuerung der Systemuhr entfernt wird, dann kann es einfach dazu führen. Wenn die Kontrolle der Taktung der CPU ausgeschaltet ist durch das Überschreiben von der Management Engine, dann kann es dazu führen, dass der Stromverbrauch größer wird, weil man nicht runtertacken kann. Okay, danke. Mikrofon Nr. 5, bitte. Habt ihr Zug, also seid ihr in Kontakt mit Intel, sodass sie halt nicht in der Zukunft ihren ganzen Code zu signieren, sodass es immer noch möglich ist, Sachen zu verändern? Ich habe leider nicht ganz verstanden, was du meintest. Sollen Sie anfangen zu signieren? Also die Frage ist, also ich wollte jetzt ... Ich habe gesagt, dass sie bisher nicht verschlüsselt sind. Sie haben angefangen, einen Modul zu verschlüsseln bisher. Und einige Leute auf Twitter behaupten, dass das mit einem Vertrag mit Netflix zu tun hat und irgendwelche DHM-Schlüssel verstecken sollen. Aber der Rest der Filmwehr ist immer noch unverschlüsselt. Also kann man den immer noch extrahieren und decompilieren oder sich anschauen. Und das macht irgendwie keinen Sinn, dass sie damit anfangen würden sollten, der es mit dem Rest zu tun, weil das für nicht davon abhängig ist, das zu verstecken. Also es gibt keinen Grund für Intel das zu tun. Also ich glaube, dass es für die nahezukunft auch weiterhin unverschlüsselt bleiben wird. Mikrofon 2, bitte. Ähm, etwas früher habt ihr über ein Speicherbereich gesprochen, der auf die ... engine gemappt wird. Ist das Teil des Hauptspeichers, des eigentlichen Computers oder ist das eine andere Speicheroperation, eigener Speicherbereich? Ja, das ist der UMA, also der ... ... vereinheitliche Speicherbereich. Und das hat scheinbar damit zu tun, wie verschiedene Grafikkarten funktionieren. Also es nimmt ein Teil des Arbeitsspeichers und verwendet den, um die Grafik beizustellen. Aber den CPU kann er auf nichts zugreifen. Also der BIOS konfiguriert das. Und ... ja, aluziert den Speicher und die Register dafür. Und danach besteht der Grafikkarten Zugriff mehr. Und das war als 2009, dass die Intermanagement Engine das erste Mal geknackt wurde. Aber wenn die Register erst mal konfiguriert sind, dann kann der Speicher nicht von der CPU, von der CPU nicht mehr zugerufen werden. Aber an theoretisch könnte man natürlich mit einem Hardwarezugriff den Speicher abrufen. Aber sie haben ein Integritätscheck auf dem Speicher. Also wenn die Intermanagement Engine feststellt, dass dieser Speicherbereich modifiziert wurde, dann schaltet es den Rechner automatisch aus. Also da ist auch Schutz vor Sicherheit. Leider gibt es immer noch Fragen, aber die Zeit ist jetzt leider vorbei. Können die Leute euch eine Frage nach weiteren Fragen stellen? Ja, wenn ihr weitere Fragen habt, können wir hinterher noch hier vor der Bühne sprechen. Danke.