OpenHaystack: Apple नेटवर्क के ज़रिए Bluetooth डिवाइस ट्रैकिंग ‘AirTags’ बनाने की तकनीक
(github.com/seemoo-lab)- OpenHaystack Apple के Find My नेटवर्क का उपयोग करके निजी Bluetooth डिवाइसों को ट्रैक करने वाला एक framework है, जिससे Mac और BBC micro:bit या Bluetooth-सक्षम डिवाइस के साथ अपना खुद का ट्रैकिंग टैग बनाया जा सकता है
- जब आसपास का iPhone OpenHaystack accessory के BLE advertisement को खोजता है, तो वह लोकेशन को encrypt करके Apple server पर upload करता है, और OpenHaystack उस लोकेशन रिपोर्ट को download करके decrypt कर मैप पर दिखाता है
- यह प्रोजेक्ट TU Darmstadt Secure Mobile Networking Lab के Find My नेटवर्क के reverse engineering और security analysis का परिणाम है, और लोकेशन डेटा एक्सेस से जुड़ी कमजोरी CVE-2020-9986 को Apple ने ठीक कर दिया है
- macOS app लोकेशन रिपोर्ट पाने के लिए Apple Mail plugin का उपयोग करता है, और इंस्टॉलेशन के दौरान Gatekeeper को अस्थायी रूप से disable करना पड़ता है तथा उपयोग के समय Mail खुला रखना होता है
- यह experimental software है, इसलिए कोड का पूरा परीक्षण नहीं हुआ है और यह अधूरा है; दिए गए firmware-आधारित accessory fixed public key broadcast करते हैं, इसलिए आसपास के दूसरे डिवाइसों से भी उनका ट्रैक होना संभव हो सकता है
OpenHaystack क्या करता है
- OpenHaystack Apple के Find My नेटवर्क के माध्यम से निजी Bluetooth डिवाइसों को ट्रैक करने वाला एक framework है
- उपयोगकर्ता अपना खुद का ट्रैकिंग टैग बनाकर उसे keychain, backpack जैसी वस्तुओं पर लगा सकते हैं या laptop जैसे Bluetooth-सक्षम डिवाइस में integrate कर सकते हैं
- इसके लिए Mac और BBC micro:bit या कोई अन्य Bluetooth-सक्षम डिवाइस चाहिए
- cellular connection न होने पर भी आसपास का iPhone accessory को खोज सकता है और नेटवर्क कनेक्शन मिलने पर उसकी लोकेशन Apple server पर upload कर देता है
शोध पृष्ठभूमि और security analysis
- OpenHaystack, Apple के Find My network या offline finding पर किए गए reverse engineering और security analysis के परिणामों पर आधारित है
- TU Darmstadt की Secure Mobile Networking Lab ने जून 2019 में Apple द्वारा offline finding की घोषणा के बाद इसका analysis शुरू किया
- यह system निम्न तत्वों को जोड़ता है
-
Bluetooth advertisement
- public-key cryptography
- encrypted location report का केंद्रीय database
- analysis के दौरान दो vulnerabilities मिलीं
- सबसे गंभीर vulnerability ने malicious application को लोकेशन डेटा तक पहुँचने की अनुमति दी
- इस vulnerability को Apple ने ठीक किया और इसे CVE-2020-9986 के रूप में पहचाना गया
- संबंधित security और privacy analysis PoPETs 2021 के पेपर Who Can Find My Devices? Security and Privacy of Apple's Crowd-Sourced Bluetooth Location Tracking System में शामिल है
-
experimental software होने की सीमाएँ
- OpenHaystack experimental software है और इसका कोड पूरी तरह tested नहीं है तथा यह अधूरा है
- दिए गए firmware का उपयोग करने वाले OpenHaystack accessory fixed public key broadcast करते हैं
- इस वजह से आसपास के दूसरे डिवाइस भी उन्हें ट्रैक कर सकते हैं
- यह व्यवहार भविष्य की release में बदल सकता है
- OpenHaystack, Apple Inc. से संबद्ध नहीं है और न ही Apple द्वारा endorsed project है
components और उपयोग प्रवाह
- OpenHaystack दो components से बना है
- macOS application: निजी Bluetooth डिवाइस की आखिरी reported location दिखाता है
- firmware image: Bluetooth डिवाइस को ऐसा beacon broadcast करने देता है जिसे iPhone खोज सके
- system requirement macOS 11 Big Sur है
- नया accessory बनाते समय उपयोगकर्ता नाम दर्ज करता है और वैकल्पिक रूप से icon और color चुनता है
- app location report के encryption और decryption के लिए एक नई key pair बनाता है
- private key Mac के keychain में store होती है
- डिवाइस deployment के लिए supported device को USB से Mac से जोड़कर app का Deploy button इस्तेमाल किया जाता है
- integrated deployment की बजाय advertisement में इस्तेमाल होने वाली public key को copy करके manual deployment भी किया जा सकता है
- मैप पर पहली location report दिखने में अधिकतम 30 मिनट लग सकते हैं
- मैप सभी items की latest location दिखाता है
- हर item पर क्लिक करके उसका आखिरी update received time देखा जा सकता है
- reload button से location report refresh की जा सकती है
Mail plugin और इंस्टॉलेशन तरीका
- OpenHaystack app, Apple server से location report download करने के लिए Apple Mail के लिए custom plugin मांगता है
- यह plugin private API के उपयोग के लिए Apple Mail की permissions inherit करके काम करता है
- इंस्टॉलेशन प्रक्रिया में Gatekeeper को अस्थायी रूप से disable करना पड़ता है
sudo spctl --master-disableसे Gatekeeper बंद करें- Mail की Preferences → General → Manage Plug-Ins में
OpenHaystackMail.mailbundleको enable करें - इसके बाद
sudo spctl --master-enableसे Gatekeeper फिर चालू करें
- कहा गया है कि plugin email जैसे अन्य निजी डेटा तक पहुँच नहीं करता
- location report download के दौरान OpenHaystack app plugin से communicate करता है, इसलिए Mail खुला रखना ज़रूरी है
Find My नेटवर्क कैसे काम करता है
- OpenHaystack, Apple के offline finding system को चार चरणों में समझाता है
-
Pairing
- Find My नेटवर्क के उपयोग के लिए P-224 elliptic curve आधारित public/private key pair बनाई जाती है
- private key को Mac keychain में सुरक्षित रखा जाता है
- public key को micro:bit जैसे accessory पर deploy किया जाता है
-
Lost state
- accessory public key को Bluetooth Low Energy advertisement के रूप में broadcast करता है
- आसपास का iPhone OpenHaystack accessory को असली Apple डिवाइस या certified accessory से अलग नहीं पहचान सकता
-
Discovery
- आसपास का iPhone जब BLE advertisement प्राप्त करता है, तो GPS से वर्तमान लोकेशन लेता है
- iPhone advertisement में शामिल public key से लोकेशन encrypt करता है और encrypted report को Apple server पर upload करता है
- iOS 13 या उसके बाद के iPhone यह काम default रूप से करते हैं
- इस चरण में OpenHaystack शामिल नहीं होता
-
Retrieval
- Apple को यह पता नहीं होता कि कौन-सी encrypted location किस Apple account या डिवाइस की है
- संबंधित public key पता होने पर Apple user कोई भी location report download कर सकता है
- report end-to-end encrypted होती है, इसलिए private key के बिना उसे decrypt नहीं किया जा सकता
- OpenHaystack, OpenHaystack accessory के लिए report Apple से download करता है, Mac keychain में stored private key से उसे decrypt करता है, और फिर मैप पर latest location दिखाता है
- Apple केवल authenticated Apple users को location report download करने देता है, ताकि database की arbitrary access सीमित रहे
supported devices और विस्तार
- सिद्धांततः Bluetooth डिवाइस को Apple Find My नेटवर्क से ट्रैक किए जा सकने वाले OpenHaystack accessory में बदला जा सकता है
- फिलहाल सुविधाजनक firmware deployment केवल कुछ embedded devices पर supported है
- Linux डिवाइस सामान्य HCI script के साथ supported हैं
- support के उदाहरण इस प्रकार हैं
- Nordic nRF51: BBC micro:bit v1 पर tested, app deployment supported, फिलहाल केवल nRF51822 supported
- Espressif ESP32: ESP32-WROOM, ESP32-WROVER पर tested, app deployment supported, deployment में अधिकतम 3 मिनट लग सकते हैं और Python 3 चाहिए
- Linux HCI: Raspberry Pi 4 और Raspbian पर tested, सभी Linux machines को support करना चाहिए
- इसे Bluetooth Low Energy support करने वाले अन्य डिवाइसों पर port किया जा सकता है, और इसके लिए firmware source code तथा paper specification का आधार लिया जा सकता है
OpenHaystack Mobile
- OpenHaystack Mobile ऐसा app है जो OpenHaystack macOS application का smartphone के लिए पूरा reimplementation है
- यह accessory creation और tracking features देता है, और खास तौर पर नए उपयोगकर्ताओं की usability बेहतर बनाना इसका लक्ष्य है
- macOS app से अलग, smartphone पर location report सीधे प्राप्त नहीं की जा सकती
- Find My नेटवर्क तक पहुँचने के लिए Mac hardware पर hosted proxy server की आवश्यकता होती है
- proxy server तक नेटवर्क के जरिए कई उपयोगकर्ता एक साथ पहुँच सकते हैं
- proxy server से connect करने के लिए
openhaystack-mobile/lib/findMy/reports_fetcher.dartमें सही URL सेट करना होगा - OpenHaystack Mobile Flutter framework में बनाया गया है और Android तथा iOS पर चलता है
लाइसेंस और संदर्भ सामग्री
- OpenHaystack GNU Affero General Public License v3.0 के तहत वितरित किया जाता है
- मुख्य संदर्भ सामग्री
1 टिप्पणियां
Hacker News की राय
अच्छा हो अगर Apple यूज़र न होने वालों के लिए भी कोई बेहतर विकल्प हो। जो सुना है, उसके मुताबिक Google का वर्ज़न उम्मीद के हिसाब से काफी खराब है
अपने टैग को खोजने की frequency पर सीमा है, कई फोन द्वारा detect किए जाने से पहले location नहीं दिखाता, और coverage भी खराब है
एक test में Samsung network बेहतर निकला, लेकिन यह समझ में नहीं आता, क्योंकि Samsung फोन तो Google network में मौजूद सभी Android फोन का सिर्फ एक subset होने चाहिए। Theory में अच्छा दिखने के बावजूद, Apple ने तरीका दिखा दिया था उसके कई साल बाद भी execution बेहद खराब है—बिलकुल Google product जैसा
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...
इस choice से Google को actual performance कितनी खराब है यह verify होने से पहले “innovative” privacy improvements पर कुछ articles तो मिल गए, लेकिन उसने Apple से इस क्षेत्र में compete करने का मौका गंवा दिया और Android/Pixel ecosystem व market share पर भी बुरा असर डाला। इस level की अक्षमता गढ़ना भी मुश्किल है
एक nomadic traveller के तौर पर Apple network मेरे लिए खास उपयोगी नहीं है। मैं उन अमीर शहरों में नहीं घूमता जहां Apple फोन बहुत हैं, बल्कि “बाकी दुनिया” में जाता हूं जहां Android share 90% के करीब है। फिर भी वहां भी Apple, Google से बेहतर करता दिखता है
असल में वह ठीक बगल वाले bag के अंदर था
बहुत दूरदराज़ देशों के airports या गांवों में भी मेरे 2 tags ठीक से मिल जाते हैं, इसलिए तसल्ली रहती है। यह video भी यही conclude करता है कि iPhone users के लिए भी Samsung SmartTag सबसे अच्छा है
https://m.youtube.com/watch?v=9wefUV_bR0Y
Code देखने पर लगता है कि FindMy network के devices द्वारा collect की गई locations लाने के लिए personal Apple Mail permission इस्तेमाल हो रही है
https://github.com/seemoo-lab/openhaystack/blob/8d214aa5eb68...
सोच रहा हूं कि Apple developer account बनाने पर क्या यह भी संभव होगा
जरूरत सिर्फ Apple account की है, और Apple hardware पर code चलाने की भी जरूरत नहीं
https://github.com/biemster/FindMy
मैं वह material फिर ढूंढना चाहता हूं जो पहले देखा था। Apple users को “ऐसा tag जो आपका पीछा कर सकता है” के बारे में alert करता है, लेकिन याद है कि किसी ने key derivation function (KDF) से MAC address या private key जैसी चीजों को rotate करने वाला implementation बनाया था, और वे derived values इतनी predictable थीं कि उन्हें track किया जा सके
जहां मैं रहता हूं वहां छोटी-मोटी चोरी की समस्या वाकई बहुत ज्यादा है, इसलिए टूटे शीशे बार-बार ठीक करने या जबरन घुसने के निशान साफ करने में काफी समय जाता है। मेरा किसी से सीधे भिड़ने का बिल्कुल इरादा नहीं है, लेकिन कभी किसी private investigator या law enforcement को देने लायक movement trail बनाना चाहता हूं
या फिर पानी की bottles का एक crate लेकर नजदीकी drug addicts के meeting spot पर जाएं और उनसे कहें कि आपका सामान चुराना बंद करें
हालांकि rotation period धीमा हो सकता है, और exact algorithm मुझे ठीक से नहीं पता
हालांकि यह कुछ साल पहले की बात है, इसलिए अब चीजें बदल गई होंगी
अपनी अस्थिर प्रक्रिया से लोकेशन लाने के बजाय Find My ऐप के साथ integrate करने का कोई तरीका हो तो अच्छा होगा
चीनी clones अपने-अपने brand के नाम से भी चल सकते हैं, इसलिए किसी न किसी तरह यह संभव होना तय लगता है
उस signature को Apple verify करता है, इसलिए उसे उस Apple ID account और app में add किया जा सकता है। दूसरी तरफ lost mode में devices जो keys broadcast करते हैं वे arbitrary और पूरी तरह opaque होती हैं, इसलिए Apple के पास भी उन्हें ID, device या developer से जोड़ने का कोई तरीका नहीं होता। यह project काम इसलिए करता है क्योंकि वे keys अंततः Apple servers तक पहुंचती हैं
clones ने pairing process के लिए legitimate key चुराई हुई लगती है। अगर Apple चाहे और उस key को खोज निकाले, तो शायद सभी accounts से सभी devices हटा सकता है, लेकिन device खुद broadcast करना जारी रखेगा और ऊपर वाले crude तरीके से location access की जा सकेगी। यह भी सोचता हूं कि असली key owner को बाद में, अगर Apple database में “इस key से sign होकर Apple ID में add हुए devices की संख्या” गिने, तो प्रति-device royalty का बड़ा bill मिल सकता है या नहीं
OpenHaystack दूसरी key इस्तेमाल करने वाला hack है, इसलिए cryptographic वजहों से app में नहीं दिख सकता
वाकई शानदार। मुझे Apple AirTag पसंद है, लेकिन यह बहुत मोटा है और shape भी awkward है
wallet में रखने लायक credit card-form AirTag हो तो अच्छा होगा, और cat collar में लगाने के लिए और छोटा AirTag भी अच्छा रहेगा
मेरे पास मौजूद एक को case से निकालकर देखा कि क्या चीज़ इसे और पतला बना सकती है; thickness का ज़्यादातर हिस्सा CR2032 battery holder, speaker और button की वजह से था। initial setup के बाद speaker और button शायद हटाए जा सकते हैं, और अगर पतला card-form factor चाहिए तो battery holder भी हटाकर ऊपर से नहीं बल्कि side से power दी जा सकती है
https://imgur.com/a/r9EGSOc
तस्वीर अभी-अभी Meta Stories glasses से ली है
https://www.amazon.com/gp/product/B09DCVFNFF/
हालांकि AirTag holder से मुड़कर बाहर न निकल जाए, इसलिए इसे transparent tape से लपेटना पड़ा
विस्तार से जांच नहीं की है, लेकिन सोच रहा हूं कि क्या इसका उपयोग करके small arbitrary data payload piggyback करके भेजा जा सकता है
computer पूरी तरह air-gapped हो तब भी typing करने वाले व्यक्ति के iPhone के जरिए data वापस जा सकता है
key बदलकर अगर कोई नया अलग device दिखे, तो मतलब mail आ गई है—काफी clever
उत्सुक हूं कि एक single device Apple servers पर कितना maximum data upload करा सकता है। अगर Apple device में cellular या Wi-Fi न हो, तो वह location ping history device पर कितनी देर तक रहती होगी?
और यह भी सोच रहा हूं कि यहां denial-of-service attack की संभावना है या नहीं। attacker 10 लाख से ज्यादा Bluetooth devices की नकल करे, और victim संयोग से पास से गुजरे, तो एक जगह बहुत बड़ी संख्या में devices दिखें, phone hang हो जाए और Apple servers पर लगातार upload करता रहे
वैसे, क्या iPhone या Mac जैसे किसी दूसरे Apple device के बिना इससे वास्तविक AirTag setup किया जा सकता है?
पिछली post: https://news.ycombinator.com/item?id=26342504
क्या इन्हें वास्तविक Apple Find My app के साथ pair करके app के अंदर find किया जा सकता है?