Netzob - Amossys
Transcription
Netzob - Amossys
NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Netzob : un outil pour la rétro-conception de protocoles de communication Georges Bossert 1 2 , Frédéric Guihéry 1 , Guillaume Hiet 2 1 AMOSSYS - Rennes, France 2 Research team CIDre, Supélec 6 juin 2012 L’inférence de protocole avec Netzob. 6 juin 2012 1 / 34 NETWORK PROTOCOL Les auteurs MODELIZATION BY REVERSE ENGINEERING Supélec et AMOSSYS - www.netzob.org - [email protected] Georges Bossert Doctorant AMOSSYS / Supélec Frédéric Guihéry Ingénieur Sécurité AMOSSYS Guillaume Hiet Enseignant chercheur Supélec - CIDre • AMOSSYS : Conseil et Expertise en Sécurité des Technologies de l’Information. • SUPELEC - CIDre : Groupe de recherche focalisé sur la sécurité des systèmes d’informations distribués. L’inférence de protocole avec Netzob. 6 juin 2012 2 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Plan 1 Le contexte 2 Notre modèle d’un protocole 3 L’inférence du modèle 4 Présentation de l’outil Netzob L’inférence de protocole avec Netzob. Le contexte 6 juin 2012 3 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] L’inférence de protocole avec Netzob. Le contexte Omniprésence des protocoles de communication Le contexte 6 juin 2012 4 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Le contexte Omniprésence des protocoles de communication Malheureusement, les spécifications ne sont pas toujours disponibles (protocoles propriétaires ou non documentés) L’inférence de protocole avec Netzob. Le contexte 6 juin 2012 4 / 34 NETWORK PROTOCOL Le contexte MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Pourquoi réaliser de la rétro-conception de protocoles ? Pour évaluer la robustesse des implémentations => Fuzzer l’API de contrôle d’une centrifugeuse. Pour générer un trafic réaliste et controllable. => Simuler la présence d’un botnet. Mais également... • Pour analyser le trafic et identifier d’éventuelles fuites de données. • Pour développer une version libre d’une implémentation propriétaire. • Pour valider l’implémentation d’un protocole vis-à-vis d’une spécification. L’inférence de protocole avec Netzob. Le contexte 6 juin 2012 5 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Le contexte La rétro aujourd’hui L’essentiel du temps de rétro-analyse d’un protocole ressemble à ça : L’inférence de protocole avec Netzob. Le contexte 6 juin 2012 6 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Le contexte La rétro aujourd’hui L’essentiel du temps de rétro-analyse d’un protocole ressemble à ça : • Processus complexe et laborieux • Processus essentiellement manuel, voire visuel • Communauté dépourvue d’outils d’analyse L’inférence de protocole avec Netzob. Le contexte 6 juin 2012 6 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Le contexte La rétro aujourd’hui L’essentiel du temps de rétro-analyse d’un protocole ressemble à ça : • Processus complexe et laborieux • Processus essentiellement manuel, voire visuel • Communauté dépourvue d’outils d’analyse Ce constat, partagé, a mené à la création du projet Netzob L’inférence de protocole avec Netzob. Le contexte 6 juin 2012 6 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org Un peu de définitions - [email protected] Protocole informatique : spécification • Vocabulaire : liste des messages et leur format. • Grammaire : règles de procédure permettant d’assurer la cohérence des messages échangés. L’inférence de protocole avec Netzob. Le contexte 6 juin 2012 7 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org Un peu de définitions - [email protected] Protocole informatique : spécification • Vocabulaire : liste des messages et leur format. • Grammaire : règles de procédure permettant d’assurer la cohérence des messages échangés. Rétro-conception • Retrouver la spécification de protocoles lorsqu’elle est inconnue • Par inférence (passive ou active) ou par analyse (manuelle) • A partir des messages échangés ou de l’exécutable L’inférence de protocole avec Netzob. Le contexte 6 juin 2012 7 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Plan 1 Le contexte 2 Notre modèle d’un protocole 3 L’inférence du modèle 4 Présentation de l’outil Netzob L’inférence de protocole avec Netzob. Notre modèle d’un protocole 6 juin 2012 8 / 34 NETWORK PROTOCOL Le modèle du vocabulaire MODELIZATION BY REVERSE ENGINEERING Identification des besoins - www.netzob.org - [email protected] Exemples que l’on souhaite vouloir modéliser Ethernet IPv4 L’inférence de protocole avec Netzob. TCP HTTP Notre modèle d’un protocole HTTP Body 6 juin 2012 9 / 34 NETWORK PROTOCOL Le modèle du vocabulaire MODELIZATION BY REVERSE ENGINEERING Réponse aux besoins - www.netzob.org - [email protected] Message brut Couche 1 Champ 1 L’inférence de protocole avec Netzob. Couche 2 Champ 2 Notre modèle d’un protocole 6 juin 2012 10 / 34 NETWORK PROTOCOL Le modèle du vocabulaire MODELIZATION BY REVERSE ENGINEERING Réponse aux besoins - www.netzob.org - [email protected] Message brut Couche 1 Couche 2 Champ 2 Champ 1 Taille - Fixe : .{n} - Variable : .{n, m} Attributs d'interprétation - Taille unitaire : bit, octet, double octet, etc. - Boutisme - Signe - Représentation : décimale, octale, héxa, ASCII, etc. - Transformation : base64, bz2, gzip, etc. Domaine de valeurs - Valeur statique - Valeur aléatoire - Dépendance intra-message - Dépendance inter-message - Dépendance environnementale Sémantique L’inférence de protocole avec Netzob. Notre modèle d’un protocole 6 juin 2012 11 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Le modèle de la grammaire Identification des besoins #1 : Traduire la relation entre un symbole en entrée et un symbole en sortie • Répondre « attack successful » lorsque l’on reçoit « attack ». L’inférence de protocole avec Netzob. Notre modèle d’un protocole 6 juin 2012 12 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Le modèle de la grammaire Identification des besoins #1 : Traduire la relation entre un symbole en entrée et un symbole en sortie • Répondre « attack successful » lorsque l’on reçoit « attack ». #2 : Définir plusieurs symboles de sortie pour le même symbole d’entrée • Répondre « attack successful » ou « attack failed ». L’inférence de protocole avec Netzob. Notre modèle d’un protocole 6 juin 2012 12 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Le modèle de la grammaire Identification des besoins #1 : Traduire la relation entre un symbole en entrée et un symbole en sortie • Répondre « attack successful » lorsque l’on reçoit « attack ». #2 : Définir plusieurs symboles de sortie pour le même symbole d’entrée • Répondre « attack successful » ou « attack failed ». #3 : Associer une probabilité d’émission pour chaque symbole de sortie • « attack successful » (90%) ou « attack failed » (10%). L’inférence de protocole avec Netzob. Notre modèle d’un protocole 6 juin 2012 12 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Le modèle de la grammaire Identification des besoins #1 : Traduire la relation entre un symbole en entrée et un symbole en sortie • Répondre « attack successful » lorsque l’on reçoit « attack ». #2 : Définir plusieurs symboles de sortie pour le même symbole d’entrée • Répondre « attack successful » ou « attack failed ». #3 : Associer une probabilité d’émission pour chaque symbole de sortie • « attack successful » (90%) ou « attack failed » (10%). #4 : Prendre en compte le temps de réponse • « attack successful » plus rapide que « attack failed ». L’inférence de protocole avec Netzob. Notre modèle d’un protocole 6 juin 2012 12 / 34 NETWORK PROTOCOL Le modèle de la grammaire MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Machine de Mealy Stochastique à Transitions Déterministes Machine de Mealy Stochastique à Transitions Déterministes MMSTD = h S, X, Y, T, q0 i q0 État initial S Ensemble des états X Alphabet des symboles d’entrées Y Alphabet des symboles de sorties T Ensemble de matrices de transitions • |T| = |X| × |Y| • T = {A(x, y)}, ai,j (x, y) = (p(sj , y|si , x), ti,j (x, y)) • ∀x ∈ X, ∀si , sj ∈ S p(sj |si , x) = ∑y∈Y p(sj , y|si , x) ∈ {0, 1} L’inférence de protocole avec Netzob. Notre modèle d’un protocole 6 juin 2012 13 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Le modèle de la grammaire Machine de Mealy Stochastique à Transitions Déterministes Pour résumer : • Automate symbolique • Transitions déterministes mais symboles de sorties indéterministes • Prise en compte du temps de réaction L’inférence de protocole avec Netzob. Notre modèle d’un protocole 6 juin 2012 14 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Plan 1 Le contexte 2 Notre modèle d’un protocole 3 L’inférence du modèle 4 Présentation de l’outil Netzob L’inférence de protocole avec Netzob. L’inférence du modèle 6 juin 2012 15 / 34 NETWORK PROTOCOL L’inférence de protocoles MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Les différentes étapes de l’inférence du vocabulaire et de la grammaire #1 : Découpage et regroupement • Découpage en champs • Regroupement des messages par similarité • Approche semi-automatique L’inférence de protocole avec Netzob. L’inférence du modèle 6 juin 2012 16 / 34 NETWORK PROTOCOL L’inférence de protocoles MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Les différentes étapes de l’inférence du vocabulaire et de la grammaire #2 : Abstraction en symboles • 1 cluster = 1 symbole • Abstraction des champs • Identification des dépendances L’inférence de protocole avec Netzob. L’inférence du modèle 6 juin 2012 17 / 34 NETWORK PROTOCOL L’inférence de protocoles MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Les différentes étapes de l’inférence du vocabulaire et de la grammaire #3 : Inférence du graphe de transition • Inférence active (graphe déterministe) : L* L’inférence de protocole avec Netzob. L’inférence du modèle 6 juin 2012 18 / 34 NETWORK PROTOCOL L’inférence de protocoles MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Les différentes étapes de l’inférence du vocabulaire et de la grammaire #4 : Généralisation de l’automate • Indéterminisme sur les sorties • Inférence du temps de réaction L’inférence de protocole avec Netzob. L’inférence du modèle 6 juin 2012 19 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING L’inférence du vocabulaire Le découpage en champs - www.netzob.org - [email protected] Le découpage en champs • Partitionnement par délimiteur • Partitionnement par variation • Alignement de séquence (Needleman-Wunsch) L’inférence de protocole avec Netzob. L’inférence du modèle 6 juin 2012 20 / 34 NETWORK PROTOCOL L’inférence du vocabulaire MODELIZATION BY REVERSE ENGINEERING Le regroupement par similarité - www.netzob.org - [email protected] Regroupement par clustering UPGMA • Calcul de similarité en sortie de Needleman-Wunsh • Remplissage d’une matrice de similarité • Fusion des messages les plus similaires • Puis on itère... M1 M2 M3 M4 M1 M2 M3 M4 M1 M1 M2-M3 M4 M1 M1 M2 M3 M4 50 80 20 M2 95 5 M3 70 L’inférence de protocole avec Netzob. M4 50 80 20 95 5 L’inférence du modèle M2M3 45 M4 20 72 70 6 juin 2012 21 / 34 NETWORK PROTOCOL L’inférence du vocabulaire MODELIZATION BY REVERSE ENGINEERING Le regroupement par similarité - www.netzob.org - [email protected] Regroupement par clustering UPGMA • Représentable sous la forme d’un dendrogramme • Possibilité de choisir un seuil de regroupement 100 PRIVMSG master :downloaded 10 kb to C:\iCkcr\zhGGN\qSmlk\ItiVQcxRyn dmFEQG.bin@ 4 kb/sec... 100 PRIVMSG master :downloaded 10 kb to F:\mDSBqBrJs\pzFnjk.php@ 4 kb/sec... 100 PRIVMSG master :downloading http://www.KsqXoHGblSLgQBAEsb.xxx/Lssva....... 60.9 43.5 66.2 100 PRIVMSG master :downloading http://www.RUaAhzfW.org/mxDKldTfNJ....... 100 PRIVMSG master :password accepted... 100 PRIVMSG master :password accepted... 100 PRIVMSG master :couldn't execute file... 100 PRIVMSG master :couldn't execute file... 100 34.8 62.5 100 60.5 100 PRIVMSG master :user master logged out..... 100 PRIVMSG master :user master logged out..... 100 50 26 100 PRIVMSG master :sdbot 0.5b ready. Up 18d 6h 55m... 100 PRIVMSG master :sdbot 0.5b ready. Up 10d 8h 59m... 94 100 PRIVMSG master :connection type: LAN (LAN Connection). local IP address: 219.50.116.136. connected from: 149.114.209.124.. 100 PRIVMSG master :connection type: LAN (LAN Connection). local IP address: 62.34.42.109. connected from: 57.200.19.61.. 85.2 37.4 100 PRIVMSG master :cpu: 0MHz. ram: 7533KB total, 2582KB free. os: Windows XP [Service Pack 3] (5.1, build 2600). uptime: 7d 15h 14m.. 100 PRIVMSG master :cpu: 0MHz. ram: 8383KB total, 6331KB free. os: Windows XP [Service Pack 3] (5.1, build 2600). uptime: 18d 10h 47m.. 92.4 101.94 L’inférence de protocole avec Netzob. L’inférence du modèle 6 juin 2012 22 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org L’inférence de la grammaire - [email protected] Inférence du graphe de transition • Principe : soumettre des séquences de symboles à un « professeur » • Transmission des messages vers/depuis le binaire confiné • Variante de l’algorithme L* (Angluin). • Ré-initialisation entre chaque soumission (virtualisation) Généralisation du modèle • Ajout de l’indéterminisation en sortie : • rejeu des traces dans l’automate inféré • estimation des probabilités des symboles de sorties • Ajout du temps de réaction • Mesure du temps entre un symbole d’entrée et de sortie. • Utilisation d’une loi normale. L’inférence de protocole avec Netzob. L’inférence du modèle 6 juin 2012 23 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Plan 1 Le contexte 2 Notre modèle d’un protocole 3 L’inférence du modèle 4 Présentation de l’outil Netzob L’inférence de protocole avec Netzob. Présentation de l’outil Netzob 6 juin 2012 24 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] L’inférence de protocole avec Netzob. Présentation de l’outil Netzob L’architecture fonctionnelle Présentation de l’outil Netzob 6 juin 2012 25 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org Démonstration - [email protected] [ Démo ] L’inférence de protocole avec Netzob. Présentation de l’outil Netzob 6 juin 2012 26 / 34 NETWORK PROTOCOL Démonstration MODELIZATION BY REVERSE ENGINEERING Exemple de grammaire - www.netzob.org - [email protected] START OpenChannel S0 EXECUTE / E DOWNLOAD / E LOGIN / PASSWORD_ACCEPTED S2 LOGOUT / E LOGOUT / E S1 LOGOUT / E EXECUTE / {CANTEXECUTE, E} NETINFO / CONNECTION DOWNLOAD / DOWNLOADING EXECUTE / E DOWNLOAD / E Restart E / {BAD_DNS, DOWNLOADED} S3 LOGIN / E CloseChannel END L’inférence de protocole avec Netzob. Présentation de l’outil Netzob 6 juin 2012 27 / 34 NETWORK PROTOCOL MODELIZATION BY Le projet REVERSE ENGINEERING - www.netzob.org - [email protected] • Développé en Python et en C • Sous licence GPLv3 • Actuellement 7 contributeurs (AMOSSYS, Supélec, Bull) • Disponibilité • Via dépôt git ou tar.gz • Paquet Debian (À la recherche d’un sponsor) • Paquet Gentoo et Windows (en cours) L’inférence de protocole avec Netzob. Présentation de l’outil Netzob 6 juin 2012 28 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org Conclusion - [email protected] Bilan • Domaine assez actif au niveau académique ces dernières années • Mais quasiment aucune retombée dans les outils publics • Netzob vise à combler ce manque • Support de travaux académiques • Utilisable dans un contexte opérationnel (audit, évaluation, développement, ...) Travaux futurs • Nouveaux capteurs (API, noyau, périphériques) • Gestions des sessions • Gestion d’autres formats d’encodages (ASN.1, TSN.1, EBML, etc.) • Open « wishlist » : https://dev.netzob.org L’inférence de protocole avec Netzob. Présentation de l’outil Netzob 6 juin 2012 29 / 34 NETWORK PROTOCOL MODELIZATION BY Conclusion REVERSE ENGINEERING - www.netzob.org - [email protected] • http://www.netzob.org , @Netzob • Des questions à poser à Zoby ? Comment contribuer : • Partage de PCAPs (malware, scada...) • Participation au développement • Retour d’expérience L’inférence de protocole avec Netzob. Présentation de l’outil Netzob 6 juin 2012 30 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] L’inférence de protocole avec Netzob. Annexes Fonctionnement de Needleman & Wunsch Présentation de l’outil Netzob 6 juin 2012 31 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] L’inférence de protocole avec Netzob. Annexes Fonctionnement de Needleman & Wunsch Présentation de l’outil Netzob 6 juin 2012 32 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Annexes Comment fonctionne l’algorithme de classification UPGMA ? • Exécution itérative des opérations suivantes : 1 Recherche dans la matrice le score le plus élevé. 2 Regroupe les deux groupes associés. 3 Mise à jour de la matrice (calcul de la moyenne des deux lignes). L’inférence de protocole avec Netzob. Présentation de l’outil Netzob 6 juin 2012 33 / 34 NETWORK PROTOCOL MODELIZATION BY REVERSE ENGINEERING - www.netzob.org - [email protected] Annexes Comment fonctionne l’algorithme L*a • Tant que l’automate hypothèse n’est pas conforme • Tant que la table n’est pas close et consistente • Soumission d’une requête d’appartenance • Construction d’un automate hypothèse • Recherche d’un contre exemple (requète d’équivalence) L’inférence de protocole avec Netzob. Présentation de l’outil Netzob 6 juin 2012 34 / 34