Wie ich mein Fitness-Armband hackte

Die Geschichte, die ich hier erzählen möchte, begann vor einigen Monaten, als ich ein Fitness-Armband einer populären Marke in die Finger bekam. Da es sich dabei um ein so genanntes „Wearable“ handelt, habe ich mir die App (speziell für Wearables) Android Wear installiert. Diese App verband sich ohne Probleme mit dem Fitness-Armband.

Eine Sache war allerdings merkwürdig: Das Programm verband sich mit einem „Nike+ Fuel Band SE”, aber ich hatte ein Armband eines anderen Herstellers. Recht schnell fand ich heraus, dass das Nike-Armband meinem Kollegen gehört. Und er hatte noch nicht einmal bemerkt, dass ich mich mit seinem Gerät verbunden hatte.

So entstand die Idee für eine kleine Untersuchung, um die Sicherheit meines Armbands zu prüfen.

Smarte Armbänder: Kommunikation mit dem Telefon

Derzeit werden viele Fitness-Armbänder angeboten, die zwar von unterschiedlichen Herstellern stammen, untereinander aber sehr ähnlich sind. Die unten stehende Grafik zeigt eine Statistik des Kaspersky Security Network (KSN) zur Installation von Android-Apps, die für die Zusammenarbeit mit populären Fitness-Trackern auf den mobilen Geräten der Nutzer vorgesehen sind (die Informationen für die Statistik haben wir von KSN-Anwendern erhalten, die der Datenübermittlung zugestimmt haben).

Verteilung der Installationen von Android-Apps für Fitness-Tracker verschiedener Hersteller

Obwohl es sich um eine Statistik zur Häufigkeit von Android-Apps handelt (wir haben keine Garantie dafür, dass die Anwender tatsächlich auch die entsprechenden Geräte besitzen), so spiegelt sie doch bis zu einem gewissen Grad auch die Popularität tragbarer Geräte wider.

Für die Kommunikation mit dem Smartphone nutzen die meisten Fitness-Armbänder die Technologie Bluetooth LE (auch bekannt als Bluetooth Smart). Das heißt, die Geräte verbinden sich nicht auf die gleiche Weise wie über das ‚traditionelle‘ Bluetooth. Es gibt kein allgemeines Passwort, denn die meisten Armbänder haben keinen Bildschirm oder keine Tastatur.

Armbänder mit Bluetooth-LE-Unterstützung verwenden das Generic Attribute Profil, abgekürzt GATT. Das bedeutet, dass es auf dem tragbaren Gerät eine gewisse Auswahl an Services gibt, von denen jeder über unterschiedliche Eigenschaften verfügt. Jede Eigenschaft enthält einen Bytepuffer und eine Liste von Deskriptoren, jeder Deskriptor enthält einen Wert – den Bytepuffer.

Um das zu verdeutlichen, habe ich mir einen fertigen Code aus dem Google-Software-Kit Android SDK genommen – ein Beispiel für eine App zum Verbinden mit Bluetooth-LE-Geräten. Ich musste nicht eine einzige Codezeile schreiben, sondern habe einfach ein bereits bestehendes Projekt im Android Studio geöffnet und den Start-Button gedrückt.

Auf dem Screenshot oben ist das Resultat der Verbindung mit meinem Fitness-Armband mit Hilfe dieser App zu sehen. Dort sind die Services und ihre Eigenschaften dargestellt. Doch für mein Armband ist es nicht so einfach, Daten aus diesen Eigenschaften zu erhalten. Zu diesem Zweck muss es nicht nur verbunden, sondern auch authentifiziert sein. Bei einigen anderen Geräten gelang es mir, Daten aus den Eigenschaften und ihren Deskriptoren zu lesen. Es ist durchaus möglich, dass es sich dabei um Anwenderdaten handelt.

Scan

Mir ist es also unter Verwendung eines App-Beispiels aus dem Android SDK gelungen, mich mit mehreren Geräten zu verbinden. Daraufhin erstellte ich meine eigene App, die automatisch nach Bluetooth-LE-Geräten sucht, und versuchte, mich mit ihnen zu verbinden und an ihre Service-Listen zu kommen.

