+2 Daumen
384 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.

Autor: Florian André Dalwigk

Das Mitglied hat durch den Artikel 50 Bonuspunkte erhalten. Schreib auch du einen Artikel.
geschlossen: Stack-Artikel
von mathelounge
von

Ein anderes Problem?

Stell deine Frage

Willkommen bei der Stacklounge! Stell deine Frage sofort und kostenfrei

x
Made by a lovely community