Nous faisons glisser tout ce qui est mauvais des iPhones via un Apple Find My qui fuit





Suite Ă  la rĂ©cente sortie de la technologie AirTags d'Apple, je me suis demandĂ© si le systĂšme de recherche hors ligne "Find My" pouvait ĂȘtre utilisĂ© de maniĂšre abusive pour tĂ©lĂ©charger des donnĂ©es arbitraires sur Internet Ă  partir d'appareils non connectĂ©s au WiFi ou Ă  l'Internet mobile. Ces donnĂ©es pourraient ĂȘtre diffusĂ©es via Bluetooth Low Energy et rĂ©cupĂ©rĂ©es par les appareils Apple Ă  proximitĂ©. Ces appareils, dĂšs qu'ils se connectent Ă  Internet, transmettraient immĂ©diatement ces donnĂ©es aux serveurs Apple, d'oĂč elles pourront ĂȘtre rĂ©cupĂ©rĂ©es ultĂ©rieurement. Une telle technique pourrait ĂȘtre utilisĂ©e par de petits capteurs dans des environnements non contrĂŽlĂ©s, afin de ne pas gaspiller d'Ă©nergie supplĂ©mentaire en utilisant l'Internet mobile. De plus, cela pourrait ĂȘtre intĂ©ressant pour voler des donnĂ©es depuis des endroits protĂ©gĂ©s par une cage de Faraday, si une personne avec un iPhone vient de regarder lĂ -bas. 



ThĂ©oriquement, cela devrait ĂȘtre possible : si vous parvenez Ă  Ă©muler deux AirTags, alors vous pouvez encoder les donnĂ©es en n'activant qu'un seul d'entre eux Ă  un moment donnĂ©. Dans ce cas, l'appareil rĂ©cepteur doit vĂ©rifier quel AirTag Ă©tait actif Ă  quel moment et dĂ©coder les donnĂ©es dans leur forme d'origine. Cependant, un tel schĂ©ma semble ĂȘtre extrĂȘmement peu fiable et, peut-ĂȘtre, inadaptĂ© Ă  une utilisation dans des situations pratiques rĂ©elles en raison de la bande passante de transmission de donnĂ©es trĂšs Ă©troite (en particulier compte tenu de la limitation de 16 AirTag sur Apple ID  , il semblait que la quantitĂ© de donnĂ©es transfĂ©rĂ© ne pouvait pas dĂ©passer quelques bits par heure).



Par consĂ©quent, la faisabilitĂ© de cette idĂ©e dĂ©pend de la façon dont le systĂšme est conçu et mis en Ɠuvre. Il s'avĂšre que les dĂ©cisions prises pour assurer la sĂ©curitĂ© et la confidentialitĂ© lors de la conception du mĂ©canisme hors ligne montrent que le cas que nous avons proposĂ© est trĂšs efficace comme mĂ©thode de pĂ©nĂ©tration et qu'il est presque impossible de s'en dĂ©fendre.





RĂ©sultat : extraire les donnĂ©es prĂ©cĂ©demment transfĂ©rĂ©es/tĂ©lĂ©chargĂ©es Ă  l'aide d'une application Mac dĂ©diĂ©e



  • Vous pouvez tĂ©lĂ©charger des donnĂ©es arbitraires Ă  partir d'  appareils non connectĂ©s Ă  Internet en diffusant des messages Find My via la technologie BLE (Bluetooth Low Energy)  vers les appareils Apple Ă  proximitĂ©, qui tĂ©lĂ©chargent ensuite les donnĂ©es pour vous
  •  ESP32, ( )  macOS, , : https://github.com/positive-security/send-my
  • ,   - Find My,  ,  








Localiser mon modem (ESP32) // Localiser mon modem (ESP32)



Appareils Apple à proximité //



Tour mobile Apple ou point d'accÚs Wifi à proximité // Tour cellulaire ou point d'accÚs Wifi



Appareil macOS avec application de récupération de données // Appareil macOS avec application pour récupérer des données



Flux de données // flux de données



.



Description du réseau de recherche hors ligne



