Conférence DEFCON 27. Votre voiture est ma voiture. Partie 1

Briefing sur les performances:

Pour beaucoup d'entre nous, une voiture est l'un des achats les plus chers que nous ayons jamais faits. Dans un monde où toutes choses sont interconnectées, il est tout à fait naturel de vouloir contrôler à distance votre voiture: obtenez des rappels où nous l'avons garée, vérifiez si vous avez oublié de verrouiller les portes ou de démarrer le moteur à distance pour préchauffer ou refroidir l'intérieur en fonction de la période de l'année.

De nombreux fabricants proposent des systèmes d'alarme en option qui offrent ces commodités et la tranquillité d'esprit. Mais dans quelle mesure pouvons-nous faire confiance aux fournisseurs de ces systèmes qui protègent l'accès à nos voitures dans le domaine numérique? Dans ce rapport, Jmaxxz parlera de ce qu'il a découvert en examinant l'un de ces systèmes.

Jmaxxz est connu pour son travail avec les systèmes de maison intelligente August Smart Lock (rapport DEFCON 24, «Backdooring The Frontdoor»). Ces dernières années, son attention s'est concentrée sur les appareils pour l'Internet des objets. Il a participé aux sections «IoT village zero day» de DEFCON 24 et DEFCON 25 et a finalement décidé qu'il était temps de rechercher le produit du marché secondaire de l'automobile - démarreur à distance (ci-après dénommé DS).



Donc, je m'appelle J-Max, je suis programmeur de profession et hacker par vocation. Je fais tout ce qui concerne les châteaux, et tout au long de cette conversation, vous entendrez de nombreuses déclarations qui expriment mon opinion exclusivement et ne sont pas liées à l'opinion de mes employeurs passés, présents et futurs. Comme vous l'avez probablement compris, il s'agira de voitures, à savoir de démarreurs à distance et de systèmes d'alarme. Commençons par le contexte, qui est important dans ce contexte, car beaucoup de gens considèrent ces systèmes comme un luxe inutile.
Donc, où je vis est assez froid, et mon ami souffre d'une maladie appelée syndrome de Raynaud. Du froid, un spasme des vaisseaux sanguins des mains se produit, le flux sanguin vers les doigts diminue fortement, il y a des signes d'engelures jusqu'à la nécrose des tissus. La diapositive montre à quoi cela ressemble habituellement.



En novembre dernier, je n'ai toujours pas décidé quoi lui donner pour Noël. Et donc elle rentre chez elle bouleversée par l'aéroport, car sa voiture ne s'est pas réchauffée sur le chemin du retour. À ce moment, j'ai réalisé que je lui donnerais un système de démarrage à distance du moteur et j'ai commencé à chercher la meilleure option. Il s'est avéré que le marché des démarreurs à distance est assez étendu et que de nombreux fabricants ne fournissent pas suffisamment d'informations sur leur produit.

Ils ne disent pas comment installer le système et quels outils utiliser pour programmer l'appareil. C'est un problème pour moi, car c'est ma voiture, mon démarrage à distance, et je dois avoir accès à ces outils. J'ai donc cherché un peu plus et j'ai trouvé une entreprise canadienne, Fortin, qui produit de tels démarreurs et fournit volontiers toute la documentation nécessaire. Je me suis installé sur ce produit et je me suis mis à la recherche d'une télécommande adaptée. Le fait est que si vous utilisez une télécommande standard avec un démarreur à distance, son champ d'action sera limité à la portée de la télécommande standard. Sur le marché secondaire, des télécommandes sont proposées qui fonctionnent à une distance d'un demi-mille à un mille et demi. Selon les avis des consommateurs, il s'agit d'un mouvement publicitaire, car en réalité, la distance est beaucoup plus petite. C'est le problèmeparce que mon amie doit démarrer le moteur de la voiture garée dans le parking de l'aéroport dès qu'elle descend de l'avion, qui est à environ 800 mètres.



Par conséquent, ce serait formidable si elle pouvait simplement retirer son téléphone, ouvrir l'application et cliquer sur "Démarrer le moteur". J'ai trouvé un produit tiers appelé MyCar qui est entièrement compatible avec le démarreur Fortin. Il s'agit d'un petit porte-clés avec une carte SIM et un récepteur GPS, que vous pouvez mettre dans la voiture et connecter à un démarreur à distance. Ensuite, à l'aide d'une application mobile, vous pouvez démarrer le moteur à distance, déverrouiller les verrous et autres.



