Funktastatur und Funkmaus hacken und abhören. Ist meine sicher?

Bereits im März 2015, als ich meine neue Microsoft Sculpt Ergonomic Desktop Tastatur auspackte, testete und darüber berichtete, stellte ich mir die Frage nach deren Sicherheit.

Auf der Verpackung sind zwar reichlich Fotos, an denen man erkennen kann, dass es sich um ein Set aus Funktastatur und Funkmaus handelt. Das Anschließen ging ja dann auch sehr bequem und einfach, aber ich fand kein Wort über die Funktechnolgie oder deren Sicherheit. Weder auf der Verpackung, noch im Produkthandbuch. Nur ein kleiner Beipackzettel auf französisch wies darauf hin, dass es bei meinem Exemplar um einen 2.4 Ghz-Empfänger Version 9 (für das Exemplar von 01/2017) handelte.

Aber welches Protokoll kommt zum Einsatz? Ist die Übertragung von der Funktastatur zum Dongle verschlüsselt? Und wenn ja, mit welchem Standard? Keine Angabe.

Mittlerweile wurde die Artikelbeschreibung z. B. bei amazon aktualisiert. Und man kann dort als Feature lesen:
Advanced Encryption Standard (AES3) -Technology, die auf den Schutz Ihrer Informationen ausgelegt ist, indem Ihre Tastenanschläge verschlüsselt werden.

* Advanced Encryption Standard (AES) ist eine elektronische Datenverschlüsselungs-spezifikation, die vom U.S. National Institute of Standards and Technology (NIST) entwickelt wurde. Sie wurde gleich im Anschluss von der US-Regierung als zugelassene Verschlüsselungstechnologie nach FIPS-197 übernommen.
Was AES ist, kann man hier nachlesen. Kurz gesagt: es ist ein moderner und sicherer Verschlüsselungsalgorithmus, den man vertrauen kann.


Nun habe ich aber auch noch ein altes Modell aus 2015 und da stellt sich die Frage, wie hier die Sicherheit ist.

Denn in der Tastatur, der Maus und dem Dongle werkelt ein nRF24LU1+ Chip von Nordic Semiconductor, der auf 2.4 GHz sendet und empfängt. Und eben von diesem Chip ist immer wieder die Rede, wenn es darum geht, dass Tastaturen und Mäuse anfällig sind für Dass ich natürlich nicht möchte, dass irgendwer meine eingegebenen Passwörter mitliest, ist klar. Aber noch schlimmer wäre, wenn jemand meinem Dongle falsche Tastaturanschläge unterschieben könnte und damit die Kommandozeile öffnet und meinen Rechner übernimmt oder einen Trojaner installiert.

Angriffsvektor

Zu diesem Thema gibt es von IT Sicherheitsexperten wie SySS, Remote Exploit, Dreamlab oder Samy Kamkar einige Dokumente und Proof of Concepts, die beweisen, dass zahlreiche Hardware auf nRF24-Basis diese Schwachstellen aufweist und gehackt werden kann. SySS hat z. B. folgende Geräte getestet: Product Name Keyboard USB Dongle Cherry AES B.UNLIMITED nRF24LE1 nRF24LU1+ Fujitsu Wireless Keyboard Set LX901 CYRF6936 CYRF6936 Logitech MK520 nRF24LE1 nRF24LU1+ Microsoft Wireless Desktop 2000 nRF24LE1H (OTP) nRF24LU1+ Perixx PERIDUO-710W nRF24LE1H (OTP) nRF24LU1+ und festgestellt, dass alle 5 für eine Replay-Attacke anfällig sind, alle bis auf Fujitsu (ungesichert) für Mouse Spoofing und zumindest Cherry, Logitech und Perixx für eine Keystroke Injection, also das gefährliche Einspielen beliebiger Tastenkombinationen.

Samy Kamkar berichtet darüber, dass bei seiner Microsoft-Tastatur der Schlüssel immer gleich blieb und ganz einfach per XOR mit einer 8-bittigen Zahl (bei ihm 0xCD) zurückgerechnet werden kann. Diese Zahl lässt sich durch eine einfache statistische Analyse der Häufigkeitsverteilung herausfinden und danach kann jedes einzeln eingegeben Zeichen mitgelesen werden. Zudem können dann natürlich auch Tastaturanschläge so umgerechnet werden, dass sie von dem Dongle angenommen werden, so als ob sie vom Originalgerät stammen würden.




Beim Drücken auf immer dieselbe Taste stellte er fest, dass die gesendeten Bytes für den Inhalt (den Tastencode, "Payload") auch gleich blieb. Praktischerweise wurde das Byte, mit dem XOR-kodiert wurde, auch gleich mitgeliefert. In seinem Fall war dies 0xCD.





Durch ein XOR auf den empfangenen ("verschlüsselten") mit 0xCD bekam er das ursprüngliche Zeichen und konnte so alles dekodieren und mitlesen, was auf seiner Tastatur getippt wurde.

Eine ziemliche Katastrophe! Was war, wenn meine Microsoft Sculpt genauso anfällig war? Warum auch sollte meine Sculpt anders übertragen als die getestete Microsoft Wireless Desktop 2000? Ich hatte keine Lust, abhörbar zu sein und noch viel schlimmer: Vielleicht irgendein Freak im DriveBy (im Auto und mit erhöhter Sendeleistung) meinen Computer sabotiert oder übernimmt.

