Zum Hauptinhalt Zur Navigation

Rubber Ducky: Vom Hacken und Absichern der USB-Ports

BadUSB-Sticks geben sich als Tastatur aus und hacken im Vorbeigehen Rechner. Mit der richtigen Software können sie entschärft werden.
/ Moritz Tremmel
36 Kommentare News folgen (öffnet im neuen Fenster)
Das Bash Bunny im Einsatz (Bild: Hak5)
Das Bash Bunny im Einsatz Bild: Hak5

Ihre Namen lauten Bash Bunny, Rubber Ducky oder Malduino. Für Menschen sehen sie aus wie handelsübliche USB-Sticks, für Computer sind sie jedoch Tastaturen. Werden sie in einen Rechner eingesteckt, beginnen sie zuvor festgelegte Befehle einzutippen. Mit solchen BadUSB-Sticks können Admin-Aufgaben automatisiert oder Rechner in wenigen Sekunden mit Schadsoftware übernommen werden.

Letztlich stehen dem Nutzer damit alle Möglichkeiten offen, die ihm eine angeschlossene Tastatur bietet – mit rasender Tippgeschwindigkeit. Keystroke Injection werden solche Angriffe genannt. Wir wollten wissen, wie einfach sie sich durchführen lassen und wie sich Nutzer, Firmen und Admins davor schützen können.

Was können Rubber Ducky, Bash Bunny und Malduino?

Dazu haben wir selbst Hacking-Angriffe gestartet. Als Testgeräte dienten uns Bash Bunny und Malduino Elite. Bei Bash Bunny handelt es sich um einen Mini-Linux-Rechner im USB-Stick-Format mit einem Quad-Core-ARM-Prozessor, 512 MByte Arbeitsspeicher sowie einer 8 GByte SSD. Der Mini-Rechner kann sich als Massenspeicher, Tastatur oder Netzwerkadapter ausgeben und so verschiedene Daten abfangen.

Das Gerät stammt wie der bekanntere Rubber Ducky(öffnet im neuen Fenster) , dessen Name oft allgemein für die Geräte-Gattung verwendet wird, vom Pentest-Gerätehersteller Hak5, baut jedoch funktional auf diesem auf. Beispielsweise lassen sich mit einem Schieberegler zwischen zwei hinterlegten Angriffen und dem Arming Mode, mit dem der Stick bestückt und administriert werden kann, wählen. Bash Bunny(öffnet im neuen Fenster) kann für rund 100 US-Dollar direkt beim US-Hersteller bestellt werden.

Unser zweites Testgerät – der Malduino Elite – stammt vom britischen Hacking-Geräte-Hersteller Maltronics, der auch Wi-Fi-Deauther vertreibt, mit denen sich beispielsweise Wi-Fi-Überwachungskameras ausknipsen lassen. Einen solchen Angriff konnte Golem.de bereits voriges Jahr mit einem unbemerkten Diebstahl einer Winkekatze demonstrieren .

Die Angriffs- oder Adminscripte gelangen über eine Micro-SD-Karte auf den Malduino Elite. Über einen Schieberegler auf dem mantellosen USB-Stick lassen sich 16 unterschiedliche Scripte anwählen. Mit rund 30 Euro ist der arduinobasierte Malduino Elite deutlich günstiger als das Bash Bunny und kann direkt beim Hersteller bestellt werden(öffnet im neuen Fenster) .

Fast jedes USB-Gerät kann böse sein

Neben den beiden getesteten Geräten, die dediziert auf den Einsatz als BadUSB-Sticks ausgelegt sind, lassen sich auch viele herkömmliche Geräte für BadUSB verwenden. Dazu müssen Angreifer die Firmware des USB-Gerätes so manipulieren, dass sich ein USB-Stick, eine Webcam, ein USB-Hub oder eine Maus kurzzeitig oder dauerhaft als Tastatur ausgeben und munter drauf lostippen können.

The Bash Bunny (Herstellervideo)
The Bash Bunny (Herstellervideo) (01:24)

Dass es sich dabei nicht nur um eine theoretische Gefahr handelt, zeigte der Sicherheitsforscher Karsten Nohl bereits vor über fünf Jahren : Viele USB-Controller verfügen über einen Flashspeicher und sind obendrein programmierbar. Nohl zufolge ist es für jemanden mit Kenntnissen in der Programmierung von Mikrocontrollern und der USB-Protokolle vergleichsweise einfach, beispielsweise eine Maus zu übernehmen.