Heureusement, ce protocole a dĂ©jĂ  Ă©tĂ© largement inversĂ© par un groupe de chercheurs de l'UniversitĂ© de technologie de Darmstadt, qui a publiĂ© l'article « Who Can  Find My  Devices ? «En mars 2021 et pour la preuve de concept, a publiĂ© l'implĂ©mentation open source d'  OpenHaystack . Avec cette implĂ©mentation, vous pouvez crĂ©er vos propres composants qui sont suivis sur le rĂ©seau Apple Find My. Un grand merci Ă  cette Ă©quipe ! C'est grĂące Ă  leur travail que le nĂŽtre a pu avoir lieu, et notre firmware (Ă©galement fait pour la preuve de concept) et l'application Mac sont basĂ©s sur OpenHaystack.



Sous une forme légÚrement simplifiée, le principe du systÚme de recherche hors ligne Find My est le suivant :



  1. AirTag Apple, , , AirTag ( )
  2. 2 AirTag Bluetooth, , ( 15 )
  3. , , .., Find My, , (  ECIES)  
  4. Lors de la recherche d'appareils, l'appareil du propriĂ©taire couplĂ© gĂ©nĂšre une liste de clĂ©s publiques remplaçables qu'AirTag a dĂ» utiliser ces derniers jours et demande Ă  Apple ses hachages SHA256. Le backend Apple renvoie des rapports de localisation chiffrĂ©s pour les clĂ©s dont les ID ont Ă©tĂ© demandĂ©s. 
  5. L'appareil du propriĂ©taire dĂ©code les rapports d'emplacement et affiche l'emplacement approximatif. 






Serveurs Apple // Serveurs Apple



Appareils de recherche // Appareils de recherche Appareil 



propriétaire // Appareil propriétaire Appareil



perdu // Appareil perdu



  1. // Couplage lors de la configuration initiale
  2. // Diffuser. Présentation de la clé publique Bluetooth
  3. // Télécharger les rapports de localisation cryptés
  4. // Télécharger et décrypter les rapports de localisation


Figure. 1. Organigramme simplifiĂ© des tĂąches rĂ©solues lors de la recherche d'appareils hors ligne 



Ce trĂšs beau design prĂ©sente des propriĂ©tĂ©s de sĂ©curitĂ© caractĂ©ristiques, notamment :



  • Protection de suivi contre les attaquants Ă  proximitĂ© avec des clĂ©s publiques amovibles 
  • ImpossibilitĂ© de dĂ©terminer l'emplacement des utilisateurs Apple 


Cependant, pour nous dans ce cas, le plus intĂ©ressant est celui-ci : Apple ne sait pas quelles clĂ©s publiques appartiennent Ă  votre AirTag, et, par consĂ©quent, quels rapports de localisation vous sont adressĂ©s. Ainsi, un point de terminaison demandant des rapports de localisation pour un identifiant de clĂ© spĂ©cifique n'effectue aucune autorisation (mais vous devez vous authentifier avec votre identifiant Apple pour accĂ©der au point de terminaison). 



Toute la sĂ©curitĂ© est assurĂ©e au niveau du chiffrement des rapports de localisation : la localisation ne peut ĂȘtre dĂ©chiffrĂ©e qu'avec la bonne clĂ© privĂ©e, et elle n'est stockĂ©e que sur l'Appareil du PropriĂ©taire appairĂ©, et il est impossible de la rĂ©cupĂ©rer avec une simple force brute attaque.



Concevoir un protocole de vol de donnĂ©es 



Cela suggĂšre que le seul moyen que nous pouvons utiliser pour crypter les donnĂ©es est la clĂ© publique EC diffusĂ©e (par exemple, nous ne pouvons pas influencer les coordonnĂ©es GPS, puisque le dispositif de « recherche Â» les ajoute).



Dans la section suivante, nous considĂ©rerons le backend Apple comme un magasin partagĂ© de valeurs de clĂ© publique, oĂč le hachage SHA256 est utilisĂ© comme clĂ© et le rapport de localisation cryptĂ© est utilisĂ© comme valeur. De plus, les opĂ©rations principales sont les suivantes :



  • Vous pouvez vĂ©rifier si des rapports de localisation existent pour un hachage spĂ©cifique si SHA256 
  • Vous pouvez ajouter des rapports de localisation Ă  un hachage SHA256 spĂ©cifique en diffusant la clĂ© publique correspondante 