Also wieder zurück zur kabelgebundenen, unergonomerischen Tastatur und auf das gute Tippgefühl verzichten? Mittlerweile hatte ich meine Sculpt ja auch noch mit einem Scroll-Joystick ausgestattet, liebgewonnen und hatte eigentlich keine Lust auf diesen Rückschritt. Ich fragte mich, ob es eine Lösung sei, Sendeantenne der Tastatur und Empfangsdongle zusammen in eine kleine abgeschirmte Box an Verlängerungskabeln zu hängen, so dass keine 2.4 Ghz-Strahlung mehr ein- oder austreten könnte und damit ein Abhören / Hacken verhindern würde.

Der Chip nRF24LU1+

Mein erster Blick ging in das Datenblatt von Nordic Semiconductor zum nRF24LU1+, der auch in meiner Sculpt verbaut war. Seine Feature sind unter anderem: Der nRF24LU1+ war also nicht nur 2.4GHz Empfänger und Sender, sondern ein richtiger kleiner, programmierbarer Mikrocontroller, der mit einem Arduino vergleichbar ist. Plus: Es enthält einen AES-Coprozessor zur Verschlüsselung. Da stellt sich mir doch die Frage: Warum sollte Microsoft eine so stümperhafte "Verschlüsselung" implementieren, wenn doch sicheres AES auf dem nRF24LU1+ gleich kostenlos mitgeliefert wird?

Mein nächster Schritt war, mir einen nRF24LU1+ USB Dongle zu besorgen. Mit diesem könnte ich dann meine Tastatur, Ziffernpad und Maus abhören, analysieren und herausfinden, ob sie auch verwundbar ist und wenn ja, ob die Lösung mit der Metallbox funktionieren würde und ich dann nichts mehr mit dem Dongle empfangen / senden könnte.


Zuerst versuchte ich es mit einem günstigen nRF24LU1P16 Dongle mit aufgedruckter Antenne und SPI-Interface. Bei der Programmierung tat ich mich dann aber doch ein wenig schwer und ehrlich gesagt hatte ich gerade keine große Lust, mich durch die 188 Seiten des Data Sheets zu quälen.

Das werde ich mal machen, wenn ich die Muße dazu habe und mal eine Anwendung habe, wo ich Daten per Funk von einem Arduino zum anderen übertragen muss.

Aber derzeit wollte ich schnell zu einem Ergebnis kommen und nicht in tagelange Recherche, wie der nRF24 funktioniert, untergehen.


Als ich über ein Projekt von Bastille Research stieß, dass eine fertige Linux Software zum Scannen entwickelt hatte und dazu nur einen CrazyRadio-Dongle brauchte, der dann über USB mit einer neuen Firmware programmiert werden konnte, bestellte ich mir solch einen aus China.

Diese Version des Dongles hat außerdem eine externe Antenne, mit der ein besserer Empfang gewährleistet sein sollte. Es gibt auch noch eine weitere Version, die einen Verstärker eingebaut hat und so noch weiter senden kann. Die günstigere sollte mir reichen.

Als Linux-System bot sich natürlich ein Raspberry Pi Zero W an. Über WLAN und SSH konnte ich auf ihn zugreifen und die entsprechenden Programme starten und überwachen. Und ein USB-Port für den nRF-Dongle war auch vorhanden. Mit einer USB- Powerbank hat man so eine kompakte, mobile Lösung z. B. um zu checken, bis in welche Entfernung das Sendesignal empfangbar ist. Mit dieser Hardware. Mit den entsprechenden Antennen und Equipment ist natürlich noch mehr möglich.

Scannen, sniffen, analysieren

Als das Teil endlich aus China ankam und die neue Firmware geflasht war, führte ich einen Scan aus. Dabei schaltet der Dongle nacheinander durch alle Kanäle und protokolliert alle Datenpakete, die es dabei empfängt.

Nach einer Weile haben sich ein paar Datensätze angesammelt: KEY ADDRESS CHANNELS COUNT SEEN TYPE PACKET 6 05:59:2A:??:?? 40 1 0:15:15 ago Unknown 49:37:2D:62:8A:25:EA:34:AD:54 4 51:3B:54:??:?? 42 1 1:28:18 ago Unknown 2A:A2:A1:9B:A8:67:27:76:B8:94:AC:CB:2B:5C:4A:AB:AE:9D ... 2 A8:3D:78:??:?? 68,72 137 0:28:26 ago Unknown 1 C0:0B:ED:??:?? 27,31 250 0:00:01 ago Microsoft HID 08:90:8F:01:A6:92:40:00:00:03:00:F4:FF:00:00:00:00:10:85 3 09:1A:90:??:?? 18 1 1:45:36 ago Unknown 02:A0:02:09:29:20:18:29:A3:C8:44:05:22:11:00:20 5 55:69:95:??:?? 30 1 0:23:15 ago Unknown A5:AA:8A:EA:AA:DA:DA:B6:D4:8D:65:5A:6A:2A:6A:22 Am meisten Pakete wurden von den MACs A8:3D:78:... und C0:0B:ED:... abgehört. Wobei C0:0B:ED meine Sculpt Mouse ist und A8:3D:78 meine Sculpt Tastatur. Der Rest kommt von irgendwelchen Nachbarn und interessiert uns nicht weiter.

