Tobias Scheible Cyber Security & IT-Forensik Dozent
USB Rubber Ducky - BadUSB Gerät

Rubber Ducky – BadUSB Klassiker

Der Rubber Ducky, ein BadUSB-Tool des Anbieters Hak5, sieht aus wie ein gewöhnlicher USB-Stick. Im Inneren befindet sich aber eine spezielle Hardware. Durch die Verwendung des sehr einfachen Ducky Scripts hat diese Hacking Hardware eine große Verbreitung gefunden und den BadUSB-Angriff populär gemacht.

Montag, 30. September 2019
0 Kommentare

Der Rubber Ducky von Hak5 verwendet einen Microcontroller, der als virtuelle Tastatur fungieren kann. Somit kann alles mit ihm gemacht werden, was auch mit einer Tastatur gemacht werden kann. Allerdings deutlich schneller, als ein Mensch tippen kann, es lassen sich mehr als 1000 Wörtern pro Minute realisieren. Er wurde ursprünglich als Tool zur Automatisierung von Administrationsaufgaben entwickelt. Mittlerweile wird er aber häufig für Social Engineering Tests eingesetzt.

Hacking Tool Rubber Ducky
USB Rubber Ducky als BadUSB-Gerät (Ducky Scripts)
Hacking Hardware Rubber Ducky USB Rubber Ducky als BadUSB-Gerät

Der BadUSB-Stick besitzt ein unauffälliges Gehäuse, welches zum Beispiel den USB-Sticks entspricht, die typischerweise auf Messen verteilt werden. Im Inneren verfügt er über eine 60 MHz 32-Bit AT32UC3B1256 CPU mit einem 256K Speicher, eine High Speed USB 2.0-Schnittstelle, Micro SD-Kartenleser, Mikrotaster, eine mehrfarbige LED und einen Standard USB Typ A-Anschluss.

Aufbau des Sticks

Öffnen des Sticks
Hacking Hardware Rubber Ducky
Geöffneter USB Rubber Ducky von Hak5
Hak5 USB Rubber Ducky Geöffneter USB Rubber Ducky

Um den Stick zu konfigurieren, muss er geöffnet werden. Dazu muss als Erstes der Metallbügel entfernt werden. Dieser wird einfach etwas nach außen gebogen und kann dann abgezogen werden. Anschließend muss das schwarze Gehäuse geöffnet werden. Dazu kann in die Öffnung gegenüber der USB-Schnittstelle ein spitzer Gegenstand eingebracht werden und so die beiden Hälften des Gehäuses auseinander hebeln. Durch das Öffnen des Gehäuses wird das auf der Platine angebrachte Lesegerät für eine Micro SD-Speicherkarte sichtbar. Um das BadUSB-Gerät zu programmieren, muss dieses entnommen werden. Auf der einen Seite ist die CPU sichtbar und auf der anderen Seite die LED, der Taster und das Lesegerät.

LED

Mit der LED wird der Status des Rubber Ducky angezeigt, sie ist nur bei geöffnetem Gehäuse sichtbar. Die LED blinkt grün, wenn der Stick aktiv ist und ein Angriff durchgeführt wird, also Tastatureingaben vorgenommen werden. Die LED leuchtet dauerhaft rot, wenn ein Fehler vorliegt. Zum Beispiel, wenn die Micro SD-Karte nicht gelesen werden kann oder die Angriffsdatei falsch kodiert wurde oder sich nicht am richtigen Speicherplatz befindet.

Taster

Der Taster ist ebenfalls nur bei geöffnetem Gehäuse zugänglich und wird nur für die Entwicklung benötigt. Er wird verwendet, um entweder den Angriff erneut auszuführen oder um den Bootloader zu starten, um die Firmware des Ruber Ducky zu aktualisieren.

Lesegerät

Der Micro SD-Speicherkartenleser unterstützt FAT-formatierte Karten bis zu 2 GB. Auf der Karte befindet sich die Datei mit dem vorbereiteten Angriff. Dies hat den Vorteil, dass der Stick selbst nicht programmiert werden muss, sondern die Arbeit bequem am Rechner erfolgt.

Funktionsweise

Ducky Script

Die Scriptsprache, mit der sich die Tastenbefehle ausführen lassen, heißt Ducky Script. Durch die einfache Schreibweise ist die Einstiegshürde sehr niedrig und innerhalb von kürzester Zeit können die ersten Ergebnisse erzielt werden. Ducky Scripts können in jedem Texteditor wie z.B. Notepad unter Windows, Textedit auf Mac, Vim unter Linux geschrieben werden. Ducky Script-Dateien müssen dem Standard-ASCII Zeichensatz entsprechen und dürfen keine Unicodezeichen enthalten. Das Script wird anschließend umgewandelt und auf einer Micro-SD Karte im .bin Format gespeichert.