Je pense que vous comprenez dĂ©jĂ  le cours des Ă©vĂ©nements : vous pouvez dĂ©finir des bits arbitraires dans la clĂ© partagĂ©e et le magasin de valeurs et les interroger Ă  nouveau. Si l'expĂ©diteur et le destinataire s'entendent sur un tel schĂ©ma de cryptage, des donnĂ©es arbitraires peuvent ĂȘtre transmises en l'utilisant.



J'ai décidé de construire un modem qui accepte un message via une interface série, puis parcourt ces données jusqu'à ce qu'un nouveau message soit reçu. Pour nous assurer que nous pouvons distinguer un bit "0" d'un bit non défini, nous diffuserons différentes clés publiques en fonction de la valeur du bit et demanderons au récepteur les deux clés publiques possibles.



Il n'y a aucune garantie quant au moment (ou le cas échéant) des messages de diffusion spécifiques seront téléchargés sur le backend Apple en tant que rapports de localisation. Le fait est que certains paquets peuvent n'atteindre aucun appareil Apple et que les appareils de recherche peuvent avoir des délais trÚs variables entre la réception d'un message diffusé et le téléchargement d'un rapport de localisation, ce qui peut dépendre de la connectivité en amont ou du mode d'alimentation. Ainsi, notre encodage de données ne doit pas dépendre des rapports de position qui arrivent et dans quel ordre, et permet également la récupération des flux de données partiellement reçus - ceux dans lesquels certains bits sont complÚtement perdus. Pour y parvenir, j'ai décidé de crypter un bit de données par diffusion, avec une valeur d'index indiquant,quel bit de message est défini. Grùce au message supplémentaire et à l'ID de modem, le systÚme est adapté à une utilisation multiple par plusieurs utilisateurs, gérant plusieurs messages.



Ainsi, en envoyant un bit spécifique, nous créons un tableau de 28 octets comme "[4b bit index] [4b message ID] [4b modem ID] [zeros padding ...] [bit value]", l'exploitons en tant que public clé et envoyer des représentations BLE, par exemple, pour diffuser des informations "le bit 0 du message 0 vaut 1".



Pour envoyer un message complet, le programme itÚre simplement sur tous ses bits et envoie la représentation à un bit avec une clé publique, dans laquelle l'index et la valeur de ce bit sont cryptés.







Message Ă  encoder // Message Ă  encoder



Clé publique générée à diffuser // Clé publique générée pour la diffusion



Indice de bit // Indice de



bit Valeur de bit // Valeur de bit



 



Encoder les bits du message dans la charge utile de diffusion



