IMA4 2017/2018 P3
Sommaire
Présentation générale
Description
Mon projet est suivant:
Le développement de l'Internet des Objets amène de nouveaux problèmes en terme de sécurité. En effet, ces objets, en général petits, n'embarquent que très peu d'éléments de sécurisation. Par ailleurs, leur mise à jour est souvent très difficile voire impossible. Un défaut de sécurité sur ce type d'objets permet à des utilisateurs malveillants de réaliser des attaques de grande envergure, du fait du grand nombre d'objets (par exemple ici).
Comme il est difficile de sécuriser l'objet par lui même (coût élevé, performances des objets limitées, ...), il est nécessaire de trouver d'autres solutions. Pour cela, nous proposons de développer :
1.une plateforme d'écoute sur les bandes ISM 868 MHZ, 2,4 GHz essentiellement ;
2.un "modèle" normal correspondant à un trafic de données non malveillant ;
3. différents scénarios d'attaques et leurs signatures associées.
Objectifs
Le but du projet est donc de réaliser un système permettant de récupérer et analyser les messages sous le protocole zigbee. Et il peut donner des signaux et messages indiquant si le réseau est sous l'attaque et associer le scénario et l'attaque. Le projet a pour but de récupérer et analyser les messages du réseau d'objet, et après, donner une manière d'indiquer si le réseau subit l'attaque. J'ai choisi le zigbee comme protocole de réseau.
1. Construire la communication avec quelques arduino et Xbee par le protocole zigbee.
2. Faire communiquer les arduino et récupérer les messages, et après, selon les messages, chercher une définition de la commmunication normale.
3. Attaquer le réseau par 'DDos' , 'Replay'.
4. Analyser les messages, et chercher les caractères correspondant aux différentes attaques.
5. Selon les analyses, donner une solution à indiquer si le réseau subit l'attaque.
6. Associer les attaques et les scénarios
Definition des Attaques
Doss[1]
Une attaque par déni de service (abr. DoS attack pour Denial of Service attack en anglais) est une attaque informatique ayant pour but de rendre indisponible un service, d'empêcher les utilisateurs légitimes d'un service de l'utiliser. À l’heure actuelle la grande majorité de ces attaques se font à partir de plusieurs sources, on parle alors d'attaque par déni de service distribuée (abr.DDoS attack pour Distributed Denial of Service attack). Il peut s'agir de :
l’inondation d’un réseau afin d'empêcher son fonctionnement ; la perturbation des connexions entre deux machines, empêchant l'accès à un service particulier ; l'obstruction d'accès à un service pour une personne en particulier ; également le fait d'envoyer des milliards d'octets à une box internet. L'attaque par déni de service peut ainsi bloquer un serveur de fichiers, rendre impossible l'accès à un serveur web ou empêcher la distribution de courriel dans une entreprise.
L'attaquant n'a pas forcément besoin de matériel sophistiqué. Ainsi, certaines attaques DoS peuvent être exécutées avec des ressources limitées contre un réseau de taille plus importante et plus moderne. On appelle parfois ce type d'attaque « attaque asymétrique » en raison de la différence de ressources entre les protagonistes.
Les attaques en déni de service se sont modifiées au cours du temps (voir historique).
Tout d'abord, les premières n'étaient perpétrées que par un seul « attaquant » ; rapidement, des attaques plus évoluées sont apparues, impliquant une multitude de « soldats ». On parle alors de 'DDoS' (distributed denial of service attack). Certains pirates informatiques se sont spécialisés dans la « levée » d’armées de « zombies », qu’ils peuvent ensuite louer à d’autres personnes ou groupes malveillants pour attaquer une cible particulière. Avec la forte augmentation du nombre d’échanges commerciaux sur Internet, le nombre de chantages au déni de service a très fortement progressé.
Replay Attacks (Attaque par rejeu)[2]
Une attaque par rejeu (en anglais, replay attack ou playback attack) est une forme d'attaque réseau dans laquelle une transmission est malicieusement répétée par un attaquant qui a intercepté la transmission. Il s'agit d'un type d'usurpation d'identité.
Exemple d'attaque par rejeu:
L'exemple suivant présente une attaque par rejeu où Ève usurpe l'identité d'Alice en volant son mot de passe. Supposons qu'Alice veuille communiquer avec Bob. Pour être certain de communiquer avec Alice, Bob lui demande son mot de passe, qu'Alice lui envoie (possiblement après l'avoir chiffré avec une fonction de hachage cryptographique). Pendant ce temps, Ève écoute la conversation et enregistre le mot de passe (ou le résultat de l'application de la fonction de hachage sur le mot de passe, ce résultat est souvent appelé digest). Une fois l'échange terminé, Ève contacte Bob en prétendant qu'elle est Alice. Quand Bob lui demande son mot de passe pour vérifier son identité, Ève renvoie le mot de passe (ou son digest) qu'elle avait préalablement intercepté.
Les attaques par rejeu ne sont pas limitées au vol de mot de passe, ce genre d'attaque peut se faire dans d'autres situations. Une autre attaque permettant d'entrer dans un véhicule au moyen d'une attaque par rejeu est décrite plus bas dans cet article.
Matériaux
4 Arduino Uno
4 Xbee Adapteur
4 Arduino_xbee_shield
4 Xbee
1 telosb
4 piles extérieurs
Analyse du projet
Positionnement par rapport à l'existant
L'idée va ainsi être de construire un système de IOT , et essayer d'attaquer le réseau, et après, récupérer les messages de IOT, analyser si il est sur l'attaque.Afin d'associer les scénarios et les attaques.
Forescout et Bitdefender sont deux entreprises célèbre dans le domaine de sécurité de IOT, ils utilisent quelques astuces pour identifier rapidement l’utilisateur, le propriétaire, le système d’exploitation, la configuration de l’appareil, les logiciels, les services, l’état des patchs et la présence d’agents de sécurité. Après leur produits peuvent analyser si la périphérie est dangereux selon leur base de donnée. Il peuvent aussi donner les service d'afficher tous les information de périphérie connectés au réseau pour aider leur client à observer et contrôler le réseau. Leur produit est bon, mais ils peuvent supporter juste quelques protocoles: wifi , bluetooch, 4G, Ethernet, IP etc.
Par contre,rapport à mon projet, mon produit a pour le but de la sécurité de IOT dont le protocole est Zigbee et il surveille le réseau de IOT en analysant les contenus de trames de IOT, je vais analyser non seulement le contenu des messages, mais aussi, les caractères physique de la communication, la fréquence de la transmission de trame, sa puissance etc. Pour analyser les trames et la frequence de récupération de trames, je vais utiliser le SVM et RNN. Mon idée principale est que le système peut juger si il est sur l'attaque justement selon l'analysis de trame et la fréquence de la transmission de trame, et pas de besoin de identifier les apparail connectant au IOT.
Analyse du premier concurrent
Forescout
ForeScout peut identifier les appareils Internet des objets (IoT), par example les ordinateurs,
les tablettes ou smartphones non gérés, les contrôler et organiser une réponse à l'échelle
du système.
Les spécialités principales sont:
1. Identifier les appareils et les détails indétectables par d'autres systèmes
2. Contrôler l'accès, refuser le chaos
3. Organiser la sécurité à l'échelle du système
Il a une grande base de donnée de sécurité qui lui aide à trouver les IOT vulnérable,
dangerous ou qui a des hautes risques. Son advantage principale est ce qu'il peut
détecter, identifier les IOT qui connecte au réseau et donner leur détails.
La façon de l'utiliser est suivant:
Analyse du second concurrent
Bitdefender BOX
BitDefender Box est une solution de protéger le IOT en l'autre manière,
Elle peut aussi detecter les apparails connectés au réseau, mais son acte
principal de protection est de dentifiez les failles de sécurité et les risques
sur le réseau, Lorsqu'elle détecte quelque chose, elle passe à l'action. BOX
fait correspondre les informations collectées à partir de vos appareils avec
des bases de données de vulnérabilités en ligne, avant de fournir un rapport
détaillé de l'opération. Elle fournit également des conseils sur la manière
de gérer et de sécuriser votre réseau, en fonction des vulnérabilités détectées.
Scénario d'usage du produit ou du concept envisagé
Mon produit est une arduino avec Xbee. Il est utilisé dans le IOT dont utilisant le protocol Zigbee. Il surveille la communication dU IOT, et récupère tous les trames. Chaque fois il récupère une trame, il va utiliser mon algorithm à analyser si le réseau est sur l'attaque. Si oui, il va envoyer un message d'alarm au central de Réseau.
Réponse à la question difficile
Quel est le matériel ?
Je vais utiliser Arduino avec Xbee pour construire un IOT, et j'ai l'intension de utiliser python à coder le programme à controler le IOT et analyser les trames.
Quel est le protocole ?
Je vais utiliser Zigbee comme le protocol de IOT.
Quelles sont les entrées du réseau de neurones ?".
Pour mon projet, ce n'est pas souffisant qu'on mets seulement les contenus de trames comme l'entrée des systèmes, parce que non seulement le contenu de trame mais aussi la fréquence de récupération de trame indiquent si le système est en train sur l'attaque, donc j'ai besoin de coder la fréquence à matrix et mélanger les contenus de trame et la fréquence de récupération, après les laisser être l'entrée du système.
L'acte d'analyser les donner?
SVM(machines à vecteurs de support) et RNN(machines à vecteurs de support).
Préparation du projet
Cahier des charges
Choix techniques : matériel et logiciel
Matériel:
Arduino, Xbee
Logiciel:
Python, Tensorflow pySerial ect.
Liste des tâches à effectuer
1. Construire la communication avec quelques arduino par le protocole Xbee.
2. Faire communiquer les arduino et récupérer les messages, et après, selons les messages, chercher une définition de 'commmunication normale'.
3. Attaquer le réseau par DDos, LAND, Ping of Death etc.
4. Analyser les messages, et chercher les caractères correspondant à la façon d'attaque.
5. Selon les analyses, donner une solution à indiquer si le réseau subit l'attaque.
Calendrier prévisionnel
Réalisation du Projet
Feuille d'heures
Tâche | Prélude | Heures S1 | Heures S2 | Heures S3 | Heures S4 | Heures S5 | Heures S6 | Heures S7 | Heures S8 | Heures S9 | Heures S10 | Total |
---|---|---|---|---|---|---|---|---|---|---|---|---|
Analyse du projet | 30 | 10 | 10 | 12 | 10 |
Prologue
Semaine 1
J'ai obtenu les matériaux et construit un IOT simple qui contenait 4 arduinos avec Xbee. Les arduinos peuvent se communiquer entre eux.
Après, je vais faire quelles attaquer(par exemple Doss et 'reply attack' etc.) à l'IOT et récuper les trames pour analyser.
Semaine 2
J'ai changé le mode de communication de Xbee de AT à API, et maintenant, ils peuvent non se communiquer entre des end-points. Et j'ai écrit un simple protocole de communication pour simuler la communication réelle. Après, je vais commencer à attaquer le système avec Ddos. Je vais utiliser un arduino avec xbee pour envoyer les trame très fréquemment à le coordinateur et le end-point, et utiliser un xbee lié avec pc à récupérer les trame et calculer la fréquence des trames, leur puissances etc.
Semaine 3
J'ai chercher les arts d'attaquer le IOT avec DDos, et je vais attaquer le IOT par 2 façon, le premier est d'utiliser un arduino à envoyer très fréquement les trames à un arduino de le IOT, et tester si le IOT se communique normalement, si non, de quelle fréquence, elle n'est pas fonctionne normalement. L'autre façon est d'envoyer les trame avec très grande de taille, et tester si le IOT se communique normalement, si non, à quel taille de trame, elle n'est pas fonctionne normalement.
Semaine 4
J'ai completé la communication de IOT. La communication est simple, mais pratical: il y a 4 arduino(on va s'appleler A,B,C,D à la suite) avec xbee dans le réseau, dont 3 se communiquent, une est comme le coordinateur, les autres 2 sont comme end_point devices. Le fonctionnement est: A envoye un message 'hello B' à B, et éteindre 2 seconds. Quand B récupère 'hello B' de A, il va allumer le Led, et après, attendre 2 seconds, après, il va étendre son Led et envoyer 'hello C à C. Quand C récupère 'hello C' de B, il va allumer le Led, et après, attendre 2 seconds, après, il va étendre son Led et envoyer 'hello A' à A. Quand A récupère 'hello A' de C, il va allumer le Led, et après, attendre 2 seconds, après, il va étendre son Led et envoyer 'hello B' à B. Après, ce que je vais faire est d'utiliser Arduino D à attaquer le réseau. Par exemple, il va envoyer continuement '1234567890' avec la haute fréquence à A,B,C après, je vais récupérer le datas et le temps de datas pour analyser si la communication est influencé. Je peux aussi observer l'influence par observer la fréquence du clignement du led.