Ich möchte ein "Red Teaming"
Michael Schneider
Seit der Einführung der Bluetooth Spezifikation 4 im Jahr 2010, ist der Unterstandart Bluetooth Low Energy (BTLE) zu beinahe universeller Präsenz in elektronischen Geräten von Smart Phones bis Medizinalgeräten herangewachsen. Der hauptsächliche Vorteil von BTLE im Vergleich zu klassischem Bluetooth oder anderen Kommunikationsmethoden ist der geringe Energieverbrauch für darüber kommunizierende Geräte. Für einige Geräte reicht bereits eine Knopfzellenbatterie, um sie für mehrere Jahre zu betreiben. Dies führte dazu, dass BTLE besonders in der Welt des Internet of Things Beliebtheit erlangte. Tatsächlich ist einer der Hauptgründe für die Einführung des Standards, die Kommunikation zwischen Geräten diverser Art wie Kopfhörer, Pulsmessgeräten und dem weit bekannten “intelligenten” Kühlschrank zu ermöglichen.
Im BTLE Netzwerk wurden zwei Hauptrollen, Central und Peripheral, definiert. Es gibt zwei weitere, diese lassen wir hier jedoch aus. Die Central Rolle wird üblicherweise von Geräten mit grösseren Batterien und mehr Rechenleistung übernommen (z.B. Smartphones), während die Peripheral Rolle eher von kleineren Geräten wie Kopfhörer, Orts- oder Zeitdiensten und Sensoren ausgeführt wird. Peripheral Geräte besitzen meist einen limitierten Funktionsumfang und sie können selbst keine Verbindungen zu anderen Geräten erstellen.
Peripheral Geräte verhalten sich so, dass sie in regelmässigen Abständen sehr kurze Nachrichten, sogenannte Advertisements, versenden. Diese Advertisements werden ca. alle 120 ms verschickt und können maximal 31 Bytes an Daten enthalten. Advertisements enthalten Informationen über das Peripheral Gerät, wie es zu erreichen ist und welche Dienste es anbietet. Ein Advertisement besitzt folgende Struktur:
<Connectability indicator><Address type><Bluetooth address>[<Advertisement type><Advertisement data>, . . . ]
Jedes Advertisement enthält mindestens einen Datenblock. Diese Datenblöcke enthalten wiederum eine Liste der angebotenen Dienste, Dienstdaten, den Namen des Geräts oder Hersteller-spezifische Daten.
Aufgrund der Tatsache, dass Advertisements unverschlüsselt übermittelt werden, entschied das Bluetooth Konsortium eine zufällige Geräteadresse einzuführen, die in definierten Intervallen neu generiert werden kann. Dies soll sicherstellen, dass BTLE Geräte nur für eine beschränkte Zeit eindeutig identifizierbar sind. Dieses Erneuerungsintervall wird jedoch von den Herstellern selbst definiert und einige entscheiden sich dafür, die Adresse nie zu erneuern. Somit enthält ein Advertisement zwar den Address type
Klassifizierer Random Device Address
, dafür bleibt das Gerät trotzdem eindeutig identifizierbar, weil sich die Adresse nie ändert.
Apple erneuert bekannterweise deren Geräteadressen ca. alle 15 Minuten, Fitbit als gegensätzliches Beispiel erneuerte früher ihre Geräteadressen weniger als einmal pro Tag oder gar nie. Doch auch ein Erneuerungsintervall von 15 Minuten bedeutet, dass das Gerät ca. 7500 Advertisements versendet, bevor die Adresse erneuert wird. Das ist eine grosse Datenmenge!
Auf diese Weise ist es trotzdem vorstellbar, dass BTLE Geräte getrackt werden können. Länger noch, wenn die Advertisement Daten verwendet werden, um einen Fingerprint zu errechnen.
Die Advertisement Daten können aber auch dazu verwendet werden, Informationen über ein Gerät zu sammeln. So enthalten die Daten gewöhnlich eine Referenz zum Hersteller (z.B. Apple Inc.
) und akzeptieren Verbindungen ohne vorheriges Pairing. Aktive Verbindungen liefern zusätzliche Informationen über das Gerät, wie zum Beispiel dessen Namen (iPhone
) und Versionsinformationen (iPhone8.1
).
Was BTLE von anderen Kommunikationsmethoden wie WiFi abhebt, ist die minimal erforderliche Investition, um Geräte zu verfolgen. Unter aktuellen Linuxversionen stellen der Kernel und angehängte Bibliotheken diverse Zugriffsmethoden auf Bluetooth Hardware zur Verfügung. Zudem eignen sich sehr günstige Geräte wie z.B. das Raspberry Pi bereits für den vorliegenden Zweck. Beispielsweise sucht unsere Utility auf unserer Git Repository passiv nach BTLE Geräten und versucht diese zu tracken.
# python3 main.py
0130855d15f06f, [Flags:06][AppleInc:ManufacturerSpecificData:10020b00] – -85 dBa, ConnectableDirectedAdvertising
010c0554a664c2, [Flags:04][IncompleteListOf128BitServiceClassUUIDs:ba5689a6fabfa2bd01467d6e00fbabad][ServiceData16BitUUID:0a181204a5850000] – -86 dBa, ConnectableDirectedAdvertising
011c890c768857, [Flags:1a][CompleteListOf16BitServiceClassUUIDs:[‘Next DST Change Service’, ‘Current Time Service’, ‘Reference Time Update Service’]][CompleteLocalName:54696d65] – -63 dBa, ConnectableDirectedAdvertising
Im Dezember 2016 veröffentlichte das Bluetooth Konsortium die neue Bluetooth Spezifikation 5, in welcher sie den Anspruch nach verbesserter Sicherheit gegenüber der vorangehenden Spezifikation stellen. Wir werden wohl in den nächsten Jahren sehen, wie sich diese neue Version auf die Welt des Internet of Things auswirkt.
Unsere Spezialisten kontaktieren Sie gern!
Michael Schneider
Marisa Tschopp
Michèle Trebo
Andrea Covello
Unsere Spezialisten kontaktieren Sie gern!