Bei dem Bash Bunny handelt es sich um einen mini Linux-Computer des Anbieters Hack5. Es werden ein ARM Cortex A7 Quad-Core Prozessor, 512 MB DDR3 Arbeitsspeicher und ein schneller Speicher (8 GB SLC NAND Disk) verwendet. Dadurch startet er in weniger als 7 Sekunden. Mit einem Schalter kann zwischen zwei verschiedenen Angriffen gewählt werden und die dritte Position dient zur Konfiguration des Bash Bunnys. Als Feedback steht eine RGB-LED zur Verfügung, die frei konfiguriert werden kann. Er sieht aus wie ein größerer USB-Stick.
Einrichtung
Die Konfiguration des Bash Bunnys erfolgt sehr einfach. Der Schiebeschalter muss auf die erste Position gestellt werden, d.h. in Richtung USB-Anschluss, und kann dann an den Rechner angeschlossen werden. Dort erscheint das Gerät als neues Laufwerk. Zum Teil schlägt hier die Antivirensoftware an, da sich auf dem Laufwerk Dateien befinden, die als Schadsoftware eingestuft werden.
Hak5 veröffentlicht regelmäßig Updates für den Bash Bunny mit Korrekturen und neuen Funktionen. Daher sollte regelmäßig ein Update durchgeführt werden. Dazu muss der Bash Bunny Updater heruntergeladen werden. Er steht für verschiedene Betriebssysteme zur Verfügung. Hier beschreibe ich beispielhaft den Vorgang für Windows. Die heruntergeladene Datei muss entpackt und auf die Hauptebene des Bash Bunnys kopiert werden. Danach kann die bunnyupdater.exe Datei mit einem Doppelklick gestartet werden. Im folgenden Fenster steht nur eine Option zur Verfügung, die mit der Eingabe einer Null und der Entertaste bestätigt werden kann. Anschließend sucht das Tool nach einem Update und falls vorhanden, lädt er es herunter. Nach dem Abschluss erscheint die Meldung, dass der Bash Bunny ausgeworfen und durch Aus- und Einstecken neugestartet werden soll. Jetzt wird das Update installiert, dies wird durch die rot und blau blinkende LED angezeigt, dies dauert ein bis zwei Minuten. Sobald das Update fertig ist, erscheint wieder das Laufwerk. Danach sollte die bunnyupdater.exe Datei noch einmal gestartet werden. Im zweiten Durchgang werden die Beispiele und vorgefertigten Payloads aktualisiert.
Auf der Hauptebene liegt die Datei config.txt, darin kann die Sprache für die Ein- und Ausgaben noch konfiguriert werden. Dort muss der Wert „DUCKY_LANG us“ durch „DUCKY_LANG de“ ersetzt werden.
Programmierung
Das Schreiben von Payloads für den Bash Bunny ist einfach, da die Plattform auf den Erfahrungen des Rubber Ducky Projekts mit vielen verbesserten Annehmlichkeiten und Erfahrungen aufbaut. Im Gegensatz zum Rubber Ducky müssen Nutzlasttextdateien nicht speziell kodiert werden und können direkt auf dem virtuellen Laufwerk gespeichert werden. Hier nennt sich die Sprache „Bunny Script“, die zusätzlich BASH gekoppelt ist, wodurch bekannte erweiterte Logik und Bedingungen verwendet werden können.
Die fertigen Dateien werden im Ordner „paylaods“ und dann in den Unterordner für die passenden Schalterstellungen „switch1“ und „switch2“ abgelegt. Die Dateien müssen immer den Namen „payload.txt“ tragen. Je nachdem auf welche Position der Schalter gestellt ist, wird die eine oder die andere Datei ausgeführt.
Der nachfolgende Code zeigt den Aufbau eins Skripts für den Bash Bunny und öffnet Notepad und schreibt dort Hallo Welt. Mit „ATTACKMODE“ wird festgelegt, für welchen Gerätetyp agiert werden soll. Der Modus „HID“ steht für Human interface device und ermöglicht somit die Tastatureingabe. Mit dem Befehl „LED“ kann die integrierte RGB-LED gesteuert werden. Der erste Parameter steht für die Farbe (R = Rot, G = Grün, B = Blau, Y = Gelb, C = Cyan, M = Magenta und W = Weiß), der zweite für die Art (SOLID = dauerhaft leuchtend, SLOW = langsam blinkend, FAST = schnell blinkend, VERYFAST = sehr schnell blinkend, …). Danach folgen die mit einem Q vorangestellten Zeilen, mit den bekannten Rubber Ducky Befehlen.
ATTACKMODE HID LED M FAST Q DELAY 6000 Q GUI r Q DELAY 100 Q STRING notepad Q ENTER Q DELAY 500 Q STRING Hallo Welt LED C SOLID
Der Bash Bunny liefert eine große Anzahl an vorbereiteten Payloads mit. Sie befinden sich im Ordner „payloads“ und dann im Unterordner „library“. Dort sind sie dann weiter nach verschiedenen Kategorien sortiert. Es lohnt sich, einen Blick auf diese Beispiele zu werfen, da hier auch der Funktionsumfang des Bash Bunnys deutlich wird.
Die Skriptsprache wird durch zusätzliche Funktionen, die als „Extensions“ bezeichnet werden, erweitert. Sie befinden sich im Ordner „payloads“ und dann im Unterordner „extensions“. Es sind Shell-Skripte, die zur Laufzeit ausgeführt werden. Zum Beispiel kann mit der „run.sh“ das Öffnen eines Programms vereinfacht werden.
Bash Bunny Beispiele
Durch die vielen mitgelieferten Payloads, die regelmäßig aktualisiert werden, wird an dieser Stelle nur noch exemplarisch der „90s Mode Prank“ (payloads/library/prank/90sMode/) beschrieben. Hierbei wird ausgenutzt, dass der Bash Bunny bei einem Angriff auch gleichzeitig als Laufwerk verfügbar ist. Dadurch nutzt der Code für den „ATTACKMODE“ zusätzlich die Option „STORAGE“. Damit kann bei einem BadUSB-Angriff auf vorbereitete Powershell-Skripte zurückgegriffen werden.
# Options Width=640 Height=480 LED SETUP GET SWITCH_POSITION ATTACKMODE HID STORAGE LED ATTACK RUN WIN powershell \".((gwmi win32_volume -f 'label=''BashBunny''').Name+'payloads\\$SWITCH_POSITION\r.ps1 -Width $Width -Height $Height')\" LED FINISH
Fazit Bash Bunny
Durch die Verwendung von leistungsfähiger Hardware und einem Linux-Betriebssystem als Unterbau ist eine schnelle und flexible Hacking Hardware entstanden. Gleichzeitig wurde aber eine einfache Abstrahierung durch das virtuelle Laufwerk erreicht, die einen unkomplizierten Einstieg möglich macht. Da der Bash Bunny als eine Vielzahl von Geräten agieren und dadurch flexibel in beide Richtungen kommunizieren kann, ist er die ideale Hardware Plattform für sehr viele Anwendungsszenarien.
Allerdings ist der Bash Bunny verhältnismäßig teuer. Die Alternative ist eine Raspberry Pi Zero mit einigen zusätzlichen Bauteile zu versehen. Alex Jensen hat dazu das Tutorial „Poor mans Bash Bunny“ veröffentlicht.
USB Artikelserie
Dieser Artikel ist Teil der Artikelserie Angriffe per USB, die dem Themenschwerpunkt Hacking Hardware angehört. In dieser Artikelserie beschreibe ich verschiedene Arten von Angriffsmethoden über die USB-Schnittstelle, damit diese erkannt und effektive Gegenmaßnahmen getroffen werden können.
- Rubber Ducky – BadUSB Klassiker
- Digispark – günstiges BadUSB Device
- MalDuino – BadUSB mit Schalter
- Teensy – BadUSB mit Arduino
- DSTIKE WIFI Duck – Keystroke Injection
- Cactus WHID – BadUSB mit WiFi
- USBNinja – getarnter BadUSB
- Bash Bunny – BadUSB Multitool
- P4wnP1 A.L.O.A. – BadUSB Supertool
- USB Killer – Rechner zerstören
- 12.11.2024 (Workshop) Hacking- und Pentest-Hardware Workshop, scheible.it, Böblingen (weitere Infos)