Im Juli 2019 sind mehrere Sicherheitslücken in Bezug auf kabellose Eingabegeräte von Logitech bekannt geworden. Dabei handelt es sich um vier verschiedene Sicherheitslücken. Über diese haben Sie in unserem vergangenen Blog gelesen. Heute möchte ich aus technischer Sicht auf eine ältere und sehr ähnlich Sicherheitslücke, den sogenannten «Mousejack», eingehen. Damit ist es einem Angreifer möglich, eigene Befehle in die Funkverbindung von Maus und Tastatur des Opfers einzuschleusen, und so den Computer zu übernehmen. Von dieser Sicherheitslücke sind neben Logitech auch Hersteller wie Dell, HP, Lenovo und Microsoft betroffen.

Wie unter anderem Theverge publiziert hat, ist die Mousejack-Lücke immer noch verbreitet. Die Sicherheitslücke besteht im beiliegenden Dongle der Maus und Tastatur. Derzeit ist im Fall von Logitech nicht genau bekannt, ab welchem Zeitraum Modelle ausgeliefert wurden, welche die Lücke nicht mehr aufweisen. Ein Rückruf der Produkte durch den Hersteller fand nicht statt. Darum sind anfällige Dongles weiterhin im Umlauf und käuflich zu erwerben. Umso mehr lohnt es sich, über die Lücke genauer Bescheid zu wissen. Doch wie kann diese technisch nachvollzogen werden. Und wie gelingt es einem Angreifer sie auszunutzen?

Der Grund

Die Hersteller von Eingabegeräten setzen oft proprietäre Übertragungsprotokolle ein. Dies bedeutet, dass Abweichungen zu Standards des IEEE (Institute of Electrical and Electronics Engineers) oder der SIG (Bluetooth Special Interest Group) bestehen. Aus Sicht des Herstellers sollen die Produkte möglichst einfach zu bedienen und unter einander kompatibel sein (und preiswert in der Produktion). Die Sicherheit stand in der Vergangenheit nicht im Fokus. So bestehen die bekannten Lücken ausschliesslich bei Produkten, bei denen ein proprietäres Protokoll und damit ein Dongle eingesetzt wird. Verbindungen über Bluetooth sind nicht betroffen. Sie setzen das standardisierte Protokoll ein*.

mouse1

Logitech Dongle für die Funkverbindung

Sichtbare Funkquellen

Soll eine Funkübertragung analysiert werden, wird dazu ein sogenanntes SDR (Sofware Definied Radio) eingesetzt. Dabei handelt es sich um eine spezielle Platine im Preisbereich von mehreren hundert oder tausend Franken. Damit kann das Funkspektrum abgehört und visualisiert werden. Mit speziellen Filtern und teils selbst angepassten Modulen kann im Anschluss die Aufschlüsselung des Signals stattfinden. Um einen rudimentären Eindruck zu erhalten, sehen Sie im nachfolgenden Bild ein SDR. Es findet die Analyse statt, ob der Funkchip des Logitech Dongle auf dem gewünschten Kanal sendet (in diesem Fall Kanal eins).

mouse2

HackRF One SDR Board

 

mouse3

Analyse des Funkspektrums

Das Problem

Die eigentliche Sicherheitslücke ist trivial. Zwar werden bei den meisten Tastaturen die übermittelten Zeichen verschlüsselt, wodurch Drittpersonen nicht mithören können. Die Signale der Mausbewegung werden hingegen unverschlüsselt übertragen. Bei der angesprochenen Sicherheitslücke wird vom Dongle nicht überprüft, ob es sich um eine Maus oder Tastatur handelt. Theoretisch kann eine Maus lediglich Mausklicks, sowie Bewegungsrichtungen angeben. Das ungeprüfte Entgegennehmen der Befehle ermöglicht es, unverschlüsselte Tastaturanschläge in die Verbindung einzuschleusen. Die Eingaben werden dann vom USB Dongle akzeptiert und auf den USB Bus des Computers gesendet.

Die Lücke ausnutzen

Das eigentlich Problem (Annahme von unverschlüsselten Befehlen, aufgrund mangelnder Validierung) ist einfach zu verstehen. Die Umsetzung eines Angriffs dagegen ist dann doch etwas knifflig. Um das grob nachzuvollziehen, sollten wir einen groben Überblick über das Funk-Protokoll erlangen.

Protokoll

Die Übertragung findet im freien ISM (Industrial, Scientific and Medical) Band auf 2.4 Ghz statt. Oft kennen wir das Band vom WLAN. Zusätzlich können auch Babyphones und weitere Geräte lizenzfrei auf diesem Band betrieben werden. Entsprechend viele Geräte sind vorhanden und Störungen zu erwarten. Darum versuchen die Eingabegeräte eine möglichst störungsfreie Kommunikation sicherzustellen. Dies geschieht mit einer angepassten Variante von frequency hopping und einer zwei-weg Kommunikation. Der Wechsel der Kanäle, das sogenannte hopping, findet erst statt, wenn die Verbindung gestört wird. Mittels der bidirektionalen Kommunikation kann dies umgesetzt werden und stellt die Fehlerkorrektur sicher.

Dies kann wie folgt nachvollzogen werden:

Wird eine Mausbewegung ausgeführt, wird der Befehl von der Maus an den Empfänger gesendet. War die Übertragung erfolgreich, bestätigt dieser den Empfang. Bleibt eine Meldung für rund 250 Mikrosekunden aus, geht die Maus von einer Störung aus.