Besonders perfide: Ein fremder Rechner kann ein USB-Gerät, etwa einen Stick, vom Nutzer unbemerkt umprogrammieren und so in einen Schad-Stick verwandeln. Mit dem Malduino oder dem Bash Bunny kann sich ein Angreifer diesen Aufwand jedoch sparen und direkt in den Angriffsmodus wechseln. Wir haben mit den beiden BadUSB-Sticks Windows- und Linux-Rechner angegriffen.

BadUSB-Angriffe auf Windows, Linux und MacOS

Während der Malduino Elite erst noch mit der Arduino IDE eingerichtet werden(öffnet im neuen Fenster) muss, ist Bash Bunny sofort einsatzbereit. Wird der Stick im Arming Mode in einen Rechner gesteckt, meldet er sich nach kurzem Hochfahren als Massenspeicher mit rund 2 GByte freiem Speicherplatz am System. Dort können wir zwei Angriff-Templates ablegen, die je nach Position des Hardware-Schalters aufgerufen werden.

Beim Malduino werden die Templates auf einer Micro-SD-Karte gespeichert und für die vier kleinen Schalter durchnummeriert: Bei 1111 sind alle Schalter auf On , bei 1110 ist der letzte Schalter auf Off .

Wir hinterlegen ein einfaches Test-Script auf dem Malduino und stecken ihn in einen Windows-10-Rechner. Innerhalb kürzester Zeit startet der Stick den Chrome-Browser und öffnet Golem.de.

        # Windows DELAY 1000 GUI r DELAY 1000 STRING chrome.exe golem.de ENTER

Damit unser Stick nicht schneller als das Betriebssystem ist, fügen wir immer wieder kurze Wartezeiten (Delay) von einer Sekunde hinzu. Analog zu dem Script für Windows erstellen wir auch eines für Linux. Hier öffnen wir mit ALT + F2 den Firefox und anschließend ebenfalls Golem.de. Ähnlich funktioniert der Angriff auch mit MacOS, was wir mangels Apple-Geräten im Homeoffice jedoch nicht getestet haben.

        # Linux DELAY 1000 ALT F2 DELAY 1000 STRING firefox golem.de ENTER

Die Scriptsprache des Malduino basiert auf der des Rubber Ducky, welche wiederum auch mit dem Bash Bunny verwendet werden kann und Ducky Script(öffnet im neuen Fenster) genannt wird. Letztlich kann mit ihr auf triviale Weise alles erledigt werden, was man auch mit einer Tastatur am System eintippen könnte – nur automatisiert und schneller.

MalDuino – BadUSB (Herstellervideo)
MalDuino – BadUSB (Herstellervideo) (02:21)

Im Internet finden sich viele vorgefertigte Scripte(öffnet im neuen Fenster) . Sie reichen von Proof-of-Concepts, über Troll-Scripte, mit denen Computernutzer in den Wahnsinn getrieben werden können, bis hin zu komplexen Hacking-Aufgaben; und schließlich auch bis zum Download eines Fake-Lockscreens(öffnet im neuen Fenster) , der den Nutzer dazu auffordert, sein Passwort einzugeben, und dieses anschließend an den Server des Angreifers sendet.

Noch gefährlicher mit Social Engineering

Das Bash Bunny bietet Angreifern noch mehr Möglichkeiten. Neben einfachen Ducky-Scripten können auch Dateien auf den internen Speicher kopiert werden; die LED kann je nach Angriffsstadium in einer anderen Farbe leuchten, so dass ein Angreifer sehen kann, wenn der Angriff abgeschlossen ist. Zudem kann sich das Bash Bunny als Netzwerkgerät ausgeben und den Netzwerkverkehr eines Rechners abfangen oder umleiten.

Für die Durchführung der Angriffe sind etliche Szenarien denkbar: von dem Angreifer, der den Stick selbst in einen unbeaufsichtigten PC steckt, über auf dem Parkplatz liegengelassene Sticks, die Mitarbeiter aus Neugier selbst in ihren Rechner stecken, bis hin zu ausgefeilten Social-Engineering-Angriffen , bei denen der Angreifer sein Opfer unter einem Vorwand dazu bringt, den Stick einzustecken.

Um sich vor Schadsoftware auf USB-Sticks zu schützen, sperren Admins meist die USB-Ports – allerdings nur für Massenspeicher und nicht für Tastaturen. Entsprechend greifen die klassischen Mitigationsmaßnahmen gegen BadUSB zu kurz. Solange sich USB-Tastaturen anschließen lassen, können Hacker Angriffe durchführen. Doch wie schützt man sich vor USB-Sticks, die sich als Tastatur ausgeben? Wir haben uns verschiedene Software-Lösungen unter Linux und Windows angesehen.