Tastatur

Abhören

Nun kann ich der Hacking Software sagen, dass er nur auf dem Kanal 68 und für die MAC A8:3D:78:... horchen soll und bekomme dann jeden Tastenanschlag mit. Für den Test drücke ich immer wieder die selbe Taste, das kleine 'a': Zl Zeitpunkt Ch Ln MAC Daten (Zl=Zeile, Ch=Kanal, Ln=Bytelänge) 1 12:55:07.359 68 20 A8:3D:78:??:?? 09:98:84:01:1D:34:BE:D9:41:EA:3E:7C:E8:EA:EE:8E:0F:3B:42:D5 2 12:55:07.670 68 20 A8:3D:78:??:?? 09:98:84:01:E3:26:E3:E3:FB:55:82:78:E3:AF:7B:CB:E2:0E:13:6D 3 12:55:07.719 68 8 A8:3D:78:??:?? 08:38:84:01:92:AB:00:73 4 12:55:07.726 68 8 A8:3D:78:??:?? 08:38:84:01:92:AB:00:73 5 12:55:07.773 68 8 A8:3D:78:??:?? 08:38:84:01:92:AB:00:73 6 12:55:07.805 68 20 A8:3D:78:??:?? 09:98:84:01:AA:6A:1B:FA:FB:B6:32:B1:55:6E:4D:10:A3:5B:96:74 7 12:55:08.230 68 8 A8:3D:78:??:?? 08:38:84:01:94:AB:00:75 8 12:55:08.275 68 8 A8:3D:78:??:?? 08:38:84:01:94:AB:00:75 9 12:55:08.284 68 8 A8:3D:78:??:?? 08:38:84:01:94:AB:00:75 A 12:55:08.319 68 20 A8:3D:78:??:?? 09:98:84:01:4C:A5:31:88:C0:FD:AC:B1:70:C1:61:4F:7C:C2:5A:98 B 12:55:08.666 68 20 A8:3D:78:??:?? 09:98:84:01:E8:72:58:82:81:D9:82:42:66:6A:44:71:01:47:EA:1C C 12:55:08.672 68 20 A8:3D:78:??:?? 09:98:84:01:E8:72:58:82:81:D9:82:42:66:6A:44:71:01:47:EA:1C D 12:55:08.714 68 8 A8:3D:78:??:?? 08:38:84:01:96:AB:00:77 E 12:55:08.721 68 8 A8:3D:78:??:?? 08:38:84:01:96:AB:00:77 F 12:55:08.766 68 8 A8:3D:78:??:?? 08:38:84:01:96:AB:00:77 G 12:55:08.806 68 20 A8:3D:78:??:?? 09:98:84:01:F1:FF:18:FF:96:A2:C4:DB:CB:17:86:1B:BD:D6:A8:2C H 12:55:09.121 68 20 A8:3D:78:??:?? 09:98:84:01:16:CF:5A:2D:9D:DC:D5:65:DC:08:FC:DA:63:B1:06:52 I 12:55:09.128 68 20 A8:3D:78:??:?? 09:98:84:01:16:CF:5A:2D:9D:DC:D5:65:DC:08:FC:DA:63:B1:06:52 J 12:55:09.173 68 8 A8:3D:78:??:?? 08:38:84:01:98:AB:00:79 K 12:55:09.220 68 8 A8:3D:78:??:?? 08:38:84:01:98:AB:00:79 Manche Datenpakete sind doppelt aufgeführt (etwa B und C, H und I). Hier liegen die Zeitpunkte nur um 6 oder 7ms auseinander und es ist davon auszugehen, dass dies ein und das selbe Paket ist, lediglich zweimal protokolliert.

Bei 3-5, 7-9, D-F und J-K finden sich gleichlautende Pakete, die aussagen: "letzte Taste ist noch gedrückt". Je länger ist eine Taste niederhalte, je mehr Wiederholungen gibt es hier. Auffallend ist, dass sich hier nur das letzte Byte erhöht, und dies jedesmal um 2.

