Warum USB Geräte immer noch ein großes Risko sind

Bad-USB

Seit der BlackHat Konferenz 2014 hört man immer wieder von sogenannten „Bad-USB“ Angriffen. Dem Forscherteam (Nohl, Krißler und Lell von SRLabs) war es möglich die Firmware von USB-Geräten zu verändern und dadurch z.B. Schadcode einzubetten.

Was BadUSB genau ist, welche Gefahren es birgt und wie man sich davor schützen kann, erfahren Sie in diesem Artikel.

Was ist BadUSB?

Auf der BlackHat Konferenz 2014 stellten die Berliner Forscher Karsten Nohl und Jakob Lell eine Möglichkeit vor, wie die Firmware von USB-Geräten manipuliert werden kann.
Jeder USB-Stick besitzt einen Controller, eine Firmware und einen Speicherbereich. Beim Einbinden eines USB-Sticks an einen Computer sind der Controller und die Firmware jedoch nicht für den Nutzer und das System sichtbar.
Standardmäßig wird dieser automatisch als Laufwerk eingebunden.
Den Sicherheitsexperten gelang es jedoch, die Firmware des USB-Sticks auszulesen und zu manipulieren. Dadurch ist es z.B. möglich, dass der USB-Stick beim Anschließen an einen Computer nicht mehr als Laufwerk sondern als Tastatur erkannt und eingebunden wird.
Anschließend könnten nun Befehle an das Host-System übertragen und automatisiert vom Computer ausgeführt werden. Der Stick könnte z.B. Schadsoftware nachladen und eine Remote Shell öffnen, wodurch der Angreifer völlige Kontrolle über den Computer erlangen kann.

Technische Grundlagen von USB

Um ein USB-Exploit zu verstehen, muss man zunächst verstehen, wie USB-Geräte und speziell USB-Sticks sich mit einem Computer verbinden.
Beim Anschließen eines USB-Sticks werden automatisiert verschiedene Schritte ausgeführt. Zunächst beginnt der Registrierungsprozess, in dem der Bootloader des angeschlossenen Gerätes gestartet wird und eine Registrierungsnachricht an das Hostsystem gesendet wird.
Das Hostsystem antwortet auf diese Registrierungsnachricht und weist dem neuen Gerät eine temporäre Adresse zu, ähnlich wie die Vergabe von IP-Adressen bei einem DHCP-Server.
Im nächsten Schritt teilt die Device dem Hostsystem mit, um was für ein Gerät es sich handelt (z.B. Audiodevice, Videodevice, Speichergerät).

Im Falle eines USB-Sticks, gibt der Stick sich zunächst als HID Gerät zu erkennen. HID (Human Interface Device) bezeichnet eine Geräteklasse des USB-Standards für Computer. Die benötigten Treiber für solche HID Geräte sind standardmäßig bereits im Betriebssystem vorhanden und somit kann der Nutzer direkt mit solchen Geräten interagieren, ohne bestimmte Treiber installieren zu müssen. Typische HID Geräte sind zum Beispiel Tastatur und Maus.
Der Stick wird nach dem Anschließen folglich direkt vom Betriebssystem erkannt und zum Beispiel als Laufwerk eingebunden, ohne dass weitere Rechte oder Aktionen vom Nutzer nötig sind.
Diese Anbindung als Laufwerk findet über Treiber statt, beziehungsweise über eine Folge von Treibern, welche als Treiber-Stack bekannt sind.
Nach dem Anschließen muss der Stick zunächst einer Geräteklasse zugeordnet und identifiziert werden, damit das Hostsystem weiß, ob das Gerät eventuell besondere Treiberelemente benötigt. Welcher Treiber-Stack benötigt wird, ist abhängig von der Geräteklasse des angeschlossenen Device. Ein Datenträger würde zum Beispiel einen Treiber-Stack benötigen, welcher ein Dateisystem übergeben kann, damit der Nutzer auf den Speicherbereich des USB-Sticks zugreifen kann.