Je pensais que ce serait merveilleux: juste après l'atterrissage de l'avion, ma copine pourra démarrer le moteur, et au moment où elle arrivera dans la voiture, la cabine sera déjà chaude.

Parlons donc un peu du fonctionnement des démarreurs à distance. Pour ce faire, vous devez d'abord comprendre comment le moteur de la voiture démarre. Jusque vers le milieu des années 90, un démarreur de voiture était une serrure mécanique traditionnelle dans une connexion à clé. Il fallait insérer une clé et la tourner pour fermer le circuit électrique. Aux États-Unis, les serrures marquées «antidémarrage» sont devenues populaires. Cela semble compliqué, mais ce n'est qu'un verrou électronique. Ainsi, vous avez un verrou mécanique, qui est la clé du verrou électronique, qui, à son tour, est un transpondeur et contient des informations qui peuvent être lues. Et jusqu'à ce que vous ouvriez la serrure électronique, votre voiture ne démarre pas. Sur le côté droit de la glissière, vous voyez 2 clés: à gauche pour le dispositif d'immobilisation et à droite pour le commutateur d'allumage habituel.Il active simplement les composants mécaniques de la serrure, tandis que la clé gauche déverrouille la serrure électronique, qui démarre le moteur de la voiture.



Pourquoi est-ce que je parle de ça? Le démarrage à distance fonctionne via un dispositif d'immobilisation. Sur la diapositive suivante, vous voyez le schéma de connexion de l'appareil Fortin EVO One à l'antidémarrage - en bas à gauche, vous voyez une paire de contacts désignés comme IMO. En haut à droite du diagramme, vous voyez deux lignes: CAN LOW et CAN HIGH. Ce sont les contacts pour la connexion au bus CAN. Les démarreurs à distance sont connectés au bus CAN parce que les coûts d'installation sont réduits car moins de connexions sont utilisées pendant l'installation. Si le démarreur à distance peut lire les données du bus CAN ou envoyer des commandes via le bus CAN, cela réduit le temps d'installation du système de démarrage du moteur à distance.

En haut à gauche du diagramme, il y a tout un tas de GPIO liés à la gestion ou à la lecture des informations de la machine. Par exemple, vous souhaitez que les phares clignotent ou qu'un bip retentisse lorsque vous appuyez sur le bouton de verrouillage. Ces choses peuvent être contrôlées à l'aide de ces GPIO. En bas à gauche du circuit, vous voyez un grand connecteur maladroit - c'est une interface qui fournit un contournement d'une serrure mécanique. Autrement dit, vous n'avez pas besoin d'insérer et de tourner la clé dans le contacteur d'allumage, car cette interface fournit une interaction directe du relais du système de démarrage à distance avec la serrure électrique.



Les diapositives suivantes montrent les étapes d'installation d'un démarreur à distance. Fondamentalement, il consiste à retirer le couvercle de la colonne de direction, à installer et à connecter l'unité DS. Cela semble assez effrayant, mais simple.



La télécommande elle-même se connecte à ce que Fortin appelle un canal de données. Le système utilise le protocole de transfert de données physiques propriétaire UART - un émetteur asynchrone universel qui échange des données à une vitesse de 9600 bauds. Fortin Remote Starter se connecte simplement via le bus UART aux deux télécommandes que vous voyez sur la diapositive.



Après avoir installé DS, j'ai réfléchi à la façon dont ces appareils peuvent affecter la sécurité des voitures. Évidemment, la DS devrait contourner le dispositif d'immobilisation, alors dans quelle mesure est-il sûr en termes de possibilité de vol ou d'interception du contrôle de la machine? Cela s'applique non seulement à la transmission de données sur un réseau cellulaire, mais également au signal de démarrage à distance lui-même. J'ai donc commencé à rechercher les informations du fabricant sur Internet pour le protocole de transfert de données utilisé sur Internet et je suis entré dans des forums où les gens écrivent que Fortin refuse de fournir ce protocole. Une des raisons: «nous ne diffusons pas de telles informations, car EVO n'est pas un jouet pour les fans, il est destiné à être utilisé par des professionnels.



Étant un peu professionnel, j'ai décidé de construire ma propre machine sur le bureau. J'ai obtenu la deuxième unité système EVO, assemblé le circuit imprimé, qui était une voiture, ajouté des commutateurs pour simuler l'allumage, un bouton pour la pédale de frein et tout un tas de LED pour afficher diverses conditions.



En combinant tout cela, j'ai connecté l'appareil FTI pour surveiller le canal de données et j'ai commencé à collecter ces données. Au début, cela ressemble à celui montré sur la diapositive, et ce qui se passe ici n'est pas entièrement clair. Mais en y regardant de plus près, nous pouvons dire qu'il y a certainement une sorte de structure ici.



