 Mein Name ist Herbert Fitts und ich freue mich, euch heute über Bad USB und die Verteidigung dagegen unterrichten zu dürfen. Die Reise ist eigentlich treigeteilt. Wir fangen an mit kurzem Einführung, was Bad USB eigentlich ist und warum das jetzt plötzlich so schlimm ist oder auch nicht. Danach stelle ich euch eben die Verteidigung vor, Bosal, und danach noch ein paar weitere Entwicklungen von Bad USB, damit ihr euch nicht allzu sicher fühlt. So, von der Geschichte her gibt es maliges USB-Devices schon sehr lange, also USB-Gräte, die sich nicht ordentlich verhalten. 2010 zum Beispiel hat Adrian Crenshaw ein Teensie, das ist so ein kleines Microcontroller-Bord, in eine Maus eingebaut und hat das an den USB-Anschluss der Maus angeschlossen, sodass die Maus gleichzeitig auch sich als Keyboard ausgegeben hat und auch da schon Tasteneingaben eben gemacht hat und eben böse Sachen runtergeladen hat. Ein Teensie kostet etwa 18 Euro, also ist es auch erschwinglich für den armen Studenten, wenn er mal jemanden angreifen möchte. Die professionelle Variante davon ist Wapodaki, das sieht von außen aus wie normale USB-Stick, hat drin allerdings einen vollwertigen Ad-Mail, 32-Bit AVR und ein Mini-SD-Card wieder. Und da könnt ihr jede Menge eurer eigenen Schadcode programmieren, dann auf die SD-Card laden und der wird dann eben ausgeführt, sobald der USB-Stick irgendwo angesteckt wird. Das Ganze wurde auch erstes mal 2010 rausgebracht, gibt es mittlerweile eine weiteren Version und das Ganze kostet 45 Euro. Ist also schon ein bisschen teurer, aber sieht eben von außen aus wie ein richtige USB-Stick, da muss man richtig aufmachen mit Schraubenziehen, damit man überhaupt den Unterschied erkennt. So, kommen wir zu Bad USB, das war im August 2014, da haben Kasten Null und Jakob Lell auf der Blackhead, wenn ich mich recht erinnere, Bad USB ist erstes mal vorgestellt. Bad USB bedeutet, dass man jetzt nicht mehr spezielle Hardware hat, wie den Teensie oder dieses Wapodaki, sondern man hat einen ganz normalen USB-Stick. Das Problem mit der USB-Stick ist, die haben alle nicht nur Speicher, sondern eigentlich auch eine kleine CPU. Und die CPU hat Firmware und die Firmware kann man flächen. Genau genommen, reinen sich jetzt immer um die Faisen-Firmware, genau genommen um Faisen 2303 USB-Kontroller. Und der nimmt einfach alles an, was man ihm vorwirft. Eben auch Code, der zum Beispiel plötzlich sagt, ich bin eine Tastatur, nicht nur ein USB-Stick. Allerdings haben Null und Lell das nicht veröffentlicht den Source-Code, um eben diese Firmware zu flächen und zu erstellen. Deswegen haben September 2014 Adam Codill und Brenton Wilson ihre Psyxen Software veröffentlicht. Die haben im Prinzip nochmal genau das Gleiche gemacht wie Null und Lell. Sie haben die Firmware reverse ingeniert und noch ein bisschen Software zugeschrieben, um den eigenen Code in die Firmware rein zu patchen und dann auf den USB-Stick zu übertragen. Das Schöne an der ganzen Sache ist, das ganze kostet nur noch 15 Euro. Also wenn man Glück hat, sogar nur zehn. Aber der Nachteil ist ein bisschen, die Entwicklung der USB-Kontroller schreite ich schnell voran. Mittlerweile findet man kaum noch Faisen 2303 Controller in normalverkauften Geräten. Das sind der Regel dann 2307er und dafür geht das dann nicht mehr. Die Firmware müsste man dann extra-reverse ingenieren, aber Wilson hat angegeben, er hat etwa zwei Wochen gebrauchen, das zu machen. Sofern motivierter Angreifer sollte das auch mit gewissen Aufwand schaffen. So, wie verteidigen wir uns nun dagegen? Bad USB funktioniert ja nur deswegen, weil es ja deswegen so dramatisch, weil man eben nicht mehr Firmware hat, die ein PC infiziert, sondern gegebenenfalls auch PCs, die eine Firmware, die ein USB-Stick infizieren können. Weil es ja nur eine neue Firmware ist, die ja von jedem geflasht werden kann, auch von einem infizierten PC. Das ist das wirklich neue an Bad USB. Religious USB-Devices gibt es eben schon jahrelang. Aber Bad USB, da können sich wirklich vertraute Devices, wo man weiß, die man selbst gekauft hat, die können jetzt infiziert werden auf Hardware-Level. Was ist also die Idee? Wir filtern einfach die Firmware-Updates raus. Das geht deshalb, weil diese Firmware-Updates zumindest bei Pfeißen und bei den meisten anderen USB-Kontrolle-Herstellern über SCSI-Befeele funktionieren, und zwar vendor SCSI-Befeele. Das heißt, bei SCSI gibt es eben bestimmte Zahlencodes, was weiß ich, fünf heißt schreiben, drei heißt lesen und so weiter. Und es gibt bestimmte Zahlencodes, die eben freigelassen werden, wo die Hersteller selbst definieren können, was da gemacht wird. Da sagen die eben, okay, wenn du mir eine 10 schickst, nehme ich die nächsten bytes, die kommen als Firmware und fleche die drauf. Aber das ist natürlich sehr einfach rauszufiltern. Wenn man jetzt eben ein Arztniffer dazwischen stellt zwischen das USB-Device und den Host, kann der natürlich sagen, hey, guck mal, da kommt ein Befehl 10 aufs SCSI-Ebene, den lassen wir mal nicht durch. Und schon kann man die USB-Firma nicht mehr flechen. Aber auch in die andere Richtung ist es relativ einfach. Die meisten Angriffe funktionieren eben, weil sich ein USB-Device als Tastatur ausgibt und dann irgendwo Schadcode runter lädt. Das geht nur natürlich nur so lange, solange man zulässt, dass sich USB-Geräte als Tastatur ausgeben. USB-Sticks sind in der Regel keine Tastaturen und die Devices müssen immer vorher sagen, was sie sind. Wenn jetzt also wie ein USB-Stick anstecken und der sagt, ich bin USB-Stick und eine Tastatur, sagen wir, nee, du kommst hier nicht rein, so, bleibst draußen. Wir schränken eben ein, dass eben an unserem Gerät nur USB-Sticks und keine Tastaturen angeschlossen werden können. Nachteil ist natürlich zum Beispiel die von Quenchor modifizierte Maus, wo du immer noch durchkommst, weil wir müssen ja die Maus anschließen. Also wir können ja dann nicht die Maus oder die Tastaturanschläge rausfüllen aus einer Tastatur. Wenn das natürlich infiziert ist, da können wir nichts machen, aber ich kann nicht alles machen. So, für das Gerät gibt es im Prinzip zwei Use-Cases. Einmal eben den vertrauten PC und das unvertraute Device, den unvertrauten Stick. Den Fall haben wir jetzt zum Beispiel hier vorne, aus dichtem Pock. Das ist ein gestellter Laptop, weil mein altes Gerät leider keine Ausgabe beherrschte und da hängt jetzt mein USB-Stick dran. Und ich halte den Vortrag über badusb. Also vielen, vielen Dank an das Pock für das Vertrauen. Weiß ich zu schätzen, aber in so einem Fall könnte man natürlich den Filter dazwischen setzen und schon könnte ich zumindest auf dieser Ebene kein Blödsinn mehr machen. Was noch für Blödsinn möglich ist, da komme ich später dazu. Die zweite Variante wäre, wenn wir von mir aus gesehen ein vertrauten USB-Stick und eben vom Vock der gestellte Rechner, der könnte jetzt auch mit einem USB-Stick Blödsinn machen. Auch da könnte wieder mein Gerät helfen und das verhindern. So, soweit die Grundliegen, die Idee. Hat jemand den Fehler gemerkt? Nicht? Inwiefern? Ja, die Frage war, ob vielleicht eine Wide-Listet einer Blacklist notwendig wäre. Die Scasi-Befäle sind ja im Endeffekt komplett. Also quasi die Inverse einer Wide-List ist eine Blacklist und umgedreht. Also es ist nicht wie im Internet, wo ich nur sage, ich lasse entweder nur Google kommen zu oder sperren nur Google aus. Ich habe da, wissen Sie, die Befehle sind sehr beschränkt, das ist nur ein Beit vorne. Und dann kann ich eben sagen, die 128 Werte kommen rein, die 128 kommen nicht rein. Das ist dann also relativ komplett, aber ja, an sich ist, systematisch ist ein Wide-List-Ansatz besser und der wird im Endeffekt auch gefahren. Es wird im Prinzip überprüft, ob es ein reguläres Scasi-Befil ist und dann wird eben gesagt, wenn es keiner ist, ist nicht. Nein, der Fehler ist, wir haben ein, unser Problem ist, wir haben ein Device, das frei programmiert ist. Unsere, meine vorgeschlagte Lösung ist, noch ein Device, was frei programmierbar ist, dazwischen zu hängen. Ich weiß nicht, ob das das Problem löst, aber dazu sind noch ein paar Einschränkungen notwendig. Wir müssen eben volle Kontrolle über die Firmware Updates auf unserem Hardware Filter haben. Das bedeutet auch, dass nicht einfach der PC ohne unser Zutun die Firmware updaten kann. Das hört sich jetzt ein bisschen trivial an, aber viele Mikrocontroller, gerade die Mittelpreisigen, die haben heutzutage ein Update-Mechanismus, wo man wirklich nur den Controller an USB anschließen muss und dann mit einem einfachen Tool neue Firmware draufflächen kann. Allerdings muss man dazu ein paar Pins auf hoch oder runter schalten, also das geht noch, aber da muss man eben auch aufpassen, dass das nicht in Software möglich ist. Kann man machen, aber das wäre dann blöd. So, das war die Hardware, gebe zur Software. Wir wollen, dass es sicher ist. Also, ich persönlich bin kein Genie, ich kann euch nicht versichern, dass das 100% sicher ist. Deswegen würde ich mich darauf verlassen, dass ein paar andere Leute noch das Auge drauf haben. Aber damit das möglich ist, muss es auch ein Code sein, den man reviewen kann. Das klingt jetzt trivial, aber wir werden später noch zu einem Beispiel kommen, wo das etwas schwieriger ist. Natürlich heißt es, dass der Code erst mal öffentlich einsehbar sein muss. Open Source geht natürlich noch einen Schritt weiter, dass ja auch allgemein wiederverwendbar sein muss, aber zumindest die öffentliche Einsehwirkheit ist hier gegeben. Dann eine konsistente Dokumentation. Hört sich auch trivial an, aber auch da werde ich später ein Beispiel erzählen, wo das nicht ganz so ist. Das bedeutet eben auch, dass alles dokumentiert ist und eben auch die Dokumentation abgedatet wird. Und wie hält man das am besten, wenn man eine sehr kleine Codebasis hat? Je weniger Codebasis, desto schneller ist es reviewed. Je weniger Codebasis desto besser und einfacher ist es, den Überblick zu behalten bei der Dokumentation und desto weniger Fehler können überhaupt drin sein. So, kurz noch ein Blick auf existierende Projekte in die Richtung. Wir müssen das Rad ja nicht neuer finden. Von Phil Foster wurde ein USB-Wide-Blocker vorgestellt. Das Problem an dem Projekt ist, das basiert auf einem V-Dip II von FTDI, also durchaus einer Firma, die bekannt dafür ist, mit USB ganz gut umgehen zu können. Allerdings ist das Ding komplett zu. Also, man hat immer ein Real-Time-OS von FTDI. Man hat immer die USB-Treiber von FTDI und schon Phil Foster musste da selber ein bisschen reverseingenieren, um da überhaupt sein Wide-Blocker reinzukriegen. Also, es würde gehen, aber es würde nicht sicherer machen im Gegenteil. Dann gibt es den Face-Denser von Travis Goodspeed. Sollte bekannt sein der Name, glaube ich, für USB, für Elektronikinteressierte. Das ist, das Device ist eigentlich sehr ähnlich. Also, das wird auch zwischen einem Host, also kann man auch zwischen einem Host und ein Gerät schließen. Das Problem ist, es gibt zwei Möglichkeiten daran zu kommen. Einmal, man schickt Travis fünf Dollar und kriegt das Gerät, muss dann aber SMD löten und noch den Rest kaufen. Zweite Möglichkeit ist, man kauft für 105 Dollar, das im Internet in den USA plus versandt. Beides ist ein bisschen benutzerunfreundlich. Zumal ich am Anfang auf der ersten Folie versprochen habe, dass wir etwa bei 30 Euro bleiben. Dann geht es noch den USB-Boxy von Dominic's Bill. Das ist ein sehr schönes Gerät. Das ist im Prinzip ein Biegelboden-Pleck, also sowas wie ein Raspberry Pi, wo man ein bisschen stärker, also leistungsfähiger. Und er hat das Linux so modifiziert, dass quasi wenn man in einen USB-Port den anderen PC reinsteckt und in den anderen USB-Port das Device, dann funktioniert es wie ein Sniffer. Und man kann den Code auch, man kann den Traffic auch verändern. Das Problem ist natürlich, ein Biegelboden-Pleck ist ein kompletter zweiter Rechner. Ich weiß nicht, wer Lust hat, einen kompletten zweiten Rechner anzuschließen, inklusive Strom, hochzufahren und dann erst seinen USB-Stick an seinen eigentlichen Rechner anzuschließen. Kann man machen, also ist auch sehr gut zum entwickeln, aber eben für den alltäglichen Allsatz nicht gedacht. So, an dieser Stelle sollte die Live-Demo stehen. Allerdings muss ich eben gestehen, dass ich es sich einfach nicht geschafft habe. Und ich werde auch begründen, warum. Wo wir übrigens zu den Design-Prinzipien zurückkommen. Und zwar ist meine Entscheidung für die Hardware viel auf STM. Warum? Weil es von STM wie Sand am Meer Demobords gibt für unter 20 Euro, die schon in der Regel ein USB-Anschluss ausgeführt haben und auch noch einen zweiten drauf haben, so dass man nur noch mit Kabeln rangehen muss und hat den dazu. Das ist das Schöne, also billige USB-Boards. Das nicht so Schöne ist die Library von STM. Ich habe gekämpft, ich habe es versucht, ich habe versagt dabei. Das liegt eben daran, dass leider sich STM nicht an meine Designrichtlinien gehalten hat. Ja, ich weiß auch nicht, warum. Aber es kommt eben dazu, man hat im Prinzip drei Schichten. Man hat einmal den Hardware Abstraction-Layer, der einfach nur die Zahlen, also die Pins, die man schalten muss, in C-Mark groß umwandelt. Dann hat man den Core, der mit den Standardsachen macht, wie eben auf USB-Requests und Start-of-Frame und so was zu reagieren. Und dann hat man noch die Device-Library, die dann wirklich sagt, ich stelle Funktionen zur Verfügung, dass man ein MS-Deutsch-Device oder so was implementieren kann. Von allen drei gibt es verschiedene Versionen, die manchmal zusammenarbeiten, manchmal nicht. Alle müssen konfiguriert werden. Und leider ist es nicht so, dass man einfach nur die Oberste konfigurieren kann und dann die alle unteren macht. Sie macht ein paar unteren, der darf man da nicht eingreifen, aber sie macht nicht alle. Und ein bisschen was muss man noch machen. Allerdings ist nicht so gut dokumentiert, was man noch machen muss. Das ist ein bisschen das Problem. Wo wir gerade bei Dokumentationen sind, ja, ich habe auch erlebt, dass im Prinzip in einer Datei quasi eine halbes Dutzend Funktionen waren, die vom Benutzer, sprich, von mir zu implementieren waren. Und bei allen war genau der gleiche Kommentar, copy and paste, mit genau den gleichen Funktionsparameter, mit genau den gleichen Rückgabeparametern, die dann auch noch falsch waren bei jeder Funktion, aber davon war abgesehen. Und deswegen sage ich, ich bin schuld, dass ich nicht fertig geworden bin, das ist ganz klar. Aber ich sage auch, STM hat mir gezeigt, wie ich es nicht mache. Insofern muss ich euch vertrösten. Falls jemand entweder großer STM-Fan ist und mir da weiterhelfen kann oder einen guten Embedded USB-Stack kennt, würde ich da gerne in Kontakt kommen nach dem Talk. So, sagen wir theoretisch, ich hätte das mein Gerät fertiggestellt. Wie ich schon angedeutet habe, ist die Welt deswegen noch nicht in Ordnung. Wir können es was verhindern, dass USB-Sticks mit fremder Firmware geflecht werden oder dass USB-Sticks sich als Tastatur ausgeben. Aber es gibt noch einige Attacken, die trotzdem möglich sind. Talk2 bedeutet Time of Check versus Time of Usage. Da gab es zum Beispiel ein schönes Beispiel, da gab es einen Samsung Smart TV, der hat wieder ein Firmware-Update erst geprüft. Da musste man einen USB-Stick einstecken, der hat erst ein Hash-Wert gerechnet über das Firmware-Image und dann nochmal extra geladen. Was die Leute natürlich gemacht haben, die haben sich so einen kleinen Rechner geschnappt, den angeschlossen und nach dem ersten Zugriff, also beim ersten Zugriff, wurde auf ein Valides-Image zugegriffen und beim zweiten Zugriff auf ein Invalides, also es war immer noch ein Valides, aber nicht ein signiertes Image. Und so konnten sie ihre Active-Firmware hochladen. Das ist natürlich mit Bad USB perfekt immer noch möglich. Wir haben jemand, der den gesamten Speicher kontrolliert. Wenn also erst die Viren-Software drüber läuft, kann es eine unverdächtige Datei anzeigen. Wenn dann der User die Datei öffnet oder Autobahn die Datei öffnet, kann ein Virus eingespielt werden. Das ist also immer noch möglich. Kommissionelle Schadsoftware ist natürlich auch noch möglich. Wenn ein Trojaner im einfachen Speicher ist, das könnte auf jedem USB-Stick sein. Da kann mein Hardware-Filter nichts machen. Eine neue Variante, die reinkommt, ist Glitching. Ich hatte ja erwähnt, dass ein Use-Case ist, dass wir einen nicht vertrauenswürdigen Host haben. Aber wir kriegen unseren Strom vom Host. Was passiert, wenn der Host während der Überprüfung einfach mal kurz den Strom ein bisschen runterdreht? Kann passieren, dass dann die Überprüfung übersprungen wird und einfach weitergemacht wird? Es ist unwahrscheinlich, dass das jetzt in der freien Wildbahn vorkommt, aber es ist möglich. Wenn das jemand hinkriegt, wäre ich sehr interessiert daran. Und Klassisch Circumvention. Sprich, wir stecken das Ding einfach nicht in unseren Hardware ... Man steckt das Ding nicht in den Hardware-Filter, sondern in einen freien USB-Port. Da kann man natürlich nichts mehr filtern. Mit anderen Worten, die ganze Geschichte eignet sich nur, wenn man selber die ganze Zeit bei der Hardware ist. Für jemanden, der sich heimlich ins Oberraum schleicht, der wird bestimmt nicht an unseren Spezialport das anschließen, sondern an die möglichst freien und gesicherten. So, was bringt die Zukunft? Ich werde erst mal das Gerät fertigstellen, natürlich. Aber die Mikro-Kontrolle so an sich haben, unterstützen sie leider nicht High-Speed, sondern nur Full-Speed. Das wäre ein bisschen langsam, wenn man jetzt ein Film kopieren will. Für die Vortragsfolien würde es wahrscheinlich locker reichen, aber da gibt es ein schönes Gerät von einer intelligenten Firma, namens ECME Systems. Jemand, ein Fan von alten Cartoons hier. Nein? Okay, gut. Insiderwitz. Das ist, der kostet knapp 30 Euro, ist also immer noch locker in unserem Budget. Nein, nicht wirklich locker, aber hat eben High-Speed USB. Natürlich noch nicht 3.0, aber... Mal sehen, was die Zukunft bringt. Ja, wie ich schon angekündigt, wäre ein Open-Source-USB-Stack schön. Was ihr von mir kriegt dafür, ist natürlich ein Review von dem guten Stück, weil ich muss mich ja einmal durcharbeiten. Alternativ könnt ihr selber einschreiben, aber ich würde mich auf den Rest durch die Weises beschränken. Das wäre natürlich nicht so gut. Eine andere Weg zu gehen ist, die Firmware eines USB-Hubs zu modifizieren. Ich weiß nicht, ob ihr das mitgekriegt habt, Karsten Null hatte nochmal ein Update über seinen Vortrag rausgeschickt, wo nicht nur USB-Sticks geprüft werden auf Verwundbarkeit, sondern eben auch andere Devices, wie Hubs, Tastaturen, Mäuse. Und unter anderem ist eben rausgekommen, dass auch der Hub der Firma ViaLabs verwundbar ist. Sprich, man kann einfach Firmware draufflächen, ohne dass da irgendwas signiert wird oder kontrolliert wird. Was natürlich wieder gut für uns wäre, weil wir könnten ja einfach unsere Firmware draufflächen, aber dafür sorgt, dass ihr Nachfolger dann entweder signiert wird oder noch im besten Fall irgendwo ein Schalter umgelegt werden muss am Gerät, bevor das draufgespielt wird. Gut, auch wenn ihr noch nicht alle so optimistisch seid, möchte ich euch noch ein bisschen runterziehen, weil ich habe jetzt nicht nur an dem Gerät gearbeitet, sondern eben auch an einem Port für Bad USB auf Linux, weil wenn ihr euch erinnert, das Psyksen von Codil und Wilson, das war dort net geschrieben, ich glaube C-Sharp und lief nur unter Windows, weil das die Windows-Device-Treiber benutzt hat und so weiter und so fort. Und deswegen habe ich den ganzen Spaß mal nach Linux portiert. Natürlich nicht in C-Sharp in Python, das war ein bisschen einfacher. Die Idee hatte auch jemand anderes, genau die gleiche wirklich, also auch Python für Linux. Welches besser ist, könnt ihr dann entscheiden. Meiner Meinung nach ist, meins ist wirklich ein 1 zu 1-Clone vom Psyksen, sprich volle Funktionsfähigkeit, aber auch das komplett unschöne Interface. Natürlich sowieso nur Kommando-Zeile, aber auch da ist es sehr extravagant. PiBadUSB ist da ein bisschen besser unterstützt, aber nicht das Patchen von existierender Firmware, insofern könnt ihr mal ausprobieren. So, und eine weitere Idee, die mir erst ziemlich am Schluss gekommen ist, deswegen auch nur dieser eine Satz. Die ganze Software, die die USB-Sticks patcht und so weiter, unterstützt in der Regel nur einen bestimmten Chipsatz und dann auch nur eine bestimmte Firmware-Version. Allerdings sollten die Firmware-Version sich ja nicht besonders viel unterscheiden. Es entscheidet sich genug, dass man nicht einfach nach einem String suchen kann und also nach einer Bytefolge suchen kann und dort dann seinen eigenen Code reinschreibt. Das geht nicht. Aber die Bytefolgen sollten sich ja so ähnlich sein, dass man zumindest weiß, wo man dann einhaken kann. Die Idee dabei ist, deswegen Biology, weil Bioinformatiker das Problem auch oft haben, dass man so eine Art kleine DNA-Abschnitte von der bekannten Firmware nimmt. Sprich, man guckt einfach valider Opcode und schmeißt dann die Parameter weg, weil die ändern sich ja. Das ist ja der Unterschied in der Firmware. Und er nimmt eben diese Folge von Opcodes als Muster und sucht die in der unbekannten Firmware. Bei unterschiedlichen Versionen für den gleichen Chip ist es klar, dass man da relativ schnell fündigwerten sollte und dann sein Patchprogramm anpassen kann. Bei unbekannten Chips ist immer das Problem, dass man ja gar nicht weiß, wo sie die Register, wo man hinschreiben soll, wo sie die Interrupts und so weiter. Aber auch da denke ich, dass man da weiterkommen könnte. Aus dem ganz einfachen Grund, solange man bei der gleichen Firma bleibt, werden sie höchstwahrscheinlich nicht von vorn anfangen. Sie werden den gleichen Stack haben. Sie werden den gleichen Compiler haben. Sie werden die gleichen IDE haben. Der gleiche Compiler wird für ähnlichen Code, sprich den gleichen Stack, ähnlichen Bytecode erzeugen. Deswegen denke ich, dass man auch da relativ schnell, eventuell sogar on the fly, Firmware-Version anpassen könnte. Also sein Hack an neue Firmware-Version anpassen könnte. Ist allerdings nur Spekulation, aber das ist das, womit ich eigentlich dann auch die restliche Veranstaltung hier verbringen werde. Deswegen, wer da interessiert ist, oder da Bioinformatiker ist und da schon was hat, Mustervergleich und so weiter, würde ich mich freuen, wenn ihr euch da bei mir meldet. Wir finden uns. Ansonsten war es das mit meinem Vortrag und ich freue mich auf Fragen. Keine Fragen. Gut, dann, also, ja. Aufgrund der Übermerkungen, also wenn man so hier inzwischen Devices inkunstriert, was wenn es bei Lades jetzt, aber wäre es vielleicht gut, wenn man einfach eine Buchse hat, wo wirklich nur Strom drauf liegt, dass wenn sie mit Verbeilkommen, kann ich mal ein Gerät bei dir wagen, dass man dann halt einfach nur Strom liefert und nicht auch die Datenverbindung herstellt. Okay, ich wiederhole nochmal, der Kommentar war, dass, wenn man schon mit so Zwischendewices anfängt, dass man da eigentlich auch gleich ein USB-Port machen kann, wo wirklich nur Strom rauskommt, keine Datenverbindung zum Rechner. Interessante Weise, so weit es gibt es schon, das nennt sich USB-Kondom. Und das macht nichts anderes, als einfach die Stromleitung durchzuführen und die Datenleitung zu kappen. Also die werden einfach nicht verbunden. Allerdings muss man sagen, gerade bei Apple-Geräten fällt man dann oft auf die Nase, weil das eine Datenverbindung zwischen Gerät, also zwischen Ladegerät und Apple-Produkt voraussetzt. Sonst lädt es nicht, zumindest bei den Neueren. Also wenn jemand, jemanden angreifen will, nehmt Apple-Geräte, die können sich A. nicht schützen und B. sind die Leute reich. Weitere Fragen oder Anmerkungen oder Kritikpunkte, also ich lasse mich auch gerne sagen, dass ich inkompetent bin. Ja, bitte. Also die Frage war, dass im Prinzip aus der Richtung böser Stick, guter PC, das Problem eigentlich nur darin besteht, dass wir irgendwie die Tastatur nicht jederzeit einfach akzeptieren sollten. Allgemein Eingabegeräte, Maus genau so, ist ein bisschen schwieriger, aber geht auch. Das Problem daran ist, zum einen, Bad USB kann auch funktionieren, noch während man bootet. Sprich, am Anfang, man kann ja auch mehrere Eingabe-Geräte haben, eben auch mehrere Tastaturen, was weiß ich, Gaming-Tastaturen, und Bad USB kann ja schon am Anfang ins Bios gehen und dort Blödsinn machen, weil es ist ja eine Tastatur. Ja, bitte. Ich muss ja den bösen USB-Stick nicht beim booten dran haben. Also wenn ich einen unvertrauenswürdigen USB-Stick habe, warte ich, bis mein Rechner fertig gebootet ist und stieß ihn dann erst an. Dann habe ich das Problem nicht mehr, dass er ein Bios und was machen könnte. Das ist korrekt, deswegen ist ja Bad USB auch so blöd, weil es kann ja dein eigener USB-Stick sein. Weißt du? Ich würde dann kein USB-Sticks mehr vertrauen, sobald Sie mal irgendwo angeschossen waren. Ja, korrekt. Also dann mein eigener nur vertrauen, solange ich ihn das erste Mal benutzt habe oder überhaupt kein USB-Sticks vertrauen. Korrekt, das Problem ist eben, USB-Sticks sind dazu da, zwischen Rechnern hin und her zu wandern. Sonst wären sie ja eingeborente Festplatten. Also ich sehe den Punkt, dass es Alternativ-Möglichkeiten gibt, aber die verlangen a. sehr viel Disziplin und b. wahrscheinlich auch ein technisches Verständnis von Benutzer her, das vielleicht nicht immer gegeben ist, gerade bei solchen Vortragssituationen. Ich denke jetzt weniger hier, wo eben auch Sicherheitsbewusstsein verhandelt ist, aber zum Beispiel Uni, wo nacheinander 10 Leute Vortrag halten, an den Vortrag-Laptop anstöpseln, ihren USB-Stick, und da kann man jetzt auch nicht sagen, nee, da gehe ich jetzt nicht ran mit meinem USB-Stick, der wird der Prof sagen, na gut, da schreibe ich Ihnen kein Schein aus. Für solche Situationen ist das dann gedacht. Noch eine ganz andere Frage. Gibt es dann dokumentierte Fälle, wo derartige Sachen praktisch ausgenutzt wurden, oder ist das ein rein theoretisches Problem im Moment? Welchen genau meinst du jetzt? Milches USB-Devices, allgemein Bad USB-Mitziellen? Ja, also egal. Der ganze Kram, über den wir gerade reden, wo wirklich jemand damit angegriffen wurde und das in irgendeiner Weise dokumentiert wurde. Also Rapperducky wird regelmäßig bei PEN-Tests eingesetzt, sprich also, wo Firmen sagen, hey, wir wissen nicht, ob wir sicher sind, und wir auftragen einmal jetzt mal einen Angreifer, der so tut, als ob er uns angreift, und dann eben uns sagt, was wir falsch gemacht haben. Da wird es regelmäßig eingesetzt, also das ist dann ein Standardwerkzeug, wie für uns eben ein Notebook. Und auch erfolgreich, also sowohl die Sache, dass man es einfach mal auf dem Parkplatz liegen lässt und dass dann schon irgendjemand finden und einstöpseln wird, also funktioniert nur bei großen Firmen, aber als auch, dass man einfach mal reingeht und sich irgendwie durch irgendeinen Vorwand da den Surferraum zeigen lässt und da reinsteckt. In so eine Geschichte habe ich da mal gehört, dass eben auch eine Mitarbeiterin war, die auch gesagt hat, hey, das ist nicht richtig, was er macht. Und er meintest du nur, ja, rufen Sie jemanden. Sie sollten jemanden rufen. Ich stöpsel hier das ein, warten Sie mal, ich stöpsel es noch da drüben ein und hier. Also die Frau hatte schon das komplett richtige Gespür, aber es waren überhaupt keine Sicherheitsvorkehrungen, also keine Protokolle vorhanden, dass sie gesagt hätte, hey, ich rufe jetzt IT an oder rufe die Security an, aber die hat wieder keine Ahnung von IT. Also es wird, also langer Rede kurzer sind, es wird eingesetzt, aber natürlich werden die Leute, die es wirklich gewinnbringt, einsetzen, nicht sagen, hey, guckt mal, wie ich die Leute verarscht habe mit diesem bekannten Angriff. Das ist schwer, aber ich sage es mal so, wenn wir zu so klust sind, wird es uns irgendwann auf die Füße fallen. Könnte man nicht die Technik von Bad USB auch nutzen, um sich zu schützen? Also gibt es irgendwie Programme, mit denen man quasi nachdem man den USB Stick ausgepackt hat, die Firmen so ändern, dass sie hinterher keine Firmen-Updates mehr akzeptiert und dann nicht mehr anfällig ist für Bad USB? Ja, genau, das gibt es. Das ist von Kotel und Wilson auch mit rausgebracht worden. Das ist im Prinzip einfach, da wird die Firmware gepatched, da wird im Prinzip der Teil rausgepatched, der im Prinzip neue Firmware Befehle akzeptiert. Warte mal, ich weiß gar nicht, ob die wirklich die Firmware rausgepatched haben oder dass man nur in den Modus geht, wo die Firmware akzeptiert wird. Da bin ich mir jetzt im Moment nicht sicher. Aber ja, genau, das gibt es und das kann man eben mit Seixen dann machen. Allerdings ist ja wieder die Einschränkung nur diese Firmware-Version und nur dieser Chip. Aber wenn man so ein Hat, der hat es geht, das gibt es auch. Lässt sich ein Angriff überhaupt verstecken, wenn ich jetzt vor meinem Rechner sitze und so ein USB Stick einstecke und da macht die Tastatur einfach irgendwelche wilden Sachen? Das sehe ich doch. USB Sticks können sehr schnell tippen, sage ich mal so. Also wenn du wirklich die ganze Zeit gebannt auf den Rechner guckst, während du den USB Stick reinsteckst, wirst du wahrscheinlich so ein kurzes Flackern sehen. Aber wenn du sagst, wir mal gucken musst, dass du auch wirklich die Buchse triffst, es ist in dem Moment, wo du wieder hoch guckst, weil der wirklich drin ist, ist es eigentlich schon vorbei. Da hat der USB Stick schon hochgefahren, die negative Firmware ausgeführt und der Schadcode nachgeladen. Vorausgesetzt natürlich Internet, obwohl nein, man kann ja es auch auf dem USB Stick selber speichern, sofern. Also wie gesagt, wenn du weißt, dass es kommt, wirst du es wahrscheinlich sehen. Aber wenn du es nicht weißt, weiß ich nicht, ob du jeden Tag so viel Konzentrationskraft hast, immer auf den, so konzentriert auf den Bildschirm zu schauen, dass du es siehst. Und dass du auch sicher bist, dass es das war und nicht nur kurze Stromschwankungen oder Flackern von der Lampe oder sowas. Also ja, du würdest es sehen, wenn du weißt, wonach du guckst. Aber es ist schwer zu entscheiden, ob es das war, wenn man nicht weiß, dass es es war. Würde mich unter Linux nicht schon ein exotischer Windowmanager schützen, bei dem man einfach irgendwelche abgefahrenen Tastaturkombinationen drücken muss, um überhaupt ein Terminal zu öffnen oder sowas. Ja, das stimmt, das ist die Frage. Ist es auch denn die Frage, wie ... Also mein Wissensnach würde das schützen, weil gerade die Tastaturangriffe darauf ausgelegt sind, dass man irgendwie mit Windows oder Apple und eine Kombination dann irgendwie so eine Kommando-Eingabe hat, wo man irgendein Programm starten kann und davon sich dann über Terminal und so weiter, weiter hangelt. So sind die Standardangriffe. Da würde natürlich ... würde ja nicht nur ein exotischer Windowmanager reichen, sondern wenn man den existierenden Grad unter Linux einfach umkumpfiguriert, dass es eine andere Tastenkombination ist. Klar, aber hat natürlich wie das Problem, wenn man mal vergisst und dann bootet, kann es übers Bios einfach gehen. Das ist da ... und eben gezielte Angriffe, aber ich kann dann nur an das XKCD verweisen, wo der Unterschied zwischen der Vorstellung eines Verschlüsselnens, wo die Pläne dann von den Bösen gescheitert sind und der Realität, wo die Bösen einfach den Vorschlag haben erholen und sind auf ihn solange einschlagen, bis er das Passwort rausrückt, insofern. Wenn ich mich mal anwürde, dass da bei einem gezielten Angriff ähnlich verlaufen, dass im Zweifelsfall einfach der Rechner genommen wird und ja, also das wäre zumindest ein Schutz, aber die Frage ist, wie gesagt, die Vortragssituation, ist es ein Linux-PC? Wird der Prof das mit seinem PC machen lassen? Nein, ist es nicht. Gut. Gäbe es denn die Möglichkeit, USB-Geräte eindeutig wieder zu identifizieren? Also wenn ich zum Beispiel sage, ich habe eine Tastatur, die ist über USB angeschlossen, die möchte ich sozusagen erlauben, dass die als Tastatur sich anmeldet und alles andere, was eine Tastatur sagt, es ist eine Tastatur, möchte ich erstmal bestätigen. Ist sowas denkbar, also gibt es irgendeine Art? Kurze Antwort, nein. Weil, dass USB-Device sagt selber, wer es ist und was es kann. Deswegen kann sich ja an USB-Stick auch als Tastatur ausgeben. Du hast sowas wie ProduktID und WenderID, aber die werden auch, also das sind nur Strings, die in der Firmware stehen. Und die Schwierigkeit würde da nur bestehen, dass im Prinzip der USB-Stick wissen müsste, wie deine eigentliche Tastatur, welche Kombination die hat. Aber da ist auch wieder das Problem, dass die Hersteller von USB-Geräten allgemein die ProduktID und WenderID nicht so einsetzen, wie es eigentlich mal gedacht war. Und dann eben oft hast, dass die gleich ist bei vielen Geräten. Ansonsten würde ich persönlich einfach, probieren einfach mal mit Cherry ProduktID und dann die üblichste Cherry Tastatur und hoffen, dass es klappt. Hast du was wie eine Seriennummer, das gibt es nicht? Nein, da gibt es soweit ich weiß nicht. Und wenn wäre es eben auch nur, dass das USB-Grid selber sagt, weil die Seriennummer es hat und da kann es schwindeln, soviel es möchte. Das ist vielleicht ein bisschen oft-topic, aber es gibt ja diese ganzen Werbesticks, die man nur beschreiben kann. Ist das auch über die Firmware realisiert? Könnte man die noch umflaschen, dass die wieder beschreibbar sind? Werbesticks, die nur beschreibbar sind? Die nur lesbar sind, sorry. Nein, ich muss persönlich sagen, ist mir nicht untergekommen. Ich kenne nur solche, wo die Werbung drauf ist, die man aber auch löschen kann. Aber meine Vermutung wäre, dass die auch nur irgendwelche billigen Sticks nehmen und dann irgendeinen Fleck oder einen Spaß machen. Also, ja, ginge, würde ich denken. Ich weiß nicht, ob du da ein Beispiel hast oder irgendwas. Ich würde an zu Hause rumlegen, ja. Ist nicht beschreibbar. Ich kann die Daten darauf lesen. Ich habe hier ein Video drauf, es hat dem L-Seite drauf, aber halt nicht beschreibbar. Wir treffen uns nachher mal. Okay, ich bring morgen mit. Wäre es ein wirksamer Schutz von jeder Tastatur erstmal zu verlangen, dass sie mit irgendeinem Code bestätigt wird, dass man drei Tasten drückt oder auch mehr? Kommt drauf an, wer festigt, welche Tasten gedrückt werden. Ne, das legt man einfach vorher fest. Ich akzeptiere nur eine Taste. Das ist eine Tastatur, mit der, keine Ahnung, ASD gedrückt wird. Ja, aber wenn jetzt immer, wenn immer ASD als erstes gedrückt werden wird. Wenn den zufälligen Code, der direkt da in dem Moment generiert wird. Aber muss eben vom PC generiert werden. Genau. Ich weiß, das hört sich jetzt trivial an, aber wenn du dieses, dieses, das Vorschlägst herstellern, dann würde ich mal schätzen, zwei von fünf Werden das machen, also wäre meine Vermutung. Ja, es ist nur die Frage, willst du das immer machen, jedes Mal wenn du in der Rechnerstadt bist? Ich weiß, wir machen es sowieso schon immer, weil wir immer Passworte eingeben, aber es wäre im Prinzip noch ein Passwort, wenn auch ein leichtes zu merken ist, weil es im Prinzip gesagt wird. Ja, nur ein Kommentar zu dem Thema. Das existiert bereits, das ist mir ein Passwort, das existiert bereits im Bereich von Blutüf. Wenn man Blutüftastaturen anschließt, dann wird manchmal auch vom Rechner verlangt, dass man da einen bestimmten Code eingibt, und dann wird irgendwas gespeichert, da weiß ich nicht, was. Ich denke, das ist von der Usability her kein so großes Problem da. Ist das dieses Initial Pairing, wo dann im Prinzip der vierstelige Code ausgetauscht wird, oder ist das nochmal eine extra Implementierung, weißt du das? Ich meine, das ist eine extra Implementierung. Ich kenne mich da nicht genau aus, das war wirklich nur von der Userseite, dass der Rechner das verlangt hat. Okay, ist mir jetzt nicht beläufig. Aber ich weiß, dass im Prinzip so ein Code-Austausch am Anfang gibt, und dann ein Pairing. Bin ich jetzt ehrlich gesagt überfragt, ob da dieses Protokoll dann auch in den USB einfach drüber gestübt werden könnte. Auch Blutus hatte ja seine Probleme mit sicherem Pairing. Weiß allerdings nicht, worauf das passierte. Ich habe noch zwei Fragen zu USB. Wäre es möglich, dass ein Bett-USB-Gerät nicht den Rechner, sondern ein anderes USB-Gerät infiziert, ohne bei den Rechner zu gehen? Dann zum Beispiel meine normale Tastatur infiziert und die Tastatur darf dann wieder Tastatur sein und macht man was Böses mit meinem Rechner? Also rein theoretisch nein. Aber rein praktisch heißt das Ding ja Universal Seal Bus. Das heißt, es ist ein Bus, sprich, alle Geräte hören alles, was über den Bus kommt. Außer man hat ein Hub dazwischen, aber davon gehen wir mal jetzt nicht aus. Es wäre wahrscheinlich schwer, das Timing hinzukriegen, um so zu tun, damit ein USB-Gerät zu tun könnte, als wäre es der Host. Aber an sich müsste man damit jemanden reden, der sich mit den gründlichen elektrischen Sachen auskennt. Weil es ist wirklich tatsächlich so, dass erst mal an einem Bus hängt, die Geräte alle Pakete bekommen und dann nur von sich ausschauen und wegschmeißen, wenn es nicht für sie gerichtet ist. Ist es wirklich so, weil dann wäre ja noch ein ganz anderer Angriff denkbar, dass ich dir ein USB-Stick gebe, dir ein Key-Locker enthält? Ja, korrekt. Soweit ich weiß, sind auch viele Key-Locker, sodass man die einfach nur anstöpseln muss. Ich weiß nicht, ob die dann über Windows gehen. Also die muss man nicht zwischen die Tastatur und das Gerät stecken, sondern an den anderen USB-Port am selben PC. Ich bin nicht sicher, ob die dann über Windows gehen und sich da einhängen oder ob die dann direkt über USB mit schnurscheln. Aber ich weiß, dass es solche gibt, die man nicht dazwischenstecken muss, sondern wo man einfach nur irgendwo die reinstecken muss. Gut, danke ich euch. Ich bin heute und morgen noch auf der Convention. Und wenn ihr noch Fragen habt, könnt ihr euch gerne an mich wenden. Ich bin mit Batch markiert. Gut, danke.