Aber die eigentliche interessanten Daten sind die um die Dubletten bereinigten: Zl Zeitpunkt Ch Ln MAC Daten (Zl=Zeile, Ch=Kanal, Ln=Bytelänge) 1 12:55:07.359 68 20 A8:3D:78:??:?? 09:98:84:01:1D:34:BE:D9:41:EA:3E:7C:E8:EA:EE:8E:0F:3B:42:D5 2 12:55:07.670 68 20 A8:3D:78:??:?? 09:98:84:01:E3:26:E3:E3:FB:55:82:78:E3:AF:7B:CB:E2:0E:13:6D 6 12:55:07.805 68 20 A8:3D:78:??:?? 09:98:84:01:AA:6A:1B:FA:FB:B6:32:B1:55:6E:4D:10:A3:5B:96:74 A 12:55:08.319 68 20 A8:3D:78:??:?? 09:98:84:01:4C:A5:31:88:C0:FD:AC:B1:70:C1:61:4F:7C:C2:5A:98 B 12:55:08.666 68 20 A8:3D:78:??:?? 09:98:84:01:E8:72:58:82:81:D9:82:42:66:6A:44:71:01:47:EA:1C G 12:55:08.806 68 20 A8:3D:78:??:?? 09:98:84:01:F1:FF:18:FF:96:A2:C4:DB:CB:17:86:1B:BD:D6:A8:2C H 12:55:09.121 68 20 A8:3D:78:??:?? 09:98:84:01:16:CF:5A:2D:9D:DC:D5:65:DC:08:FC:DA:63:B1:06:52 wobei hier stets "09:98:84:01" am Anfang steht und wohl den Datenheader darstellt. Als für uns interessante, variable Teile stehen dann noch: 1D:34:BE:D9:41:EA:3E:7C:E8:EA:EE:8E:0F:3B:42:D5 E3:26:E3:E3:FB:55:82:78:E3:AF:7B:CB:E2:0E:13:6D AA:6A:1B:FA:FB:B6:32:B1:55:6E:4D:10:A3:5B:96:74 4C:A5:31:88:C0:FD:AC:B1:70:C1:61:4F:7C:C2:5A:98 E8:72:58:82:81:D9:82:42:66:6A:44:71:01:47:EA:1C F1:FF:18:FF:96:A2:C4:DB:CB:17:86:1B:BD:D6:A8:2C 16:CF:5A:2D:9D:DC:D5:65:DC:08:FC:DA:63:B1:06:52 Jeder dieser 16-Byte (128 Bit) - Sequenzen steht für ein einzelnes 'a'. Es gibt keine Wiederholungen und ich kann keine Muster erkennen. Mein erster Tipp: Aus meinen Erfahrungen mit dem Service-Fall meiner Sculpt, bei der meine Maus kaputt gegangen war und ich eine neue wollte, man mir aber sagte, ich bräuchte das ganze Set, denn mit dem neuen Empfänger würde meine alte Tastatur nicht mehr funktionieren bestätigt sich die These mit den in der Fabrik geflashten AES Keys. Sonst hätte man mir wohl kaum eine Tastatur geschenkt, wenn das nicht nötig gewesen wäre. Und für wahr: Als ich beide Sets miteinander mischen wollte, blieb Maus oder Tastatur tot. Es funktioniert nur mit dem jeweiligs passenden Dongle. So gebrauche ich momentan auch 2 Empfänger Dongles: einen für die neue Maus und einen für die alte Tastatur.

Ohne an die Hardware zu kommen, kommt man also nicht an den AES-Key. Und ohne wird man arge Schwierigkeiten haben, die 128-bit-AES-Verschlüsselung zu knacken. Da muss man schon sehr sehr lange sehr sehr viele Tastendrücke abfangen und eine Menge rechnen.

Mit dieser Erkenntnis ergibt sich aber ein anderer Angriffsvektor: Wenn man sich aber die Hardware ohne bemerkt zu werden (evtl. das nicht benutzte NumPad?) "ausleihen" könnte, wäre es wohl möglich, über den Debug-Kanal den Speicher des nRF24 auszulesen und so an den AES-Key zu kommen, mit dem man Abgehörtes dann entschlüsseln könnte.

Um die Sicherheit besser beurteilen zu können, habe ich noch weiter fleißig 'a' gedrückt und zahlreiche Datenpakete aufgefangen. Daraus habe ich eine Statistik über die Häufigkeit der Vorkomnisse der Bytewerte erstellt: Insgesamt 2821 Datensätze à 16 Bytes (insg. 45136 Bytes) ausgewertet. Vorkommen des Byte-Inhaltes (alle Werte über alle 16 Positionen): 0.. 1.. 2.. 3.. 4.. 5.. 6.. 7.. 8.. 9.. A.. B.. C.. D.. E.. F.. ..0 187 174 177 175 142 150 176 193 190 191 180 141 210 212 145 168 ..1 146 171 176 184 176 185 169 183 154 168 199 165 153 195 202 158 ..2 174 164 184 189 180 164 168 162 174 205 162 144 185 173 171 160 ..3 176 166 194 174 195 167 179 160 178 169 190 167 161 180 133 159 ..4 164 208 193 180 148 169 194 186 147 155 172 157 181 182 170 180 ..5 166 181 181 186 144 202 176 190 154 158 140 152 169 203 168 145 ..6 181 217 186 194 181 173 181 174 162 146 214 181 195 194 182 181 ..7 184 198 192 175 155 146 176 158 175 191 165 167 187 177 182 154 ..8 194 174 196 172 170 173 172 208 179 173 149 175 179 174 174 173 ..9 157 183 164 182 170 154 182 188 181 190 162 174 194 216 200 180 ..A 159 171 172 167 172 191 200 158 172 181 200 206 189 214 166 166 ..B 182 197 167 161 166 151 204 174 186 179 178 190 179 192 173 191 ..C 202 195 185 160 199 184 197 179 176 186 186 196 190 176 169 175 ..D 159 173 146 170 194 167 194 175 187 178 219 161 163 171 190 182 ..E 174 165 187 180 189 173 157 177 206 170 152 179 186 162 195 156 ..F 142 183 191 181 168 173 166 200 167 166 163 160 177 171 163 180 Kleinste Zahl: 133, größte Zahl: 219, Durchschnitt: 176,3125 Hier kann ich keine Ausreißer oder Muster erkennen. Die Bytewerte sind so ziemlich gleichverteilt. Die Summe von kleinster Zahl plus größter Zahl durch 2 ergibt 176 und damit ziemlich genau den Durchschnitt. Die maximale Abweichung vom Durchschnitt ist 43 und damit ca. 17% vom Maximum.

