Etude de la sécurité d'un drone : Différence entre versions

De Ensiwiki
Aller à : navigation, rechercher
 
Ligne 1 : Ligne 1 :
 
[[Catégorie:Projets]]
 
[[Catégorie:Projets]]
 
[[Catégorie:Projets Réseaux Mobiles et Avancés]]
 
[[Catégorie:Projets Réseaux Mobiles et Avancés]]
 +
 +
{{
 +
Projet Étudiant
 +
|titre = Etude de la sécurité d'un drone
 +
|cadre= Projets Réseaux Mobiles et Avancés
 +
|equipe= Antoine Marinier, Mickael Ranaivoarisoa, Thomas Trompette
 +
|encadrants=[mailto:Franck.Rousseau@imag.fr Franck Rousseau]
 +
}}
  
 
=Introduction=  
 
=Introduction=  
Ligne 11 : Ligne 19 :
  
 
Pour ce faire nous avons utilisés différentes technologies et caractéristiques du système que nous allons commencer par présenter.
 
Pour ce faire nous avons utilisés différentes technologies et caractéristiques du système que nous allons commencer par présenter.
 
=Team=
 
* Antoine Marinier
 
* Mickael Ranaivoarisoa
 
* Thomas Trompette
 
  
 
=Description du drone=
 
=Description du drone=

Version actuelle en date du 9 avril 2018 à 09:57


Project schedule.png
Titre du projet Etude de la sécurité d'un drone
Cadre Projets Réseaux Mobiles et Avancés

Équipe Antoine Marinier, Mickael Ranaivoarisoa, Thomas Trompette
Encadrants Franck Rousseau


Introduction

Dans le cadre de ce projet, nous avons décidé de nous intéresser à la sécurité liée aux drones. Plus précisément le modèle de Parrot, AR 2.0.

En effet de nos jours avec l’émergence des objets connectés, la course à l'innovation laisse parfois peu de place à la sécurité. Dans ce projet, notre principal objectif était de mettre en avant les failles du drone étudié pour en prendre le contrôle et réaliser différente opérations au dépend du propriétaire de ce drone.

Une fois cette objectif réalisé, nous nous sommes demandé s’il était possible de le modifier de telle sorte qu’il puisse de lui même réaliser des attaques.

Pour ce faire nous avons utilisés différentes technologies et caractéristiques du système que nous allons commencer par présenter.

Description du drone

Caractéristiques techniques

Comme précisé précédemment, nous avons focalisé notre étude sur l’AR drone 2.0 de la société Parrot. Ce drone possède un processeur ARM Cortex A8 32 bits cadencé à 1 Ghz et tourne sur un système Linux en version 2.6.32. Il possède un capteur vidéo capable d’enregistrer photo et vidéos en 720p au format h264 pour les vidéos et jpeg pour les photos. Il possède également deux types de connections : une filaire via USB et une sans fil à l’aide d’une Wifi b/G/n.

Ports ouverts

Le drone dispose d’un certain nombre de ports ouvert par défaut. Voici une série de ports qui nous intéressera pour la mise en place de nos scénarios d’attaque:

  • Port 21: Serveur FTP permettant l’accès aux vidéos et images enregistrées
  • Port 23: Serveur Telnet permettant l’accès à un shell en root
  • Port 5555: Stream vidéo
  • Port 5556: Commandes AT envoyées au drone

Commandes

Les commandes AT sont des strings qui peuvent être envoyés au drone afin de contrôler ses mouvements. Cela s’effectue à l’aide de paquets UDP sur le port 5556. Elles sont gérées à l’aide de deux librairies: ARDroneLib et ARDroneTool. Pour plus de détails sur la composition d’une commande, voir le lien suivant: https://jpchanson.github.io/ARdrone/ParrotDevGuide.pdf

Scénarios d’attaque

Environnement pour la démonstration:

Environnement.png

Scénario 1 - Connexion via telnet

Principe : Le drone agit comme un point d’accès Wifi auquel il faut se connecter. Celui-ci n’est pas protégé par un mot de passe. Une fois connecté, l’attaquant peut initier une connexion Telnet sur le port 23 du drone qui lui donne accès à un shell aux droits administrateurs.

Remarque : Cet accès au shell n’est pas authentifié ce qui signifie que n’importe qu’elle personne connectée au point d’accès peut y accéder.

Commandes:

  • sudo pacman -S nmap
  • nmap 192.168.1.1 # Il suffit de se connecter au point d’accès du drone, puis on scanne les ports

Scenario1.png

  • telnet 192.168.1.1 23 # On lance telnet sur le port 23

Scenario1 2.png

Scénario 2 - Envoi de paquets de déconnexion

