Der InputStick ermöglicht es, Tastatur- und Mausaktionen direkt an einen PC (oder jeden anderen USB-Host) per Bluetooth zu senden. Durch die Verwendung von Standardtreibern wird er ohne weitere Installation automatisch erkannt und ist nach kurzer Zeit einsatzbereit. Der PC wird keinen Unterschied zwischen dem InputStick und einer „echten“ USB-Tastatur feststellen. Damit kann ein Angreifer einen entfernten BadUSB-Angriff durchführen. Jakub Zawadzki, der Entwickler des InputStick, legt den Fokus auf die Automatisierung per virtueller Tastatur. So gibt es Apps, die die Passworteingabe per Smartphone ermöglichen.
Die Hardware ist in Form eines normalen USB-Sticks gehalten. Das schwarze Kunststoffgehäuse wird von einer ebenfalls schwarzen beweglichen Klammer gehalten. Auf dieser befindet sich ein Druck mit dem InputStick Logo.
Die Klammer kann abgenommen werden, indem sie leicht auseinandergebogen wird. Danach kann das Gehäuse in der Mitte geöffnet werden, es wird von drei Stiften zusammengehalten. Im Inneren befinden sich zwei Platinen, die miteinander verbunden sind. Auf der grünen Hauptplatine kommt der Mikrocontroller STM32F103T8 (Datenblatt) von STMicroelectronics zum Einsatz. Das blaue Board ist für die Bluetooth-Kommunikation zuständig und verwendet den Chip CSS2541(Datenblatt) von Texas Instruments (TI).
Der InputStick fungiert als Proxy zwischen PC (oder einem anderen USB-Host) und einem Smartphone. Dabei werden die Tastatureingaben am Smartphone per Bluetooth an den Rechner übertragen. Der InputStick gibt vor, ein generisches USB-Tastatur- und Mausgerät zu sein, sodass der USB-Host keinen Unterschied zwischen InputStick und einer physischen USB-Tastatur und -Maus erkennen kann. Dadurch ist der InputStick mit fast jedem USB-Host kompatibel und so einfach zu benutzen wie eine klassische USB-Tastatur. Er wird einfach an den USB-Port angeschlossen und in wenigen Sekunden ist er betriebsbereit. Es ist nicht notwendig, spezifische Treiber oder zusätzliche Software zu installieren oder irgendeine Konfiguration vorzunehmen. Per Android- & iOS-Anwendungen können Tastatur- & Mausaktionen einfach an InputStick gesendet werden. Er übermittelt dann alle Aktionen an den Rechner per USB-Schnittstelle, indem dieser vorgibt, dass der Benutzer Tasten drückt oder die Maus bewegt.
InputStickUtility
Nachdem der InputStick an einem Rechner angeschlossen wurde und die App InputStickUtility (Android | iOS) auf dem Smartphone installiert wurde, kann der erste Test erfolgen. Dazu muss die App aufgerufen werden. Um einen neuen InputStick hinzuzufügen, muss rechts unten das runde Icon mit dem Plus angetippt werden und im nun erscheinenden Screen „Bluetooth LE scan“ ausgewählt werden. Kurz danach erscheint der InputStick in der Liste und kann ausgewählt werden. Nun erscheint der Infoscreen mit allen Informationen des Sticks.
Um ihn zu testen, muss auf dem Rechner ein Texteditor geöffnet und in der App im Menü der Punkt „MORE“ und dort die Option „Test InputStick“ ausgewählt werden. Das Tastaturlayout muss noch auf Deutsch gestellt werden und mit der Aktivierung des Buttons „Type demo text (ASCII)“ wird am Rechner die Zeichenkette geschrieben.
Im ersten Reiter „Info“ werden die Details zum aktuell verwendeten InputStick angezeigt. Dort kann der interne Namen geändert, die Version der Firmware und die MAC-Adresse eingesehen werden. Im Bereich Status wird angezeigt, ob der Stick verbunden ist, der USB-Status, ob die Konfiguration Änderung erlaubt und ob der Passwortschutz gesetzt ist.
Im nächsten Reiter „Config“ kann der Bluetooth-Name geändert werden. Eine Änderung ist aber nur 30 Sekunden, nachdem der InputStick abgeschlossen wurde, also mit Strom versorgt wurde, möglich. Darunter können die USB-Eigenschaften modifiziert werden. Dort kann bestimmt werden, welches USB-Gerät der InputStick simulieren soll. Zur Auswahl stehen Keyb. (Tastatur), Mouse (Maus), Media (Lautstärke- und Wiedergabesteuerung und Gamepad); Touch (Touchscreen) und RawHID (Datenübertragung). In den erweiterten Einstellungen können noch die USB-IDs (PID und VID) geändert werden.
Im Reiter Security kann der Passwortschutz des InputSticks aktiviert werden. Unter Firmware wird die aktuelle Firmware angezeigt und die Möglichkeit einer Aktualisierung angeboten.
USB Remote
Mit der App InputStickUtility wird der InputStick konfiguriert. Um Tastatur- und Mauseingaben per Smartphone oder Tablet vorzunehmen, wird die App USB Remote, ebenfalls von den Machern des InputSticks, verwendet (Android | iOS). Nach dem Start der App muss noch das deutsche Tastaturlayout aufgerufen werden. Dazu müssen die „Settings“ aufgerufen werden und unter „Typing options“ die Option „Keyboard layout (primary)“ auf den Wert „German (Deutsch)[DE]“ gestellt werden. Sollte das Betriebssystem des Rechners, an dem der InputStick angeschlossen werden soll, auf eine andere Sprache eingestellt sein, muss diese entsprechend vorab ausgewählt werden.
Zurück auf der Hauptübersicht wird mit dem Button „Connect“ eine Verbindung zum InputStick aufgebaut werden. Sobald die Verknüpfung hergestellt wird, erscheint ein Icon in der Form des Sticks, in der Statusleiste von Android. Über das zweite Icon im Menü, die Tastatur, können Eingaben direkt mit der virtuellen Bildschirmtastatur getätigt werden. Die Stärke des InputSticks ist die Verwendung von Makros. Dabei handelt es sich um Aufzeichnungen von mehreren Befehlen. Die ersten drei Makros können direkt mit den Buttons (M1 bis M3) ausgewählt werden, über das blaue „M“ können bis zu neun verschiedene Makros abgerufen werden. Makros können selbst definiert werden. Dazu muss im Hauptmenü der letzte Punkt mit dem „M“ als Icon aufgerufen werden. Dort kann mit dem Button „New“ und nach der Eingabe eines Namens ein neues Makro angelegt werden. Danach können mit „Add new action here“ beliebige Aktionen hinzugefügt werden. Zusätzlich können auch verschiedene Sequenzen in Textdateien vorbereitet und geladen werden. Mit dem nachfolgenden Makro wird meine Website im Edge Web-Browser geöffnet:
<name>webbrowser <keyboard>GUI + R <delay>300 <type>microsoft-edge:https://scheible.it <keyboard>Enter
Über den dritten Menüpunkt mit der „Maus“ als Icon kann der Touchscreen des Smartphones als virtuelles Touchpad für die Maussteuerung verwendet werden. Unterhalb befinden sich drei virtuelle Maustasten und rechts an der Seite kann gescrollt werden. Im vierten Menüpunkt kann ein Touchpad aufgerufen werden. Danach erfolgt im vierten Menüpunkt die Steuerung für die Multimediawiedergabe.
Damit kann ein Angreifer den InputStick nutzen, um einen entfernten BadUSB-Angriff durchzuführen. Die Hardware wird schnell und ohne Treiberinstallation erkannt und durch die Steuerung per APP über Bluetooth ist kein tiefgreifenderes Know-how notwendig.
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
- InputStick – drahtloser USB-Empfänger
- Cactus WHID – BadUSB mit WiFi
- USBNinja – getarnter BadUSB
- Bash Bunny – BadUSB Multitool
- P4wnP1 A.L.O.A. – BadUSB Supertool
- USB Killer – Rechner zerstören