Nun könnte man sich noch die Werte an den einzelnen Byte-Positionen (1 bis 16) anschauen, ob es da noch Auffälligkeiten gibt, aber ehrlich gesagt, habe ich keine Lust mehr, meine A-Taste zu maltretrieren und mir eine Sehnenscheidenentzündung zu holen, um genügend Daten für eine aussagekräftige Statistik zu erhalten. Für mich sieht das sicher genug verschlüsselt aus.

Also Entwarnung für das Abhören der Tastatur. Das selbe gilt übrigens auch für den externen Ziffernblock. Der funkt auf die gleiche Art wie die große Tastatur und bedarf keiner gesonderten Betrachtung.

Attacke Tastenanschläge simulieren (Keystroke Injection)

Doch was ist mit der Keystroke-Injection? Funktioniert die vielleicht trotzdem? Theoretisch kann ich ja gegenüber dem Empfänger vorgeben, die Tastatur zu sein, in dem ich die zuvor abgehörte MAC-Adresse benutze. Ist in den 16 Byte Payload eine Checksumme oder der Teil eines Hashes, mit dem der Empfänger die Gültigkeit der MAC verifizieren kann? Dann dürfte er solche Daten einfach ignorieren. Gibt es keinen solchen Sicherheitscheck, sollten irgendwelche nicht vorher bestimmbare Tastendrucke ankommen. Das wäre natürlich unschön.

Auch hierfür gibt es schon fertige Tools. Aber dieses zeigen bei mir keinen Erfolg: [+] Select target keys (1-2) separated by commas, or 'all': [all]: all [-] Target A8:3D:78:??:?? is not injectable. Skipping... [+] Ping success on channel 17 [+] Sending attack to C0:0B:ED:??:?? [Microsoft HID] on channel 17 [+] All attacks completed Meiner Tastatur (A8:3D:78) kann man laut Tool erst gar keine Zeichenfolgen unterjubeln und zu meiner Mouse (C0:0B:ED) scheint wohl etwas gesendet zu werden, aber es tut sich rein gar nichts auf meinem Bildschirm - normalerweise sollte jetzt der Browser aufgehen und mich mit der Nyan-Cat nerven, doch Fehlanzeige.

Der Microsoft Sculpt Empfänger verhält sich gut, die simulierten Pakete, die nicht vom Originalsender kommen, werden verworfen.

Eine weitere Sorge weniger.

Aufnehmen und Wiedergeben (Replay Attacke)

Eine weitere Angriffsmöglichkeit ist, in einem bestimmten Zeitraum alle Pakete, die in einem bestimmten Zeitraum von der Original Tastatur an den Empfänger gesendet werden (unterscheidbar anhand der MAC-Adresse) stumpf aufzuzeichnen und zu speichern, um sie später wieder abzuspielen. Diese Replay Attacke hat zwar keine Kenntnis von den Klartext-Buchstaben, die da über den Äther gesendet werden und zeichnet nur die verschlüsselten Pakete auf, aber diese erwartet der Empfänger ja auch.

Wenn der Empfänger nicht dagegen geschützt ist (z. B. indem er einen Zeitstempel mit in die Verschlüsselung bringt), dann wird er diese Pakete später auch wieder annehmen und interpretieren, als kämen sie wieder vom Original-Sender. Ergebnis: die Tastenanschläge landen wieder im Computer als wären sie auf der Original-Tastatur getippt worden.

Auch wenn man zuerst keine Kenntnis über den Inhalt erlangt, so kann mich diese Attacke doch nutzen. Z. B. kann man die Passworteingabe durch den berechtigten Benutzer mitschneiden - vielleicht weil man daneben steht und sie provoziert oder sie von der Ferne aus beobachtet, oder eben, weil es immer die erste getippte Tastenfolge eines Arbeitstages ist - und speichern. Später, etwa in der Nacht, wenn der Berechtigte abwesend ist, kann man diese Tastenfolge wieder abspielen. Das ist dann so, als würde sie durch die Tastatur eingegeben werden. Das Zugangspasswort wird vom Computer akzeptiert und wenn der Rechner hochgefahren ist, kann man die Tastenfolge nochmals in einen geöffneten Texteditor abspielen und so das Passwort auch in Klartext lesen.