Online-Tools

Die einfachste Methode ist die Verwendung eines Online-Tools für die Generierung der .bin-Datei. Das Duck Toolkit hat sich als das schnellste und robusteste Tool etabliert. Damit kann die Umwandlung unkompliziert erfolgen und eine Umkehrfunktion ist ebenfalls vorhanden. Zusätzlich gibt es einen Generator mit vorgefertigten Befehlsfolgen.

Programmierung

Die Programmierung des Rubber Ducky bzw. das Schreiben des Ducky Scripts ist sehr einfach. Es hat sich zu einem inoffiziellen Standard entwickelt, sodass auch viele andere Hardware-Tools mit Ducky Script umgehen können. Oder es gibt zumindest einen Konverter, um Ducky Scripts für die Zielplattform zu übersetzen. Alle möglichen Tastatureingaben können im offiziellen Wiki nachgelesen werden.

Die Entwicklung eines erfolgreichen Payloads ist ein Prozess mit kontinuierlichem Recherchieren, Schreiben, Kodieren, Testen und Optimieren. Es beginnt damit, dass die Tastenkürzel für viele Operationen nicht bekannt sind, da die Bedienung eines Rechners typischerweise mit der Maus stattfindet. Daher müssen diese recherchiert werden und häufig gibt es viele Wege, um ein Ziel zu erreichen. Hierbei gilt es, den effektivsten Weg zu finden, um mit wenig Befehlen schnell ans Ziel zu kommen.

Beispiel

Das nachfolgende Ducky Script Beispiel zeigt eine einfache Anwendung. In der ersten Zeile befindet sich mit dem Befehl REM ein Kommentar. Darunter erfolgt mit der Anweisung DELAY und dem Wert 1000 eine Pause von 1000 Millisekunden. Die dritte Zeile enthält den Befehl STRING, womit der nachfolgende Text „Hello World“ ausgegeben wird.

REM Dies ist ein Kommentar und wird nicht ausgeführt
DELAY 1000
STRING Hello World

Der Beispiel-Paylout kann zum Beispiel im Notepad geschrieben werden. Anschließend wird die Seite Duck Toolkit aufgerufen und der „Payload Encoder“ ausgewählt. Der Code kann per Copy & Paste in das Eingabefeld kopiert werden. Mit einem Klick auf den Button „Encode Payload“ wird die Datei Inject.bin generiert und zum Download angeboten. Sie kann nun auf die Hauptebene der Micro SD-Karte kopiert werden. Die Speicherkarte kann nun in den Ruber Ducky gesteckt werden. Jetzt müssen Sie noch einen Texteditor öffnen, um die Ausgabe zu sehen und können dann den Rubber Ducky an einen Rechner anschließen. Nach einer kurzen Initialisierung werden die Tastaturbefehle an den Rechner geschickt und ausgeführt. Im Texteditor erscheint „Hello World“.

Beispiele

Spannend wird es, wenn mit dem Ruber Ducky Programme gestartet werden und darin weitere Befehle ausgeführt werden.

Taschenrechner öffnen

Zum Einstieg öffnen wir den Taschenrechner unter Windows. Die Pausen werden benötigt, da zum einen das Betriebssystem Zeit benötigt, das Gerät zu initialisieren, und zum anderen die Dialoge Zeit zum Öffnen benötigen. Erfolgt zu schnell die nächste Eingabe, geht diese verloren. Mit dem Befehl „GUI r“ wird der Ausführen-Dialog gestartet. Darin wird „calc“ geschrieben und mit der Enter-Taste bestätigt.

DELAY 1000
GUI r
DELAY 250
STRING calc
ENTER

Website aufrufen

Eine Website lässt sich sehr einfach aufrufen. Dazu wird einfach der Ausführen-Dialog gestartet, die URL eingetragen und mit Enter bestätigt. Windows öffnet daraufhin die URL mit dem Standard-Webbrowser.

DELAY 1000
GUI r
DELAY 250
STRING https://scheible.it
ENTER

Im Editor schreiben

Das nachfolgende Beispiel zeigt das Öffnen des Ausführen-Dialogs und den Start von Notepad. Mit dem Befehl „GUI r“ wird der Ausführen-Dialog gestartet. Darin wird „notepad“ geschrieben und mit der Enter-Taste bestätigt. Anschließend wird der Text „Rubber Ducky“ im Editor geschrieben.

DELAY 1000
GUI r
DELAY 250
STRING notepad
ENTER
DELAY 250
STRING Rubber Ducky

Fertige Ducky Scripts

Fertige Ducky Scripts können einfach über die offizielle Github Seite von Hak5 heruntergeladen werden. Weitere Beispiele für den Rubber Ducky gibt es auf der Ducktoolkit Website.