Veuillez noter que chaque fois que j'appuie sur un bouton de ma télécommande, le message que l'antenne envoie à ma DS commence toujours à 0C et se termine à 0D. Donc, si nous séparons simplement ce que nous obtenons, en supposant que 0C est le début et 0D la fin, nous nous retrouvons avec quelque chose comme ça.



Une certaine structure est déjà clairement visible ici, vous pouvez donc découvrir ce qui se passe. Après avoir passé du temps à suivre quel message apparaît après avoir appuyé sur un certain bouton, j'ai pu compiler un tableau de commandes, chacune correspondant à une action spécifique. Autrement dit, lorsque vous appuyez sur le bouton de la télécommande, l'antenne envoie une commande au module de démarrage à distance, qui ressemble à ceci.



Voici à quoi ressemble une structure d'équipe typique.



Lorsque vous appuyez sur le bouton de la télécommande, l'antenne envoie une telle commande au démarreur à distance. Il réveille l'octet 0C, suivi de 2 octets qui, je pense, représentent le sens de la transmission. Ceci est intéressant, car l'UART a déjà une direction de transmission / réception de signal, donc j'ai marqué ces octets comme des «ordures», considérez-les simplement comme une constante. Ceci est suivi d'un seul octet indiquant la commande que l'utilisateur souhaite exécuter. Cela peut être une serrure de portes ou leur ouverture, désactiver l'alarme, etc. En général, tout ce que vous voulez faire à distance est lié à cette commande. FF payload FF F1 est l'adresse, ou identifiant, qui identifie l'antenne distante d'où provient le message. Si l'unité DS ne reconnaît pas l'identifiant, la commande est ignorée. Si le DS accepte l'identifiant,une procédure en plusieurs étapes commence, qui comprend la vérification de la clé de contact, la mise en marche ou l'arrêt du moteur, l'enfoncement de la pédale de frein, etc. En fait, ce processus n'a pas beaucoup d'importance, seul l'appareil étudie actuellement l'ID.

À la fin du message se trouve un octet avec une somme de contrôle et un octet indiquant la fin de la commande. Maintenant que nous comprenons comment fonctionne le protocole, que pouvons-nous faire? J'ai quelques vidéos sur le sujet. Malheureusement, pour une raison quelconque, la vidéo est sans son, je vais donc vous dire ce qui se passe à l'écran. À gauche de la colonne de direction sur le couvercle du tableau de bord se trouve une boîte blanche qui contient des composants électroniques avec le micrologiciel Particle.IO qui comprend le protocole Fortin. Un fil à pointe bleue est une antenne. Cette chose me permet d'interagir avec le démarreur à distance depuis la cabine de la voiture et de voir sur l'écran de l'ordinateur portable ce qui se passe.



Donc, j'envoie la commande de déverrouillage de verrouillage à la voiture, mais cela ne fonctionne pas, car la DS ne connaît pas cette antenne. Comme je l'ai déjà mentionné, il s'agit simplement d'UART, dont la propriété est le support de la communication dite bidirectionnelle, afin que vous puissiez recevoir à distance des informations sur l'état de la voiture. Par exemple, si le moteur a été physiquement démarré ou arrêté, l'unité DS enverra un message correspondant à l'antenne de la télécommande. Dans ce cas, le message contiendra l'adresse de cette antenne elle-même.



Le problème est que la communication est effectuée via le protocole UART, et quiconque se connecte au bus UART peut voir l'adresse où ce message est envoyé, de sorte que dans mon firmware, il est possible de cloner l'adresse d'une antenne existante, ce que je fais avec la commande correspondante.



Pour générer un message, ouvrez simplement la porte de la voiture. Comme vous pouvez le voir, la DS envoie un message à l'antenne indiquant que la porte était ouverte et l'alarme se déclenche immédiatement.



Pour désactiver l'alarme, j'envoie la commande «déverrouiller», après quoi le son de l'alarme est désactivé et la voiture est déverrouillée. Vous devrez me croire sur parole, car nous n'avons pas pu exécuter cette vidéo avec du son. Essayons de lire à nouveau la vidéo.