Auch hier gibt es wieder fertige Tools und ich muss nichts selber programmieren.
... [*] Configure nRF24 radio [*] Scanning for wireless keyboard ... [+] Received data: 08388401e04c00e6 [+] Found nRF24 device with address A8:3D:78:88:C8 on channel 3 [*] Start recording ( to stop recording) [+] Received data: 08388401e04c00e6 [+] Received data: 08388401e04c00e6 [+] Received data: 08388401e04c00e6 [+] Received data: 08388401e04c00e6 [+] Received data: 08388401e04c00e6 [+] Received data: 08388401e04c00e6 [+] Received data: 08388401e04c00e6 [+] Received data: 08388401e04c00e6 [+] Received data: 08388401e04c00e6 [+] Received data: 08388401e04c00e6 [+] Received data: 09988401f9f99fe527224d8471ea91f996e86b82 [+] Received data: 099884016e3e4405d35706bb69a11695d2b07f47 [+] Received data: 099884016e3e4405d35706bb69a11695d2b07f47 [+] Received data: 08388401e24c00e4 [+] Received data: 08388401e24c00e4 [+] Received data: 08388401e24c00e4 [+] Received data: 08388401e24c00e4 ... [+] Received data: 083884010e4d0009 [+] Received data: 083884010e4d0009 [+] Received data: 099884018411cca4d824b7756e5421c0ea815fba ^C [*] Stop recording [*] Press to replay the recorded data packets or to quit ... Ich habe anfangs zum Finden etliche Male das kleine 'a' getippt und danach "mein geheimes passwort". Danach habe ich einen Texteditor auf meinem Windows-PC geöffnet und Enter auf dem Raspi gedrückt.
[*] Press to replay the recorded data packets or to quit ... [+] Send data: 08388401e04c00e6 [+] Send data: 08388401e04c00e6 [+] Send data: 08388401e04c00e6 [+] Send data: 08388401e04c00e6 [+] Send data: 08388401e04c00e6 [+] Send data: 08388401e04c00e6 [+] Send data: 08388401e04c00e6 [+] Send data: 08388401e04c00e6 [+] Send data: 08388401e04c00e6 [+] Send data: 08388401e04c00e6 [+] Send data: 08388401e04c00e6 [+] Send data: 09988401f9f99fe527224d8471ea91f996e86b82 [+] Send data: 099884016e3e4405d35706bb69a11695d2b07f47 [+] Send data: 099884016e3e4405d35706bb69a11695d2b07f47 [+] Send data: 08388401e24c00e4 [+] Send data: 08388401e24c00e4 [+] Send data: 08388401e24c00e4 [+] Send data: 08388401e24c00e4 ... [+] Send data: 083884010e4d0009 [+] Send data: 083884010e4d0009 [+] Send data: 099884018411cca4d824b7756e5421c0ea815fba [*] Press to replay the recorded data packets or to quit ... und siehe da: Wie von Geisterhand erscheint im Texteditor (bei angeschlossener Sculpt Tastatur 03/2014) der Text "mein geheimes passwort", wie im nachstehenden Video demonstriert. Die Replay-Attacke war also erfolgreich. Das sind schlechte Nachrichten, die sich aber im Verlauf dieses Artikels noch relativieren sollen...



Neu dürfte Microsoft die Angreifbarkeit seiner Tastaturen mit nRF24LU1+ Chip nicht sein. Über die Möglichkeit einer Replay Attacke hat sie die SySS GmbH aus Tübingen bereits 2017 informiert und folgende Antwort erhalten:



Meine Ersatztastatur, die ich im Februar 2017 von Microsoft wegen der defekten Maus zugesandt bekam ist zwar schon 01/2017 produziert, aber trotzdem habe ich die Replay-Attacke noch einmal mit ihr durchgeführt.

Und sehr zur meiner Freude lässt sich bereits mit ihr keine Replay-Attacke mehr durchführen. Hier muss ich zu Microsofts Ehrenrettung anmerken, dass sie ihre Hausaufgaben gemacht, zeitnah die Firmware gepatcht und so die Replay-Attack-Anfälligkeit beseitigt haben. Wünschenswert wäre vieleicht mehr Transparenz gegenüber den Kunden wegen der Schwachstelle gewesen, aber das wäre wahrscheinlich auch mit einem immensen Aufwand für MS verbunden gewesen.

Man kann also sagen, dass Tastaturen nach Produktionsmonat 01/2017 (siehe Batteriefach der Tastatur) nicht mehr anfällig sind.

Stellt sich als nächstes die Frage: wie lange bleibt der alte Empfänger angreifbar? Auch dazu haben ich ein paar Tests durchgeführt. Zwischendrin habe ich übrigens fleißig weiter an diesem Artikel gearbeitet und viele andere Tastenanschläge auf der Sculpt übertragen.

Ist der Empfänger mit einer Replay-Attacke angreifbar...Produktionsmonat 03/2014Produktionsmonat 01/2017
... nach 5 Sekunden? Ja Nein
... nach einer Minute? Ja Nein
... nach 5 Minuten? Ja Nein
... nach 10 Minuten? Ja Nein
... nach 15 Minuten? Ja Nein
... nach 20 Minuten? Ja Nein
... nach 25 Minuten? Ja Nein
... nach 30 Minuten? Ja Nein
... nach 35 Minuten? Nein. Dies ist unabhängig von der Anzahl der zwischenzeitlichen Tastenanschläge. Ein erneuter Test mit nur sehr wenigen Tastenanschlägen ergab eine ganz ähnliche Zeit. Nein
... nachdem der Rechner mittels Windows+L gesperrt wurde? Ja Nein
... nachdem der Rechner in den Ruhezustand versetzt (Suspend-to-Disk) und wieder aufgeweckt wurde? Ja Nein
... nachdem Windows heruntergefahren und neu gestartet wurde? Ja! Nein
... nachdem der Rechner heruntergefahren und abgeschaltet und dann wieder eingeschaltet wurde? Nein, wahrscheinlich aber auch abhängig von der Rechnerarchitektur und ob die USB-Ports während des Aus-Zustands weiter mit Strom versorgt werden Nein
... nachdem der Empfänger-Stick ab- und wieder angesteckt wurde / stromlos gemacht wurde? Nein Nein

