microcontroller: rubber ducky

Transcription

microcontroller: rubber ducky
MICROCONTROLLER: RUBBER
DUCKY
Dokumentation
Rubber Ducky
Autor: Ramon Schenk
B-INF / Bandgenossenschaft Bern
Visit: www.Powerslave.ch
Rubber Ducky
Version 1.5.2013
Seite 1 von 8
MICROCONTROLLER: RUBBER
DUCKY
INHALTSVERZEICHNIS
1.
Verwendungszwecke für Microcontroller in der Informatik ............................................................................................... 3
2.
Übersicht „Rubber Ducky“ ................................................................................................................................................................ 3
2.1.
Die Hardware von Ducky ....................................................................................................................................................... 3
2.2.
Die Funktionsweise von Rubber Ducky ........................................................................................................................... 4
3.
Die Programmierung / Das Ducky Script ................................................................................................................................... 5
4.
Einsatzmöglichkeiten für Rubber Ducky ..................................................................................................................................... 7
5.
Ich habe Angst vor Ducky, was kann ich tun? .......................................................................................................................... 7
6.
Eigenes Fazit zu Rubber Ducky ....................................................................................................................................................... 8
7.
Links ........................................................................................................................................................................................................... 8
Rubber Ducky
Version 1.5.2013
Seite 2 von 8
MICROCONTROLLER: RUBBER
DUCKY
1.
Verwendungszwecke für Microcontroller in der Informatik
Eigentlich steht man wenn es um Microcontroller geht, immer mit einem Bein in der Elektronik. Allerdings
stecken viele Microcontroller von deren Existenz wir meistens nichts wissen, in vielerlei Alltagsgegenständen
der Computertechnik.
Da ich, was Elektrotechnik angeht, ein blutiger Anfänger bin, und ich auch nicht zu viel Zeit in dieses Thema
stecken will, beschränke ich mich auf die Grundlagen und die Prüfung von Elektronik Komponenten, vor allem
Microcontroller.
Da es viele Tools und Gadgets gibt bei denen dieses Wissen vollkommen ausreicht, sollte das auch fürs erste
reichen.
Eines dieser Tools ist mir vor kurzem in einer Zeitschrift für Entwickler ins Auge gesprungen, und hat mich
sofort in seinen Bann gezogen.
Es handelt sich um einen Microcontroller der in einem USB Stick mit MicroSD Kartenslot steckt, klingt bis jetzt
nicht allzu innovativ aber im nächsten Kapitel werde ich erläutern was dieses Gerät, welches sich „Rubber
Ducky“ nennt, alles auf dem Kasten hat.
„Rubber Ducky“ kann man wie im Beispiel für einen einfachen Gag „missbrauchen“ oder auch für
Produktivaufgaben.
Muss man z.B 20 Workstations mit einem Hotfix behandeln kann man das mit einem Ducky Script ohne einen
Tastendruck nur durch das Anschliessen von Rubber Ducky an einen USB Port. Es ist allerdings genauso
einfach die Ente für destruktive Zwecke zu verwenden, aber das lassen wir mal sein. Ich übernehme auch keine
Verantwortung dafür was mit Rubber Duckys die nicht mir gehören angestellt wird wird.
Generell sollte man sich an das Motto „Use but don’t abuse“ halten.
2.
Übersicht „Rubber Ducky“
Zuerst ein Bild von „Rubber Ducky“ damit man sich etwas darunter vorstellen kann.
2.1.
Die Hardware von Ducky
Wie vorher schon kurz erwähnt ist „Rubber Ducky“ ein handelsüblicher USB Stick ohne Festspeicher mit einem
Microcontroller auf der Platine.
Der in diesem Fall verwendete AT32UC3B1256 ATmel Microcontroller befindet sich auch auf Arduino Boards
und anderen Microcontroller Lösungen.
Um Scripts und/oder Daten auf „Rubber Ducky“ abzulegen wird eine MicroSD Karte verwendet, für die es
einen Slot auf der Rückseite der Platine gibt.
Rubber Ducky
Version 1.5.2013
Seite 3 von 8
MICROCONTROLLER: RUBBER
DUCKY
2.2.
Die Funktionsweise von Rubber Ducky
Wird „Rubber Ducky“ an einen PC angeschlossen, wird Ducky als Tastatur erkannt, was durch den USB
Controller zurückzuführen ist. Im Grunde genommen kann man Ducky als Programmierbare Tastatur
bezeichnen, ähnlich wie ein Keylogger aber in die andere Richtung.
Die Tastaturbefehle die Ducky nach dem Anschliessen ausführt, werden mittels Ducky-Script auf die MicroSD
Karte gespeichert. zum Script später mehr, aber ein Gedankliches Beispiel vorneweg.
Es ist z.B einfach realisierbar ein Script zu schreiben das nach dem Anschliessen den Tastaturbefehl
„Windowstaste“ sendet, danach die Tastenbefehle
„n“ „o“ „t“ „e“ „p“ „a“ „d“ „.“ „e“ „x“ „e“ sendet, diese Buchstaben landen im Suchfeld des Startmenus (Darum
die Windowstaste am Anfang). Das ganze gefolgt von einem „ENTER“- Command und schon öffnet sich der
Notepad Editor.
Jetzt noch die Buchstabenfolge für den Satz:
„Du solltest nicht jeden USB Stick anschliessen der rumliegt“
ins Script einbauen und schon hat man einen Lustigen Gag wenn jemand Rubber Ducky anschliesst, und der
Gag ist sogar lehrreich.
Dieses Beispiel ist gewiss einfach und wirkt total banal, immerhin klärt es das Opfer auf vorsichtiger zu sein.
Aber vor allem sollte der Gag dazu dienen die Funktionsweise von Rubber Ducky anhand eines praktischen
Beispiels zu erklären.
Es folgt ein Bild des Herstellers wo die Möglichkeiten von Ducky kurz aufgelistet sind:
Rubber Ducky
Version 1.5.2013
Seite 4 von 8
MICROCONTROLLER: RUBBER
DUCKY
3.
Die Programmierung / Das Ducky Script
Ducky Script ist eine sehr einfache, kompakte und schnell erlernbare Scriptsprache, tatsächlich so einfach das
ich sie in Kürze erlernen konnte.
Jede Taste auf dem Keyboard (Generic 105 Tasten Keyboard Layout) hat ein „Command“, die Tasten A-Z bzw.
a-z kann man direkt ins Script einbauen. Es ist sehr wichtig die Befehle für die jeweiligen Tasten in Grossschrift
zu schreiben da sie sonst als String erkannt werden und nicht Befehl, eine Auflistung dieser Befehle findet man
im Wiki des Herstellers.
Es folgt ein kleines Ducky Script mit der Erklärung zu den jeweiligen Funktionen, der Korrektheit halber wird
die Erklärung in einer Kommentarzeile geschrieben welche jeweils mit REM beginnt, REM ist die Kurzform für
REMember also Erinnerung, und ist die Einleitung in Ducky Script für einen Kommentar.
Codezeilen werden mit einem Zeilenumbruch beendet, also nicht wie in JavaScript ein Semikolon oder
ähnliches. Es folgt der Beispielcode, dieser entspricht dem Beispiel von vorhin indem ein Notepad Editor
geöffnet wird und der User eine Nachricht darin übermittelt bekommen soll.
Zur einfacheren Orientierung und Lesbarkeit sind Kommentare/Erklärungen Grün dargestellt.
REM Beispielcode in Ducky Script
REM Author: Ramon Schenk
DELAY 3000
REM „DELAY“ sagt dem Script das es Warten soll in Millisec
GUI R
REM Entspricht Windowstaste + R. Ausführen Fenster öffnet sich
DELAY 200
STRING notepad
REM „STRING“ bedeutet es folgt eine Texteingabe, hier „notepad“
REM Jetzt sollte im Ausführen Feld „notepad“ stehen
ENTER
REM Notepad wird ausgeführt
DELAY 200
STRING Nicht jeden USB Stick anschliessen der rumliegt.
REM Der User empfängt diese Nachricht ins offene Notepad.
ENTER
REM Ende des Codes
Wie man sieht ist Ducky Script eine sehr einfache und praktisch selbsterklärende Sache. Der Umfang dieser
Script Sprache lässt sich auf 1-2 A4 Seiten komplett auflisten.
Natürlich versteht der PC diese Sprache nicht direkt, also muss sie übersetzt werden, hierfür haben die
Hersteller einen Hauseigenen Encoder entwickelt „Duckencode“, dieser verwandelt das Ducky Script welches
man geschrieben hat in eine Payload File namens „inject.bin“ im Root Verzeichnis der MicroSD Karte, Ducky
redet Java, sprich das Ducky Script wird in Java übersetzt und ist somit Maschinentauglich.
Diesen Vorgang macht man am besten auf einem Linux OS, das hat verschiedene Gründe, einer davon ist, das
Java zu 99% bereits vorhanden ist bei Linux, man benötigt nur eine Befehlszeile um das Ganze zu erledigen
und ich bin generell der Meinung das Programmieren am schönsten mit Linux ist.
Rubber Ducky
Version 1.5.2013
Seite 5 von 8
MICROCONTROLLER: RUBBER
DUCKY
Es folgt die Syntax um Ducky mit dem Script zu füttern. ACHTUNG um Daten bzw. Scripts auf Ducky zu
Kopieren/Kompilieren muss man die MicroSD aus Ducky entfernen und mit einem MicroSD Adapter o.Ä an
den PC anschliessen, die Karte muss je nachdem noch gemountet werden.
#Zuerst muss man in das Verzeichnis des Compilers auf der Karte
$ cd /media/MicroSD/ducky/v1.0/
#Wichtig: Das Ducky Script muss in diesem Verzeichnis sein
$ java –jar duckencode.jar –i scriptfile.txt –o /media/MicroSD/inject.bin
#Das Script welches als .txt File gespeichert war, wurde nun kompiliert für
Ducky und befindet sich als File „inject.bin“ auf der SD Karte.
# java –jar duckencode.jar / sagt Linux es soll mithilfe von Java das Programm
ducencode.jar ausführen.
# -i (input file) benötigt den Pfad zur Ducky Script .txt File.
# -o (output file) benötigt den Pfad zum Root Verzeichnis der SD Karte
Nicht jeder DELAY in diesem Script ist nötig, entweder kann man sie weglassen oder kürzen, allerdings muss
man vorsichtig sein da der PC manchmal etwas länger braucht um ein Fenster zu öffnen und wenn das Script
dann schon etwas weiter ist gehen die folgenden Befehle ins leere, der Nachteil an zu langen DELAYs ist, das
das Opfer den Vorgang sofort bemerkt, für den Autor des Script kann es allerdings hilfreich sein wenn das
Script langsam Schritt für Schritt arbeitet, dies ist zwar beim Beispiel Script hier auch gewünscht, aber durchaus
nicht für jede „Operation“ geeignet.
Lässt man die DELAYs allerdings ganz weg wird das Script so schnell durchgearbeitet das einige Sachen
übersprungen werden oder das Script läuft bereits weiter obwohl der PC noch die Sanduhr kreisen lässt.
DELAYs sind also wichtig und müssen nach dem Try & Error Prinzip eingestellt werden. Man sollte auch die
Leistung und das OS des „Opfer PCs“ im Hinterkopf haben und bei schwachen PCs grosszügiger DELAYs
einbauen.
Nach dieser einfachen Aktion wird die MicroSD Karte wieder ins Rubber Ducky gesteckt und die Ente ist scharf.
Rubber Ducky kann nun verwendet werden, um das Script auf einem beliebigen Windows PC zu starten,
nachdem man Ducky anschliesst.
Der User kann nichts dagegen machen und muss auch vorher nichts anklicken, Ducky startet sofort nachdem
es angeschlossen wurde und es sollte sich wie gewünscht ein Notepad Fenster mit entsprechender Botschaft
öffnen.
Ich hoffe dieses Beispiel konnte etwas Licht in die einfache aber durchaus mächtige Funktionsweise von Ducky
bringen, es folgen nun weitere Verwendungszwecke für Ducky und ein Fazit.
Wer 27 Minuten Zeit und Interesse hat, dem kann ich dieses Video empfehlen:
http://www.youtube.com/watch?feature=player_embedded&v=NeDYD9nb7PM#!
Es ist ein Quick-Start Guide und zeigt Ducky in Aktion und wie man ein einfaches
Ducky Script erstellt.
Rubber Ducky
Version 1.5.2013
Seite 6 von 8
MICROCONTROLLER: RUBBER
DUCKY
4.
Einsatzmöglichkeiten für Rubber Ducky
Mit Ducky kann man alles machen was man auch mit einer Tastatur anstellen kann, Voraussetzung ist das der
PC eingeloggt ist oder man das Passwort kennt, welches Betriebssystem spielt keine Rolle, jedes aktuelle OS
wird Rubber Ducky als
„Generic HID Keyboard“ erkennen, natürlich muss das Script an das OS des „Opfer“ PCs angepasst werden.
Ich benütze den Begriff „Opfer“ PC da er in vielen Dokumentationen über Rubber Ducky die Norm ist,
allerdings bedeutet das nicht automatisch das der „Opfer“ PC bzw. der Benutzer dieses PC geschädigt wird
oder ähnliches.
Ducky kann durchaus für den produktiven Einsatz genutzt werden, wie vorher erwähnt kann man damit immer
gleiche Aufgaben und Abläufe automatisieren und sich eine Menge Arbeit sparen, da man ja nur die Ente
anschliessen muss und die gewünschten Abläufe/Aufgaben erfüllen sich wie von Zauberhand.
Wie im Video des vorherigen Kapitels gezeigt kann man sich mit der Ente auch einen Spass erlauben. Dort
macht Rubber Ducky einen Print-Screen, öffnet
MS Paint, speichert den Screenshot irgendwo ab und verwendet ihn schlussendlich als Wallpaper, was für den
Verschaukelten ziemlich verwirrend sein kann.
Schlussendlich gibt es noch die weniger edlen Ziele, für die Rubber Ducky oft genutzt wird.
Ein Beispiel, auf das ich allerdings nicht tiefer eingehen werde, ist das Öffnen einer cmd Shell, mit dem „copy
con“ Befehl, mit dem die Konsole zum Editor wird, ermöglicht man Ducky Script z.B VB Code in die Konsole zu
schreiben und diesen abzuspeichern und schlussendlich auszuführen. Keine Anti-Virus Software ist dagegen
gerüstet, da der Code vom User selbst generiert wird und das Anti-Virus Ducky selbst nicht als Gefahr erkennt
und auch nicht versucht den Inhalt des Flash Speichers zu prüfen. (Da eine Tastatur in der Regel keinen
Speicher hat)
Die VBS file die in dem Video-Beispiel gezeigt wurde ermöglicht es dem Entenhalter via SSH unbemerkt auf
den befallen PC zuzugreifen, es ist genauso einfach andere Sachen so zu realisieren wie z.B Root Zugriff etc.
etc. die Möglichkeiten sind endlos.
5.
Ich habe Angst vor Ducky, was kann ich tun?
Ducky ist eine harte Nuss was Schutz angeht, allerdings reicht es drei einfache Regeln zu beachten um sich
gegen die meisten Enten-Angriffe zu schützen.
1.
2.
3.
Den PC niemals Unbeaufsichtigt stehen lassen wenn er eingeloggt ist. Windowstaste + L wirkt
wunder (Logout), Passwort sollte man auch haben…
Keine unbekannten USB Geräte anschliessen, bei Ducky hilft auch eine schützende VM nicht, da
das Gerät zuerst vom Host PC geladen wird, und dann ist es schon zu spät…
Keine Leute an den PC lassen die man nicht kennt, auch wenn sie nur kurz auf dem Web was
nachschauen wollen, hier sollte man hart bleiben. (Ich spreche aus Erfahrung)
So ernüchternd es ist, es gibt keinen absolut 100% sicheren Weg seinen PC zu schützen.
Mit genügend Zeit, Know-How und Kontakten ist jeder PC zu knacken, und sogenannte „Man-in-the-Middle“
Attacken, also solche bei denen Schadcode mit einem USB Stick oder eben Rubber Ducky von einer Insider
Person in das Zielsystem injiziert wird, sind die bei weitestem Einfachsten und zuverlässigsten Angriffsarten.
Befolgt man die drei Regeln und lässt auch sonst gesunden Menschenverstand walten, ist man ziemlich sicher.
Rubber Ducky
Version 1.5.2013
Seite 7 von 8
MICROCONTROLLER: RUBBER
DUCKY
6.
Eigenes Fazit zu Rubber Ducky
Ich war hin und weg als ich über Ducky gelesen habe, und dadurch das ich mich jetzt schon eine Weile mit
Microcontroller befasst habe, konnte ich sehr gut nachvollziehen wie Rubber Ducky funktioniert und was der
Gedanke dahinter ist. Ich freue mich schon darauf selbst ein stolzer Rubber Ducky Besitzer zu sein, momentan
befindet sich Ducky noch auf dem Weg. (Über einen Ozean, weit…)
Theoretisch hätte ich alles um mir selbst eine Rubber Duck zu basteln, sprich das Arduino Board mit dem
Microcontroller, USB Schnittstelle, konfigurierbarer USB Controller und einen Card Reader, allerdings würde
diese Eigenkonstruktion viel Aufwand mit sich bringen und wäre fast 10 mal so gross wie die Original Rubber
Duck, also habe ich die 39.99$ investiert.
Für mich ist Rubber Ducky vor allem ein Werkzeug bzw. Tool. Da ich mich sehr für die Bereiche
„Microcontroller“ & „Offensiv Security“ interessiere, und meine FIVA Arbeit praktischerweise davon handelt
(von ersterem auf jeden Fall) habe ich mich entschieden für Rubber Ducky eine Doku zu schreiben und diese in
meine FIVA Arbeit einzubinden, wozu ich Ducky schlussendlich verwenden werde wird sich zeigen ich finde vor
allem die Automatisierung praktisch und die Script Sprache macht auch einiges her, obwohl sie sehr einfach
gestaltet ist.
LRS 5/2013
7.
Links
Rubber Ducky Forum (Hak5 Crew)
http://forums.hak5.org/index.php?/forum/56-usb-rubber-ducky/
Rubber Ducky Shop
http://hakshop.myshopify.com/products/usb-rubber-ducky
Rubber Ducky Wiki
https://github.com/hak5darren/USB-Rubber-Ducky/wiki
Rubber Ducky
Version 1.5.2013
Seite 8 von 8

Documents pareils