Eh bien, le son est apparu (environ Translator: la même vidéo avec la bande sonore est lue à l'écran). Donc, vous avez vu comment j'ai envoyé la commande DS et activé l'alarme, et tout cela sans clé. Essayons maintenant de démarrer la voiture de la même manière, pour cela nous verrons la vidéo suivante.

Habituellement, il suffit de taper la commande "start" et d'essayer de démarrer le moteur ne fonctionnera pas. La raison en est qu'il s'agit d'une voiture avec une boîte de vitesses manuelle, et pour ces voitures, les systèmes de démarrage à distance ont une procédure spéciale. Dans ce cas, vous devez appuyer sur le bouton du démarreur à distance pendant que la clé est dans le contact et que le moteur est démarré. Ensuite, vous pouvez retirer la clé, sortir de la voiture, fermer la porte, après quoi la DS éteindra le moteur et verrouillera la porte. Ceci est fait pour que la voiture ne réagisse pas au démarrage à distance du moteur pendant la conduite, car elle est dangereuse. Cependant, ce n'est pas une fonction de sécurité complète. La preuve est assez simple si vous regardez le bloc EVO du démarreur à distance. Vous voyez ce fil jaune sous la forme d'une boucle, qui est conçue pour fonctionner avec une transmission mécanique.Si vous le coupez, cet appareil peut être utilisé pour une voiture avec une transmission automatique. Cette conception de l'unité vous permet de ne pas appliquer de paramètres spéciaux lors de l'installation de la DS dans des voitures avec différents types de transmission.



Donc, le système n'a pas répondu à la commande "start", donc je vais remettre ce bloc en place et couper ce fil pour rompre la connexion. Maintenant, si vous répétez la commande "start", un signal sonore retentit et les indicateurs d'état des systèmes du véhicule s'allument sur le tableau de bord, comme cela se produit lorsque la clé est insérée dans la serrure.



Pour le moment, nous avons une voiture que nous pouvons démarrer à distance sans clé dans le contact, mais le module DS n'est pas tout ce dont nous avons besoin. Dans des circonstances normales, vous ne pourrez toujours pas quitter le véhicule à distance, mais essayons de le faire tout de même.

Pour désactiver le verrouillage du volant, vous devez insérer une clé conventionnelle dans le contacteur d'allumage, dans laquelle il n'y a pas de transpondeur. Comme vous pouvez le voir, placez simplement la clé dans la position précédant le démarrage du moteur et le volant Subaru Impreza commence à tourner complètement librement.

Cependant, si vous n'avez pas de clé, lorsque vous appuyez sur la pédale de frein, la voiture calera. Il est assez facile de contourner cette limitation. Découvrez comment la voiture indique au démarreur à distance que le frein est appliqué. Vous voyez plusieurs ports multicolores à l'arrière du boîtier du module EVO - un câble du bus CAN sera connecté ici. Il suffit de retirer simplement ce câble de l'unité DS après le démarrage à distance de la voiture, et il ne répondra pas en appuyant sur la pédale de frein. Étant donné que cet appareil est situé sous le couvercle de la colonne de direction, je donne la commande «démarrer» via mon ordinateur portable, la voiture démarre, j'ouvre la porte, je sors de la voiture et je retire le connecteur de bus CAN du bloc EVO. Comme vous pouvez le voir, le moteur de la voiture tourne, alors que nous n'avons toujours pas de clé de contact.

Maintenant, si vous appuyez sur la pédale de frein, rien ne se passera, car l'EVO ne sait pas qu'elle a été enfoncée. Après cela, je peux prendre le volant, appuyer sur le frein, mettre le pommeau de vitesses en position «Drive», et la voiture ira. Tout cela se fait sans aucun indice.

21:40

Conférence DEFCON 27. Votre voiture est ma voiture. Partie 2


Un peu de publicité :)


Merci de rester avec nous. Aimez-vous nos articles? Vous voulez voir des matériaux plus intéressants? Soutenez-nous en passant une commande ou en recommandant à vos amis des VPS basés sur le cloud pour les développeurs à partir de 4,99 $ , un analogue unique de serveurs d'entrée de gamme que nous avons inventés pour vous: Toute la vérité sur les VPS (KVM) E5-2697 v3 (6 cœurs) 10 Go DDR4 480 Go SSD 1 Gbit / s à partir de 19 $ ou comment diviser le serveur? (les options sont disponibles avec RAID1 et RAID10, jusqu'à 24 cœurs et jusqu'à 40 Go de DDR4).

Dell R730xd 2 fois moins cher au centre de données Equinix Tier IV à Amsterdam? Nous avons seulement 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV à partir de 199 $ aux Pays-Bas!Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - à partir de 99 $! En savoir plus sur la création d'un bâtiment d'infrastructure. classe c utilisant des serveurs Dell R730xd E5-2650 v4 coûtant 9 000 euros pour un sou?

All Articles