Bei "nein" wurde das Passwort nicht mehr offengelegt, sondern es wurde nichts oder nur Returnzeichen statt Buchstaben ausgegeben.

Nach meinen Tests bleiben die alten Tastaturen also eine halbe Stunde lang für die Replay-Attacke angreifbar. Das heißt: Wenn man innerhalb der letzten 30 Minuten etwas wichtiges wie ein Passwort eingegeben hat, und der Rechner in den nächsten Minuten unbewacht ist, dann sollte man den Empfänger-Dongle abziehen, um sicher zu sein.

Über neue, nach 01/2017 produzierte Tastaturen hingegen muss man sich keine Sorgen machen. Die sind nach meinen Erkenntnissen sicher. Wenn sich also heute eine neue Sculpt kauft, kann man auf eine sichere Tastatur vertrauen.

Maus

Abhören

Auch die Maus kann man natürlich abhören und deren Datenpakete abfangen. Hier zeigt sich schnell, dass diese unverschlüsselt sind. Hier ein beispielhafter Mitschnitt der Datenpakete: rechts XX:XX:YY:YY 08:90:87:01:1A:40:40:00:00:01:00:00:00:00:00:00:00:10:EA 08:90:87:01:1B:40:40:00:00:01:00:00:00:00:00:00:00:10:EB 08:90:87:01:1C:40:40:00:00:01:00:00:00:00:00:00:00:10:EC 08:90:87:01:1D:40:40:00:00:01:00:00:00:00:00:00:00:10:ED 08:90:87:01:1E:40:40:00:00:01:00:00:00:00:00:00:00:10:EE 08:90:87:01:1F:40:40:00:00:01:00:00:00:00:00:00:00:10:EF 08:90:87:01:20:40:40:00:00:02:00:00:00:00:00:00:00:10:D3 08:90:87:01:21:40:40:00:00:01:00:00:00:00:00:00:00:10:D1 08:90:87:01:22:40:40:00:00:01:00:00:00:00:00:00:00:10:D2 08:90:87:01:23:40:40:00:00:01:00:00:00:00:00:00:00:10:D3 XX:XX:YY:YY links XX:XX:YY:YY 08:90:87:01:93:43:40:00:00:FE:FF:00:00:00:00:00:00:10:60 08:90:87:01:94:43:40:00:00:FC:FF:00:00:00:00:00:00:10:65 08:90:87:01:95:43:40:00:00:FF:FF:00:00:00:00:00:00:10:67 08:90:87:01:96:43:40:00:00:FD:FF:00:00:00:00:00:00:10:66 08:90:87:01:97:43:40:00:00:FC:FF:00:00:00:00:00:00:10:66 08:90:87:01:98:43:40:00:00:FC:FF:00:00:00:00:00:00:10:69 08:90:87:01:99:43:40:00:00:FC:FF:00:00:00:00:00:00:10:68 08:90:87:01:9A:43:40:00:00:FD:FF:00:00:00:00:00:00:10:6A 08:90:87:01:9B:43:40:00:00:FE:FF:00:00:00:00:00:00:10:68 08:90:87:01:9C:43:40:00:00:FD:FF:00:00:00:00:00:00:10:6C XX:XX:YY:YY unten XX:XX:YY:YY 08:90:87:01:2F:46:40:00:00:00:00:05:00:00:00:00:00:10:DD 08:90:87:01:30:46:40:00:00:00:00:03:00:00:00:00:00:10:C4 08:90:87:01:31:46:40:00:00:00:00:05:00:00:00:00:00:10:C3 08:90:87:01:32:46:40:00:00:00:00:05:00:00:00:00:00:10:C0 08:90:87:01:34:46:40:00:00:00:00:05:00:00:00:00:00:10:C6 08:90:87:01:35:46:40:00:00:00:00:04:00:00:00:00:00:10:C6 08:90:87:01:36:46:40:00:00:00:00:04:00:00:00:00:00:10:C5 08:90:87:01:37:46:40:00:00:00:00:04:00:00:00:00:00:10:C4 08:90:87:01:38:46:40:00:00:00:00:04:00:00:00:00:00:10:CB 08:90:87:01:3A:46:40:00:00:00:00:03:00:00:00:00:00:10:CE XX:XX:YY:YY oben XX:XX:YY:YY 08:90:87:01:A6:4A:40:00:00:00:00:FF:FF:00:00:00:00:10:5D 08:90:87:01:A7:4A:40:00:00:00:00:FD:FF:00:00:00:00:10:5E 08:90:87:01:A8:4A:40:00:00:00:00:FF:FF:00:00:00:00:10:53 08:90:87:01:A9:4A:40:00:00:00:00:FE:FF:00:00:00:00:10:53 08:90:87:01:AA:4A:40:00:00:00:00:FE:FF:00:00:00:00:10:50 08:90:87:01:AB:4A:40:00:00:00:00:FE:FF:00:00:00:00:10:51 08:90:87:01:AC:4A:40:00:00:00:00:FE:FF:00:00:00:00:10:56 08:90:87:01:AD:4A:40:00:00:00:00:FD:FF:00:00:00:00:10:54 08:90:87:01:AE:4A:40:00:00:00:00:FD:FF:00:00:00:00:10:57 08:90:87:01:AF:4A:40:00:00:00:00:FF:FF:00:00:00:00:10:54 XX:XX:YY:YY Die Dekodierung fällt auch nicht schwierig. Jeweils zwei Bytes, XX:XX für horizontale Bewegungen und YY:YY für vertikale Bewegungen geben die Anzahl Einheiten an, in die die Maus bewegt wurde. Dabei stehen positive Werte für rechts oder unten (X+, Y+) und negative Werte für links oder oben (X-, Y-). Die X und Y Werte können auch gleichzeitig, z. B. für diagonale Bewegungen auftreten.