Unter Einsatz dieser App führte ich mehrere Scans durch.

  • Innerhalb von zwei Stunden konnte ich mich in der Moskauer U-Bahn mit 19 Geräten verbinden: mit elf FitBit-Armbändern und acht Jawbone-Armbändern.
  • Im Laufe einer Stunde wurden in einem Fitnessclub in der Stadt Bellevue im US-Bundesstaat Washington 25 Geräte erkannt: 20 Fitbit-Armbänder und je ein Gerät von Nike, Jawbone, Microsoft, Polar und Quans.
  • Innerhalb von zwei Stunden konnte ich mich während der IT-Sicherheitskonferenz SAS2015 in Cancún mit zehn Fitness-Trackern verbinden, und zwar mit drei Jawbone- und sieben FitBit-Geräten.

Ich musste insgesamt nur sechs Stunden scannen, um mich mit 54 Geräten verbinden zu können. Und das, obwohl mir dabei zwei ernsthafte Einschränkungen im Weg standen:

  1. Auch wenn in den Handbüchern eine Distanz von 50 Metern angegeben ist, so ist die reale Distanz, innerhalb derer eine Verbindung zwischen Smartphone und Fitness-Armband möglich ist, in den meisten Fällen nicht größer als sechs Meter.
  2. Mit einem bereits verbundenen Gerät sollte man sich nicht verbinden können. Ist Ihr Gerät mit Ihrem Telefon verbunden, sollte es also selbst beim Scannen nicht für andere sichtbar sein.

Die zweite Einschränkung bedeutet im Prinzip, dass das Gerät nicht angegriffen werden kann, solange es mit einem Smartphone verbunden ist. In Wirklichkeit stimmt das aber nicht. Hier ein Beispiel: Mit Hilfe meiner Scan-App konnte ich die Kommunikation zwischen meinem Fitness-Tracker und der offiziellen Anwendung blockieren, obwohl diese vorher verbunden waren.

Berücksichtigt man den zweiten Punkt der oben aufgeführten Einschränkungen, so kann man annehmen, dass die von mir entdeckten Geräte noch nie mit einem Telefon verbunden waren, oder dass das Armband während des Scans nicht mit einem Smartphone verbunden war (Bluetooth war auf dem Telefon deaktiviert). Oder ein bereits verbundenes Gerät war für eine Verbindung verfügbar, ungeachtet der vermuteten Einschränkung. Wie dem auch sei – die Chancen, sich mit einem Fitness-Tracker zu verbinden, sind für Cyberverbrecher durchaus groß.

Um Zugriff auf die Anwenderdaten zu erhalten, reicht es in den meisten Fällen allerdings nicht aus, mit dem Gerät verbunden zu sein, sondern man muss sich auch authentifizieren. Schauen wir uns einmal an, wie die Authentifizierung bei meinem Armband abläuft.

Mein Armband: Authentifizierung

Um das Armband auf dem Telefon zu authentifizieren, verwendet die offizielle Anwendung eine von vier Services auf dem Armband. Für jede Eigenschaft aus diesem Service installiert die App das Flag „CharacteristicNotification“. Auf diese Weise teilt die App dem Armband mit, dass sie über jede beliebige Änderung dieser Eigenschaft benachrichtigt werden will. Daraufhin erhält die Anwendung die Liste der Deskriptoren für jede Eigenschaft und installiert das Flag „ENABLE_NOTIFICATION_VALUE“ – so teilt die Anwendung dem Armband mit, dass sie über jede beliebige Änderung jedes Deskriptors benachrichtigt werden will.

Danach ändert eine der Eigenschaften ihren Wert, nämlich den Bytepuffer. Die App liest diesen Puffer aus dem Armband aus: Header 200f1f und Byte-Array – nennen wir den Bytepuffer authBytes.

Die Anwendung erstellt ein neues Array. Sein erster Teil ist ein konstantes Array, das in der Anwendung enthalten ist und mit 6dc351fd44 beginnt. Der zweite Teil des neuen Arrays ist authBytes. Die App erhält die MD5-Hashfunktion von dem neuen Array und sendet sie in der folgenden Struktur an das Gerät:

  • Header (201210051f)
  • Md5
  • Kontroll-Byte

Daraufhin sendet die Anwendung ein weiteres Array an das Gerät, das ebenfalls in dieser App enthalten ist.

Danach fängt das Armband an zu vibrieren. Der Anwender muss nun lediglich einen Knopf drücken und die Authentifizierung ist abgeschlossen.

Bei der offiziellen App dauert der Authentifizierungsprozess etwa 15 Sekunden. Ich habe eine App erstellt, die nur vier Sekunden braucht, um das Armband zum vibrieren zu bringen.