BadUSB-Angriffe verhindern

BadUSB-Angriffe sind mit dem Bash Bunny oder dem Malduino einfach umzusetzen, das macht sie besonders perfide. Einen Schutz sehen die meisten Betriebssysteme von Hause aus nicht vor, doch es gibt verschiedene Tools, die die Angriffe zu unterbinden versuchen.

Die Idee ist dabei meist die gleiche: Wird eine neue USB-Tastatur oder ein neues USB-Gerät angeschlossen, wird es blockiert, bis der Nutzer das Gerät erlaubt. Dabei besteht allerdings die Gefahr, dass sich der Nutzer selbst aussperrt, wenn er seine Tastatur beschädigt oder verbietet.

Nur das Google-Betriebssystem Chrome OS hat bereits einen BadUSB-Schutz integriert, der über die Systemeinstellungen aktiviert werden kann. Für die Schutzfunktion setzt Google auf das bereits seit einigen Jahren in allen gängigen Linux-Distributionen verfügbare Tool USBGuard(öffnet im neuen Fenster) und unterstützt seit kurzem(öffnet im neuen Fenster) gemeinsam mit dem Linux-Distributor Red Hat dessen Entwicklung.

Gnome entwickelt USB-Schutz

Auch die Desktop-Umgebung Gnome, die von den Linux-Distributionen Ubuntu und Fedora standardmäßig eingesetzt wird, arbeitet an einem Schutz vor bösartigen USB-Geräten. Dieser soll in der kommenden Gnome-Version 3.38 verfügbar sein, kann aber bereits jetzt getestet werden. Auch die Gnome-Implementierung greift auf die Software USBGuard zurück, die entsprechend installiert sein muss. Das erledigen wir in der aktuellen Ubuntu-Version 20.04 und aktivieren Gnomes USB-Schutz mit folgendem Kommandozeilenbefehl:

        gsettings set org.gnome.desktop.privacy usb-protection true

Mit "false" statt "true" lässt sich der Schutz wieder deaktivieren. In Zukunft soll die Option in den Systemeinstellungen zu finden sein.

Den Schutz gibt es in zwei Modi: Im "On Lockscreen" -Modus werden neue USB-Geräte grundsätzlich erlaubt, nur wenn der Rechner gesperrt ist, werden sie blockiert. Das gilt jedoch nicht für Tastaturen, die auch im Sperrbildschirm nicht blockiert werden. Stecken wir Malduino oder Bash Bunny in den gesperrten Rechner und lassen ihn unseren Angriff alle paar Minuten ausführen, hacken wir den Rechner, wenn der Nutzer ihn wieder entsperrt hat. Ist der Rechner nicht gesperrt, können wir ihn ohnehin angreifen.

"On Lockscreen" ist die Standardeinstellung. Alternativ können die Nutzer "Always" aktivieren. Wie der Name nahelegt, werden alle neuen USB-Geräte blockiert, ob der Rechner gesperrt ist oder nicht. Wird eine Tastatur angeschlossen, soll der Rechner automatisch gesperrt werden und der Nutzer muss sich neu anmelden, um das neue Gerät zu autorisieren. Diesen Modus sehen die Gnome-Entwickler derzeit noch als experimentell an; ein Bug verhindert, dass wir ihn unter Ubuntu 20.04 testen können. Allerdings sollen auch in diesem Modus Tastaturen im Sperrbildschirm erlaubt werden, damit sich der Nutzer nicht aussperren kann – entsprechend funktioniert unser Angriff von oben weiterhin. Hier sollte Gnome nachbessern und den Nutzer erlaubte Tastaturen speichern oder mit einem Code autorisieren lassen.

Gnomes USB-Schutz hilft bisher weniger gegen Tastaturen als gegen gefälschte Netzwerkkarten oder USB-Sticks mit Schadcode. Ziel ist es, den Nutzer möglichst wenig mit der Sicherheitsfunktion zu belästigen, aber dennoch einen Basisschutz zu bieten. Ein Problem dabei ist jedoch, dass USBGuard alle bei der Installation angeschlossenen Geräte erlaubt, später hinzugekommene Geräte beim Start des Betriebssystems jedoch verbietet. Ein neuer USB-Stick oder eine neue Tastatur, die bereits beim Bootvorgang eingesteckt war, kann dann auch von Gnome nicht mehr verwendet werden. Der Gnome-Entwickler Tobias Mueller empfiehlt(öffnet im neuen Fenster) daher, mit einer USBGuard-Option alle bereits beim Start des Rechners eingesteckten USB-Geräte standardmäßig zu erlauben. Dafür muss die Option PresentDevicePolicy von apply-policy auf allow abgeändert werden.

        sudo nano /etc/usbguard/usbguard-daemon.conf [...] PresentDevicePolicy=allow [...]

