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