Die Firm- und Hardware des USB-Sticks teilt dem Betriebssystem die Geräteklasse, den Enumerator, den Namen, eine eventuell vorhandene Seriennummer und eventuell vorhandene weitere Eigenschaften mit. Eine Kontrolle dieser Informationen erfolgt allerdings nicht.
Die Funktionen eines USB-Sticks werden hauptsächlich durch die auf dem Stick vorhandenen Firmware- und Hardwarekomponenten erbracht. Die Intelligenz des USB-Sticks liegt im sogenannten Controller. Die Aktualisierung eines Controllers kann meistens über einfache Mechanismen durchgeführt werden und benötigt keine weitere Authentisierung, sondern nutzt definierte Befehle.
Die Befehle werden nicht geheim gehalten und daher kann jeder, der die Befehle kennt, den Controller beliebig modifizieren und z.B. zusätzliche Funktionen einrichten.

der Exploit

Die Controller von USB-Sticks gibt es von vielen verschiedenen Herstellern. Der Controller der Firma Phison ist ein sehr häufig integrierter Controller in USB-Sticks. Dieser akzeptiert jedoch eine einfache Reprogrammierung ohne jegliche Sicherheitsmechanismen.
Durch die Umprogrammierung ist es möglich den USB-Stick mit weiteren Funktionen auszustatten.
Viele USB-Geräte übernehmen beim Anschließen mehrere Funktionen, ein Smartphone z.B. übernimmt folgende Funktionen: Strom laden, Massenspeicher, Modem. Das Übernehmen von mehreren Funktionen ist somit keineswegs ein auffälliges Verhalten und wird vom Betriebssystem unbedenklich zugelassen.

Das Hostsystem geht davon aus, dass es den Informationen der angeschlossenen Device vertrauen kann, das Device also ehrlich mitteilt, um was für ein Gerät es sich handelt. Bei einer manipulierten Firmware kann der Angreifer genau festlegen, welche Informationen der Stick an das Hostsystem übermittelt. Es können somit auch einfach weitere Funktionalitäten ergänzt werden.
Besonders beliebt ist die Funktion der zweiten Tastatur. Da bei einer Tastatur die generischen Treiber vom Betriebssystem verwendet werden, könnte die zweite Tastatur direkt vorgefertigte Eingaben am Zielsystem ausführen. Denn die Eingaben über ein HID Gerät werden über die Treiber direkt als „Keystroke-Messages“ an das Windows-Betriebssystem geleitet.

Ein besonders gut vorgefertigter BAD-USB Stick könnte über die Tastatur einen Prozess starten und die Tastatureingabe an diesen Prozess senden. Der Nutzer würde von der Ausführung der Eingaben nichts mitbekommen und das Betriebssystem kann nicht unterscheiden, dass es sich bei der Eingabe nicht um eine Eingabe eines natürlichen Menschen handelt.
Die Eingaben der Tastatur landen in der „Keystroke-Message-Queue“ und könnten somit auch von allen Anwendungen im Klartext ausgelesen werden. Jeder Prozess kann auf alle Tastatureingaben auf dem System zugreifen und dies ermöglicht zum Beispiel eine leichte Programmierung eines Software-Keyloggers.

Was macht BadUSB so gefährlich?

Im Jahr 2011 wurde das erste Mal über USB-Sticks berichtet, die manipuliert werden konnten. Dies war allerdings nur für USB-Sticks mit einer bestimmten Hardware möglich.
Mit der vorgestellten Technik der Manipulation der Firmware könnte nun jeder USB-Stick zu einem BadUSB Stick manipuliert werden, vorausgesetzt er besitzt einen Controller von Phison.
Die besondere Gefahr von Bad-USB liegt jedoch in der Vielfältigkeit der Angriffsmöglichkeiten. Von der Manipulation der Firmware sind nicht nur USB-Sticks betroffen, sondern theoretisch alle Geräte die mittels USB verbunden werden können, somit sind auch Smartphones, Webcams, etc. betroffen.
Es dürfte strenggenommen keinem Device mehr „blind“ vertraut werden. Selbst ein Smartphone, welches nur zum laden des Akkus an einem Rechner angeschlossen wird, könnte mit schädlichem Code infiziert sein. Eine Auflistung der betroffenen Geräte ist hier zu finden: https://opensource.srlabs.de/projects/badusb

