Dangerous Ducks: Was ist ein USB Rubber Ducky & wie man ihn selbst bastelt?

Es sieht aus wie ein harmloser USB-Stick, ist es aber nicht! In Wirklichkeit handelt es sich um einen BadUSB, der schädliche Befehle ausführen kann. In diesem Blog tauchen wir in die Welt der BadUSB ein. Wie gefährlich sind solche BadUSB wirklich? Wie kann man sich schützen? Und wie kann man sich selbst einen BadUSB mit einem Raspberry Pico W basteln?

Wie funktioniert ein BadUSB?

Die Idee eines BadUSB ist überraschend simpel. Steckt man einen USB-Stick in einen Computer, wird dieser als USB Mass Storage Device erkannt. Der BadUSB wird dagegen als HID (Human Interface Device) identifiziert. HID sind Geräte, welche ein Mensch benutzt, um mit einem Computer zu interagieren (Tastatur/Maus). Computer vertrauen standardmässig Menschen. Das bedeutet, der Computer vertraut einer angeschlossenen Tastatur. Das ist wahnsinnig gefährlich. Der Computer denkt, dass der Input des BadUSB von einem Menschen stammt und vertraut ihm daher.

Der Computer vertraut dem BadUSB und hält ihn für einen Menschen.

Ein weiterer Grund weshalb ein BadUSB erschreckend effektiv ist, ist die Tatsache, dass der BadUSB viel schneller tippt als ein Mensch. Durchschnittlich tippt ein Mensch 40-80 Wörter pro Minute, der BadUSB schafft dagegen 1000 Wörter pro Minute.
Bevor man realisiert was überhaupt passiert, hat der BadUSB seine schmutzige Arbeit bereits erledigt. Der betroffene Computer kann infiziert und/oder Daten gestohlen werden.

Wie kann man sich gegen einen BadUSB schützen?

Bildquelle: Unsplash.com Symbol eines Schutzschildes zur Verdeutlichung wie man sich gegen einen BadUSB schützen kann.
  • Finger weg von unbekannten USB-Sticks
  • Computer beim Verlassen immer sperren
  • Best Practices «Principle of Least Privileges»
  • Passwort Authentifizierung für Admin-Zugriff
  • Spezialisierte Software, welche nur eine Verbindung
    mit bekannten USB-Geräten auf einer Whitelist zulässt

Finger weg von unbekannten USB-Sticks

Am einfachsten ist es nie unbekannte USB-Sticks in den eigenen Computer einzustecken. Ebenso sollte man den Computer immer sperren, sobald man den Arbeitsplatz verlässt. Wissensverbreitung über die Gefahr von BadUSB kann zum richtigen Verhalten beitragen!
Aber Menschen sind bekanntlich neugierig. Was kann eine Firma mit neugierigen Mitarbeitenden tun?

Best Practices «Principle Of Least Privilege (PoLP)»

Idealerweise hat jede Firma eigene Cybersicherheits-Richtlinien. Das Prinzip der geringsten Privilegien (PoLP) besagt, dass Benutzer nur Zugang zu spezifischen Daten und Ressourcen erhalten sollen, welche für die Erfüllung ihrer Aufgaben erforderlich sind. Ein gewöhnlicher Benutzer sollte keine Admin-Berechtigungen haben. Daher kann eine Passwort-Authentifizierung für Admin Zugriff eingerichtet werden.

Windows Defender Dialog für Admin Berechtigungen
Bildquelle: Eigener Screenshot eines Windows Security Dialog. Meistens muss der BadUSB etwas als Administrator ausführen. Per Default ist bei Windows nur ein Klick auf «Ja» notwendig, aber kein Passwort. Dies stellt kein Hindernis für einen BadUSB dar. Befolgt man PoLP und verlangt ein Passwort für Admin-Berechtigungen, kommt der BadUSB hier nicht weiter.

BadUSB mit einem Raspberry Pico W basteln

Raspberry Pi Pico
Bildquelle: Raspberry Pico von Unsplash.com. Es gibt verschiedene Arten von BadUSB Sticks, eine davon wird Rubber Ducky genannt. Einen solchen Rubber Ducky kann man sich bei Hak5 für $79.99 kaufen. Ein Raspberry Pico ist dagegen wesentlich günstiger und völlig ausreichend für ein Proof of Concept, da es nicht wie ein echter USB-Stick aussehen muss.

Schritt-für-Schritt Anleitung

Demo-Video eines BadUSB.

        1. Repository klonen: git clone https://github.com/dbisu/pico-ducky.git.
        2. CircuitPython für Raspberry Pi Pico/Raspberry Pi Pico W herunterladen (CircuitPython v.8.2.9 wurde verwendet).
        3. Raspberry Pico via USB-Anschluss mit Kabel an Computer anschliessen und dabei den Boot-Knopf gedrückt halten. Das Raspberry Pico wird als Wechseldatenträger mit dem Namen RPI-RP2 auf dem Computer angezeigt.
        4. Die heruntergeladene .uf2 CircuitPython Datei auf das Pico (RPI-RP2) kopieren. Das Pico startet neu und die Anzeige verschwindet. Nach einigen Sekunden verbindet sich der Wechseldatenträger wieder und zeigt sich nun als CIRCUITPY.
        5. Herunterladen von adafruit-circuitpython-bundle-8.x-mpy-YYYYMMDD.zip und entpacken.
          adafruit-circuitpython-bundle-8.x-mpy-20231224.zip wurde verwendet.
        6. Dateien in den lib-Ordner auf dem Raspberry kopieren:

          Bildquelle: Eigener Screenshot. Nun in den lib Ordner vom kürzlich entpackten adafruit-circuitpython-bundle Ordner navigieren. Dann folgende Dateien und Ordner in den lib-Ordner auf dem Raspberry Pico kopieren: adafruit_hid, adafruit_debouncer.mpy, adafruit_ticks.mpy, asyncio, adafruit_wsgi.
        7. Dateien in den Root-Ordner auf dem Raspberry kopieren:

          Bildquelle: Eigener Screenshot. Vom geklonten Pico-Ducky Repository die folgende Dateien kopieren und in den Root-Ordner vom Raspberry Pico kopieren: boot.py, duckyinpython.py, code.py (ersetzt die Datei in Raspberry Pico), webapp.py, wsgiserver.py.
        8. Nur Pico W: Im Root-Ordner vom Raspberry ein secrets.py erstellen. Diese Datei enthält den AP-Namen und das Passwort, die vom Pico W erstellt werden sollen.
          secrets = { 'ssid' : "BadAPName", 'password' : "badpassword" }.
        9. Ducky Skripts findet man hier.
          payload.dd ist für die Funktionalität des BadUSB verantwortlich.
          pico-ducky unterstützt nur DuckyScript 1.0, nicht 3.0.
          payload.dd Datei in den Root-Order vom Raspberry kopieren.

Vorsicht!
Sobald payload.dd kopiert wird, startet das Pico neu und führt nach 0.5s das Skript aus. Deshalb das Pico sofort vom Computer trennen, sonst wird der eigene Computer Opfer vom frisch erzeugten BadUSB.

Beitrag teilen

Murielle Lerch

Murielle Lerch ist leidenschaftliche Software Entwicklerin mit einer Faszination für Cybersicherheit. Sie ist Raspberry Pi Enthusiastin und liebt es neue Dinge auszuprobieren. Aktuell arbeitet sie bei der SUVA und bloggt aus dem CAS Modern Software Engineering & Development.

Alle Beiträge ansehen von Murielle Lerch →

Schreibe einen Kommentar