Somit wird eine Antwort, welche länger als 250 Mikrosekunden dauert, vom Dongle sowie der Maus als Timeout angesehen. Das Funkprotokoll ist auf schnelle Rückmeldungen ausgelegt. Hier besteht das Problem, dass ein SDR mit dieser Geschwindigkeit nicht mithalten kann. Zwar eignet er sich, um die Funktionsweise der Kommunikation zu analysieren und nachzuvollziehen. Für den finalen Angriff muss jedoch auf eine andere Hardware ausgewichen werden. Optimalerweise dieselbe, wie bereits in den Eingabegeräten verwendet wird. Dabei handelt es sich um den populären nRF24L Chip.

Die Research Firma Bastille hat für den Chip eine entsprechende Firmware programmiert (eine Art «Betriebssystem»). Damit ist es möglich, die bidirektionale Kommunikation, sowie den Kanalwechsel ausreichend schnell durchzuführen. So sind wir in der Lage einen originalen Logitech Dongle (basierend auf dem nRF24L Chip) neu zu flashen. Dies bedeutet, dass wir die originale Firmware durch die neue ersetzen. Damit haben wir ein geeignetes «Angriffswerkzeug» geschaffen. Für Personen, welche diesen Aufwand scheuen, gibt es ein kompatibles Board mit dem nRF24L Chip zu kaufen. Wir überprüfen noch kurz, ob unser «Angriffs Dongle» vom Linux korrekt erkannt wurde.

lsusb

Ausführen des Angriffs

Der Stick wird korrekt unter dem Namen «Nordic Semiconductor ASA» angezeigt.

mouse4

Anzeigen der USB Geräte

Mit dem in Python geschriebenem Script «Jackit» können wir den Angriff starten. Es ist frei auf der Plattform GitHub verfügbar. Mittels einem «git clone» wird das Script auf unseren lokalen Computer (vorzugsweise Linux) kopiert.

git clone https://github.com/insecurityofthings/jackit.git

Im readme sind die Abhängigkeiten festgehalten. Schnell sind diese mit nachfolgendem Befehl installiert und die Voraussetzungen für den Angriff gegeben.

pip install -e .

Doch wie kann festgelegt werden, was gesendet wird? Dies wird mit den verbreiteten Rubberducky Syntax erledigt. Im nachfolgenden Beispiel öffnen wir lediglich die Kommando Zeile und teilen unserem «Opfer» mit, es solle bitte die Firmware des Dongle auf eine sicherere Version aktualisieren.

CODE
GUI r
DELAY 500
STRING cmd
ENTER
DELAY 5000
STRING msg %username% Bitte aktualisieren Sie die Firmware des USB Dongles Ihrer Maus / Tastatur auf eine aktuelle Version um Anfaelligkeiten auf die Mousejack Sicherheitsluecke zu vermeiden!
DELAY 500
ENTER

Mittels dem Befehl «jackit» starten wir den Scan. Wir sehen die Geräte in unserer Umgebung. Das RubberDucky Script haben wir bereits mit -- angegeben.

jackit --layout CH --script target_notify.txt

mouse5

Scan nach verwundbaren Geräten

Nach der Auswahl des «Opfers» wird der Angriff ausgeführt. Die Kommandozeile wird beim «Opfer» geöffnet und die Meldung dem Benutzer angezeigt. Nachfolgend ein Screenshot des Angreifers und des angegriffenen Computers.

mouse6

Ausführen des Angriffs

 

mouse7

Ausgeführter Code bei dem "Opfer"

Der Angriff konnte damit erfolgreich nachgestellt werden. Wir sind nun in der Lage, jegliche Befehle auf dem Computer des «Opfers» auszuführen!

Fazit

Um sich der Gefahr einer Sicherheitslücke bewusst zu sein, ist das grobe Verständnis Voraussetzung. In diesem Blog haben Sie erfahren, wie ein Angriff aus technischer Sicht abläuft und was die Voraussetzungen sind. Damit dieser Blog aber nicht als hacking Anleitung verstanden wird, wird absichtlich nicht weiter auf die Befehle eingegangen, welche für die Fortführung des Angriffs verwendet werden können. Es sei nur so viel dazu gesagt: Wie alles andere, ist auch das im Internet zu finden.

 

* Zumindest nicht von dieser Sicherheitslücke. Generell bedeutet ein Standard nicht, dass er fehlerfrei ist. Dies zeigen die kürzlich bekannt gewordenen Sicherheitslücken.

goSecurity BLOG: Wie gefährlich ist die Bluetooth Schwachstelle KNOB

goSecurity BLOG: Dragonblood Vulnerability WPA3 Standard geknackt

 

Links

https://www.theverge.com/2019/7/14/20692471/logitech-mousejack-wireless-usb-receiver-vulnerable-hack-hijack

http://www.bastille.net/research/vulnerabilities/mousejack/technical-details

Informationen zum Autor
Tore Schlatter
Autor: Tore Schlatter
Seit klein auf ist die IT eine Leidenschaft für mich. Damit verbunden die Faszination der Möglichkeit, Fehler und Schwachstellen aufzudecken. So war mir bereits vor dem Studium an der STFW klar, dass ich im Bereich der IT Security arbeiten werde. Ein Jahr nach meinem Studium, kann ich bei der goSecurity meine Leidenschaft ausleben. Das Optimum für den Kunden zu erreichen steht für mich an erster Stelle. So gelingt es mir, Ihre Sicherheitslöcher vor den kriminellen Angreifern aufzudecken.