Mittlerweile wurden sogar USB-Kabel (z.B. USBNinja) entwickelt, die auf den ersten Blick, wie ein normales Ladekabel für das Handy aussehen. Dahinter verbirgt sich allerdings eine modifizierte Firmware, die sich nach dem Anschließen beim Computer als Eingabeinterface anmeldet. Ein Angreifer könnte dadurch automatisiert eine Schadsoftware auf den Computer aufspielen.
Ein besonders bösartiger Bad-USB könnte beim Anschließen auch überprüfen, ob noch weitere Geräte angeschlossen sind, welche eine Firmware besitzen, die sich modifzieren lässt und dadurch noch weitere Geräte infizieren.

Ein großes Problem stellt zudem auch die Handhabung des Betriebssystems von USB-Geräten dar.
Standardmäßig vertraut der Computer jedem angeschlossenen USB-Gerät, somit gibt es auch keine Möglichkeit die Integrität oder Validität der Daten zu verifizieren, die vom Controller an das Hostsystem gesendet werden.
Da ein Computer keinen Zugriff auf die Firmware und den Controller eines USB-Geräts hat, kann selbst das Antivirensystem nicht die Firmware des USB-Geräts auf schädlichen Code überprüfen.

Welche Angriffsmöglichkeiten gibt es?

Zunächst muss gesagt werden, dass bei der Erstellung eines BadUSB Sticks ein Schadcode für ein bestimmtes Betriebssystem beigefügt wird. Wenn sich auf dem BadUSB nun Schadcode für Windows befindet, würde dieser keinen Schaden beim Anschließen an einem Linux Rechner anrichten. Rein theoretisch wäre es aber auch möglich auf einem BadUSB-Stick schädlichen Code für mehrere Betriebssysteme zu platzieren und je nach vorhandenem Betriebssystem den jeweiligen Code auszuführen.

Der zuerst bekannt gewordene USB-Angriff ist das Keystroke Injection Tool, bekannt als „USB Rubberducky“. Hierfür ist eine spezielle Hardware nötig, die man aber schon für wenige Euro bzw. Dollar im Internet bestellen kann.
Die USB Rubberducky sieht zwar ähnlich wie ein USB-Stick aus, ist aber eher mit einer Tastatur zu vergleichen.
Die Befehle, die auf dem Zielsystem ausgeführt werden sollen, werden vorab einfach in ein Skript geschrieben (mittels Arduino). Sobald der angebliche USB-Stick dann mit dem Rechner verbunden wird, führt sich das Skript automatisch aus.

Seit der Bekanntgabe der möglichen Firmwaremanipulation im Jahr 2014 werden jedoch viele weitere verschiedene Angriffsszenarien entwickelt.
Eine einfache Möglichkeit wäre es den BadUSB-Stick als Keylogger aufzusetzen. Dieser würde dann alle Tastatureingaben auf dem Computer aufzeichnen und dem Angreifer mitteilen.

Eine kreativere Möglichkeit bietet z.B. ein „BadDNS-Stick“. Nachdem er an ein System angeschlossen wird, gibt dieser sich als Ethernet Adapter aus und modifiziert die DNS Einstellungen. In Kombination mit Phishing Seiten könnte ein Angreifer so z.B. an die Bankdaten eines Opfers gelangen.
Das Opfer möchte wie immer eine Überweisung tätigen und loggt sich über einen Browser auf der Internetseite seiner Bank ein. Stattdessen wurde er aber von dem Angreifer auf eine täuschend echte Phishingseite geleitet. Sobald er seine Login-Daten auf dieser Seite eingibt, gelangen diese direkt bei dem Angreifer.

