+2 Daumen
83 Aufrufe

Die englischsprachige Version dieses Artikels ist (samt Implementierung des Compilers und Inject-File) auf https://www.cyber-security.online/usb-rubber-ducky-as-a-security-token/ abrufbar. 

image(1).png

1. Einleitung

In diesem Artikel geht es um den durch die Amazon Original-Serie Mr. Robot bekannt gewordenen USB Rubber Ducky \(-\) ein als USB-Stick getarnter Mikrocontroller, mit dem sogenannte Keystroke-Injection Attacken als Teil eines Social-Engineering Angriffs durchgeführt werden können. Wie Ihnen aber mit Sicherheit nicht entgangen ist, enthält dieser Artikel keinen Disclaimer. Das liegt daran, dass wir das Gerät zweckentfremden und ausnahmsweise für "das Gute" einsetzen. Dass der USB Rubber Ducky dem Target vorgaukelt eine gewöhnliche Tastatur zu sein, nutzen wir zu unserem Vorteil, indem wir statt Schaden verursachende Befehle in CMD/Powershell einzutippen, ein praktisch sicheres Passwort eingeben lassen. Sie fragen sich vielleicht:

Welchen Benefit habe ich dadurch?

Nun, wie lautet Ihr derzeitiges Passwort? Ist es sicher? Und was bedeutet für Sie sicher? Haben Sie es vielleicht aufgeschrieben und denken, dass eine sichere Aufbewahrung alleine das Passwort sicher macht? Bevor Ihre Augen das nächste Kapitel auch nur anvisieren, sollten Sie mit einem MD5-Hash Generator (https://www.md5-generator.de/) den MD5-Hash Ihres Passwortes generieren und einen Reverse-Lookup wagen (z. B. hier: http://www.md5online.org/). Sollte Ihnen nun Ihr Passwort im Klartext angezeigt werden, dann haben Sie ein Problem und werden für die in diesem Artikel vorgeschlagene Lösung sehr dankbar sein.

2. Was ist ein Security Token?

Für die Authentisierung eines Anwenders gegenüber einem IT-System/einer Anwendung unterscheidet man in der Regel zwischen dem, 

- was der Anwender weiß (PIN, Passwort, Passphrase, Pattern, ...)

- was der Anwender besitzt (Security-Token, SmartCard, ...)

- was der Anwender ist (Biometrie (Fingerabdruck, Retina, Behavioral, ...) 

Ein Security-Token fällt in die zweite Kategorie ("was der Anwender besitzt"). Er authentisiert sich mit einer Art Schlüssel gegenüber einem IT-System/einer Anwendung, das/die ihn dann wiederum authentifiziert. Üblicherweise wird ein Security-Token in Kombination mit einem Verfahren aus einem der übrigen Kategorien (Wissen, Biometrie) gepaart, was man als Multifaktor-Authentifizierung (MFA) bezeichnet. MFA ist Ihnen bestimmt schon einmal bei der Online-Zahlung mit Kreditkarte begegnet. Während des Zahlungsvorgangs werden Sie in einer App auf Ihrem Smartphone (Token) dazu aufgefordert, einen Key zu generieren, der dann eingegeben werden muss, um zu verifizieren, dass Sie der sind, für den Sie sich ausgeben und tatsächlich <hier beliebiges Produkt einfügen> kaufen wollen.

3. Schritte zum Bau eines USB Rubber Ducky Security-Tokens

Sie benötigen (offensichtlich) einen USB Rubber Ducky und eine entsprechende Payload, die Sie sich bspw. auf https://www.cyber-security.online/usb-rubber-ducky-as-a-security-token/ generieren lassen können. Geben Sie hierfür Ihr gewünschtes Passwort, das so kompliziert wie möglich sein sollte (immerhin müssen Sie es sich nicht merken), ein und klicken Sie auf 'Generate'.

1.png

Anschließend erscheint der Button 'Download', mit dem Sie sich das Inject-File mit der Bezeichnung 'inject.bin' herunterladen können.

2.png

Doch wie entsteht dieses Inject-File? Die Payload wird in DuckyScript geschrieben und anschließend mit einem entsprechenden Compiler in ein Binary-File übersetzt. Der Content des Binary-Files ist die Payload und das File selbst das Inject-File, das auf einer Mikro-SD-Karte gespeichert und in den auf dem USB Rubber Ducky vorgesehenen Schacht gesteckt wird. Das Ducky-Skript enthält lediglich \(4\) Befehle:

DELAY 3000
STRING your password
DELAY 500
ENTER
Diese bedeuten im Einzelnen:

DELAY 3000

Warte \(3000\)ms (\(3\) Sekunden), bis der USB Rubber Ducky vom System erkannt wurde. 

STRING your password

Tippe das Passwort your password.

DELAY 500

Warte \(500\)ms (eine halbe Sekunde).

ENTER

Drücke Enter (und bestätige damit die Passworteingabe).

Für das sehr schwache Passwort '123456Seven' wird mit dem Compiler ein Binary-File erzeugt, dessen Content man in einem Hex-Editor untersuchen kann:

image(2).png

Den Compiler selbst stelle ich auf meiner Website kostenfrei zur Verfügung: https://www.cyber-security.online/usb-rubber-ducky-as-a-security-token/

4. Security-Flaws

Obwohl die vorgeschlagene Lösung auf den ersten Blick sicher zu sein scheint, gibt es trotzdem einige (offensichtliche) Probleme, die von Ihnen verlangen Ihren USB Rubber Ducky wie den eigenen Augapfel zu hüten:

- Das Passwort wird als Klartext (ungehasht) in das Binary-File 'inject.bin' geschrieben.

- Das 'inject.bin' File kann mit wenig Aufwand wieder in ein DuckyScript übersetzt werden. Besitzt der Angreifer Ihr Inject-File, besitzt er faktisch Ihr Passwort und benötigt nicht Ihr Security-Token.

- Die Eingaben des USB Rubber Ducky können mit einem Keylogger aufgezeichnet werden (in Kürze erscheint ein Artikel, in dem wir einen eigenen Keylogger programmieren werden).

- Der Angreifer muss nicht einmal Ihren USB Rubber Ducky oder das darauf gespeicherte Inject-File stehlen. Er kann theoretisch einen beliebigen Editor öffnen, Ihr Token in einen freien USB-Port stecken und das im Klartext getippte Passwort am Bildschirm begutachten. Dieses braucht er sich dann nur zu merken oder analog/digital zu speichern. Mit dem Schließen des Editors ist der Tatort bereinigt. 

5. Eine Alternative

Unter Linux kann man durch die Nutzung von pam_usb (https://wiki.archlinux.org/index.php/Pam_usb) einen beliebigen USB-Stick zum hardwarebasierten Security-Token erklären. Die Funktionsweise unterscheidet sich jedoch von der des Ducks, da man hiermit z. B. keine Authentifizierung durch eine Web-App erreichen und als Fallback-Mechanik nicht auf das in den grauen Zellen vielleicht vorhandene Wissen um das Passwort zurückgreifen kann. Nicht selten beklagen Nutzer, dass sie sich mit pam_usb ausgesperrt haben, weshalb ich einen Testrun innerhalb einer virtuellen Maschine vor dem Go-Live empfehle.

Das Mitglied hat durch den Artikel 50 Bonuspunkte erhalten. Schreib auch du einen Artikel.
geschlossen: Stack-Artikel
Gefragt von 7,8 k

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage sofort und kostenfrei

x
Made by a lovely community
...