Das Verhalten tritt bei beiden Maus-Produktionsdaten (03/2014 und 01/2017) auf. Die Mausbewegungen sind alle komplett unverschlüsselt und abhörbar. Es wäre ein leichtes, ein kleines Simulationsprogramm zu schreiben, dass die Mausbewegungen wieder abspielt und auch visuell nachvollziehenbar macht.

Es gibt z. B. Bankingsoftware, bei der man mit der Maus auf einer Bildschirmtastatur seine PIN zusammenklicken muss. Hier sollte man sich bewusst sein, dass alle Mausbewegungen abgehört und nachvollzogen werden können und auch so die PIN für etwaige Spione sichtbar wird. Für sicherheitsrelevante Eingaben also lieber auf eine kabelgebundene Maus zurückgreifen. In Windows können auch mehrere USB-Mäuse gleichzeitig angeschlossen sein, so dass dies nur ein kurzer Griff zu der Zweitmouse ist.

Aber im Normalfall sind Mauseingaben nicht sicherheitsrelevant. Passwörter werden im allgemeinen über die Tastatur eingegeben. Weshalb Microsoft wohl komplett auf eine Verschlüsselung verzichtet hat.

Mousemovement Injection / Replay Attack)

Auch hier sind sowohl alte, als auch neue Maus angreifbar, wie folgendes Demonstrationsvideo zeigt:



Was nicht weiter verwundert, weil ja keine Verschlüsselung oder Authentifizierung zum Einsatz kommt. Es kann also jederzeit die Mouse ferngesteuert werden. Was einem Angreifer allerdings wenig nützt, wenn er nicht gleichzeitig den Bildschirminhalt des Opfers sieht, da er sonst nicht weiß, wo er hinklicken muss.

Sollte der Angreifer allerdings den Bildschirm sehen, dann könnte es gefährlich werden: der Angreifer könnte die Bewegungen einer eigenen, beliebigen Maus aufzeichnen, sie in Echtzeit in Datenpakete umwandeln und mit stärkerer Leistung senden als dass die Originalmaus könnte. Dadurch könnte der Angreifer das kompromitierte System fernsteuern und hinklicken, wohin er möchte. Dem Opfer bleibt nur, den Empfänger-Dongle so schnell wie möglich abzuziehen oder stromlos zu machen oder das System zu sperren (z. B. mit Windows+L). Dann hilft das Geklicke dem Angreifer nichts mehr, weil hier eine Tastatureingabe des Anmeldekennworts erforderlich wird und den Mauszeiger sozusagen einsperrt.

Es sind auch weitere, weniger zielgerichtete Attacken möglich, etwa um ein Opfer einfach nur zu ärgern oder zu behindern. Man könnte die Maus wild bewegen und umherklicken lassen und sich darauf verlassen, dass das genügend Schaden anrichten wird, weil dadurch zahlreiche Drag and Drop Operationen, Programme und Funktionen ausgeführt werden. Oder man sabotiert einen Computerspielgegner, indem man seine Mausbewegungen stört.

Schlusswort

Die Microsoft Sculpt Tastatur (inkl. Ziffernblock) ab Produktionsmonat 01/2017 darf als sicher gelten. Ältere Modelle sind für etwa 30 Minuten für eine Replay-Attacke anfällig. Da die Sculpt eine ergonomisch sinnvolle und gute Tastatur ist, kann ich sie ruhigen Gewissens weiterempfehlen. Für mich derzeit die beste bezahlbare ergonomische Tastatur, aber bei geteilten Tastaturen teilen sich häufig auch die Geschmäcker. Sie bedürfen einer gewissenen Einarbeitungszeit, bis man auf ihnen so schnell und schneller tippt als auf herkömmlichen Tastaturen, aber siehe dazu meinen Artikel über die Ergonomie der Sculpt.

Die Maus sendet unverschlüsselt und man kann sie nicht als sicher bezeichnen, denn sie kann mit dem richtigen Equipment abgehört und ferngesteuert werden. Da sie ergonomisch zwar nicht schlecht, aber auch nicht das Non-plus-Ultra ist, kann man hier auch auf eine kabelgebundene Maus ausweichen. Mit dem Problem, mit dem z. B. Logitech-Mäuse und Presenter kämpfen, nämlich das darüber Tastaturanschläge eingespeist werden können (ja, richtig, über die Mouse), hat die MS Sculpt Mouse nicht zu kämpfen.

Es wurde hier nur das Microsoft Sculpt Ergonomic Desktop Set begutachtet. Andere Tastaturen und Mäuse, darunter von namhaften Herstellern wie Logitech, Cherry, Fujitsu und Perixx haben ähnliche und ggf. noch viel weiter reichende Probleme, die teilweise bis zum heutigen Tag nicht gepatcht sind.