OpenHaystack: Technik zum Bau von „AirTags“ zur Verfolgung von Bluetooth-Geräten über Apples Netzwerk
(github.com/seemoo-lab)- OpenHaystack ist ein Framework zur Ortung persönlicher Bluetooth-Geräte über Apples Find-My-Netzwerk; mit einem Mac und einem BBC micro:bit oder einem Bluetooth-fähigen Gerät lassen sich eigene Tracking-Tags bauen
- Wenn ein iPhone in der Nähe die BLE-Werbung eines OpenHaystack-Zubehörs entdeckt, verschlüsselt es den Standort, lädt ihn auf Apple-Server hoch, und OpenHaystack lädt den entsprechenden Standortbericht herunter, entschlüsselt ihn und zeigt ihn auf einer Karte an
- Das Projekt ist ein Ergebnis von Reverse Engineering und Sicherheitsanalyse des Find-My-Netzwerks durch das Secure Mobile Networking Lab der TU Darmstadt; die Schwachstelle CVE-2020-9986 beim Zugriff auf Standortdaten wurde von Apple behoben
- Die macOS-App nutzt ein Apple-Mail-Plug-in, um Standortberichte zu empfangen; während der Installation muss Gatekeeper vorübergehend deaktiviert werden, und Mail muss während der Nutzung geöffnet bleiben
- Da es sich um experimentelle Software handelt, ist der Code nicht getestet und unvollständig; Zubehör auf Basis der bereitgestellten Firmware sendet einen festen öffentlichen Schlüssel und könnte daher auch von anderen Geräten in der Nähe verfolgt werden
Was OpenHaystack macht
- OpenHaystack ist ein Framework, um persönliche Bluetooth-Geräte über Apples Find-My-Netzwerk zu orten
- Nutzer können eigene Tracking-Tags erstellen, sie an Gegenständen wie Schlüsselanhängern oder Rucksäcken befestigen oder in Bluetooth-fähige Geräte wie Laptops integrieren
- Benötigt werden ein Mac und ein BBC micro:bit oder ein anderes Bluetooth-fähiges Gerät
- Auch ohne Mobilfunkverbindung können iPhones in der Nähe das Zubehör entdecken und bei Netzwerkverbindung den Standort auf Apple-Server hochladen
Forschungsgrundlage und Sicherheitsanalyse
- OpenHaystack entstand aus Reverse Engineering und Sicherheitsanalyse von Apples Find My network bzw. Offline Finding
- Das Secure Mobile Networking Lab der TU Darmstadt begann die Analyse nach Apples Ankündigung von Offline Finding im Juni 2019
- Das System kombiniert die folgenden Elemente
-
Bluetooth-Werbung
- Public-Key-Kryptografie
- Zentrale Datenbank verschlüsselter Standortberichte
- Während der Analyse wurden zwei Schwachstellen gefunden
- Die schwerwiegendste Schwachstelle ermöglichte einer bösartigen Anwendung den Zugriff auf Standortdaten
- Diese Schwachstelle wurde von Apple behoben und als CVE-2020-9986 identifiziert
- Die zugehörige Sicherheits- und Privatsphäreanalyse wird im PoPETs-2021-Paper Who Can Find My Devices? Security and Privacy of Apple's Crowd-Sourced Bluetooth Location Tracking System behandelt
-
Einschränkungen als experimentelle Software
- OpenHaystack ist experimentelle Software; der Code ist nicht getestet und unvollständig
- OpenHaystack-Zubehör, das die bereitgestellte Firmware nutzt, sendet einen festen öffentlichen Schlüssel
- Dadurch kann es möglicherweise auch von anderen Geräten in der Nähe verfolgt werden
- Dieses Verhalten kann sich in künftigen Releases ändern
- OpenHaystack ist kein Projekt, das mit Apple Inc. verbunden ist oder von Apple unterstützt wird
Komponenten und Nutzungsablauf
- OpenHaystack besteht aus zwei Komponenten
- macOS-Anwendung: zeigt den zuletzt gemeldeten Standort persönlicher Bluetooth-Geräte an
- Firmware-Image: lässt Bluetooth-Geräte ein Beacon senden, das von iPhones entdeckt werden kann
- Systemvoraussetzung ist macOS 11 Big Sur
- Beim Erstellen eines neuen Zubehörs geben Nutzer einen Namen ein und wählen optional ein Symbol und eine Farbe
- Die App erzeugt ein neues Schlüsselpaar zur Ver- und Entschlüsselung von Standortberichten
- Der private Schlüssel wird im Schlüsselbund des Mac gespeichert
- Die Gerätebereitstellung erfolgt, indem ein unterstütztes Gerät per USB mit dem Mac verbunden und anschließend der Deploy-Button in der App verwendet wird
- Statt der integrierten Bereitstellung kann auch der für die Werbung verwendete öffentliche Schlüssel kopiert und manuell bereitgestellt werden
- Bis der erste Standortbericht auf der Karte erscheint, kann es bis zu 30 Minuten dauern
- Die Karte zeigt den neuesten Standort aller Einträge
- Durch Klick auf einen Eintrag lässt sich prüfen, wann das letzte Update empfangen wurde
- Mit dem Reload-Button können Standortberichte aktualisiert werden
Mail-Plug-in und Installationsweise
- Die OpenHaystack-App benötigt ein Custom-Plug-in für Apple Mail, um Standortberichte von Apple-Servern herunterzuladen
- Dieses Plug-in funktioniert, indem es die Berechtigungen von Apple Mail erbt, die für die Nutzung privater APIs erforderlich sind
- Während der Installation muss Gatekeeper vorübergehend deaktiviert werden
- Gatekeeper mit
sudo spctl --master-disableausschalten - In Mail unter Preferences → General → Manage Plug-Ins
OpenHaystackMail.mailbundleaktivieren - Danach Gatekeeper mit
sudo spctl --master-enablewieder einschalten
- Gatekeeper mit
- Das Plug-in soll nicht auf andere persönliche Daten wie E-Mails zugreifen
- Während des Downloads von Standortberichten kommuniziert die OpenHaystack-App mit dem Plug-in, daher muss Mail geöffnet bleiben
Funktionsweise des Find-My-Netzwerks
- OpenHaystack beschreibt Apples Offline-Finding-System in vier Schritten
-
Pairing
- Für die Nutzung des Find-My-Netzwerks wird ein Schlüsselpaar aus öffentlichem und privatem Schlüssel auf Basis der P-224-Elliptischen Kurve erzeugt
- Der private Schlüssel wird sicher im Mac-Schlüsselbund gespeichert
- Der öffentliche Schlüssel wird auf Zubehör wie einen micro:bit übertragen
-
Verlustzustand
- Das Zubehör sendet den öffentlichen Schlüssel als Bluetooth-Low-Energy-Werbung
- iPhones in der Nähe können OpenHaystack-Zubehör nicht von echten Apple-Geräten oder zertifiziertem Zubehör unterscheiden
-
Entdeckung
- Wenn ein iPhone in der Nähe die BLE-Werbung empfängt, ermittelt es den aktuellen Standort per GPS
- Das iPhone verschlüsselt den Standort mit dem in der Werbung enthaltenen öffentlichen Schlüssel und lädt den verschlüsselten Bericht auf Apple-Server hoch
- iPhones mit iOS 13 oder neuer führen dieses Verhalten standardmäßig aus
- OpenHaystack ist an diesem Schritt nicht beteiligt
-
Abruf
- Apple weiß nicht, welche verschlüsselten Standorte zu welchem Apple-Account oder Gerät gehören
- Wenn der zugehörige öffentliche Schlüssel bekannt ist, kann ein Apple-Nutzer beliebige Standortberichte herunterladen
- Die Berichte sind Ende-zu-Ende-verschlüsselt und können ohne privaten Schlüssel nicht entschlüsselt werden
- OpenHaystack lädt die Berichte für OpenHaystack-Zubehör von Apple herunter, entschlüsselt sie mit dem im Mac-Schlüsselbund gespeicherten privaten Schlüssel und zeigt den aktuellen Standort auf der Karte an
- Apple beschränkt beliebige Zugriffe auf die Datenbank, indem nur authentifizierte Apple-Nutzer Standortberichte herunterladen dürfen
Unterstützte Geräte und Erweiterung
- Grundsätzlich kann ein Bluetooth-Gerät zu einem OpenHaystack-Zubehör gemacht werden, das über das Apple-Find-My-Netzwerk geortet werden kann
- Derzeit unterstützt die komfortable Firmware-Bereitstellung nur einige Embedded-Geräte
- Linux-Geräte werden über ein allgemeines HCI-Skript unterstützt
- Unterstützungsbeispiele sind
- Nordic nRF51: getestet mit BBC micro:bit v1, App-Bereitstellung unterstützt, derzeit wird nur nRF51822 unterstützt
- Espressif ESP32: getestet mit ESP32-WROOM und ESP32-WROVER, App-Bereitstellung unterstützt, die Bereitstellung kann bis zu 3 Minuten dauern und erfordert Python 3
- Linux HCI: getestet mit Raspberry Pi 4 und Raspbian, sollte alle Linux-Maschinen unterstützen
- Eine Portierung auf andere Geräte mit Bluetooth Low Energy ist möglich; Grundlage dafür können der Firmware-Quellcode und die Spezifikation im Paper sein
OpenHaystack Mobile
- OpenHaystack Mobile ist eine vollständig neu implementierte Version der OpenHaystack-macOS-Anwendung für Smartphones
- Die App bietet Funktionen zum Erstellen und Orten von Zubehör und zielt insbesondere darauf ab, die Bedienbarkeit für neue Nutzer zu verbessern
- Anders als bei der macOS-App können Standortberichte auf Smartphones nicht direkt abgerufen werden
- Für den Zugriff auf das Find-My-Netzwerk ist ein Proxy-Server erforderlich, der auf Mac-Hardware gehostet wird
- Auf den Proxy-Server können mehrere Nutzer gleichzeitig über das Netzwerk zugreifen
- Um eine Verbindung zum Proxy-Server herzustellen, muss in
openhaystack-mobile/lib/findMy/reports_fetcher.dartdie korrekte URL gesetzt werden - OpenHaystack Mobile wurde mit dem Flutter framework erstellt und läuft auf Android und iOS
Lizenz und Referenzen
- OpenHaystack wird unter der GNU Affero General Public License v3.0 veröffentlicht
- Wichtige Referenzen
1 Kommentare
Meinungen auf Hacker News
Es wäre schön, wenn es auch für Menschen, die keine Apple-Nutzer sind, eine gute Option gäbe. Soweit ich gehört habe, ist Googles Version wie erwartet ziemlich schlecht.
Es gibt eine Beschränkung, wie oft man nach dem eigenen Tag suchen kann, der Standort wird erst angezeigt, nachdem er von mehreren Smartphones erkannt wurde, und die Abdeckung ist ebenfalls schlecht.
In einem Test schnitt das Samsung-Netzwerk besser ab, was eigentlich keinen Sinn ergibt, da Samsung-Smartphones nur eine Teilmenge aller Android-Smartphones im Google-Netzwerk sein sollten. In der Theorie sieht es gut aus, aber selbst Jahre nachdem Apple gezeigt hat, wie es geht, ist die Umsetzung miserabel – typisch für ein Google-Produkt.
https://security.googleblog.com/2024/04/find-my-device-netwo...
https://9to5google.com/2024/08/01/find-my-device-stress-test...
https://9to5google.com/2024/08/03/google-android-find-my-dev...
https://www.androidcentral.com/accessories/testing-new-googl...
Mit dieser Entscheidung bekam Google ein paar Artikel über „innovative“ Datenschutzverbesserungen, bevor überhaupt überprüft wurde, wie schlecht die tatsächliche Leistung ist. Dafür hat das Unternehmen die Chance verspielt, in diesem Bereich mit Apple zu konkurrieren, und dem Android-/Pixel-Ökosystem sowie dem Marktanteil geschadet. Ein solches Maß an Inkompetenz könnte man sich kaum ausdenken.
Aus Sicht eines nomadisch Reisenden ist Apples Netzwerk nicht besonders nützlich. Man ist nicht in wohlhabenden Städten mit vielen Apple-Smartphones unterwegs, sondern im „Rest der Welt“, wo der Android-Anteil nahe 90 % liegt. Trotzdem scheint Apple selbst dort besser zu funktionieren als Google.
Tatsächlich lag es direkt neben mir in einer Tasche.
Selbst an Flughäfen oder in Dörfern sehr abgelegener Länder konnte ich zwei Tags zuverlässig finden, was beruhigend ist. Auch dieses Video kommt zu dem Schluss, dass Samsung SmartTag selbst für iPhone-Nutzer die beste Wahl ist.
https://m.youtube.com/watch?v=9wefUV_bR0Y
Wenn man sich den Code ansieht, scheint er private Apple-Mail-Berechtigungen zu nutzen, um die von Geräten im Find-My-Netzwerk gesammelten Standorte abzurufen.
https://github.com/seemoo-lab/openhaystack/blob/8d214aa5eb68...
Ich frage mich, ob das auch möglich wäre, wenn man ein Apple-Developer-Konto erstellt.
Man braucht lediglich ein Apple-Konto; Code auf Apple-Hardware auszuführen ist nicht nötig.
https://github.com/biemster/FindMy
Ich würde gern eine Quelle wiederfinden, die ich früher einmal gesehen habe. Apple warnt Nutzer vor „Tags, die einem folgen können“, und ich erinnere mich, dass jemand eine Implementierung gebaut hatte, die per Key-Derivation-Function (KDF) Dinge wie MAC-Adressen oder private Schlüssel rotierte, wobei die abgeleiteten Werte vorhersehbar genug waren, um sie verfolgen zu können.
In meiner Wohngegend gibt es wirklich ein massives Problem mit Kleindiebstählen, und der Zeitaufwand, ständig eingeschlagene Fenster zu reparieren oder Einbruchsspuren zu beseitigen, ist beträchtlich. Ich habe keinerlei Interesse daran, jemanden direkt zu konfrontieren, möchte aber irgendwann Bewegungsprofile erstellen können, die ich einem Privatdetektiv oder den Strafverfolgungsbehörden geben kann.
Alternativ könntest du mit einer Kiste Wasser zum nächsten Treffpunkt von Drogenabhängigen gehen und sie bitten, deine Sachen nicht mehr auszuräumen.
Allerdings könnte die Rotationsperiode langsam sein; den genauen Algorithmus kenne ich nicht.
Das war allerdings vor ein paar Jahren, daher könnte es heute anders sein.
Es wäre gut, wenn es eine Möglichkeit gäbe, es mit der Find My App zu integrieren, statt den Standort über ein eigenes, instabiles Verfahren abzurufen.
Die chinesischen Klone können ja auch unter eigener Marke laufen, also scheint es irgendwie möglich zu sein.
Diese Signatur wird von Apple verifiziert, und dadurch kann das Gerät diesem Apple-ID-Konto und der App hinzugefügt werden. Dagegen sind die Schlüssel, die Geräte im Verloren-Modus aussenden, zufällig und völlig undurchsichtig, sodass selbst Apple keine Möglichkeit hat, sie mit einer ID, einem Gerät oder einem Entwickler zu verknüpfen. Dass dieses Projekt funktioniert, liegt ebenfalls daran, dass diese Schlüssel letztlich bei Apples Servern landen.
Die Klone scheinen einen legitimen Schlüssel für den Pairing-Prozess erbeutet zu haben. Wenn Apple sich vornimmt, diesen Schlüssel aufzuspüren, könnte es wohl alle Geräte aus allen Konten entfernen; die Geräte selbst würden aber weiter senden, und man könnte auf die oben beschriebene grobe Weise weiterhin auf ihre Standorte zugreifen. Ich frage mich auch, ob der ursprüngliche Schlüsselinhaber später eine saftige Rechnung pro Gerät als Lizenzgebühr bekommt, wenn Apple in seiner Datenbank zählt, „wie viele mit diesem Schlüssel signierte Geräte zu Apple-IDs hinzugefügt wurden“.
OpenHaystack ist ein Hack mit anderen Schlüsseln und kann aus kryptografischen Gründen nicht in der App angezeigt werden.
Wirklich cool. Ich mag den Apple AirTag, aber er ist zu dick und die Form ist auch etwas ungünstig.
Ich fände einen AirTag im Kreditkartenformat gut, den man ins Portemonnaie stecken kann, und auch einen noch kleineren AirTag, den man an ein Katzenhalsband hängen kann.
Ich habe eines meiner Geräte aus dem Gehäuse genommen, um zu sehen, was man dünner machen könnte: Der Großteil der Dicke kommt vom CR2032-Batteriehalter, dem Lautsprecher und dem Button. Lautsprecher und Button könnte man nach der Ersteinrichtung vermutlich entfernen, und wenn man einen dünnen Karten-Formfaktor möchte, könnte man auch den Batteriehalter entfernen und die Stromversorgung seitlich statt von oben zuführen.
https://imgur.com/a/r9EGSOc
Das Foto habe ich gerade mit einer Meta-Stories-Brille aufgenommen.
https://www.amazon.com/gp/product/B09DCVFNFF/
Allerdings musste ich es mit durchsichtigem Klebeband umwickeln, damit sich der AirTag nicht aus der Halterung herausdreht.
Ich habe es nicht im Detail untersucht, frage mich aber, ob man damit eine kleine beliebige Daten-Payload mitschicken könnte.
Selbst wenn der Computer vollständig isoliert ist, können die Daten über das iPhone der tippenden Person zurückgelangen.
Wenn sich der Schlüssel ändert und ein neues anderes Gerät sichtbar wird, bedeutet das, dass Post eingegangen ist — ziemlich clever.
Ich frage mich, wo die Obergrenze für die Datenmenge liegt, die ein einzelnes Gerät auf Apples Server hochladen kann. Wie lange bleibt der Verlauf der Standort-Pings auf dem Gerät, wenn ein Apple-Gerät weder Mobilfunk noch WLAN hat?
Außerdem frage ich mich, ob es hier Potenzial für einen Denial-of-Service-Angriff gibt: Ein Angreifer imitiert über eine Million Bluetooth-Geräte, und wenn das Opfer zufällig vorbeikommt, befinden sich an einem Ort extrem viele Geräte, sodass das Telefon hängen bleibt und ununterbrochen auf Apples Server hochlädt.
Könnte man damit eigentlich einen echten AirTag einrichten, ohne ein anderes Apple-Gerät wie ein iPhone oder einen Mac zu verwenden?
Früherer Beitrag: https://news.ycombinator.com/item?id=26342504
Kann man diese mit der echten Apple Find My App pairen und dann in der App finden?