ProgRes 2018 – Projet : Fingerprinting des objets connectés basé sur l’analyse du trafic - SCAPY Partie 1
Le but de ce projet est d’utiliser l’API Python Scapy pour analyser le trafic des objets connectés afin d’identifier celui-ci. Pour ce but, il est recommandé d’extraire toutes les informations nécessaires donnant permettant de former un fingerprint pour chaque objet. Pour cela, vous devez combiner toutes les informations extraites afin de construire un profile pour chaque objet.
Pour la partie UPnP, vous aurez besoin des fichiers XML contenant la description de quelques objets. Vous devez donc les télécharger afin de les parser.
Votre code doit être composé par plusieurs modules séparés.
1- Un module mDNS responsable d’analyser les records mDNS afin d’extraire toutes information utile pour le fingerprinting d’un objet connecté utilisant le protocole Bonjour tel que le nom local, les instances de services fournis par l’objet, le type de chaque service etc…
2- Un module SSDP responsable d’extraire l’URL pointant vers la description XML de l’objet à partir du champ LOCATION du paquet SSDP de type NOTIFY.
3- Un module permettant de parser les fichiers XML afin d’extraire le nom de l’objet, le vendeur, le model, le type etc…
4- Un module permettant de parser les paquets DHCP afin d’analyser les différentes options et extraire les informations nécessaires pour le DHCP fingerprinting afin d’identifier le type de l’objet.
5- Un module permettant d’extraire le user-agent à partir de l’entête http.
Un module __main__ permettant de retourner un fichier .csv contenant tous les résultats retournés pour chaque technique de fingerprinting.
Le fichier .csv doit être organisé de la manière suivante :
Nom fichier .pcap
Adresse IP de l’objet
Adresse MAC de l’objet
Vendeur Informations mDNS
Informations SSDP
User- agent
Partie 2
Cette partie concerne l’analyse de différents paramètres permettant de différencier entre le trafic de chaque objet connecté en utilisant l’API Scapy. Ces paramètres permettant de savoir des informations sur le trafic de l’objet sans nécessairement avoir accès au contenu des messages échangés qui seront utilisés aussi pour identifier les objets.
Ecrire un module permettant de retourner pour chaque objet : - La longueur min des paquets
- La longueur max des paquets - La longueur moyenne des paquets
- L’intervalle d’arrivé des paquets (Inter-Arrival Time) : moyenne
Retournez les résultats obtenus dans fichier .csv organisé de la manière suivante :
Nom fichier min max moyenne Intervalle d’arrivé