Es ist leicht, den Nutzer dazu zu bringen, einen einzelnen Knopf zu drücken. Man muss nur hartnäckig sein: Der Authentifizierungsprozess lässt sich viele Male neu starten, solange der Anwender trotz allem nicht den Knopf drückt, oder solange er sich nicht weiter als sechs Meter von dem Gerät entfernt.

Ist die Authentifizierung abgeschlossen, können die Daten auf meinem Armband nach Lust und Laune ausspioniert werden. Zum gegenwärtigen Zeitpunkt befinden sich nicht allzu viele Informationen auf tragbaren Fitness-Trackern. In der Regel sind das die Zahl der Schritte, die Schlafphasen und der Puls innerhalb der letzten Stunde. Ungefähr einmal pro Stunde übermittelt die Anwendung alle Informationen vom Armband in die Cloud.

Nach der Authentifizierung lassen sich auf dem Gerät problemlos Befehle ausführen. Um beispielsweise die Zeit umzustellen, benötigt man ein Byte-Array, das mit f0020c beginnt, und dann das Datum in folgender Form: YYYYšš MMšš DDšš DWšš HHšš MMšš SSšš MSMSMSMS.

Bei anderen Fitness-Trackern ist alles noch viel einfacher: Bei einigen von ihnen ist ein Teil der Daten sofort nach der Verbindung verfügbar, und der Code der App für Geräte von Nike ist noch nicht einmal in irgendeiner Art und Weise verschlüsselt und lässt sich daher sehr leicht lesen (die Ergebnisse einer Untersuchung finden Sie hier).

Fazit

Wie die Ergebnisse meiner kleinen Studie gezeigt haben, kann man sich in einigen Fällen mit einem tragbaren Gerät verbinden, ohne dass der Nutzer davon weiß.

Würden Cyberkriminelle mein Armband hacken, so könnten sie nicht auf alle Daten zugreifen, denn sie werden nicht auf dem Armband oder auf dem Telefon gespeichert, da die offizielle App alle Informationen regelmäßig vom Armband in die Cloud hochlädt.

Fitness-Tracker werden immer beliebter und erhalten immer mehr Funktionen. Es ist durchaus denkbar, dass sie schon bald wesentlich mehr Sensoren und auch wesentlich mehr Anwenderinformationen enthalten werden, unter anderem medizinische Daten. Und trotzdem drängt sich der Eindruck auf, dass die Hersteller dieser Geräte sich über das Thema Sicherheit nicht allzu viele Gedanken machen.

Stellen Sie sich einmal folgendes vor: Wenn ein mit Pulsmesser ausgestattetes Armband gehackt wurde, kann der Inhaber eines Ladens die Pulsfrequenz eines Käufers verfolgen, während dieser die Angebote in seinem Shop betrachtet. Auf dieselbe Weise lässt sich auch die Reaktion potenzieller Kunden auf Werbung nachvollziehen. Ein gehacktes Pulsmesser-Armband lässt sich sogar als Lügendetektor einsetzen.

Selbstverständlich sind auch weitaus schädlichere Aktivitäten denkbar, wie beispielsweise der Einsatz eines Schadprogramms des Typs Trojan-Ransom, also eines Erpresserprogramms. Ein Verbrecher könnte sich die Kontrolle über Ihr Armband verschaffen und es dazu bringen, ununterbrochen zu vibrieren. Für die Deaktivierung der Vibration könnte er dann Geld verlangen.

Wir haben unsere Erkenntnisse dem Hersteller meines Armbands übermittelt. Das Unternehmen stufte unsere Untersuchungsergebnisse daraufhin als einen UX-Bug und nicht als Sicherheitsproblem ein. Aus ethischen und sicherheitsrelevanten Gründen werden wir Name und Modell des Armbands zum jetzigen Zeitpunkt nicht nennen. Sollten Sie sich Sorgen über mögliche Folgen einer Ausnutzung dieses Sicherheitsproblems in freier Wildbahn machen, so scheuen Sie sich nicht, den Hersteller zu kontaktieren und ihn zu fragen, ob das Produkt, das Sie benutzen, von der in diesem Artikel beschriebenen Methode betroffen ist.

Wir hoffen außerdem, dass dieser Bericht nicht nur für Anwender, sondern auch für die Hersteller der Armbänder hilfreich ist, um ihre Geräte hinsichtlich der IT-Sicherheit weiter zu verbessern.

Ähnliche Beiträge

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.