Analyse du système de sécurité du drone : AR.Drone 2.0 Quad
Transcription
Analyse du système de sécurité du drone : AR.Drone 2.0 Quad
Analyse du système de sécurité du drone : AR.Drone 2.0 Quad-Copter [Codages et Sécurité des Réseaux] CLAURE CABRERA Oscar Mike DOYEN-LE BOULAIRE Marine Filiere ISSC ENSIMAG Grenoble, France Filiere ISSC ENSIMAG Grenoble, France [email protected] [email protected] ABSTRACT Les drones ont initialement été utilisés au profit des forces armées ou de sécurité d’un Etat, mais de plus en plus ont aussi des applications civiles comme la recherche, le cinéma, et l’environnement. Certains fabriquants ont compris que les drones pouvaient leur ouvrir le marché des particuliers, passionnés par l’aéromodélisme ou simplement souhaitant réaliser des vidéos de vacances originales. Depuis les premiers modèles à destination du grand public, les drones se sont énormément démocratisés, ne coûtant plus que quelques centaines d’euros pour des modèles relativement perfectionnés, pilotables depuis un smartphone et retransmettant un flux vidéo en streaming. En particulier, l’interface de l’application AR.Freeflight de l’entreprise Parrot a été conçue de manière à pouvoir être utilisée par Figure 1: Capture des personnes n’ayant aucune connaissance en pilotage. AR.Freeflight Un des modèles les plus populaires aujourd’hui est l’AR.Drone 2.0 de la société française Parrot. Ce drone étant principalement considéré comme un jouet, la sécurité de ses systèmes et de ses communications n’a, semble-t-il, pas été un élément central lors de sa conception. Pourtant, il est faux de croire que le piratage d’un drone est sans intérêt ou sans conséquence. Outre, le vol pur et simple (un pirate prend le contrôle du drone, le fait atterrir et part avec), il est possible d’imaginer des scenarii où le drone, devenu incontrôlable pour son pilote légitime, tombe au milieu d’une foule ou percute des lignes à haute tension. Les gouvernements prennent peu à peu conscience des risques et des opportunités que représentent les drones et commencent à les prendre en compte dans la législation. En France, leur utilisation est principalement réglementée par deux arrêtés du 11 avril 2012 et par le code de l’aviation civile. En ce qui concerne les activités dites de loisirs pratiquées par d’écran de l’application des amateurs, les limites de ce qu’il est possible de faire sont assez simples. Le vol au-dessus d’une zone peuplée est interdit ; le pilote doit toujours avoir un visuel sur son appareil. La hauteur maximale de vol est de 150 mètres, bien qu’il existe des zones avec des limitations plus basses, par exemple à proximité d’un aérodrome. Dans le cas d’un vol en immersion (le pilotage se faisant directement à partir de la vidéo envoyée en streaming par le drone), un second pilote doit avoir un visuel sur le drone et être capable d’en reprendre le contrôle à tout moment. Un autre point crucial de la règlementation est le respect de la vie privée d’autrui. En effet, ces drones sont quasiment tous équipés de caméras haute définition et donc capable de filmer des personnes n’ayant rien à voir avec le pilotage du drone dans leurs activités. Comme pour des prises de vue plus classiqes, il est interdit de filmer des personnes sans leur consentement. Enfin, la diffusion et surtout la commercialisation des images obtenues au moyen de la caméra d’un drone sont interdites. Cette restriction est souvent interprétée dans le milieu des passionnés comme une concession faite aux photographes professionnels pour éviter une concurrence. Dans cet article, nous faisons une étude du système de communication de l’AR.Drone 2.0 Quad-Copter, suivie d’une étude de ses faiblessses et des attaques qu’il est en conséquence possible de mettre en place. Table 1: Résultats de AR.Drone Port Nom du service 21 FTP 23 Telnet 5555 freeciv 1.2 Figure 2: AR.Drone 2.0 Parrot sur lequel porte cette étude Categories and Subject Descriptors H.4 [Information Systems Applications]: Miscellaneous; D.2.8 [Software Engineering]: Metrics—complexity measures, performance measures General Terms Security, Drone Keywords Security, Drone 1. INTRODUCTION L’AR.Drone de la société Parrot est un drone Quad-Copter commandé à distance grâce à l’application AR.FreeFlight disponible pour les apparails mobiles de plateforme iOS et Android. La connexion se fait via un réseau Wi-Fi nonsécurisé créé par le drone après son allumage. Ainsi tout appareil peut s’y connecter, envoyer des instructions au drone et recevoir sa télémétrie et son flux vidéo. Même si l’AR.Drone 2.0 n’est pas un drone à usage professionnel, ses caractéristiques physiques et sa facilité de contrôle, grâce à l’application AR.FreeFlight, font de lui un outil puissant. L’AR.DRONE offre aussi la possibilité, en utilisant son propre SDK, de développer des applications diverses ciblant la recherche, la sécurité, les jeux, la cinématographie, etc. 1.1 Etude d’une trame wireshark La figure 1 présente la capture d’une communication entre le pilote (adresse IP : 192.168.1.2) et le drone (adresse IP : 192.168.1.1). Le protocole utilisé au niveau de la couche 4 du modèle OSI est le protocole User Datagram (UDP). Comme ce protocole ne nécessite pas d’authentification au préalable, il peut représenter une faille de sécurité comme nous le verrons dans la suite. On constate que les paquets de commande envoyés par le pilote à son drone sont assez reconnaissables, tant via le filtre ”ar drone” de wireshark que par leur taille (154 ou 155 octets) et leur contenu. Procédons à l’analyse du paquet n6094. Il correspond à une commande de virage à gauche envoyée par le pilote(1). Il est possible de lire la télémétrie du drone : virage (roll), altitude (pitch), accélération (gaz), yaw ????. Il est donc possible d’espionner les mouvements d’un AR Drone. l’analyse de ports du Commentaires /Data/Video/ Access ROOT streaming de la video Système de Communication Une fois allumé, l’AR.Drone 2.0 met en place un point d’accès non-sécurisé appelé ardrone2-XXXXXX où XXXXXX est une séquence de numéros apparemment aléatoires. Dans notre cas, il s’agit de la suite 090933. Une fois connecté à ce réseau, il est possible de faire un scan de ports ciblant l’adresse IP du drone (192.168.1.1) en utilisant l’application NMAP. Le résultat de ce scan nous montre les ports ouverts : Il est très important de remarquer que les services FTP et TELNET ne sont pas sécurisés (protégés par mot de passe). En conséquence, on peut communiquer avec le drone de manière frauduleuse à travers ces ports. Par exemple, on peut se promener dans l’architecture des fichiers du drone en utilisant simplement telnet ou lui envoyer des fichiers par FTP. Ces manipulations sont d’autant plus faciles que les portes (ou plutôt les ports) ont été laissées grandes ouvertes. Il ne s’agit pas là d’une sécurité faible mais d’une absence de sécurité. 1.3 Système Interne Le système d’exploitation du drone est de type UNIX. Dans le répertoire /bin se trouve la plupart des scripts permettant de commander le drone. Par exemple, /bin/check update.sh est le script gérant la liste des scripts à lancer au démarrage du drone et /bin/Wifi setup.sh permet de démarrer les connexions Wifi. Le fichier de configuration principal se trouve dans le répertoire /data : config.ini. Il faut souligner que, puisque le port 23 est ouvert, on peut accéder à tous ces scripts, les modifier, les exécuter, voire les supprimer par une simple connexion en telnet. En effet, la connexion se fait par défaut en root et nous donne donc tous les droits sur les fichiers. Le flux vidéo peut être récupéré dans le répertoire /data/video. Il est possible de récupérer ce flux en différé en branchant une clé USB sur le drone. Celle-ci se monte automatiquement dans le répertoire /data/video/usb. Le programme chargé de gérer à proprement parler le pilotage du drone est program.elf. C’est ce fichier qui transforme les commandes envoyées par le pilote en suite d’actions à effectuer par le drone. 2. DÉVELOPPEMENT (MAIN BODY) Nous avons entrepris de mettre en pratique deux scénarii d’attaque du drone parmi toutes ceux possibles. Dans les deux cas, il s’agit d’une attaque de type Directory Traversal. 2.1 Attaque de type Directory Traversal Les attaques de type Directory Traversal Attack consistent à exploiter, non pas directement une faille de sécurité mais plutôt une faiblesse de la sécurité pour accéder à des fichiers qui ne devraient pas pouvoir être accessibles. Un exemple typique pour les applications internet est l’accés à des Figure 3: Exemple de trame wireshark entre le drone et le pilote pages réservées à l’administrateur par simple connaissance de l’URL. 2.2 Réinitialisation du drone Le processus program.elf est le processus chargé de commander le drone. En conséquence, terminer ce processus a donc pour effet de ”tuer” le pilotage du drone. Ceci se traduit par une réinitialisation des programmes du drone. Si celuici était en train de voler, la perte des commandes provoque sa chute. Par sécurité et pour éviter de risquer d’abı̂mer le drone, il vaut donc mieux éviter de procéder à cette attaque lorsque le drone est en l’air. De plus, une fois réinitialisé, le drone cherche à retourner à son état antérieur. Ainsi, s’il était dans les airs, il y retournera. Ceci se traduit par un décollage pouvant surprendre le pilote s’approchant de son drone pour voir la raison de sa chute brutale. Qu’il soit au sol ou dans les airs, les diodes sous les hélices sont un témoin visuel de l’état du drone : si elles sont vertes, le drone est pilotable ; si elles sont rouges, une réinitialisation est en cours. Nous avons réalisé un script qui provoque une réinitialisation brutale du drone à intervalles réguliers, par exemple tous les $delay=20 secondes. Il s’agit du script CSR resetAttack.sh. Celui-ci cherche toutes les $delay le PID du processus program.elf et le force à se terminer. Pour réaliser cette attaque, il faut procéder de la manière suivante : • Lancer l’exécution du script via le protocole telnet. On observe alors que les diodes placées sous les hélices passent du vert au rouge toutes les $delay. C’est le signe de la réinitialisation périodique de program.elf. 2.3 Déconnection du client propriétaire La seconde attaque que nous avons expérimentée est une attaque de désauthentification du client. Cela consiste à déconnecter le pilote légitime de son drone et d’en prendre le contrôle. Cette attaque diffère de la précédente sur deux points : • Le pilote perd totalement le contrôle de son drone. Dans la première attaque, il pouvait toujours le diriger entre deux réinitialisations. Autrement dit, la connexion Wifi n’était pas coupée. • A l’inverse, nous pouvons maintenant avoir le contrôle total du drone et lui envoyer nos propres commandes de vol. Le script que nous avons écrit et qui permet cette attaque est CSR DroneHacker.sh fourni dans l’archive. L’attaque se conduit de la manière suivante : • Envoyer le script au drone via le protocole FTP (commande ”PUT”). Le fichier se retrouve dans le répertoire /data/video. • On cherche, parmi les réseaux Wifi autour de nous, un Access Point dont l’adresse MAC est de la forme 90:03:b7:*:*:*. Il faut savoir que les adresses MAC sont en réalité composées de deux parties : les six premiers octets sont caractéristiques de l’entreprise qui a fabriqué la machine (ici le drone) et les six derniers caractérisent la machine proprement dite. Une adresse MAC de la forme 90:03:b7:*:*:* est donc caractéristique d’un drone construit par l’entreprise Parrot. • Se donner les droits d’exécution sur ce script (commande ”chmod”). • Le script iwScanParser.sh permet de parser ces résultats. • Se connecter au réseau Wifi non-sécurisé généré par le drone. • Une fois celui-ci trouvé, on retient l’adresse MAC complète et le canal RF. https://projects.ardrone.org/ • On envoie au drone le script de désauthentification de la même manière que pour l’attaque précédente. [4] SHACHTMAN, ”Computer Virus hits U.S. Drone Fleet” Nous recevons alors les données de télémétrie et le flux vidéo du drone. Normalement, nous devrions également pouvoir envoyer des commandes de vol au drone, que ce soit via un script python (qui contient un scénario de vol complet) ou via un clavier ou une manette de console. Nous n’avons pas pu faire cela, nos différents périphériques n’étant malheureusement pas reconnus par le drone. La seule commande que nous avons pu envoyée est le changement de couleur des leds. Cela permet néanmoins de montrer que les échanges après cette attaque fonctionnent dans les deux sens : du drone vers nous et de nous vers le drone. 3. CONCLUSIONS La principale conclusion à tirer de ce travail est que le AR.Drone 2.0 de la société Parrot ne met en place aucune sécurité vis-àvis des intrusions informatiques et du code malicieux. En effet, comme nous venons de le montrer, il n’est pas nécessaire de cracker des sécurités pour accéder aux fichiers du drone, pour provoquer une réinitialisation de ses programmes ou pour désauthentifier son pilote légitime. Nous nous sommes contentés de passer par les ports 21 (FTP) et 23 (telnet en mode root) du drone qui sont continuellement ouverts. La seconde faiblesse est que le réseau wifi mis en place par le drone n’est même pas protégé par un mot de passe. Cependant, il ne faut pas croire que ceci soit une exception dans l’industrie des drones et que Parrot a fait preuve d’un laxisme étonnant contrairement à ses concurrents. En effet, les drones de la marque Dji qui se situent dans la gamme de prix supérieurs (à partir de 1000) souffrent des mêmes faiblesses. D’une manière plus anedoctique puisque les usages et les sécurités sont totalement différents, des drones militaires américains (Predator et Reaper) ont déjà été avec succés la cible de virus informatiques. APPENDIX A. HEADINGS IN APPENDICES A.1 References [1] PLEBAN, BAND, CREUTZBURG, ”Hacking and securing the AR.Drone 2.0 quadcopter - Investigations for improving the security of a toy”. http://proceedings.spiedigitallibrary.org/ proceeding.aspx?articleid=1833079 [2] KAMKAR, ”SkyJack”. http://samy.pl/skyjack/ [3] Project AR.Drone, http://www.cs.clemson.edu/course/cpsc420/material/Papers /Computer%20Virus%20Hits%20US%20Drone%20Fleet.pdf" [5] AR.Drone 2.0, ”State of the art technology” http://ardrone2.parrot.com/ardrone-2/specifications/ Figure 4: Données de télémétrie et flux vidéo reçus après une attaque de désauthentification