IMA4 2017/2018 P3

De Wiki de Projets IMA
Révision datée du 19 février 2018 à 23:15 par Jyang (discussion | contributions) (Documents Rendus)


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 Xbee. Et 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 Xbee comme protocole de réseau.

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, selon les messages, chercher une définition de la commmunication normale.

3. Attaquer le réseau par DDos et étudier les autres attaques possible.

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

Algorithm

Après obtenir les donnée de trames sécuritaire et risqué, je vais utiliser la

technique de 'machine learning' à traiter les donner. Maintenant, j'estime que

SVM(machines à vecteurs de support) et RNN(recurrent neural network).

SVM:

Les SVM peuvent être utilisés pour résoudre des problèmes de discrimination, c'est-à-dire décider à quelle classe appartient un échantillon, ou de régression, c'est-à-dire prédire la valeur numérique d'une variable. La résolution de ces deux problèmes passe par la construction d'une fonction h qui à un vecteur d'entrée x fait correspondre une sortie y :

y=h(x)

On se limite pour l'instant à un problème de discrimination à deux classes (discrimination binaire), c'est-à-dire y in {-1,1}, le vecteur d'entrée x étant dans un espace X muni d'un produit scalaire. On peut prendre par exemple X = R^N.

Exemple:

maginons un plan (espace à deux dimensions) dans lequel sont répartis deux groupes de points. Ces points sont associés à un groupe : les points (+) pour y > x et les points (-) pour y < x. On peut trouver un séparateur linéaire évident dans cet exemple, la droite d'équation y = x. Le problème est dit linéairement séparable.

Pour des problèmes plus compliqués, il n'existe en général pas de séparatrice linéaire. Imaginons par exemple un plan dans lequel les points (-) sont regroupés à l'intérieur d'un cercle, avec des points (+) tout autour : aucun séparateur linéaire ne peut correctement séparer les groupes : le problème n'est pas linéairement séparable. Il n'existe pas d'hyperplan séparateur.

SVM.png

RNN:

Un réseau de neurones récurrents est un réseau de neurones artificiels présentant des connexions récurrentes. Un réseau de neurones récurrents est constitué d'unités (neurones) interconnectés interagissant non-linéairement et pour lequel il existe au moins un cycle dans la structure. Les unités sont reliées par des arcs (synapses) qui possèdent un poids. La sortie d'un neurone est une combinaison non linéaire de ses entrées.

La charactère spéciale c'est qu'elle peut prevoir le résultat avec l'information de séquence.

RNN.png

Les détails de RNN, vous pouvez les trouver sur le bibliographie 2.


Les systèmes de SVM et RNN sont comme une machine de classification. On doit faire 3 partie: 1.coder les contenu de trames et les transformer au matrix 2.entraînement: on leur donne les trames et leur 'laber'(sécuritaire ou risqué) en forme de matrix comme l'entrée, et SVM et RNN peuvent s'adapter pour classifier les nouveau trames. 3. Après l'entraînement, on entre la nouvel trame à le système, il va sortir le 'laber'(sécuritaire ou risqué).

Pour mon projet, ce n'est pas souffisant qu'on mets seulement les 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, apres les laisser être l'entrée du système.



bibliographie:

1. [1] 22:47 15/01/2018

2. [2] 23:06 15/01/2018

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.png

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:

Projet 2.png

Analyse du second concurrent

Bitdefender BOX

Bitdefender BOX.png

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.

Documents Rendus

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.