Rubber Ducky Quick Start

Dieses Tutorial dient der Aufklärung von IT-Sicherheitsrisiken und dem Selbstschutz. Sei dir darüber im klaren, dass du eine Straftat begehst, wenn du Technologien, Tools oder Angriffsmethoden unbefugst nutzt, um Daten und Systeme anderer zu manipulieren.

Warum dieses Rubber Ducky Tutorial?

Es gibt eine Menge Tutorials zum USB Rubber Ducky, einem sehr vielseitigem Tool für Penetrationstester. Es scheint ein unschuldiger schwarzer USB-Stick zu sein. Wird der Rubber Ducky allerdings an einen Computer angeschlossen, registriert er sich als Tastatur und kann vorprogrammierte Tastenanschläge tippen. In quasi Lichtgeschwindigkeit.

Mit dem Rubber Ducky geht so ziemlich alles, vom Hintergrund ändern über Keylogger bis hin zur vollwertigen Backdoor. Er kostet circa $45 und kann hier bestellt werden.

Ist der Rubber Ducky dann angekommen, gibt es eine Tüte mit viel Kleinkram und wenig Erklärungen. Möchte man den Rubber Ducky im deutschsprachigen Raum nutzen, muss man außerdem ein zwei Dinge beachten, die in englischsprachigen Tutorials nicht deutlich erwähnt werden, daher
dieses kleine Tutorial.

Rubber Ducky
Rubber Ducky

Bevor der Rubber Ducky mehr macht als ein Editor-Fenster mit „Hello World“ zu öffnen, müssen wir ihn auseinander nehmen und die miniSD-Karte in den mitgelieferten miniSD auf USB Adapter stecken und mit unserem Rechner verbinden.  Mehr dazu in Schritt 2.

Rubber Ducky Einzelteile
Rubber Ducky Einzelteile

Ich habe einen Windows 10 PC mit installiertem Java(brauchen wir für den DuckEncoder) für dieses Tutorial genutzt, da ich den gerade offen hatte.
Wir nutzen aber auch hier die Kommandozeile und die Schritte sind auf einem Linux-System weitestgehend ähnlich, bei Bedarf schreibe ich dazu nochmal was. Ich zeige euch jetzt wie ihr mit dem Rubber Ducky ein Bild aus dem Internet ladet und es als Hintergrund einstellt. Am Ende haben wir alle essentiellen Teile für reale Penetrationstests zusammen, bei denen man evtl. Software auf einen im Test-Unternehmen stehenden PC runterladen möchte.

Schritt eins: Den Duck Encoder runterladen

Um den Rubber Ducky mit Payloads auszustatten und eine inject.bin aus unserem Ducky Script zu kreiiren, müssen wir den Duck Encoder herunterladen. Diese Datei ist verantwortlich für die Tastenanschläge. Es gibt unterschiedliche Möglichkeiten diese Datei zu erstellen, unter anderem auch
ein Webinterface, allerdings haben die Exploits nicht einfach funktioniert. Deswegen empfehle ich das .jar-Programm HIER herunterzuladen. Wir laden die Datei herunter, erstellen einen neuen Ordner, zum Beispiel auf dem Desktop, und kopieren die .jar-Datei dort hinein.

Schritt 2: Einsetzen der microSD-Karte

Steckt man den Rubber Ducky nach dem auspacken in den PC sollte sich ein Editor-Fenster mit „Hello World“ öffnen(Vorsicht bei Nicht-Windows  Systemen, hier können andere Dinge passieren). Wir möchten den Stick aber neu beschreiben, daher die SD-Karte mittels eines Kartenlesegeräts (wird mitgeliefert) an den PC stecken. Nach kurzer Wartezeit sollte die SD-Karte wie ein „normaler“ USB-Stick verfügbar sein.

Schritt 3: Payload generieren

Du kannst nicht programmieren? Kein Problem. Der RubberDucky spricht DuckyScript und mit ein paar Befehlen kommst du schon ans Ziel. Eine vollständige Übersicht von Duckyscript gibt es HIER.

Wir öffnen eine neue .txt Datei mit Rechtsklick->Neu->Textdokument benennen diese zum Beispiel change_wallpaper und tippen folgendes ein:


REM Skript zum Ändern des Hintergrunds bei Win10
REM Standard-App muss zum öffnen der Fotos verwendet werden
REM IMPORTANT Wenn Google Chrome genutzt wird: Google Chrome merkt REM sich wo zuletzt gespeichert wurde!Verzeichnis evtl anpassen.
DELAY 5000
CONTROL ESCAPE
DELAY 100
REM Note: Chrome klappt gut, firefox oder ie wahlweise (Verzeichnis unten anpassen)
REM Evtl. eigenes Bild einfügen
STRING chrome https://montimon.mirfac.uberspace.de/wordpress/wp-content/uploads/2018/01/pwnie_pic.png
ENTER
DELAY 4000
CONTROL s
DELAY 2000
ENTER
DELAY 300
CONTROL ESCAPE
DELAY 300
REM Bei Interne Explorer, ändere 'Downloads' to 'Documents'
REM Bei Firefox Firefox, change 'Downloads' to 'Pictures'
STRING %USERPROFILE%\Downloads\pwnie_pic.png
DELAY 500
ENTER
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
TAB
DELAY 500
ENTER
DELAY 500
DOWN
DELAY 500
DOWN
DELAY 500
DOWN
DELAY 500
DOWN
DELAY 500
DOWN
DELAY 500
ENTER
DELAY 500
DOWN
DELAY 500
ENTER

Nun zum Code: Wir starten mit ein paar Kommentaren. Kommentare erkennt ihr an REM am Anfang der Zeile. Im Anschluss warten wir fünf Sekunden, mittels DELAY 5000. CONTROL ECAPE öffnet dann das Startmenü von Windows 10 und STRING chrome ... öffnet eine Webseite mit Hilfe von Chrome über das Windows-10 eigene Suchfeld. Wir warten vier Sekunden und speichern dann mittels CONTROL s das Bild. Anschließend drücken wir ENTER und öffnen wieder das Startmenü. Mit STRING %USERPROFILE%\Downloads\pwnie_pic.png öffnen wir nun das heruntergeladene Bild und navigieren mit Hilfe von RIGHT und DOWN zu dem Menüpunkt im Windows-Bildbetrachter, den wir haben wollen. In unserem Falle ist es die Option „Als Hintergrund festlegen“.

Den Code gibt es auch auf GitHub.

Schritt 4: Kompilieren des DuckyScripts zu inject.bin

Jetzt brauchen wir den DuckEncoder aus Schritt 1 um unsere inject.bin zu kompilieren. Hierfür müssen wir im Ordner in dem unser duckencoder und die change_wallpaper.txt liegen ein Kommandozeilen Fenster öffnen. Mit Shift+F10 öffnen wir das Kontextmenü und können „Power Shell Fenster hier öffnen“ oder „Kommandozeile hier öffnen“ klicken. Nachfolgend tippen wir den Befehl ein.

java -jar duckencoder.jar -i change_wallpaper.txt -o inject.bin -l de

java -jar duckencoder.jar ruft das Programm innerhalb unseres Verzeichnisses auf. -i change-wallpaper sagt dem Programm, was der Input ist, in diesem Fall unser DuckyScript. -o inject.bin sagt dem duckencoder, das er bitte als output inject.bin produzieren soll und -l de gibt an, dass wir eine deutschsprachige Tastatur nutzen wollen. Dies ist wichtig, da der Duck Encoder die inject.bin sonst für eine englischsprachige Tastatur kompiliert und falsche Tasten anschlägt.

Abschließend schieben wir die entstandene inject.bin auf die in Schritt 2 eingesetzte USB-Karte und können testen.

Schritt 5: Der Selbsttest
Bevor wir den Stick nun bei einem Penetrationstest einsetzen, sollten wir ihn an einem Testsystem testen, beispielsweise unserem eigenen Rechner. Wir setzen die microSD-Karte nun wieder in den Rubber Ducky und stecken ihn ein (noch nicht das Plastikgehäuse drummachen, falls etwas nicht korrekt ist, muss man sonst immer fummeln).

Jetzt gilt es nur noch dem RubberDucky bei der Arbeit zuzuschauen und zu prüfen ob alles klappt.

Bonusschritt:

Auf Github oder Ducktoolkit findet ihr viele vorgefertigte Payloads, die ihr nur runterladen, kompilieren und testen müsst. Solltest du den RubberDucky wirklich in einem Penetrationstest einsetzen musst du vorher prüfen, ob die kompilierte inject.bin korrekt arbeitet. Aus eigener Erfahrung müsst ihr hier fast immer nochmal ran und das Skript verändern.

Happy Pentesting

Was lernen wir?

Wie du gesehen hat, sieht der Rubber Ducky aus wie ein normaler USB-Stick ist es aber nicht. Er lässt sich sehr leicht programmieren und eignet sich daher besonders gut für Anfänger im Bereich Penetrationstesting. Gerade mit den Delay-Funktionen lässt sich spielen, so dass der Stick beispielsweise nachts beginnt zu arbeiten, wenn du schläfst. Sei also immer vorsichtig, wenn du einen USB-Stick irgendwo findest und Ihn an eines deiner Geräte anschließen willst, egal ob privat oder im Berufsleben.

Falls du Fragen oder Anmerkungen hast, du findest mich auf Twitter unter @montimonte