Principe: Cette attaque est possible car le drone est basé sur le protocole Wifi. En effet, il est possible d’envoyer des commandes afin de déconnecter l’utilisateur connecté au drone. L’attaquant a besoin de l’adresse MAC du drone ainsi que l’adresse MAC du client connecté qu’il veut déconnecter. Puis il envoie des paquets “forgés” pour déconnecter le client en lui envoyant des trames.

Commandes:

  • sudo pacman -S aircrack-ng
  • sudo airodump-ng --enc opn <votre_interface> # “--enc opn” permet d’afficher uniquement les point d’accès Wifi non chiffrés
  • sudo iwconfig <votre_interface> channel X # channel du point d’accès récupéré à l'étape précédente

Scenario2.png

  • sudo aireplay-ng -0 1 -a 90:03:B7:FD:22:49 -c A8:B8:6E:48:C0:D0 <votre_interface> #envoie des paquets de déconnexion

Scénario 3 - Récupération du flux vidéo

Principe : Cet attaque consiste à récupérer le flux vidéo du drone lorsqu’il est en marche. Tout comme pour le scénario 1, il suffit à l’attaquant de se connecter au point d’accès, puis se connecter au port 5555. Ensuite une fois le flux vidéo récupéré, on peut le stream directement grâce à l’outil ffplay.

Remarque : Le moyen prévu par Parrot pour récupérer les vidéos enregistrées est via une connexion USB. Cette dernière n’est d’ailleurs pas sécurisée, car grâce à une connexion telnet avec le drone on peut récupérer et même modifier le contenu de la clé USB branchée au drone.

Commandes:

  • ffplay tcp://192.168.1.1:5555

Scénario 4 - Envoi de commandes

Principe : Cet attaque consiste à envoyer des commandes au drone en se faisant passer pour le client qui y est connecté. Le premier client connecté au point d’accès du drone est considéré comme le possesseur du drone, et est le seul qui peut envoyer des commandes au drone. Le principe est de forger des paquets UDP à l’aide de Scapy pour se faire passer pour le possesseur du drone. Pour cela, il suffit de forger son paquet avec l’IP source du client et envoyer une commande valide de pilotage du drone avec le protocole destiné à l’utilisation de l’AR Drone.

Note: Cette attaque serait bien plus difficile à réaliser si le protocole utilisé avait été TCP.

Code utilisé: Scenario4.png

Scénario 5 - Déni de service par attaque MITM

Principe : Cette attaque consiste à se mettre entre le client et le drone afin d’intercepter les paquets. Cette attaque s’appelle ARP Poisoning car elle est basée sur le protocole ARP et permet “d’empoisonner” le cache ARP du client. En effet, à cause des faiblesses du protocoles ARP, il est possible de forger des paquets afin de faire croire au client que notre adresse MAC est celle du drone. Après cette étape, les paquets passe alors par l’attaquant. Il est alors possible d’observer les paquets à l’aide d’un analyseur de paquets, mais aussi de ne pas les retransmettre au drone qui ne les recevra donc pas. On aboutit alors à un déni de service.

Commandes:

  • sudo pacman -S dsniff
  • nmap -sn 192.168.1.1/24 #identification des hôtes connectés au réseau
  • sudo arpspoof -i <votre_interface> -t 192.168.1.2 192.168.1.1 # en réalité 192.168.1.2 est toujours l'adresse du client

Nous sommes désormais entre le client et le drone, Wireshark peut nous en assurer: Scenario5.png

  • sudo echo 0 > /proc/sys/net/ipv4/ip_forward # on peut alors se débarrasser des paquets reçus

Pistes pour la sécurisation

Parrot propose d'associer une adresse MAC au drone à l’aide de l’application:

  • permet de bloquer les trafics non-autorisés
  • peut facilement être contournée à l’aide d’un spoof sur l’adresse MAC

Une solution peut être de sécuriser la connexion Wifi (WPA/WPA2). Voici un bon article à ce sujet:

Mise en place d’un drone hackeur

Matériel: Dongle Wifi TL-WN722N

Outils:

  • Driver Chipset Atheros AR9002U
  • Compilateur ARM

Principe: L’installation d’un driver adapté à notre dongle Wifi permettrait l’ajout d’une interface. A partir de là deux scénarios sont possibles:

  • Utiliser la dongle pour se connecter au drone, avec ainsi la possibilité d’augmenter la distance maximum avec l’utilisateur
  • Passer la dongle en mode monitor et faire tourner un script afin de hacker un drone à proximité.

Problème rencontré: Nous n’avons pas réussi à CROSS-COMPILER le driver adapté à notre drone. Nous n’avons donc pas pu l’installer.

Références