Lors de la rĂ©cupĂ©ration des donnĂ©es, l'application rĂ©ceptrice gĂ©nĂ©rera les mĂȘmes 28 tableaux d'octets (deux par bit, oĂč les valeurs binaires possibles sont 0 et 1) et demandez un service Apple avec les hachages SHA256 de ces "clĂ©s publiques". Une seule de ces clĂ©s doit avoir des rapports de localisation attachĂ©s, qui peuvent ensuite ĂȘtre interprĂ©tĂ©s (par exemple, le bit avec l'index 0 est 1).







Bits potentiels Ă  interroger // Bits pouvant potentiellement ĂȘtre interrogĂ©s



ClĂ©s publiques potentielles Ă  tester // ClĂ©s publiques pouvant potentiellement ĂȘtre testĂ©es



Interroger le backend Apple // Interroger l'



existence de la clé publique du backend Apple Décoder les données d'origine // Décrypter la clé publique en obtenir des données brutes





RécupÚre les données précédemment envoyées à partir d'un appareil macOS connecté à Internet



Remarque : vous pouvez envoyer non seulement un bit par message, mais, par exemple, envoyer un octet entier, qui contiendra les 8 derniers bits de la clé publique. Bien que cela nécessite une bande passante de transmission de données plus large, le récepteur devra désormais demander 255 identifiants de clé différents pour sélectionner / forcer brutalement un octet (comparer avec 16 identifiants de clé lors de l'encodage au niveau du bit).



Mise en Ɠuvre



CÎté expéditeur



Du cĂŽtĂ© de l'expĂ©diteur, j'ai dĂ©cidĂ© d'utiliser ESP32 - un microcontrĂŽleur tout Ă  fait ordinaire et bon marchĂ© (et un test rapide a montrĂ© qu'il peut changer l'adresse MAC BT beaucoup plus rapidement que, disons, un Raspberry Pi basĂ© sur Linux). Au dĂ©marrage, le firmware basĂ© sur OpenHaystack diffuse un message par dĂ©faut codĂ© en dur puis Ă©coute l'interface sĂ©rie (en boucle) pour voir si de nouvelles donnĂ©es de diffusion arrivent - et ainsi de suite jusqu'Ă  ce qu'un nouveau message soit reçu... Lors de la diffusion d'une clĂ© publique, elle doit ĂȘtre fractionnĂ©e et encodĂ©e dans les 6 premiers octets de l'adresse MAC Bluetooth (tous sauf les deux premiers bits, car la norme Bluetooth exige que les deux premiers bits soient mis Ă  1). Nous vous rĂ©fĂ©rons Ă  Voir la section 6.2 de l'article de l'UniversitĂ© de technologie de Darmstadt , oĂč cet encodage fait maison est dĂ©crit plus en dĂ©tail.



J'ai ajoutĂ© un prĂ©fixe statique Ă  ma charge utile afin de ne pas rencontrer de problĂšmes avec la spĂ©cification BT, et j'ai Ă©galement inclus un index de bits incrĂ©mentiel dans les 6 premiers octets de la clĂ© publique, ce qui fait que chaque bit transmis a son propre MAC BT adresse, juste au cas oĂč il y a une limitation de dĂ©bit basĂ©e sur l'adresse MAC n'importe oĂč dans la pile.





Sortie modem ESP32 dans la console série a



CÎté extraction de données



L'application Mac est Ă©galement basĂ©e sur OpenHaystack et utilise la mĂȘme astuce avec le plugin AppleMail pour envoyer des demandes de rĂ©cupĂ©ration de localisation correctement authentifiĂ©es au backend Apple. L'utilisateur est invitĂ© Ă  saisir un identifiant de modem Ă  4 octets (peut ĂȘtre dĂ©fini pendant le firmware ESP), aprĂšs quoi l'application sĂ©lectionnera, dĂ©codera et affichera automatiquement un message avec l'identifiant 0. Ensuite, l'utilisateur peut sĂ©lectionner d'autres messages ou changer de modem .



Le message est récupéré 16 octets (128 bits) à la fois (256 identifiants de clé sont demandés) jusqu'à ce qu'il n'y ait plus de rapports (pour un octet entier).



Complication mineure : expiration de la clĂ© publique

 

AprÚs avoir implémenté à la fois l'expéditeur et le destinataire, j'ai effectué le premier test en diffusant et en essayant d'obtenir une valeur de 32 bits. AprÚs quelques minutes, j'ai pu obtenir 23 bits sur 32, chacun est définitivement correct et avec environ 100 rapports de localisation, mais je n'ai obtenu aucun rapport de ce type pour les 9 bits restants.



SuspectĂ© que certaines des clĂ©s publiques gĂ©nĂ©rĂ©es ont Ă©tĂ© rejetĂ©es par les appareils Apple Ă  proximitĂ© pendant la phase de cryptage ECIES en tant que clĂ©s publiques invalides - et cela a Ă©tĂ© rapidement confirmĂ© en essayant de charger chacune des charges utiles gĂ©nĂ©rĂ©es en tant que clĂ©s publiques codĂ©es SEC-1 sur une courbe P224 en utilisant Package Python fastecdsa : pour chaque bit pour lequel je n'avais pas de rapports de localisation, le microcontrĂŽleur a diffusĂ© la clĂ© publique, lançant une exception InvalidSEC1PublicKey lors de l'importation de la clĂ© fastecdsa.



Un petit contexte du cryptage utilisé ici :



  • Le public EC de 28 octets reprĂ©sente la coordonnĂ©e X d'un point particulier, codĂ© avec SEC1. 
  • La clĂ© publique SEC1 a gĂ©nĂ©ralement aussi un bit "signe" qui dĂ©termine laquelle des deux coordonnĂ©es Y possibles pour une coordonnĂ©e X donnĂ©e doit ĂȘtre codĂ©e. Ce bit n'est pas transmis lors de la diffusion et n'est pas important pour la date d'expiration de la clĂ© publique. 
  • Lors du dĂ©codage de la clĂ© publique compressĂ©e, la coordonnĂ©e Y correspondante est calculĂ©e Ă  l'aide des paramĂštres de courbe fixes et vĂ©rifiĂ©e si la clĂ© est valide. Certaines des clĂ©s publiques gĂ©nĂ©rĂ©es Ă©chouent Ă  ce test. Pour plus de dĂ©tails voir la section 3.2.2 dans l'article " Validation des clĂ©s publiques sur les courbes elliptiques " :






Ce problĂšme de clĂ©s publiques invalides peut ĂȘtre rĂ©solu d'au moins deux maniĂšres :



  1. , , , . , , . , , , id  
  2. ( ). 28- X , 28- , , , , ( )


L'avantage de la deuxiĂšme option est que pour chaque bit reçu, on pourrait Ă©galement dĂ©chiffrer les rapports de localisation pour dĂ©terminer Ă  quel moment un bit donnĂ© a Ă©tĂ© reçu, mais cela nĂ©cessite un peu plus de traitement informatique. Lors de l'implĂ©mentation de cette option, j'ai dĂ©couvert qu'en raison de  bugs dans l'implĂ©mentation de la multiplication de courbes elliptiques  dans la bibliothĂšque uECC utilisĂ©e pour cela, pour certaines clĂ©s privĂ©es, ESP calculait des clĂ©s publiques diffĂ©rentes de BoringSSL sur Mac et fastecdsa sur Python (un flou diffĂ©rentiel s'est glissĂ© accidentellement ? ). Ces clĂ©s publiques ont mĂȘme Ă©tĂ© considĂ©rĂ©es comme invalides par la fonction uECC_valid_public_key () d'uECC. Par consĂ©quent, dans ce projet pilote, j'ai optĂ© pour l'option 1.







Message à encoder // Message encodé



Générer une clé publique à encoder // Générer une clé publique pour encoder



l'adresse MAC BT // Adresse MAC BT



Tester la validité, sinon incrémenter le compteur // Vérifier si la clé est valide, sinon augmenter le compteur de one



Advertisement payload // Payload pour la présentation



Encodage et envoi du message



Tests / Performances



Lorsque nous avons mis en place un contrĂŽle de validation de clĂ© publique, tout fonctionne parfaitement. Je n'ai pas effectuĂ© de tests de performances approfondis ni effectuĂ© de mesures, mais voici quelques estimations :



  •     ~3 . ,  
  •     - Mac.  16    ~5
  •     1 60 , , , . . , , , , ( , Apple)






CDF // Fonction de distribution cumulée



Médiane
 min // Médiane
 26,3 min.



Délai de publication (min) // Délai avant publication (min.)



Fig. 8. Retards dans la réception de tous les rapports, considérés au § 7.1 comme une fonction de distribution cumulative





Retards dans la rĂ©ception des rapports, mesurĂ©s par une Ă©quipe de l'UniversitĂ© de technologie de Darmstadt, sur la base des documents « Qui peut trouver mes appareils ? Â»



Utilisations potentielles



Bien que je m'intĂ©ressais principalement Ă  vĂ©rifier la faisabilitĂ© de ce que j'ai dĂ©crit, je pense que l'application pratique potentiellement la plus courante consiste Ă  tĂ©lĂ©charger des lectures de capteurs ou des donnĂ©es Ă   partir d'appareils IoT sans modem haut dĂ©bit, carte SIM, plan de donnĂ©es ou connectivitĂ© Wifi. Étant donnĂ© qu'Amazon  utilise un rĂ©seau similaire appelĂ© Sidewalk utilisant des appareils Echo,  il pourrait bien y avoir une demande pour de telles technologies. Étant donnĂ© que le cache des chercheurs accumule les diffusions reçues et y reste jusqu'Ă  ce qu'une connexion Internet soit Ă©tablie, les capteurs peuvent envoyer des donnĂ©es mĂȘme Ă  partir de zones sans couverture de rĂ©seau mobile, si des personnes munies d'appareils marchent dans de tels endroits.



Dans un monde  de rĂ©seaux de haute sĂ©curitĂ© , oĂč la technologie combinant lasers et scanners semble ĂȘtre une astuce prometteuse  pour combler les vides, les appareils Apple fournis par les visiteurs peuvent Ă©galement servir d'intermĂ©diaire viable pour  voler les donnĂ©es des  systĂšmes Ă  vide.ou des chambres protĂ©gĂ©es par une cage de Faraday. 



Il apparaĂźt Ă©galement que le protocole de dĂ©couverte hors ligne pourrait ĂȘtre utilisĂ© pour drainer le trafic sur les iPhones Ă  proximitĂ© connectĂ©s Ă  des tarifs illimitĂ©s . En limitant le nombre de rapports de localisation pouvant ĂȘtre envoyĂ©s Ă  partir d'un seul demandeur (255 rapports/soumissions car le nombre d'octets est Ă©gal Ă  1), et avec chaque rapport dĂ©passant 100 octets, la diffusion de nombreuses clĂ©s publiques uniques peut entraĂźner une augmentation significative du trafic sortant. depuis le smartphone. Bien que je n'aie remarquĂ© aucune limitation de frĂ©quence pour les rapports de localisation sortants, je n'ai pas non plus testĂ© la quantitĂ© de donnĂ©es pouvant ĂȘtre consommĂ©e.



