Viele von euch haben wahrscheinlich schon von dem Hak5 Rubber Ducky gehört. Mit diesem praktischen Gadget kann man Tastaturbefehle auf einem Zielrechner ausführen, ohne, dass dieser als schädliches Tool erkannt wird. Rubber Duckies werden von Computern als Eingabegerät erkannt.

Abgesehen davon, dass die Rubber Duckys schon länger ausverkauft sind, kosten sie um die 50$. Mit dieser Anleitung erstellen wir uns einen eigenen Rubber Ducky, für unter 5€.

Was benötigen wir?
einen Digispark ATTiny85
die Arduino IDE Software
duck2spark
(ggf. den Duck Encoder)

Nachdem wir die Arduino IDE installiert haben müssen wir noch die Konfigurationsdatei für den Digispark hinzufügen. Klicken wir also auf File und dann auf Preferences. Im neuen Fenster müssen wir nun folgende URL unter Additional Boards Manager Urls eingeben:

http://digistump.com/package_digistump_index.json

Zum Bestätigen klicken wir auf OK.

Jetzt navigieren wir zu Tools > Board > Board Manager

Im Dropdown wählen wir Contributed und dann klicken wir bei Digistump AVR Boards unten rechts auf Install (auf dem Bild unten steht an der Stelle Remove, da ich das Paket bereits installiert habe).

Anschließend wählen wir noch den Digispark als Board aus: Tools > Board > Digistump AVR Boards > Digispark (Default – 16.5 MHz)

Jetzt wird es spannend und wir schreiben unsere eigene Payload. Dazu benutzen wir, ganz wie im Original, das Ducky Script. Das Ducky Script besteht aus simplen Befehle, um Payloads auszuführen. Hier ist eine Übersicht einiger Befehle:

ALT [key name] (ex: ALT F4, ALT SPACE)
CTRL | CONTROL [key name] (ex: CTRL ESC)
CTRL-ALT [key name] (ex: CTRL-ALT DEL)
CTRL-SHIFT [key name] (ex: CTRL-SHIFT ESC)
DEFAULT_DELAY | DEFAULTDELAY [Time in millisecond] (change the delay between each command)
DELAY [Time in millisecond] (used to overide temporary the default delay)
GUI | WINDOWS [key name] (ex: GUI r, GUI l)
REM [anything] (used to comment your code, no obligation :) )
ALT-SHIFT (swap language)
SHIFT [key name] (ex: SHIFT DEL)
STRING [any character of your layout]
STRING_DELAY [Number] [any character of your layout] (Number is ms delay between each character)
REPEAT [Number] (Repeat last instruction N times)
[key name] (anything in the keyboard.properties)

Sehr knapp aber ausreichend! Hier noch eine ausführlichere Beschreibung aller Befehle.

Machen wir einen kleinen Probelauf:

WINDOWS r
DELAY 200
STRING notepad.exe
ENTER
DELAY 200
STRING Hallo Welt!

Mit diesen Script öffnen wir Notepad und schreiben „Hallo Welt!“ DELAY sorgt für etwas Verzögerung, um dem Computer Zeit zum Laden zu geben. Andernfalls kann es passieren, dass unsere Befehle im Nirvana verschwinden.

Unser Beispiel kopieren wir jetzt in den Ducky-Encoder auf der Hak5 Website. https://shop.hak5.org/pages/ducky-encoder

Benutzen wir Umlaute oder Sonderzeichen, die an einer anderen Stelle der Tastatur sind, als an einer US-Tastatur, müssen wir die deutsche Layoutdatei hochladen. Die passende Datei finden wir hier.

Kopieren wir jetzt unser Beispiel in den Encoder und laden die generierte Payload herunter:

Die generierte Datei heißt inject.bin und wird benötigit, um sie mit duck2spark für den Arduino lesbar zu machen. Das machen wir mit folgendem Befehl:

python2 duck2spark.py -i ./Downloads/inject.bin -l 1 -f 100 -o test.ino

Wichtig ist hier, dass wir python2 zum Ausführen benutzen, da das Programm noch in der Python2 Sprache geschrieben wurde. Nach -i geben wir den Pfad der Datei aus dem Encoder an, -l steh für den loop (wie oft das Script ausgeführt werden soll), -f für den anfänglichen Delay (in Millisekunden), bevor das Script startet und mit -o geben wir den Namen der finalen Datei an. Mit -h können wir die duck2spark Hilfe aufrufen und alle Optionen sehen.

Nun wechseln wir wieder zur Arduino IDE und öffnen unsere neue Datei (test.ino). Daraufhin öffnet sich ein Fenster, das uns sagt, dass sich die Datei in einem gleichnamigen Ordner befinden muss und ob wir wollen, dass das gemacht wird. Dieses Fenster bestätigen wir mit „Ja“ und nun haben wir unsere Payload geladen.

An dieser stelle stecken wir unseren Digispark in einen USB-Slot an unserem Rechner. Sollte der Digispark nicht erkannt werden muss man einen anderen USB-Slot benutzen. Hilft auch das nicht klappt es mit einem USB-Hub. Bei mir funktioniert auch nur ein USB Slot, das ist ein bekanntes „Problem“.

Jetzt klicken wir auf den Haken (1), um den Code zu verifizieren, im Anschluß klicken wir auf den Pfeil (2) und schreiben so den Code auf den Digispark.

Stecken wir unseren Digispark nun in einen Windows Rechner legt er direkt los:

Ich hoffe, dass euch das Tutorial gefallen hat und ihr viel Spaß mit „eurem“ Rubber Ducky habt. Probiert mit dem Ducky Script etwas herum und ihr werdet schnell merken, dass man damit viel lustige und auch starke Sachen anstellen kann.

Abschließend noch ein Grund warum es auch gut sein kann einen originalen Rubber Ducky zu haben: https://darknetdiaries.com/episode/6/