Mit USBGuard die USB-Geräte verwalten

Alternativ zu der Gnome-Implementierung kann auch das Kommandozeilentool USBGuard selbst verwendet werden. Das Tool ist nicht besonders kompliziert zu bedienen, birgt aber die Gefahr, einen Rechner komplett unbenutzbar zu machen, wenn man beim Einrichten nicht aufpasst.

Unter Ubuntu 20.04 ist der USBGuard direkt nach der Installation aktiv und hat bereits alle während der Installation angeschlossenen USB-Geräte erlaubt. Die angeschlossenen Geräte und ihren Status (erlaubt/blockiert) kann sich der Nutzer mit folgendem Befehl anzeigen lassen. Mit der Option -b lassen sich nur die blockierten Geräte anzeigen.

        sudo usbguard list-devices

Den angezeigten Gerätesignaturen wird eine Nummer vorangestellt. Über diese können sie identifiziert und erlaubt werden:

        sudo usbguard allow-device [nummer]

Mit der Option --permanent oder alternativ -p kann ein Gerät nicht nur für die Session, sondern dauerhaft erlaubt werden.

Mit diesen beiden Basisbefehlen lässt sich die Software schon weitestgehend steuern. Es empfiehlt sich, bereits zu Beginn eine weitere Tastatur zu erlauben, damit der Nutzer nicht auf Gedeih und Verderb seiner Tastatur ausgeliefert ist. Detailliertere Anleitungen zu USBGuard gibt es im Privacy Handbuch(öffnet im neuen Fenster) und bei Red Hat(öffnet im neuen Fenster) .

USBGuard – gewöhnungsbedürftig, aber sicher!

Mit USBGuard lassen sich zuverlässig alle BadUSB-Angriffe blockieren, da die Geräte erst einzeln erlaubt werden müssen. So werden nicht nur unsere Testgeräte oder Tastaturen blockiert, sondern auch alle anderen schädlichen Geräte. Denn das Bash Bunny kann sich zum Beispiel auch als Netzwerkkarte ausgeben. Auch ein erlaubter USB-Stick, der per BadUSB zur Tastatur wird, ändert dadurch seine Signatur und wird blockiert.

Einen Hinweis auf die blockierten Geräte bekommen wir jedoch nur nach einer Abfrage per Kommandozeile – im Alltag vergessen wir anfangs immer wieder, dass der Schutz aktiv ist und wundern uns, warum die neu eingesteckten USB-Geräte nicht funktionieren. Das vergeht aber mit der Zeit. Sind die häufig genutzten Geräte permanent erlaubt, muss kaum noch mit der Software interagiert werden.

Einen anderen Ansatz verfolgt ein kürzlich von Google veröffentlichtes Tool(öffnet im neuen Fenster) , das Tastaturen ab einer bestimmten Tippgeschwindigkeit blockiert. So lassen sich die meisten automatisierten BadUSB-Angriffe blockieren. Da sich jedoch problemlos auch Scripte oder Programme schreiben lassen, die langsam tippen, bietet der Ansatz keinen hundertprozentigen Schutz.

Alle oben vorgestellten Programme haben übrigens eine Gemeinsamkeit: Sie funktionieren nicht unter Windows. Wir haben uns deswegen zudem kostenlose und teure BadUSB-Schutzprogramme unter Windows angesehen.

BadbUSB-Schutz für Windows von G Data und Kaspersky

Unter Windows können sich Anwender mit dem kostenlosen Tool USB Keyboard Guard(öffnet im neuen Fenster) von der Sicherheitsfirma G Data vor BadUSB-Angriffen schützen. Es kann auf der Hersteller-Website mit einem Klick auf "Download anfordern" heruntergeladen werden. Die etwas verwirrende Abfrage des Namens und der E-Mail-Adresse über dem Button können einfach ignoriert werden.

Nach der Installation und einem Neustart ist das Tool aktiv und fragt bei jeder unbekannten Tastatur mit einem Pop-up-Fenster nach, ob diese zugelassen oder blockiert werden soll. Soll sie zugelassen werden, muss der Nutzer zudem einen vierstelligen Code angeben.

Unsere Zweit-Tastatur erkennt der USB Keyboard Guard zuverlässig und blockiert sie bereits bei einem Login-Versuch. Sollte die Tastatur kaputtgehen, ist ein Login weiterhin über die Bildschirmtastatur, die per Maus oder Touch bedient werden kann, oder über eine weitere, bereits zuvor erlaubte Tastatur möglich.