Comment régler le problÚme



Comme je l'ai mentionné au tout début, il sera difficile pour Apple de se défendre contre ce genre d'abus s'il choisit de le faire.



Apple a conçu le systĂšme en pensant Ă  l'Ă©conomie des donnĂ©es. Ils ne peuvent pas lire les emplacements non cryptĂ©s et ne savent pas quelles clĂ©s publiques appartiennent Ă  votre AirTag, ni mĂȘme Ă  quelle clĂ© publique un rapport d'emplacement cryptĂ© particulier est associĂ© (car ils ne reçoivent que le hachage SHA256 de la clĂ© publique).



Dans cette optique, la limite indiquĂ©e de 16 AirTags pour Apple ID est intĂ©ressante, car il me semble qu'Apple n'est actuellement pas en mesure de l'obliger Ă  l'utiliser. 



Cependant, un durcissement supplémentaire de ce systÚme est possible, par exemple, dans les deux domaines suivants :



  • BLE.  , , AirTag OpenHaystack, AirTag . , , , BLE , , AirTag , , .
  •   Apple , id id AirTag, id , 15 16 id Apple ID ( id ). , , : Apple ID .






Dans cet article, nous avons répondu à la question de savoir s'il est possible de télécharger des données arbitraires à l'aide d'appareils Apple appartenant à d'autres utilisateurs : définitivement oui.



