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

Documents pareils