Eine weitere interessante Möglichkeit bietet auch der Einplatinencomputer Raspberry Pi. Hierfür gibt es auf Github ein Framework, welches man sich kostenlos herunterladen kann, um BadUSB-Angriffe aufzusetzen und durchzuführen (P4wnP1).
Dieses Framework bietet sehr flexible Einstellungen, mit denen man sehr einfach eigene Payloads erstellen kann und die BadUSB-Angriffe genau an seine Bedürfnisse anpassen kann.

Mittlerweile gibt es auch schon fertige BadUSB-Sticks, welche man kostenpflichtig erwerben kann.
Eines der bekanntesten ist BashBunny von Hak5. Dieses bietet eine sehr einfache und dennoch flexible Konfiguration und kann auf alle gängige Betriebssysteme angepasst werden.

Wie kann man sich vor BadUSB schützen?

Die Lösung der Zukunft gegen BadUSB Angriffe wäre definitiv die Zertifizierung der Firmware. Das bedeutet, dass jede Firmware von den Herstellern mit einem Zertifikat versehen wird. Ein Computer würde ein USB-Gerät nur noch einbinden, wenn die Firmware auch ein gültiges Zertifikat besitzt. Wenn ein Angreifer die Firmware nun manipulieren würde, erlischt das Zertifikat und der Computer würde das USB-Gerät nicht mehr einbinden.

Zur Zeit gibt es aber auch schon Möglichkeiten sich anders gegen BadUSB Attacken abzusichern.
Für Firmen ist es besonders wichtig, vor allem Mitarbeiter über diese Angriffsart zu informieren und bezüglich fremder Geräte zu sensibilisieren. Allerdings reicht dies alleine nicht aus. Technische Maßnahmen sollten neben den organisatorischen ebenso etabliert werden. Denn es bringt nichts, viel Geld in Firewalls und andere Sicherheitstechniken zu investieren, wenn ein Mitarbeiter ein nicht bekanntes Device am Computer anschließt und den schadhaften Code direkt im Netzwerk platziert.

Die Computersysteme sollten zusätzlich gesichert werden.
Windows bietet von Haus aus Möglichkeiten für die Kontrolle von Wechselmedien. Administratoren können mittels Gruppenrichtlinien Whitelists für USB-Geräte anlegen.
Zusätzlich gibt es einige Softwares, die Regeleditoren als Schutzmaßnahmen verwenden (z.B. Eset). Hierfür wird vorher definiert, wie das Computersystem auf die Verbindung mit externen Datenspeichern reagieren soll.
Speziell für Firmen bieten zum Beispiel die Produkte von EgoSecure, Drivelock SE deutlich mehr Möglichkeiten sich vor BadUSB-Angriffen zu schützen. Zusätzlich werden auch die gerade in Unternehmen wichtigen Probleme der Verwaltbarkeit gelöst.

So können USB-Geräte und auch Geräteklassen mittels White- und Blacklisting gesperrt werden. Zusätzlich wird auch das Netzwerk-Bridgeing verhindert, wodurch auch Angriffe wie BadDNS verhindert werden können. Viele BadUSB-Sticks geben dem Zielsystem vor eine Tastatur zu sein. EgoSecure unterbindet jedoch die unberechtigte Nutzung einer zweiten Tastatur. Damit dennoch die Verwendung von externen Tastaturen möglich ist, können Administratoren zusätzlich Whitelists anlegen und verwalten.

Fazit:

BadUSB ist eine Angriffsart, die keinesfalls unterschätzt werden sollte und welche in der Zukunft immer häufiger Anwendung finden wird. Vor allem Firmen sollten sich vor dieser Angriffsart absichern, da ein einzelner BadUSB-Stick ein komplettes Netzwerk infizieren und erheblichen Schaden anrichten könnte. Besonders bei Firmen, deren Netzwerke von außen besonders gut gesichert sind, werden USB-Attacken gerne verwendet, um direkten Zugriff im Netzwerk zu erhalten. Aber auch Privatpersonen sollten sich über die Gefahren des BadUSBs im Klaren sein und Sicherheitsmaßnahmen einrichten, um sich vor Angriffen solcher Art abzusichern.