Le firmware du modem ESP32 et une application d'extraction de données pour macOS ont été implémentés, ils sont postés sur Github , vous pouvez les expérimenter.



Notez que cette implĂ©mentation n'est qu'une "preuve de faisabilitĂ©", et le "protocole" lui-mĂȘme n'est ni cryptĂ© ni authentifiĂ©. Par exemple, vous pouvez examiner les dĂ©tails d'un modem avec l'ID 0x42424242 en entrant simplement son ID (peut-ĂȘtre qu'en attendant quelqu'un peut Ă©galement dĂ©montrer qu'il n'y a pas d'authentification dans ce protocole).



Une derniĂšre remarque : lors de la prĂ©paration de cet article, j'ai remarquĂ© que l'"octet d'Ă©tat" inclus dans la vue BLE est Ă©videmment utilisĂ©, par exemple, comme indicateur de niveau de batterie. CombinĂ© avec les clĂ©s privĂ©es gĂ©nĂ©rĂ©es de maniĂšre dĂ©terministe qui sont tournĂ©es, cela ouvre probablement un autre trou de fuite de donnĂ©es (octet par vue), mais je n'ai pas testĂ© cette approche.






Les serveurs cloud de Macleod sont rapides et sécurisés.



Enregistrez-vous en utilisant le lien ci-dessus ou en cliquant sur la banniĂšre et obtenez un rabais de 10 % pour le premier mois de location d'un serveur de n'importe quelle configuration !






All Articles