P32 Apprentissage automatique pour la détection d’attaques par déni de services

De Wiki de Projets IMA
Révision datée du 11 janvier 2018 à 11:19 par Rcavalie (discussion | contributions) (I - Première semaine)

Description du projet

L'objectif de ce projet est d'automatiser la détection d'attaques par déni de services sur un réseau LoRa composé d'un émetteur, d'un récepteur ainsi que d'un capteur. Les données qui transitent dans les trames sont des températures. Une attaque peut par exemple correspondre à une variation brutale du ping, au détournement de la source et autres. Pour cela, il faut analyser les trames en transit et détecter si oui ou non elles représentent une menace. Un programme, développé en Python, sera capable d'avertir les personnes concernées sur une éventuelle attaque par déni de services. Dans un premier temps, il sera nécessaire de recenser un maximum d'angles d'attaque pour être capable de prévoir ces phénomènes. Une fois ces attaques analysées, il faudra générer un DATASET de trames avec trafic normal et avec attaques. Ce dataset sera ensuite utilisé par un réseau de neurones pour qu 'il puisse l'apprendre et être capable de classer une trame normale d'une trame à risque. En parallèle à cela, un programme séquentiel viendra renforcer la détection avec une étude du ping et de renvoi automatique des trames. Pour réaliser ce projet, je dispose de deux mois à temps plein.

Matériel emprunté

Titre
Matériel Quantité
Modules LoRa SX1276 3
STM32 3
Câbles mini-USB/USB 3

Environnement de développement

Spyder (Python IDE) : https://anaconda.org/anaconda/spyder

Mbed Compiler (Modules LoRa) : https://os.mbed.com/compiler/#nav:/;

Ubuntu

Archives GitLab : https://archives.plil.fr/rcavalie/PFE

Planning prévisionnel

Titre
Tâche Temps (jours)
état de l'art 3
prise en main des modules LoRa / IDE Mbed 2
communication / interception du trafic 3
types d'attaque 7
création du dataset 7
architecture du réseau de neurones 7
tests sur réseau 4
développement d'une application facile d'usage 3

État de l'art

Les attaques par déni de service consistent à rendre indisponible un service en augmentant la fréquence d'envoi de trames sur un récepteur. Il est également possible d'utiliser le rejet afin de renvoyer de manière continue une seule et même trame et tenter de saturer la BP d'un service. Un émetteur pirate pourrait par exemple usurper l'identité d'un émetteur du réseau et ainsi perturber les mesures de température.

Les DoS sont des attaques très répandues notamment dans le domaine de l'IoT ou de plus en plus d'objets connectés font leur apparition. Nous pouvons citer pour exemple la vulnérabilité de certains drones quant à ce type d'attaques.

Ici les paramètres à surveiller seront :

- L'identifiant de l'émetteur 
- Le ping
- La puissance d'émission 
- Le contenu de la trame qui doit toujours indiquer une température 
- Le rejet de trame

Concernant le réseau LongRange, la communication se fait par modulation des ondes radios. A partir de la board SX1276, nous allons être capable d'envoyer des paquets et de les recevoir. Ainsi, il sera possible de générer un DATASET correspondant à la classe d'un trafic normal.

I - Première semaine

Au cours de cette première semaine, j'ai pu obtenir plus de précisions sur le projet. Une fois le matériel récupéré à l'IRCICA, je suis passé par quelques exemples de code notamment l'exemple du Ping-Pong entre deux modules LoRa.

lien : https://github.com/Lora-net/LoRaMac-node

documentation sur la librairie SX1276 par Mbed : https://os.mbed.com/users/GregCr/code/SX1276Lib/docs/tip/classRadio.html#a5a96290956c521510d1bd5a7c1ac21b9

En étudiant la valeur des registres et les paramètres d'émission et de réception, je suis parvenu à créer un code capable d'émettre une trame de la forme suivante :

Trame format.JPG