Rubber Ducky Clone

Günstiges Board SD-Kartenlesegerät
Günstiges Board SD-Kartenlesegerät
Board mit ATMEGA32U4 Prozessor und SD-Kartenlesegerät Board mit ATMEGA32U4 Prozessor und SD-Kartenlesegerät

Mittlerweile gibt es einige Boards, die die Funktionalität des Rubber Ducky imitieren. Dabei handelt es sich um Boards ohne Gehäuse, die den Prozessor ATMEGA32U4 verwenden und ein Micro SD-Kartenlesegerät besitzen. Der Chip kann mit der Arduino IDE programmiert werden. Es stehen fertige Scripte zur Verfügung, die die Funktionalität realisieren, auf der Micro SD-Karte ein kompiliertes Ducky Script auszuführen. Dadurch muss wie beim Rubber Ducky nur noch der Inhalt auf der SD-Karte angepasst werden.

Es existieren mehrere Varianten der Boards und auf GitHub gibt es verschiedene Projekte wie Bad Ducky, Ducky Clone, und Duckduino-microSD. Hier muss darauf geachtet werden, dass die Hardware und Software zusammenpasst.

Fazit Rubber Ducky

Der Rubber Ducky ist wohl die erfolgreichste BadUSB-Hardware am Markt. Er kostet zwar etwas mehr als die anderen Geräte, allerdings erhält man dafür ein robustes und unkompliziertes Device. Mit der Nutzung Ducky Scripts und der Micro SD-Karte können BadUSB-Angriffe schnell und ohne Programmierkenntnisse realisiert werden. Durch die Online-Konverter ist nicht einmal die Installation einer Software erforderlich. Dadurch sind der Entwicklung von Angriffsszenarien keine Grenzen gesetzt und mit dem unauffälligen USB-Gehäuse eignet er sich auch für praxisnahe Penetrationstests.

Gegenmaßnahmen

Schutzmöglichkeiten gegen BadUSB-Angriffe habe ich im zentralen Artikel der Artikelserie im Abschnitt „Gegenmaßnahmen“ beschreiben.

USB Artikelserie

Dieser Artikel ist Teil der Artikelserie Angriffe per USB, die dem Themenschwerpunkt Hacking Hardware angehört. In dieser Artikelserie beschreibe ich verschiedene Arten von Angriffsmethoden über die USB-Schnittstelle, damit diese erkannt und effektive Gegenmaßnahmen getroffen werden können.

Über Tobias Scheible

Tobias Scheible

Hallo, mein Name ist Tobias Scheible. Ich bin begeisterter Informatiker und Sicherheitsforscher mit den Schwerpunkten Cyber Security und IT-Forensik. Mein Wissen teile ich gerne anhand von Fachartikeln hier in meinem Blog. Als Referent halte ich Vorträge und Workshops für Verbände und Unternehmen u. a. auch offene Veranstaltungen für den VDI und die IHK.

Kommentare

Es wurde noch kein Kommentar abgegeben.

Schreibe einen Kommentar!

Hilfe zum Kommentieren

Um kommentieren zu können, geben sie bitte mindestens ihren Namen und ihre E-Mail-Adresse an. Bitte nutzen Sie die Kommentarfunktion nicht dazu, andere zu beleidigen oder Spam zu verbreiten. Trolle und Spammer sind hier unerwünscht! Unangemessene Kommentare, die zum Beispiel gegen geltendes Recht verstoßen oder eine Gefährdung anderer Besucher darstellen, werden gelöscht oder angepasst.

Name: Ihr Name, der oberhalb des Kommentars steht, gerne auch Ihren echten Namen, das erleichtert die Kommunikation für alle. Sollte ein Spam-Keyword als Name verwendet werden, kann dieses entfernt oder korrigiert werden.

E-Mail: Ihre E-Mail Adresse dient zur Identifizierung weiterer Kommentare und sie haben die Möglichkeit, ein Avatar-Bild zu verwenden. Dazu müssen Sie mit Ihrer E-Mail Adresse bei Gravatar angemeldet sein. Die E-Mail Adresse wird natürlich nicht veröffentlicht und nicht weitergegeben.

Website: Hier können Sie ihren eigenen Blog bzw. ihre eigene Website eintragen, dadurch wird Ihr Name und Ihr Avatar-Bild verlinkt. Werden rein kommerzielle Angebote offensichtlich beworben, setze ich den Link auf nofollow und unangemessene werden einfach entfernt.

Erlaubte HTML-Tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <hr> <big> <small> <sub> <sup> <u>

Ihre E-Mailadresse wird nicht veröffentlicht. Mit dem Absenden anerkennen Sie die Datenschutzerklärung des Blogs.