Wir testen das Tool von G Data mit unseren Angriffen: Malduino und Bash Bunny werden zuverlässig erkannt und blockiert. Der BadUSB-Schutz ist laut G Data auch in den Kaufversionen der hauseigenen Sicherheitssoftware enthalten – sowohl in der privaten als auch in der Business-Lösung.

Kaspersky bietet BadUSB-Schutz nur für Unternehmen

Ausschließlich an Firmen richtet sich der BadUSB-Schutz von Kaspersky, der sich in Kaspersky Endpoint Security for Business (KES) aktivieren lässt. Die Software lässt sich auf allen Clients im Firmennetzwerk installieren und kann zentral über einen Server (Kaspersky Security Center) gesteuert werden. Die Software lässt sich aber auch einzeln auf einem Rechner installieren, das BadUSB-Modul wird jedoch nicht standardmäßig mitinstalliert. Für unseren Test wählen wir es aus und aktivieren die Software mit einer Testlizenz.

Tastaturen und BadUSB-Sticks werden zuverlässig erkannt. Um sie zu aktivieren, müssen wir wie bei G Data einen vierstelligen Code eingeben. Die Tastaturen können dann ebenfalls dauerhaft verwendet werden. Kaspersky bietet zudem die Möglichkeit, auch die Eingaben via Bildschirmtastatur zu sperren. Wird die Option aktiviert, sollte der Nutzer auf jeden Fall eine zweite Tastatur hinterlegen.

Kasperskys Endpoint Security for Business kann nicht einzeln, sondern nur in einem Software-Gesamtpaket erstanden werden. Das günstigste Paket Select(öffnet im neuen Fenster) enthält unter anderem die Serversoftware, mit der die Einstellungen zentral verwaltet werden können. Es kostet direkt beim Anbieter 325 Euro im Jahr für fünf Clients. In der Sicherheitssoftware für Privatanwender ist der BadUSB-Schutz laut Kaspersky nicht enthalten.

Fazit

Die Angriffe mit Malduino, Bash Bunny oder Rubber Ducky sind geradezu gruselig einfach durchzuführen. Einfache Scripte sind in kürzester Zeit geschrieben, neben dem Öffnen von Golem.de kann so auch Schadsoftware heruntergeladen und ausgeführt werden. Auch aufwendigere Angriffsszenarien sind problemlos umsetzbar – und mit etwas mehr Geduld und Erfahrung klappt dies auch mit herkömmlichen USB-Geräten – die sogar vom potenziellen Opfer stammen und an einem PC unbemerkt umprogrammiert werden können.

Dass die Gefahr durchaus real und vielfältig ist, konnten wir in unseren Tests zeigen. Neben dem kompletten Verzicht auf USB-Geräte und -Ports, der nur in extremen Szenarien umsetzbar sein dürfte, hilft nur ein Schutz über Sicherheitssoftware, die mindestens USB-Tastaturen blockiert und per Whitelist erlaubt. Dazu kommen USB-Geräte, die mit signierter Firmware arbeiten und so nicht angreifbar sind. Die Geräte sind allerdings selten und teuer.

Insgesamt überzeugt uns der Ansatz des USBGuards aus der Sicherheitsperspektive am meisten. Solange der Nutzer selbst keine schädlichen USB-Geräte zulässt, ist er umfassend vor BadUSB-Angriffen geschützt. Noch nicht ganz ausgereift wirkt der von Gnome implementierte Schutz, der sich jedoch noch in der Entwicklung befindet. Den Ansatz, den Schutz einfach zu halten und direkt ins Betriebssystem zu integrieren, halten wir jedenfalls für am vielversprechendsten.

Auch unter Windows überzeugt uns insbesondere der kostenlose USB Keyboard Guard von G Data. Dieser schützt zuverlässig vor Schadtastaturen. Gleiches gilt für Kasperskys Endpoint Security, die jedoch kostenpflichtig ist und sich ausschließlich an Unternehmen richtet.

Insbesondere USBGuard und die Lösung von Kaspersky sind es jedoch nicht ungefährlich. Denn es besteht das Risiko, sich komplett aus dem eigenen Rechner auszusperren, wenn beispielsweise nur eine Tastatur erlaubt wurde und diese kaputtgegangen ist. Dann ist der Rechner zwar nach wie vor sicher vor BadUSB-Angriffen – aber eben auch vor dem Nutzer selbst. Dennoch halten wir den Schutz insbesondere bei gefährdeten Personen oder im Unternehmensspektrum für zentral.


Relevante Themen