 Also, wir warten darauf, dass What the Facts jetzt hier gleich losgeht. Yannif Balvers ist ein Software-Entwickler, der mit Commodore 64 angefangen hat, als er acht war. Ein Teenage-Hacker. Und jetzt macht er Sicherheit und hat sich sehr für Fax-Maschinen jetzt interessiert. Zusammen mit Eyal Tkin, der auch ein Sicherheitsforscher ist und gemeinsam werden sie uns erzählen über Fax-Maschinen. Und warum zum Fax die Leute, die ihn noch verwenden? Genau, der Tichlis Hecken, als wäre es wieder 1980. Danke, danke. Hallo, TTC. Ihr kennt wahrscheinlich dieses Geräusch, was gerade kam. Mein Name ist Yannif Balmers, ich bin Sicherheitsexperte. Mit mir heute ist Eyal Tkin, auch ein Sicherheitsforscher, auch bei CPR Research. Lass uns über die Geschichte von Fax reden. Fax wurde erfunden, 1846 von Alexander Bain, 20 Jahre vor der Erfindung der Glühbirne. 1860 gab es dann die erste Maschine, die so aussah, wie ein Fax-Maschine. Wieder 20 Jahre vor der Erfindung des Telephones. Das heißt, wir hatten Fax bevor es Licht und Echtzeit-Kommunikation gab. 1923 dann Radio Fax und 1966 hat Xerox, eine kleine unbekannte Firma, die erste kommerzielle Fax-Maschine stellt. 1980 hat eine komische Organisation ITU, ein gemeinsames Standard definiert T30, T4 und T6 und die werden auch heute noch verwendet mit Kleinveränderungen. Das ist die Vergangenheit, was ist heute los? Heute können wir doch viel besser Elektronische Information senden. Mir kommt sofort in den Sinn zum Beispiel E-Mail. Was wir jetzt vergleichen hier, ist eine schlecht gescannte Fax-Seite und eine E-Mail. Qualität, Schlecht, E-Mail-Fax, Accessibility, Zugänglichkeit auch und Verlässlichkeit. Wenn du ein Fax sendest, dann weißt du gar nicht, ob das angekommen ist. Man bekommt eine Bestätigungs-Seite. Falls es kein Papier gab auf der Empfänger-Seite, dann kriegt man trotzdem die Bestätigung. Es gibt keine Verlässigkeit bei Fax. Authentizität, da können wir viel diskutieren bei E-Mail, aber es gibt jetzt Public Key Cryptography. Für Fax gibt es absolut gar nichts in diese Richtung. Wenn wir also auf diese Tabelle gucken, dann denkt man sich, wer zum Teufel würde Fax benutzen. Das ist 2018. Das Fax geht sollte in einem Museum gehen für tolle Technologie, aber sonst sollte das niemand mehr benutzen, oder? Ja, nein, jeder nutzt noch Fax heute. Fax wird benutzt, um zum Beispiel diese sehr kritischen Karten nach zu schiffen, auf der offenen See zu schicken. Selbst in der Wikipedia sind hohe Prozent von Fax-Nutzern. Wenn du Kontext hast und Fax suchst, dann bist du 300 Millionen öffentliche Fax-Nummern auf Google. Das sind ja noch nicht mal die unveröffentlichten Fax-Nummern auf Google. Aber es geht nicht nur um Zahlen, es geht nicht darum, wie viele Fax-Geräte da draußen sind. Es geht auch darum, wer benutzt Fax, wenn du eine kleine Firma bist oder eine große Firma bist. Jeder Fax, nicht unbedingt jeder schick Fax auf Fax-Nummern, aber es gibt alle fünf haben noch Fax-Nummern. Wenn du eine Bank bist, banken lieben Fax-Nummern. Das ist Bank of China, die größte Bank der Welt. Sie haben eine Fax-Nummer. Wenn du eine Regierungsorganisation bist, dann wachst du einfach auf im Morgen und möchtest gerne mehr Fax-Nachrichten haben. Wollte eben einen Fax schicken, viel Spaß, liegt los. Wir sollten ihm etwas faxen. Die Sache ist, diese Banken, die Regierungen, die Institutionen, die unterstützen nicht nur Fax, also, dass du ihnen einen Fax schicken kannst. Nein, es ist sogar oft auch gezwungenermaßen nötig, entweder per Post oder per Fax die Informationen zu ihnen zu senden. Das sieht mir sehr verrückt aus. Das kann irgendwie nicht wahr sein. Die Menschheit ist soweit gekommen und wir nutzen immer noch diese alte Technologie. What the Fax? Was zum Fax? Wir haben überlegt, wir sollten etwas dagegen tun. Wir sollten etwas machen. Deswegen haben wir angefangen, Sicherheitsforschung zu betreiben und Sicherheitslücken im Fax zu suchen. Bevor wir darüber reden, möchte ich kurz einführen, wie Fax heute aussieht. Fax sieht heute nicht mehr aus wie vor 20 oder 30 Jahren. Es war einfach eine Faxmaschine für sich alleine. Heute ist es meistens alte Technologie in neuer Technologie verpackt. Wir könnten zum Beispiel Fax auf E-Mails schicken oder E-Mails zu Fax weiterleiten. Wir haben Radio Fax. Wir haben Fax über Satellit und so Zeug. Die meisten dieser Sachen. Üblicherweise haben wir diese Geräte alles in einem Drucker. Du kannst drucken, scanen und natürlich auch Faxen. Es kommt mit dem Telefonkabel in der Verpackung. Du kannst es einfach direkt einstecken. Ich glaube, das ist die üblichste Fax-Lösung heutzutage. Deswegen haben wir uns das angeguckt. Wenn man da auf diese Kisten schaut, wenn man sich an guckt von der Sicherheitsseite, dann kann man sie als Schwarze Kisten sehen, Blackboxes. Auf der einen Seite gibt es irgendwie Schnittstellen, wie WLAN, Bluetooth, Internet, so was alles. Diese Schnittstellen verknüpfen das Faxgerät im Internet-Netzwerk. Auf der anderen Seite gibt es diese kleine Schnittstelle, dass diese Schwarze Kiste, die Blackbox irgendwo in 1970er-Jahre verknüpft. Das ist schon eigentlich ziemlich lustig. Wenn man sich jetzt noch überlegt, dass am Ende des Tages diese Drucker nichts anderes sind, als Computer, die haben eine CPU, die haben Speicher, die haben Betriebssysteme, das sind Computers. Nicht die Standardcomputer, aber das sind Computer. Wir haben uns gedacht, stellt euch mal das vor, so ein Angreifer irgendwo auf der Welt, hat Zugriff auf eine Telefonanlage und diese Zielfaxnummer. Und was passiert, wenn dieser Angreifer ein korruptiertes Fax an dieses Gerät schickt und dann sozusagen den Drucker ausnutzt, dann kann er quasi vielleicht über irgendeines dieser anderen Schnittstellen von dort aus in das restliche Netzwerk eindringen und unter dem Strich eine Brücke macht zwischen seinem externen und dem internen Netzwerk. Und das ist 1990er Technologie. Wir haben gesagt, Challenge accepted, lass uns das mal ausprobieren. Wir waren da richtig aufgeregt und dann haben wir ein bisschen geschlafen und als wir dann wieder aufgewacht sind, haben wir das ein bisschen besprochen. Da sind ganz viele schwere Aufgaben mit dabei. Wir sind nicht so richtig sicher, wie wir das hinkriegen sollen. Eines dieser Probleme ist, wie bekommen wir an die firmware ran? Und dann, sobald wir sie haben, wie analysieren wir die? Nachdem analysieren müssen wir verstehen, was für ein Betriebssystem läuft auf diesen Druckern. Und die letzte Frage ist, wie debaggen wir das? Und als allerletzte Frage, wie funktioniert eigentlich Fax? Und als allerletztes können wir dann darüber reden, wie finden wir da eigentlich die Schwachstellen? Und heute in diesem Talk werden wir da durchgehen und werden dieses Szenario einmal durchspielen. Also, los geht's. Wie kommen wir an die firmware von diesen Drucker ran? Unser schöner Drucker hier, ein HP Office Jet Printer. Wir haben das Modell herausgesucht, weil HP 40% Marktanteil hat. Da haben sie leider Pech gehabt, aber sie sind einfach das größte Ziel da draußen. Ganz viele Gründe, warum wir dieses Modell herausgesucht haben, es ist das billigste. Wir hatten kein großes BT, also haben wir das gekauft. Und unser Ziel war es, Fax einzudringen. Und vorher mussten wir den Drucker kaputt machen. Da sieht man Bilder, haben wir das kaputt gemacht. Und in dem Drucker haben wir diese Karte gefunden. Hier sind die kritischen Komponenten. Da ist das Flash ROM und Speicher. Das sieht nicht nach sehr viel aus. Da gibt es noch eine andere Seite. Auf der anderen Seite sind die interessanteren Komponenten. USB, WLAN, mehr Speicher, Batterie. Und hier sind zwei sehr interessante Komponenten. Das ist der Hauptprozessor. Das ist von Marvel. Das ist proprietär. Das heißt, es gibt keine Beschreibung. Man findet hier und da ein bisschen Information darüber, aber es gibt da keine Beschreibung. Und dann gibt es das Fax-Modell. Das Modell ist CSB 1040. Und die Frage ist, wie funktionieren diese zwei Komponenten und wie operieren sie zusammen? Und die erste Aufgabe, wie gesagt, ist an diese Firmware rankommen. Und wenn wir da etwas genauer hingucken auf dieses Board, dann finden wir zwei interessante Schnittstellen. Die Siri Debug und JTAG. Wenn ihr die kennt, mit denen kann man eben debuggen und Speicher überschreiben. Und da haben wir uns angelacht und gesagt, ja, das ist ganz einfach. Aber leider doch nicht ganz so einfach. Es ist leider alles ausgeschaltet. An den Siri-Report haben wir es geschafft, uns da anzuschließen. Aber als wir angefangen haben, da Kommandos einzugeben, kam da immer die gleiche Fehler zurück. Und zwar, ich verstehe das nicht. Also, muss mir schauen, ob es irgendwelche anderen Wege gibt, wie wir an diese Firmware rankommen. Die einfachste Methode wäre natürlich, an ein Firmware-Update ranzukommen. Also haben wir diesen Juwelen gefunden, auf der anderen Seite, wo jede Firmware-Version von jedem Modell das HP erstellt, finden konnten. Und das hat dann so etwa zwei Wochen gedauert, bis wir das richtige Modell gefunden haben auf dieser Liste. Es gibt diese Seite immer noch, ihr könnt da hinkommen. Schaut's euch an. Und jetzt haben wir eine Datei. Und das ist eine Firmware-Update-Datei. Das ist keine ausführbare Datei, sondern nur eine BDR-Datei. Und jetzt müssen wir verstehen, wie upgraded man eigentlich so einen Drucker, so eine Drucker-Firmware? Also, wie aktualisiert man die? Hat das irgendjemand hier schon mal gemacht und da gibt es eine Meldung? Gut für dich. Okay, die Lösung ist, man druckt diese Firmware. Also, der Drucker empfängt diese Firmware-Aktualisierung auf genau die gleiche Art und Weise, wie es eine Seite empfindet. Es gibt da ein HP-Protokoll. Das heißt, PCLXL Feature Reference Protocol Class 2.1 Supplement. Und das ist komplett verrückt. Das definiert eine Print-Job-Language, also eine Drucker-Auftragssprache. Es gibt einen bestimmten Port und an dem empfängt der Drucker die Seiten und da empfängt er auch die Aktualisierung. So, das ist super. Und jetzt haben wir hier diese Print-Job-Sprache, aber es dokumentiert nicht wirklich was darüber, was das Protokoll gemacht hat. Das war das alles sehr proprietär. Wir mussten das selber machen und selbst analysieren. Ich führe euch jetzt nicht durch den kompletten Prozess, wie wir das Ganze auseinandergenommen haben. Es ist sehr langweilig, aber ich möchte euch erzählen, dass da mehrere Schichten von Kompressionen liegen, Null-Decoder, Tiff-Decoders, Delta-Raw-Decoders. Das Ding ist, wenn die Drucker halt schwarz sagen, ja, okay, dann ist es auch hier schwarz. Und es gibt ja eine Art von Kompressionen, aber es macht nicht wirklich Sinn, wenn es um Druckeraufträge geben. Ja, Druckpapier hat relativ viele weiße Fläche. Wenn man einen Binary-File hat, dann macht das alles überhaupt keinen Sinn, das so zu machen. Aber es funktioniert aber auf diese Weise. Also danach konnten wir alles dekondieren und dekompressieren. Sozusagen, wenn man Drucker hat, dann sieht alles irgendwie wie ein Druckauftrag aus. Ja, das war super. Aber nachdem wir das gemacht hatten, wir hatten eine große Datei, von der wir hofften, dass es unsere Firma ist und wie analysiert man das Ganze jetzt? Und haben wir uns das ganze Ding erst mal angucken am Anfang, da hat man so eine Art Tabelle. Es sieht nicht nur aus wie eine Tabelle, es ist eine Tabelle. Wir haben uns das Ganze ein bisschen genauer angeguckt und was das Ganze definiert, ist eine Laderadresse, ein Sektionsname und ein Ort in der Binary. Diese Firma ist in einzelne Teile aufgeteilt und diese Sektionen sind so aufgeteilt und so konnten wir diese Datei in kleinere Einheiten aufteilen und jede Einheit noch mal einzeln angucken. Und dann haben wir uns die angeguckt, die am relevantesten aussah und die haben wir uns genau angeguckt. Und das ist was wir gesehen haben. Es sieht aus wie eine Firma. Das ist eine von den Textvarianten, die wir da eingefügt haben. Wir haben es alle vorher gesehen. Aber es ist nicht wirklich komplett richtig. Da sind noch ein paar Bytes, die da fehlen. Diese fehlenden Bytes, die sind in unserer kompletten Einheit drin. Wir müssen aber erst diese fehlenden Bytes finden. Wir müssen verstehen, warum sind sie da und warum wurden sie ausgetauscht. Also müssen wir das Ganze nochmal gemeinsam genauer anschauen. Aber lass uns erst mal genauer schauen, was es überhaupt hier ist. Alle gucken ein bisschen komisch, aber das ist noch eine andere Art von Kompression und eine sehr schlechte, wie da mal. Wir haben das mit Sealip kompressiert und wir haben diese Sealip Strings gesehen. Also haben wir das einfach damit gemacht. Aber wir haben immer noch diese Herausforderung. Das ist ein Snippet des Codes, den ihr gerade gesehen habt, den wir dekomprimieren wollen. Wir müssen erst mal das hier angucken. Es gibt diese eine sorts Charakter und die andere. Und dann sind dann noch nicht ASCII Charaktere. Die sind tatsächlich die fehlenden Bytes, die wir haben. Und dann gucken wir uns das nochmal genauer an. Und wenn man sich das genauer anguckt, dann entscheidet es so eine Art von Muster. Und dann schauen wir euch, schaut euch das mal genauer an. Da sind diese einzelnen Single Bytes und dann sind da doppelte Bytes. Und der Abstand scheint immer relativ gleich zu bleiben. 9 Bytes, 8 Bytes, immer wieder. Und was bedeutet das, wo ist hier das Muster? Wenn man auf dies ein bisschen anders schaut, dann gucken wir uns das mal so an. F7 und F7, die sehen gleich aus. Da scheint wirklich irgendein Muster zu sein. Um dieses Muster zu erkennen, muss man das Binary nochmal genauer angucken. Ff ist 8 Bytes. Und wenn man das konsequent für alle diese Blöcke macht, dann fängt man an das Muster zu sehen. Das ist wirklich immer dieses Zero Bit in diese Lückenfallen. Und das war wirklich in der kompletten Datei so. Das eine beschreibt halt die folgenden Bits. Und das ist super, weil jetzt verstehen wir diese einzelnen Bytes, aber wir verstehen nicht diese Doppelbytes, die dann noch in der Gegend rumliegen. Die müssen auch noch mit irgendwas ersetzt werden, aber mit was. Wenn man etwas über Komprimierung weiß, da gibt es nicht viele Optionen, ehrlich gesagt. Es könnte ein Forward- oder Backward-Pointer sein. Es könnte ein Wörterbuch sein. Oder es könnte ein Sliding-Window sein. Und es ist weder das erste, also ein Forward-Backward-Pointer. Wir sehen nichts wirklich, was da nicht sein sollte. Es ist kein Wörterbuch. Wir können dann nicht sehen, was irgendwie konsequent da durchgeführt wird. Also haben wir nur die eine Variante, nämlich das Sliding-Window. Und sobald wir diese Informationen jetzt haben, dann gehen wir zum Lieblingsplatz, nämlich Google, und dann gucken wir uns andere Implementationen davon an. Und wir haben jetzt das gefunden, diese Wiki-Seite. Die beschreibt das Soft-Disk-Library Format. Ich werde jetzt nicht fragen, ob irgendwer das kennt hier, weil zwischen bestimmt irgendwelche Leute, wir sind hier beim CCC, aber es definiert eine Art von Kompression und es sieht relativ ähnlich aus zu dem, was wir da haben. Es sieht sehr wie unseres aus. Es ist genau unsere Komprimierung, die wir haben. Und das ist großartig. Und das Lustige ist, dass diese Kompressionen, die wir nutzen, die wurde schon mal benutzt, aber könnt ihr raten, wo? Ja. Und es wurde tatsächlich in Commander Keen benutzt. Und der gleiche Kompressionsalgorithmus hat es irgendwie in diesen HP Drucker geschafft. Warum auch immer? Wie? Ich weiß es nicht. Ihr könnt mal schauen, ob da jemand von Kommando gefreut wurde und dann bei HP angefangen hat. Wir werden es nie wissen. Jetzt weiß ich mir genau, was es ist und wie diese Kompremierung funktioniert. Wir haben die Daten, die wir brauchen. Diese zwei Bytes sind eine Window Location und ein Sliding Window. Ich erkläre das mal ganz kurz hier. Wir haben einen Inprotext. Das erste Byte ist die Bitmap. Das zweite Byte ist ein A. Das ist im Sliding Window und auch in der Ausgabe. Und jetzt gehen wir da durch. B, C, D. Und A ist das aber schon in dem Sliding Window drin. Deswegen müssen wir es nicht ausgeben. Und da tun wir nichts. Wir gehen auf B, das ist schon drin, im Sliding Window. Und dann gehen wir auf E und dann schreiben wir 00002. Und das bedeutet, G in dem Sliding Window auf zu Position 0 und kopiert zwei Bytes. Und dann geht es so weiter. Wir schauen uns E, F, G an. Und da kommen die Bitmap-Werte her. Also so wird das produziert. Um das von der anderen Seite anzuschauen, das ist ein bisschen komplizierter, aber jetzt können wir alles lesen. Als nächstes müssen wir verstehen, was bedeutet dieser Code. Aber dafür müssen wir zuerst wissen, was eine Architektur für ein Betriebssystem ist und so weiter. Das hat eine Weile gedauert. Ich werde das mal kurz erklären. Also das Betriebssystem heißt Stradex. Das ist ein Echtzeitbetriebssystem. Es hat einige Komponenten, Systemzeug, ein paar gemeinsame Bibliotheken und Aufgaben. Das ist das gleiche wie Prozesse in einem normalen Betriebssystem, in dem Systemzeug. Da gehört dazu Netzwerkbibliotheken. In den gemeinsamen Bibliotheken sind halt gemeinsame Bibliotheken. Und in den Aufgaben, das haben wir dann uns genau angeschaut und verstanden. Und alles, was wir jetzt tun mussten, war diese bestimmten Aufgaben zu verstehen, weil das wird unsere Aufgaben viel einfacher machen. Also damit wollen wir anfangen. Eine Sekunde bevor wir das machen. Wenn wir uns das anschauen. Das macht nicht so richtig Sinn. Was ist das? Was macht Spider-Monkey da drin? Jeder HP Drucker hat Spider-Monkey drin. Ich weiß nicht, ob ihr wisst, was Spider-Monkey ist. Das ist eine JavaScript-Implementierung von Mozilla. In Firefox zum Beispiel. Warum muss ein Drucker JavaScript rendern? Es hat ja einen Web-Server drin, aber es hat ja keinen Client drin. Deswegen ist es völlig unklar, warum ein Drucker JavaScript rendern muss. Und dann haben wir also geschaut, wo genau verwendet dieser Drucker JavaScript. Und da haben wir eine Injection gemacht. Und wir haben gefunden, dass also JavaScript wird verwendet, einem Modul, das Pack heißt. Das ist die Proxy-Selbstkonfiguration. Die Sache ist sie. Die komplette Funktionalität von diesem Paket wurde von HP gebaut. Wenn wir uns das anschauen, dann sehen wir diese Funktionalität und dann sehen wir so ein paar seltsame Springster drin. Und was es als Allererstes tut, ist, der Drucker wird sich verbinden mit dieser URL. Ich weiß nicht genau, warum, aber was da interessanterer ist, wisst ihr, wem fakeurl1234.com gehört? Ist das nicht happy? Ist das Checkpoint? Es gehört mir. Ja, es war einfach nicht registriert. Also haben wir das für fünf Dollar registriert und jeder HP Drucker verbindet sich mit meiner Domain. Also wenn jemand diese Domain kaufen will, ich mache euch einen echt guten Preis. Und jetzt geht es weiter. Okay, vielen Dank für dich. Nachdem wir mit Spider-Man K. rumgespielt haben, was uns Zeit aufs Faxen zu konzentrieren, T30 zum Beispiel, ist es ein Standard, der definiert, wie das Fax-Protokoll funktioniert. Es ist ein sehr, sehr langes PDF. Das definiert all die Nachrichten, die wir brauchen und so. Es wurde 1985 designt und das letzte Update ist länger als zehn Jahre her. Das ist also eine sehr gute Idee. Aus unserer Perspektive, weil wir wollten Verletzungen finden, Vulnerabilities. Und nachdem wir den Standard gelesen haben, haben wir dynamisch nach Schubschütteln darin gesucht und nach T30 Aufgaben gesucht. Die Zustandsmaschine ist ziemlich groß, wie man hier sehen kann im Eder. Das ist eine kleine Zustandsmaschine, weil alle Core Blocks noch Zustandsmaschinen in sich halten. Also insgesamt ist es eine sehr, sehr komplizierte Sache. Und wenn das nicht genug ist, es stellt sich raus, HP mag wirklich globale Variablen und Funktionspointer. Also das Reverse-Engine wird wirklich sehr, sehr kompliziert. Obwohl ich persönlich ja gerne statisch Reverse-Engineere, diesmal mussten wir mit einer anderen Taktik rangehen. Wir mussten dynamisch Reverse-Engineeren. Deswegen hatten wir kein Debugger. Als was wir vorhin schon gesagt haben, wie können wir ein Drucker debuggen. Wir haben schon Shade Tech und Serialport versucht und das ist gescheitert. Wir haben also weitergesucht, was wir benutzen können, aber wir haben nichts Interessantes gefunden. An diesem Zeitpunkt ist es wichtig, uns zu erinnern. Selbst wenn wir den Ablauf kontrollieren, dann ist es immer noch eine schwarze Kiste, die nur Papier schicken kann und das war es. Also wenn wir den Kutt ausführen könnten, dann gibt es immer noch den Hardware Watchdog. Das ist ein echt großes Problem. Immer wenn die Main-CPU in eine Schleife geht oder anhält, dann schlägt der Watchdog an. Das bedeutet, wenn wir einen Breakpoint setzen, dann wird der Watchdog uns töten. Also mussten wir einen Weg herumfinden, als wir herausgefunden haben. Deswegen haben wir diese unfassbar große Aufgabe in kleinen Teilen unterteilt. Wenn wir irgendeine Kutausführungsschwachstelle hätten, dann könnten wir das uns nutzen machen. Dann hatten wir ein bisschen Glück. Glück ist ein wichtiger Teil in jedem Forschungsprojekt. Am 19. Juli gab es dieses Devil's Ivy. Viele eingebettete Geräte und dieser Drucker implementieren einen Web-Server für Management und Konfiguration. In unserem Fall wurde das genutzt. Das ist die verwundbare Version von Ivy. Deswegen konnten wir sie ausnutzen. Für alle, die das nicht kennen, hier ist der Code und da ist die Verwundbarkeit. Es ist ein Sign-Integer-Underflow. Man schickt genug Daten, dass der Integer vom Negativen ins Positive geht. Wir müssen ungefähr 2 Gigabit Daten dorthin schicken. Das kommt jetzt nicht auf die Netzwerkschwindigkeit an, sondern auf die Geschwindigkeit des Druckers. Wir konnten die Exploit-Zeit dann ungefähr auf 7 Minuten drücken. Man startet als ein Exploit und wartet. Nach 7 Minuten hat man ein Exploit. Dann war das vorbei mit dem Glück, weil wir den Nebeneffekt hatten, dass es nach 10 Minuten ungefähr den Drucker zum Absturz gebracht hat. Das bedeutet, wir müssen wieder 7 Minuten warten, 2 Minuten zum Debuggen und dann wird es wieder abstürzen. Wir haben viele Male 7 Minuten gewartet bei unserer Forschung. Wir wollten also einen Debugger, den wir dynamisch Gewörsingenieren können. Wir wollten Speicherlesen und Schreiben. Jetzt können wir auch den Kontrollfluss ausführen, übernehmen. Wir wollten unseren eigenen Code laden können. Natürlich wollten wir den Debugger ausführen können, ohne dass wir in den Hardware-Schutz gekommen laufen. Wir wollten uns zusammen mit dem internen Speicher vereinigen und dort drinnen glücklich rumfuschen. Deswegen habe ich getan, was mein Brunner gesagt hat, dass ich wirklich nichts tun soll. Wir haben unseren eigenen Debugger geschrieben. Das ist Scout. Scout ist ein Instruction-basierter Debugger. Es supportet die Architektur in unserem Drucker. Es hat ein Dinox Kernel Mode. Es ist bei uns im Embedded-Modus. Wir haben es irgendwo in die Firmware geworfen und gehofft, dass es ausgeführt wird. Wir haben gute Speicher-Adressen genutzt. Immer dann, wenn es Memcall aufruft, findet es die richtige Adresse und springt dorthin. Nachdem wir es kompetiert haben, haben wir es in unserem Exploit benutzt. Wir sind in diesem Blog gelaufen. Es macht ein TCP-Swapper auf und dann können wir Befehle hinschicken, um Speicher zu lesen und zu schreiben und alles zu machen, was wir machen. Du kannst Scout auf GitHub finden, mit ein paar Beispielen für den Dinox-Kanaldriver und für die eingebendete Modus. Also ich kann das sehr empfehlen. Okay, jetzt, wo wir das hingekriegt haben, haben wir euch aber immer noch nicht beschrieben, wie so ein Fax wirklich funktioniert. Mit Scout könnten wir das Dynamisch, die Firmware Dynamisch-Res-Engineeren und jetzt beschreiben wir euch, wie ein Fax zum Teufel wirklich läuft, funktioniert. Wir brauchen also eine Send-Maschine, um einen Fax zu schicken. Wir brauchen ein Send-Modem. Die Pakete von dem Modem werden in der CPU prozessiert und wenn sie abgearbeitet wurden, dann wird es wahrscheinlich vermutlich gedruckt. Lass uns schauen, wie das losgeht. Also zuerst gibt es eine Netzwerkinntaktion und dann probieren wir aus. Dann gibt es den Angleich und dann die Trainingsphase. Und das klingt so. Mit diesen Tunnen können wir ein Tunnel, ein HDLC-Tunnel, kreieren, über den wir dann Daten ausschicken konnten. In der Phase A schicken wir die ColorID in Phase B. Wir verhandeln sozusagen Möglichkeiten aus und in Phase C geht es dann ums Eingemachte. Da werden die Daten dann transfiguriert und in Phase D wird das abgerundet. Wir beenden unseren Prozess. Lass uns mal anschauen, wie ein normales Fax über das Protokoll geschickt wird. Okay, wir haben dieses Protokoll. Es geht über den Tunnel. Über Phase C wird es transportiert und das ankommende Dokument ist dann ein TIF-File-Body. Aus unserer Perspektive ist es zum Teil gute Nachricht, weil es gibt viele Verwundbarkeiten und wir können nur die Daten kontrollieren, weil die Header kommen von Phase 1 und Phase 2. Das können wir also noch nicht kontrollieren. Wir haben die Kontrolle über Teile von einem TIF-File und dann wird das gedruckt. Wie in jedem guten Protokoll, und das ist sehr interessant, die 30 unterstützt viele Erweiterungen. Könnt ihr euch vorstellen, welche interessanten Erweiterungen im Protokoll sind? Es gibt eine Security Extension, aber keiner nutzt sie. Es ist die Color Extension, die Farberweiterung. Die Briten benutzen es zum Beispiel in Krankenhäusern. Lasst uns schauen, wie ein farbiges Fax aussieht. Wir schicken ein Dokument über den Tunnel und über Phase C wird es gesendet und das erhaltende Datei ist ein G-Pack-File, und zwar Header und Body, und dann wird es an den Drucker geschickt. Jetzt wissen wir, wie Fax funktioniert. Lasst uns nach Verwundungen suchen. Wir haben diese komplexe Zustandsmaschine mit ein paar Schwachstellen und die praktische Ebene davon ist die Applikationsebene. Wir haben angefangen, das diese J-Packs anzuschauen. Wenn wir uns da so ein J-Pack verleihen schauen. Da sind Markierungen drin, da ist ein Anfangsdata, Länge, Daten, Länge, Daten usw. Wenn wir uns das genauer anschauen, dann gibt es einen bestimmten Marker, da gibt es eine Kompassions-Tabelle, eine 4x4 Kompassionsmatrix für dieses J-Pack-Bild, das wieder Koffdaten, die Länge und die Matrix, sondern die Daten selbst. Wenn wir noch genau hinschauen, dann können wir sehen, dass hier die Matrix, dieses Spaß, also da sind viele Nullen dabei, die Länge ist in jedem Fall 6 bytes und die werden kopiert in einen kleinen lokalen Puffer. Und haben wir gedacht, was zum Fax? Was macht der keinen Sinn? Wir kontrollieren noch den ganzen Header, wenn wir Daten in diese Matrix reintun und der Länge ist und der dann in diesen Stack reinkopiert wird, Puffer, Buffer-Uflo. Das ist ein ganz einfacher Buffer-Uflo. Es gibt da überhaupt keine Beschränkungen, wir können Vase auch immer da reinkopieren und das sind 4 Kilo-Bytes, die wir kontrollieren. An diesem Punkt mussten wir einige Betriebssystems Beschränkungen umgehen, aber das ist ideal, das ist ganz einfach. Wir haben uns die CVs angeschaut, ihr solltet wirklich eure Drucker jetzt patchen. Hier sieht man die Antwort, die wir von HP bekommen haben, als wir mit ihnen über die Schwachstellen besprochen haben und das ist eine gute Zeit für unsere Demonstration. Wir konnten keine Live-Demo leider mitbringen, deswegen haben wir hier was gefilmt. Dieser Computer ist mit dem Modem verbunden für 10 Dollar auf Amazon und wir schicken das an diesen Drucker. Hier steht einkommender Anruf von wem? Eine Sekunde? Von einem bösen Angreifer natürlich. Jetzt empfängt es hier das Fax. Es ist natürlich ein Farbfax. Wir haben jetzt totale Kontrolle über diesen Drucker. Es ist uns ausnahm. Was wir jetzt zeigen können, ist, dass wir das auf einen weiteren Computer übertragen können. Sobald irgendein Computer an dieses Netzwerk angeschlossen wird, dann versuchen wir das den auch anzugreifen. Das sieht man dann hier. Wir haben es geschafft, es hat lange dauert. Zur Zusammenfassung. PSN ist immer noch eine Angriffsoberfläche in zweites Nachts hin. Versucht einfach nicht Fax zu verwenden. Was könnt ihr tun, um euch gegen diese Katastrophe zu verteidigen? Ihr könnt euren Drucker patchen, falls euer Drucker diese Schwachstelle hat. Das sind 300 Modelle, die da betroffen sind. Also tatsächlich geht den, actualisiert euren Drucker. Wenn ihr keinen Fax braucht, dann verwendet es einfach nicht. Falls du tatsächlich Fax verwenden musst, dann versuch den Drucker so ein bisschen separat zu behandeln von dem Rest von eurem Netzwerk. Oder kann der Angreifer nicht das ganze Netzwerk übernehmen. Das sind wirklich gute Vorschläge, aber versucht einfach, also hört einfach auf, Fax zu verwenden. Vielen Dank, danke. Eine Sekunde, bevor wir hier aufhören. Das hat wirklich lange dauert, zwar ein langer Weg. Wir hatten gute Freunde, die uns da geholfen haben. Fysisch, mental, technisch. Das sind die Leute. Manche von denen sind hier. Bitte klatschen für die. Ein ganz besonderer Mensch, der uns hier geholfen hat. Das war Jena Elifne. Das verdient er. Und das war es. Wenn ihr uns folgen wollt, ihr könnt es hier finden. Und vielen Dank. Danke schön. Es gibt noch fünf Minuten für Fragen und Antworten. Also bitte geht ans Mikrofon. Wenn ihr gehen wollt, geht bitte rechts raus. Also von euch aus gesehen, von rechts. Genau, dann geht man an die Mikrofone. So, wir starten mit dem Mikrofon, bitte. Zuerst vielen Dank für diesen Talk. Das macht er wirklich Angst zu sehen, wie das funktioniert. Ihr habt darüber geseh, geredet, dass E-Mail auf Fax geht. Ist es möglich, dass es Schwachstellen gibt da drin? Ich weiß, dass die Router von Freunden das unterstützen könnte, die die auch angreifen? Okay, also im Wesentlichen, wenn sie T30 auch benutzen, wir haben es nicht geschafft, die auch anzugucken. Wir hatten so viel zu tun mit den Druckern. Wir haben anderen Druckern oder in Diensten uns beschäftigt. Aber ich kann es nicht für sicher sagen, aber wenn du nach Verwundbarkeiten suchst, dann würde ich vorschlagen, dort auch zu suchen. Was könnt ihr sagen über die Daten, die an dieser URL sitzen? Könnt ihr was über diese Maschinen sagen, die da an eure Fake-UL anknopfen? Ich kann sagen, dass es ganz schön viele HW-Drucker gibt. Das ist alles, was ich euch verraten kann. Tut mir leid. Es gibt da noch eine weitere Frage vom Signal-Engel. Habt ihr versucht, den J-Tag zu aktivieren mit einer veränderten Firmware? Wir haben versucht, den J-Tag zu benutzen. Wir denken, dass es von Werk aus deaktiviert ist. Deswegen haben wir den Devil's Ivy benutzt. Das ist eine gute Verwundbarkeit. Dann hatten wir Scout. Scout ist mehr als genug für die Bucking. Nachdem wir also die J-Tag-Worneability genutzt haben und Scout da drauf geschoben haben, hat es mehrere Wochen überlebt. Es war mehr als gut genug. Okay, Mikrofon Nummer 2, bitte. Vielen Dank für den schönen Talk. Völlig recht. Man kann ganz viele Probleme mit alten Protokollen haben. Das Einzige, was ich nicht verstanden habe, war der Teil, wo ihr automatisch und erfolgreich das Laptop übernehmen konntest. Ich würde sagen, mein Laptop ist genauso sicher, wie es im Internetcafé ist. Deswegen könnte ich nicht einfach von einem Drucker aus auf meine Linnungsmaschine den Tascherechner anmachen. Okay, dein Laptop ist vielleicht sicher, aber viele andere sind es nicht. Wir haben versucht es zu zeigen, indem wir das ExternalPlue Expert genutzt haben, WannaCry und so. Diese Sachen haben viel erreicht oder viel beeinflusst. Wir sind hier nicht, um Leute anzugreifen. Wir wollten nur sagen, dass wenn jemand ins Netzwerk will und diese Verlösung von Bundbarkeit hat, die du vielleicht noch nicht hast, dann ist Fax eine scheisse Idee für dich. Okay, leider haben wir keine Zeit mehr für weitere Fragen. Vielen Dank noch mal. Das war wirklich schön.