33
Test d’impl´ ementations de protocoles cryptographiques Master 2 INFORMATIQUE option S2L Thanh-Tuan BUI Emmanuel MAIROT Septembre 2011 - Janvier 2012 Encadrants : Fr´ ed´ eric DADEAU Pierre-Cyrille HEAM

Test d’impl ementations de protocoles cryptographiques ... · 3.2.1 Aircrack-ng ... logiciels a utiliser pour r ecup erer les donn ees sur le r eseau et surtout comment les utiliser

Embed Size (px)

Citation preview

Test d’implementations de protocolescryptographiques

Master 2 INFORMATIQUE option S2L

Thanh-Tuan BUIEmmanuel MAIROT

Septembre 2011 - Janvier 2012

Encadrants :Frederic DADEAUPierre-Cyrille HEAM

Remerciements

Nous tenons tout particulierement a remercier nos responsables de projet Mon-sieur Frederic Dadeau et Monsieur Pierre-Cyrille Heam, pour nous avoir suivis etaiguilles durant la realisation du projet. Nous les remercions egalement pour lesexplications claires et les conseils donnes pour la realisation de ce rapport.

1

Table des matieres

1 Introduction 31.1 Contexte . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Problematiques . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.3 Objectifs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41.4 Plan du rapport . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5

2 Les protocoles cryptographiques 62.1 Notions generales . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 62.2 Proprietes de securite . . . . . . . . . . . . . . . . . . . . . . . . . . . 72.3 Description du protocole NSPK . . . . . . . . . . . . . . . . . . . . . 9

3 Etude des techniques et des outils d’attaque 113.1 Les logiciels d’analyse du reseau informatique . . . . . . . . . . . . . 11

3.1.1 Ettercap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 113.1.2 Wireshark . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12

3.2 Les packet sniffers en ligne de commande . . . . . . . . . . . . . . . . 133.2.1 Aircrack-ng . . . . . . . . . . . . . . . . . . . . . . . . . . . . 133.2.2 TCPDUMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143.2.3 WINDUMP . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.4 NGREP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.5 SNORT . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.6 NTOP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 153.2.7 TCPDUMP et la dissection de paquets . . . . . . . . . . . . . 163.2.8 SCAPY . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

3.3 Bilan sur l’etude . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

4 Le protocole Needham Schroeder Public Key 204.1 Implementation du protocole NSPK . . . . . . . . . . . . . . . . . . . 204.2 Codage de l’environnement pour le modele d’intrus de Dolev-Yao . . 214.3 L’execution des tests . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

5 Conclusion 275.1 Bilan du projet . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.2 Bilan personnel . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 275.3 Perspectives . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

2

Chapitre 1

Introduction

1.1 Contexte

De nos jours, de plus en plus d’entreprises permettent le partage de leurs infor-mations avec des entreprises externes en utilisant Internet. Ce phenomene de partageest valable pour n’importe quel domaine d’activite.

Cependant le fait de partager ces informations entraıne une menace pour l’entre-prise. En effet, le developpement d’Internet a egalement entraine l’augmentation dela criminalite informatique ce qui peut fortement nuire a une entreprise. La necessited’assurer la confidentialite et l’authenticite des messages echanges est de plus en plusimportante.

La cybercriminalite se definit en trois principaux types d’infractions :– Les infractions specifiques aux technologies de l’information et de la communi-

cation : les interceptions d’informations, les infractions aux cartes bancaires...– Les infractions liees aux technologies de l’information et de la communication :

l’incitation au terrorisme, les atteintes aux personnes...– Les infractions facilitees par les technologies de l’information et de la commu-

nication : les escroqueries en ligne, la contrefacon...Ce projet concerne plus particulierement la premiere partie.Les attaques menees par ces cybercriminels utilisent des failles presentes dans le

code d’application developpe. Pour eviter tout probleme, il est primordial de verifieret de valider la surete au niveau du code developpe. Les protocoles cryptographiquespermettent de proteger des informations sensibles. Cependant de nouvelles faillessont trouvees regulierement, meme sur des protocoles connus et developpes depuisde longue date. Dans notre cas, des tests d’implementations seront mis en place.

1.2 Problematiques

Ce projet se situe dans le cadre des travaux menes au sein du Laboratoire Infor-matique de l’Universite de Franche-Comte (LIFC) sur la generation de tests pourles protocoles cryptographiques.

Durant les travaux de generation de tests, un procede de type penetration tes-ting a ete mis au point dans lequel le testeur joue le role d’un attaquant/intrusdans le systeme. La generation de tests se fait sur une approche de type � ModelBased Testing �notee MBT. L’idee generale du MBT est de se baser sur un modeleformel du systeme qui decrit son evolution a travers une vision abstraite de son

3

fonctionnement. Le test a partir de modeles permet de construire les cas de tests ensimulant l’execution du systeme sur son modele et produit l’oracle du test c’est-a-dire le resultat attendu en le calculant sur le modele. Un cas de test est une suited’appels d’operations du systeme. Une sequence est une suite de cas de tests.

Pour generer des tests, il faut avoir un modele abstrait qui correspond a unmodele fonctionnel mais detaille et precis car il doit permettre de calculer les cas detests et les resultats attendus.

Le modele etabli doit etre valide pour etre sur que son comportement representebien celui attendu et verifie en s’assurant qu’il doit etablir et preserver certainesproprietes. Dans notre cas, les cas de tests sont calcules a partir d’un modele duprotocole decrit dans un langage dedie nomme High-Level Protocol SpecificationLanguage (HLPSL). Une specification HLPSL decrit des systemes de transition quirepresentent les differentes entites dans le protocole.

Le langage HLPSL est base sur la definition des roles avec les roles basiques quivont representer le comportement de chaque participant intervenant dans le proto-cole et les roles de composition qui representent les scenarios des roles basiques avecl’instanciation des differents roles basiques pour modeliser l’ensemble du protocole.

Dans le cadre du test de penetration, les cas de tests sont ainsi representes sousla forme d’une suite de messages que l’intrus envoie et recoit (ou intercepte) sur lereseau. Neanmoins, ces cas de tests restent au niveau abstrait et doivent donc etreconcretises pour etre joues sur une implementation reelle du protocole.

Le but de notre travail est de concretiser les tests en passant d’un test abstrait aun test executable sur une implementation d’un protocole. Plutot que de travaillersur l’implementation reelle du protocole, nous allons realiser notre concretisation detests sur des algorithmes qui simulent des protocoles pour la simple raison que lacapacite d’effectuer des tests sur ces algorithmes sera plus aisee si nous connaissonsle langage de developpement utilise.

Le deroulement du travail a ete decoupe en plusieurs parties pour mener a bience projet. Ce decoupage est presente dans la prochaine partie.

1.3 Objectifs

Pour jouer des attaques sur un reseau sans fil, il est necessaire de se munir d’outilsd’attaque. Ils vont nous permettre de concretiser des attaques car des travaux ontete realises dans le but de generer des tests qui a ce jour restent au niveau abstrait.

La premiere etape du projet sera de nous familiariser avec les echanges de donneessur un reseau sans fil, c’est pourquoi une etude sera menee pour voir quels sont leslogiciels a utiliser pour recuperer les donnees sur le reseau et surtout comment lesutiliser. L’objectif etant de comprendre comment traiter les paquets (recuperation,modification, envoi). Le deuxieme objectif sera de rechercher des implementationsde protocole et d’etudier leur capacite a etre testees. Si elles le sont, alors nousdevrons concretiser des traces d’attaque dans le but de montrer les failles dans cesimplementations.

4

1.4 Plan du rapport

Pour bien positionner le sujet, nous verrons dans une premiere partie les no-tions se rapportant au domaine de la cryptographie (definitions...). En secondepartie, nous etudierons les techniques et les outils d’attaques sur des canaux decommunication non securises (logiciels disponibles...). Nous allons egalement voir ledeveloppement effectue et les tests concrets effectues sur le protocole NSPK avecla description de celui-ci. Pour finir ce rapport un bilan sera effectue au niveau del’etat d’avancement du projet, suivi d’un bilan personnel.

5

Chapitre 2

Les protocoles cryptographiques

2.1 Notions generales

Avant de developper la partie technique de ce projet, il nous a semble necessairede definir le sujet et plus principalement les notions se rapportant a la cryptographie.

Depuis le debut d’Internet, le reseau Internet a enormement evolue et est devenuun outil majeur de communication mais qui presente des risques (lies a l’activitedes entreprises sur le Web). Cependant les transactions effectuees a travers le reseaupeuvent etre interceptees et posent des problemes. Il est donc necessaire de garan-tir la securite des informations, c’est le role de la cryptographie. La cryptographiecorrespond aux methodes ou techniques permettant de transmettre des donneesconfidentielles a l’aide de secrets ou de cles. Ces methodes permettent d’assurerl’integrite, l’authenticite et la confidentialite des messages. Ces informations serontdefinies dans la suite de ce rapport. La cryptographie est utilisee depuis l’antiquite.De nouvelles methodes sont apparues ou evoluees (cryptographie asymetrique...)mais le principe est toujours semblable.

Pour proteger un message, une transformation est appliquee pour faire en sorteque le message devienne incomprehensible : c’est la phase de chiffrement. Ainsi apartir d’un texte clair et apres chiffrement, on obtient un texte chiffre ou crypto-gramme. Le dechiffrement est l’action permettant de transformer le texte chiffre enun texte en clair.

Les transformations se font a l’aide d’algorithmes cryptographiques qui dependentd’un parametre qui est la clef (clef de chiffrement ou de dechiffrement).Parmi ces algorithmes, il est possible de citer :

– les algorithmes de chiffrement faibles– les algorithmes de cryptographie symetrique (a clef secrete)– les algorithmes de cryptographie asymetrique (a clef publique et privee)

Ces algorithmes seront vues en details dans la partie 2.2.La cryptanalyse est la science qui consiste a tenter de dechiffrer un message

chiffre sans connaıtre la clef utilisee. Le processus mis en place pour comprendreun message est appele une attaque. Effectuer la cryptanalyse d’un algorithme dechiffrement consiste a etudier sa securite en tentant de resoudre (casser) les fonctionscryptographiques qui le composent a l’aide d’attaques.

La cryptologie est la science qui regroupe la cryptographie et la cryptanalyse(voir figure 2.1 pour les etapes de transformation).

6

Figure 2.1 – Schema representant la cryptologie

2.2 Proprietes de securite

Dans cette partie, nous verrons en details les termes se rapportant aux proprietesde securite avec des exemples.Voici les differentes notions :

– Authentification : capacite a reconnaıtre de facon sure l’identite d’une entite(etre sur que l’expediteur est bon). L’entite peut etre une personne, un ordi-nateur...

– Confidentialite : une information ne peut etre connue que par les entites au-torisees (exemple : compte bancaire, dossier medical...). Cette propriete estassuree par le chiffrement. C’est une non divulgation de l’information ou desressources.

– Integrite : assure qu’une information ne peut etre modifiee, sauf par des per-sonnes qui en ont le droit. Le controle d’acces permet de verifier si un sujetdemande l’acces a une information qu’il possede bien les droits necessaires poury acceder. Cela consiste a s’assurer que les informations n’ont pas ete modifieesdurant leurs echanges (presence de mecanismes d’integrite avec des mecanismesde prevention et de detection). Verifier l’integrite consiste a determiner si lesdonnees n’ont pas ete alterees durant une transaction avec un organisme ban-caire par exemple.

Le terme authenticite regroupe les notions d’authentification et d’integrite. Pourresoudre des problemes, il existe les fonctions de hachage et la signature numerique.

Comme indique dans la partie precedente, le chiffrement se fait a l’aide d’al-gorithmes cryptographiques enonces precedemment. Voici les details de ces algo-rithmes :

Les algorithmes de chiffrement faibles :Facilement cassables, ce sont les premiers algorithmes utilises pour le chiffrement.

Ces algorithmes servent notamment a remplacer des caracteres par des autres.Voici quelques exemples d’algorithmes de chiffrement faibles :

– Chiffre de Cesar (decalage de lettres). Le chiffrement de Cesar utilise unetechnique de substitution monoalphabetique simple par decalage des lettresdu message de trois places vers la droite par rapport a l’alphabet.

– Chiffre de Vigenere. Le chiffrement de Vigenere est quant a lui, base sur le chif-frement de Cesar, mais au lieu d’utiliser une cle a une lettre, on utilise une cleplus longue. C’est un chiffrement polyalphabetique car differentes occurrencesde la meme lettre peuvent etre codees par des lettres differentes.

7

– ROT13. Le ROT13 est un cas particulier du chiffrement de Cesar, un algo-rithme de chiffrement de texte. Il s’agit d’un decalage de 13 caracteres dechaque lettre du texte a chiffrer.

Tous ces algorithmes ont ete vus et codes dans le cadre du module de Securite enLicence 3.

Les algorithmes de cryptographie symetrique (a clef secrete) :Le principe de l’algorithme repose sur une meme cle pour chiffrer et dechiffrer le

message. La cle doit etre par consequent transmise de facon sure. La cle de chiffre-ment doit etre par consequent la meme que celle de dechiffrement. Les algorithmesde cryptographie symetrique (a clef secrete) les plus connues sont Data EncryptionStandard (DES), Advanced Encryption Standard (AES) et Triple DES (3DES).

DES est le cryptosysteme a clef secrete le plus utilise actuellement. Il sert achiffrer les transactions bancaires, les codes PIN des cartes bancaires... Avant decommencer a echanger des informations, les interlocuteurs doivent partager une cleconfidentielle.

Les algorithmes de cryptographie asymetrique (a clef publique et privee) :Il se base sur le principe de deux cles. La premiere, la cle publique, permet de

faire le chiffrement et la deuxieme, la cle privee permet le dechiffrement.La cle publique est accessible par tous. Avec les algorithmes de cryptographie

asymetrique, les clefs de chiffrement et de dechiffrement sont differentes et il estimpossible de deduire l’une a partir de l’autre.Parmi ces algorithmes de cryptographie asymetrique (a clef publique et privee) onpeut citer :

– Rivest Shamir Adleman (RSA)– Digital Signature Algorithm (DSA)– ...

RSA est actuellement le standard de chiffrement a cle publique. Il permet de resoudrele probleme de l’authentification et celui de distribution des cles. Ce type d’algo-rithme est beaucoup plus lent que les algorithmes de cryptographie symetrique. Ilssont, par consequent, plus utilises pour chiffrer des cles de sessions secretes que direc-tement des donnees. Par exemple, il est 100 fois plus lent que DES. La cryptographieasymetrique est egalement utilisee pour assurer l’authenticite d’un message :

– Anonymat : c’est la non identification de l’identite.– Disponibilite : c’est l’aptitude a utiliser l’information ou les ressources.– Non-repudiation : c’est assurer que l’auteur d’un envoi ne peut ensuite nier

l’avoir effectue. On distingue la non-repudiation d’origine qui est le refus dereconnaıtre avoir envoye quelque chose et la non-repudiation de reception quiest le refus de reconnaıtre d’avoir recu quelque chose.

– Fraıcheur : pendant une session de protocoles, une donnee est fraıche si onpeut garantir qu’elle a ete emise pour la session courante par un des acteurs.

En resume, dans un cryptosysteme a cles secretes, la cle utilisee est la memepour le processus de codage et de decodage alors que dans un cryptosysteme a clespubliques, les cles existent par paires avec une cle publique pour le chiffrement etune cle secrete pour le dechiffrement. Les proprietes associees aux protocoles sont

8

les proprietes definies ci-dessus, c’est a dire les notions de secret, d’authentificationd’une entite, de fraıcheur, d’accord non repudiable, d’equite et d’anonymat.

Apres avoir defini tous ces termes, il nous semble necessaire de definir ce qu’estun protocole cryptographique et ou ils sont utilises. Un protocole cryptographiqueest un ensemble de regles d’echange entre les points d’un reseau, base sur les cryp-tosystemes qui permettent de securiser les communications dans un environnementhostile. Ce cryptosysteme designe l’ensemble des algorithmes cryptographiques (unepartie des ces algorithmes vus precedemment) et de tous les textes en clairs, texteschiffres et cles possibles. Les protocoles cryptographiques sont utilises dans le cadrede communication secrete (SSH,...), d’authentification d’agents (login,...), de signa-ture de contrats electroniques, de paiement bancaire en ligne...

Un exemple de protocole cryptographie connu est le protocole Diffie-Hellmanqui permet a deux agents A et B de generer un secret partage sans avoir des in-formations l’un sur l’autre. Ce protocole invente par Diffie et Hellman en 1976 estbase sur la cryptologie a clef publique car il fait intervenir des valeurs publiqueset des valeurs privees. Ce protocole est vulnerable a l’attaque active dite attaquede l’intercepteur. Pour contourner cette attaque, il est necessaire d’authentifier lesvaleurs publiques utilisees pour generer le secret partage. Ce protocole se nommeDiffie-Hellman authentifie.

Un autre exemple de protocole cryptographique est le protocole de Needham-Shroder considere comme sur pendant de nombreuses annees avant que Lowe montreune attaque. L’importance des protocoles cryptographiques est devenue considerableet les failles sont de plus en plus redoutees. Ce protocole et les failles qui lui sontassociees vont etre decrites dans la partie suivante.

2.3 Description du protocole NSPK

Ce protocole utilise un systeme a cle publique. Imaginons qu’Alice veut com-muniquer avec Bob de maniere securisee. Elle connaıt la cle publique de Bob etreciproquement. Il faut qu’Alice soit sure de communiquer avec Bob. Ils vont doncchacun mettre au point une information secrete partagee (le nonce 1) qui va leurservir a creer a la fin une cle appelee cle de session pour chiffrer et donc protegerleur message.

Le schema suivant permet d’avoir une meilleure visualisation du procede d’echangedes messages :

A : Alice ; B : BobNA, NB les nonces d’Alice et BobKA, KB les cles publiques d’Alice et Bob

A → B : {NA,A}KB

Dans un premier temps, Alice genere son nonce qui va servir pour la communi-cation avec Bob. Alice envoie un message a Bob contenant son nonce et son identiteen le chiffrant avec la cle publique de Bob. Bob recoit le message (sans savoir d’ouce message provient). Pour avoir cette information, il dechiffre le message avec sacle privee et obtient l’identite d’Alice et le nonce d’Alice.

1. Number used once

9

B → A : {NA,NB}KA

Bob va a son tour communiquer avec Alice. Pour indiquer a Alice qu’il est bienBob, il va retourner le nonce d’Alice qu’il a recu ainsi que le nonce qu’il aura genere.Ce message est chiffre avec la cle publique d’Alice.

Alice recoit le message de Bob et le dechiffre avec sa cle privee. Alice est donc apresent sure de communiquer avec Bob. Il ne reste plus qu’a convaincre Bob qu’elleest bien Alice.

A → B : {NB}KB

Le dernier message qu’Alice envoie a Bob est le nonce de Bob chiffre avec la clefpublique de Bob.

Bob recoit alors le message d’Alice et le dechiffre avec sa cle privee. Il recon-nait son nonce que seule Alice a pu deduire du message precedent. Bob est doncsur de communiquer avec Alice. La communication entre les deux personnes peutcommencer.

Toutefois il a ete vu que cette attaque est vulnerable aux attaques dites � man-in-the-middle �. L’attaque man-in-the-middle est une attaque qui consiste a intercepteret a faire vehiculer les messages provenant d’autres utilisateurs de telle sorte qu’au-cune partie ne s’en rende compte. Si un individu Igor joue le role de l’intrus alorsil va jouer une attaque appelee l’attaque de Lowe. Si Alice veut communiquer avecIgor alors son attaque se deroule comme suit :

A : Alice ; B : Bob ; I : IgorNA, NB, NI les nonces d’Alice, de Bob et d’IgorKA, KB, KI les cles publiques d’Alice, Bob et IgorLe terme X(Y) signifie que l’intrus ou la donnee X joue le role de

l’agent ou la donnee Y.

A → I : {NA,A}KI

I(A) → B : {NA,A}KB

B → I(A) : {NA,NB}KA

I → A : {NA,NB(NI)}KA

A → I : {NB(NI)}KI

I(A) → B : {NB}KB

En bleu on peut voir qu’Alice a bien recu les informations qu’elle attendait eten rouge, Bob a lui aussi bien recu les informations qu’il attendait mais en croyantconverser avec Alice alors qu’il communique avec Igor. Pour donc eviter toute in-trusion, le protocole NSPK a subi un changement au message que Bob envoie :{NA,NB}KA. Le but etant de rajouter l’identite de Bob dans ce message pour qu’ildevienne {NA,NB,B}KA.

Ce protocole version corrige nous a servi pour nos tests comme nous le verronsdans le chapitre 4. Dans le prochain chapitre, nous allons voir les techniques et outilsutilises pour ce projet.

10

Chapitre 3

Etude des techniques et des outilsd’attaque

Dans le cadre de cette etude, nous allons voir les differentes techniques et lesdifferents outils d’attaque pour effectuer des tests sur des canaux de communicationnon securises, le reseau Wifi dans notre cas. Nous allons voir les logiciels capablesd’intercepter les paquets transitant a travers le reseau ainsi que les logiciels capablesde les interpreter. Un paquet a une adresse de destination qui peut etre unicast (versun seul peripherique), multicast (groupe de peripheriques) voire broadcast dans lecas d’une diffusion a l’ensemble des personnes connectees. Quand le Wifi est active,il est possible de voir les reseaux disponibles a proximite de l’ordinateur. Cela estdu au fait que l’access point envoie regulierement des paquets. Pour capturer despaquets qui transitent dans l’air sans etre associe a un reseau Wifi, il est necessairede passer l’interface de la carte Wifi en mode monitor pour accepter tous les paquetsque le recepteur capte sans tenir compte de la destination. Dans le cadre de notreetude pour effectuer des tests, une carte AWUS036H a ete utilisee. Cette cartepermet l’injection et le sniffing de paquets. L’injection de paquets sert a stimuler lereseau en envoyant et en recevant de paquets. Le sniffing consiste a recuperer ce quitransite sur le reseau. Pour rejouer une attaque sur un reseau, nous avons dans unpremier temps, essaye de s’attaquer aux reseaux sans fil. Pour ce faire, nous avonscherche des outils qui permettent de recuperer les paquets transmis, de manipuler etdecoder ces paquets et d’envoyer des paquets. Toutes ces actions doivent etre faitesde maniere souple et rapide.

3.1 Les logiciels d’analyse du reseau informatique

Apres avoir defini les objectifs de l’etude, voici les outils d’attaque testes.

3.1.1 Ettercap

Ettercap est un logiciel libre d’analyse du reseau informatique. Il est capabled’intercepter le trafic sur un segment reseau et de realiser des attaques dites del’homme du milieu (man-in-the-middle) contre un certain nombre de protocoles decommunication usuels tels que HTTP, FTP et certains protocoles chiffres. Ettercapest egalement dote de plugins facilitant la recherche de mots de passe. Ce logicielpossede des fonctions interessantes comme l’injection de requetes sur le reseau a

11

envoyer au client pour faire en sorte que la connexion soit toujours active ou aenvoyer au serveur.

Il est possible d’utiliser ce logiciel sous mode graphique ou sous mode textesimple.

Ettercap est multiplateforme mais difficile d’utilisation sous Windows 7, Vista.Il fonctionne sous Windows, Linux, Mac OS X, Solaris ainsi que sous FreeBSD.

Plusieurs types d’attaques sont possibles.

Site officiel : http ://ettercap.sourceforge.net/Liens utilises pour effectuer des tests :http ://www.crack-wifi.com/tutoriel-rogue-ap-les-dangers-des-hotspots-wifi.phpEttercap permet d’intercepter le trafic du reseau mais le traitement des donnees

n’est pas aise et l’envoi de paquets est impossible.

3.1.2 Wireshark

Wireshark (anciennement nomme Ethereal) est un logiciel libre d’analyse deprotocole utilise dans le depannage et l’analyse de reseaux informatiques, le developpementde protocoles, mais aussi le piratage.

Wireshark est tres facile d’utilisation (grace a son interface graphique) et possedeun tres grand nombre de fonctionnalites ce qui en fait un logiciel tres complet.

Wireshark est multiplateforme, il fonctionne sous Windows, Mac OS X, Linux,Solaris, ainsi que sous FreeBSD.

Page de telechargement : http ://www.wireshark.org/download.html

Ce logiciel permet la capture de paquets de donnees circulant sur le reseau demaniere totalement transparente. Il utilise WinPcap, Airpcap et Libpcap, complementsde ce logiciel pour la capture et le filtrage des informations.

WinPcap est un logiciel de filtrage integre dans de nombreuses applications. Ilpermet d’acceder aux couches reseaux a bas niveau du systeme, d’en obtenir lesstatistiques ou de capturer a distance et de transmettre les paquets.

Grace a sa librairie et ses controleurs, les developpeurs ont pu developper desprogrammes de surveillance reseau, de detection d’intrusions, d’analyse de protocolesou de trafic, et bien d’autres encore. Attention, WinPcap n’est pas un logiciel. C’estune API utilisable avec d’autres applications.

Airpcap a pour but d’aider le logiciel Wireshark a collecter des donnees de faconefficace.

Libpcap est une bibliotheque d’outils permettant de faire la capture des paquetsqui circulent sur le reseau.

Wireshark permet :– de capturer les paquets directement depuis son interface reseau– d’obtenir des statistiques– d’importer/exporter des paquets captures depuis/vers d’autres programmes– . . .Le logiciel Wireshark est le plus complet des logiciels gratuits. En effet il dispose

de plusieurs menus : pour le filtrage, pour la liste des paquets captures, les details sur

12

les paquets selectionnes et le contenu du paquet. Il supporte les formats de fichiersde capture les plus courants.

Les liens que nous avons utilises pour effectuer des tests :http ://blog.nicolargo.com/2011/05/capturer-et-analyser-un-trafic-reseau-avec-wireshark.htmlhttp ://blog.nicolargo.com/2007/07/tutoriel-wireshark-ex-ethereal.htmlCe logiciel est tres facile d’utilisation grace a son interface graphique tres intuitive

mais dans le cadre du projet, la presence d’une interface graphique n’est pas des plusaisees pour un traitement rapide des donnees.

3.2 Les packet sniffers en ligne de commande

Le point commun des packet sniffers presentes ci-dessous sont le fait qu’ils fonc-tionnent tous en ligne de commande. Ils permettent d’obtenir le detail du traficvisible depuis une interface reseau. Les nombreuses informations qu’il faut trierconduisent a utiliser le filtre BPF.

Le filtre BPF (Berkeley Packet Filter) est un langage permettant de filtrer lespaquets echanges sur un reseau.

Ce langage est utilise entre autres par des logiciels specialises dans l’analysed’echanges reseau (exemples : ngrep, tcpdump, snort, ntop) et sert a selectionnerdes donnees transitant sur un reseau selon des criteres precis, par exemple :

– l’heure d’arrivee du paquet sur l’interface reseau.– le type de protocole reseau utilise (IP, ARP, IGMP, GRE, ...)– qui envoie les paquets, quelle est l’adresse du reseau source, ainsi que son port.– qui recoit les paquets, quelle est l’adresse du reseau destination, ainsi que son

port.

3.2.1 Aircrack-ng

Aircrack-ng est une suite regroupant plusieurs outils differents. Il est possiblede l’utiliser sous Windows, Linux et Mac OS. Avant de s’appeler Aircrack-ng, lasuite se nommait Aircrack.

Aircrack a ete concue pour surveiller son propre reseau (outil de surveillancereseau). Cette suite est gratuite (open-source).

La suite contient plusieurs outils dont :– airmon-ng : permet d’activer/desactiver le mode moniteur d’une carte WIFI.

Dans ce mode, la carte WIFI, se place en ”observateur” du reseau. Il estnecessaire de preciser que de nombreuses cartes WIFI ne supportent pas lemode monitor voire l’injection.Commande pour activer le mode moniteur :airmon-ng start nomInterface

– airodump-ng qui permet la capture de paquets. Cet outil scanne les reseauxet conserve les paquets. Il permet de capturer les paquets transitant dans lesframes 802.11. Avant de lancer cet outil, il est necessaire de mettre sa cartewifi en mode ecoute.Syntaxe de base pour lancer airodump :airodump-ng <options> <interface>

13

– aireplay-ng pour generer du trafic et ainsi capturer plus de paquets.Commande :aireplay-ng -0 -e NOM_DE_L_AP -a MAC_DE_L_AP -b MAC_DE_L_AP

-c MAC_DE_LA_STATION

– aircrack-ng qui permet de retrouver une cle WEP ou WPA-PSK a partir despaquets recuperes grace a airodump-ng (si on a un nombre suffisant de paquetsbien sur !).Commande :aircrack-ng nom-du-fichier-de-capture

D’autres outils existent egalement pour faciliter le � decryptage � des paquets(airdecap-ng. . . ) mais les outils presentes precedemment sont les outils les plus uti-lises.

La plupart des tests ont ete effectues sous Linux (Ubuntu 11.10) pour plus defacilite et avoir moins de souci pour activer le mode monitor de la carte Wifi (il estimpossible de faire l’injection de paquets sous Windows).

Ces outils sont egalement presents dans la distribution GNU/Linux Backtrackqui est complete au niveau de l’analyse reseau et de tests d’intrusion (la versionactuelle est la version 5.0 R1).

La suite Aircrack-ng regroupe de nombreux outils faciles d’utilisation mais lacreation de paquets est impossible.

3.2.2 TCPDUMP

Contrairement aux logiciels vus precedemment, celui-la n’est pas multiplate-forme, tcpdump est un outil UNIX permettant de collecter des donnees de reseau,de dechiffrer les bits et d’afficher la sortie d’une maniere semi-coherente. C’est unpeu l’equivalent de Wireshark en ligne de commandes. Il permet d’avoir une analyseen direct du reseau ou d’enregistrer la capture dans un fichier afin de l’analyser pourplus tard. L’ecriture de filtres est egalement possible afin de selectionner les paquetsa capturer/analyser et ainsi eviter de capturer l’ensemble des paquets circulant surle reseau. Le logiciel sera vu en details dans la partie suivante. Pour d’amples infor-

mations et pour se procurer le logiciel : TCPDUMP 4.1.1 / 1.1.1 pour LINUX :

Site officiel : http ://www.tcpdump.org/

Tutoriel : http ://blog.nicolargo.com/2007/02/tutorial-tcpdump.html

Lien application : http ://www.tcpdump.org/release/tcpdump-4.1.1.tar.gz

La ligne de commande permet egalement de lancer son installation :

sudo apt-get install tcpdump

Cet outil a ete teste en profondeur dans la suite du rapport. Un bilan sera alorseffectue a ce moment-la.

14

3.2.3 WINDUMP

Windump est l’equivalent de tcpdump sur Windows. Avant toute installationde windump, il est necessaire d’installer WinPcap en premier :

http ://www.winpcap.org/install/bin/WinPcap 4 1 2.exe

Pour d’amples informations et pour se procurer le logiciel :

WINDUMP 3.9.5 :

Site application : http ://www.winpcap.org/windump/install/

Lien application :http ://www.winpcap.org/windump/install/bin/windump 3 9 5/WinDump.exeComme nous avions teste les autres outils sous Linux, nous avons privilegie

l’utilisation de TCPDUMP.

3.2.4 NGREP

Ngrep est un outil de surveillance de paquets reseau qui permet entre autres derecuperer facilement les mots de passe en connexion TCP. Il permet de filtrer tresfacilement du trafic grace a l’integration des fonctionnalites de grep et des filtresBPF.

NGREP n’est pas facile d’utilisation pour le traitement des paquets et a doncete mis de cote.

3.2.5 SNORT

Snort est un systeme de detection d’intrusion libre pour le reseau (ou NIDS) pu-blie sous licence GNU GPL. Snort est capable d’effectuer en temps reel des analysesde trafic. Il peut egalement etre utilise pour detecter une grande variete d’attaques.

Snort n’etant pas facile a prendre en main, nous n’avons pas poursuivi nos re-cherches sur ce systeme.

3.2.6 NTOP

NTop pour Network TOP est un outil de supervision de reseau. Cet outil permetde capturer et d’analyser les trames d’une interface donnee. Il est ainsi possible derecuperer de nombreuses informations concernant les caracteristiques du trafic.

Cette application est disponible sous Unix et sous Windows.Cet outil ne permet que la capture et l’analyse de trames mais pas la modification

ou creation de paquets.

15

3.2.7 TCPDUMP et la dissection de paquets

Finalement, TCDUMP etant le plus en adequation avec notre projet pour recupererles paquets, notamment grace aux nombreux filtres qu’il possede, nous allons le voirplus en details dans cette partie. Nous allons donc aborder la notion de dissectiondes paquets pour mieux comprendre le decoupage des paquets.

On commence par la recuperation des paquets, parmi les nombreux filtres offertspar TCPDUMP on retiendra ceux-ci :

– Affichage standard :tcpdump

– Interfaces reseaux disponibles pour la capture :tcpdump -D

– Capture du trafic d’une interface particuliere :tcpdump -i eth0

– Affichage des adresses numeriques :tcpdump -n

– Capture du trafic UDP :tcpdump udp

– Envoi du resultat dans un fichier (au lieu d’un affichage direct a l’ecran) :tcpdump -w capture.log

– Arret de la capture apres 10 paquetstcpdump -c 10

– Traduit la charge utile de caracteres hexadecimaux en caracteres ASCIItcpdump -X

Cet outil nous permet par exemple de connaıtre l’entete de certains protocolesdont IP.

Figure 3.1 – Datagramme IP

La figure 3.1 montre la structure du datagramme IP comportant :– Version (4 bits) : indique le numero de version pour le datagramme IP (4 ou

6).– IHL (4bits) : Header Length, taille de l’entete avec les options.– Type of Service : champs type de service pour IP.

16

– Total lenght : taille des donnees du datagramme (16 bits).– identification : identifiant de datagramme, utilise pour la fragmentation.– Flags (3 bits) : drapeaux binaires pour la fragmentation (dont bits DF et MF).– Fragment Offset : offset du datagramme courant dans le datagramme frag-

mente.– Time to live : nombre de sauts maximum sur la route.– Protocol : protocole contenu dans les donnees IP.– Header checksum : somme de controle effectuee sur l’entete.– Source address : Adresse IP source.– Destination address : Adresse IP destination.

Cependant, aucune recherche nous a permis de trouver que TCPDUMP pou-vait modifier les paquets qui transitaient sur le reseau. TCPDUMP est donc biendefini comme un logiciel permettant uniquement de visualiser en temps reel le traficreseau avec (ou sans) le contenu des paquets. Toutes les recherches renvoient versl’utilisation de SCAPY que nous verrons dans la prochaine section.

3.2.8 SCAPY

Description

SCAPY est un logiciel libre de manipulation de paquets reseau, ecrit en Pythonpar Philippe Biondi. Le logiciel est en mesure d’intercepter le trafic sur un segmentreseau, de generer des paquets dans un nombre important de protocoles. Cet uti-litaire permet de manipuler, forger, decoder, emettre, recevoir les paquets d’unemultitude de protocoles (ARP, DHCP, DNS, ICMP, IP. . . ). Certes, il decode maisn’interprete pas car selon son concepteur, il est en mesure de remplacer les logicielstcpdump, ethereal. . . Il permet egalement d’executer des taches specifiques que laplupart des autres outils ne sont pas capables de traiter, comme envoyer des tramesinvalides, injecter ses propres trames 802.11. De plus, SCAPY permet d’etablir lespaquets que l’on souhaite : l’empilement des couches reseaux des plus basses auxplus elevees. Il propose un � Domain Specific Language � (DSL) permettant unerapide et puissante description pour tous types de paquet. L’utilisateur est en me-sure de decrire un paquet ou un ensemble de paquets pour les differentes couches.Les champs de chaque couche ont des valeurs utiles par defaut.

En langage C, il faut environ une soixantaine de lignes pour decrire un paquet.L’un des avantages majeurs de SCAPY est le fait que ces paquets a envoyer peuventetre decrits en une seule ligne, en ajoutant une seconde ligne pour afficher le resultat.

Ce logiciel nous a egalement permis d’apprendre les notions principales du lan-gage Python pour effectuer des tests sur le reseau.

Utilisation

Pour son utilisation, on retrouve ces commandes :– creation d’une session pour y revenir plus tard :sudo scapy -s sessionTest

– liste les protocoles supportes par Scapyls()

– obtenir des details sur ”send”

17

help(send)

– detail d’un protocolels(nomProtocole)

Capture de donnees, ecoute sur l’ensemble du trafic equivalent au protocole de trans-port UDP et cela, pour la machine dont l’adresse IP est 192.168.0.2 avec un maxi-mum de 30 paquets collectes (count). :

sniff(filter="udp and host 192.168.0.2",count=30)

Resultats relatifs a la capture en affectant les enregistrements a la variable capvia la variable .

cap=_

Pour voir les enregistrements :

cap.nsummary()

cap[0] : info sur le paquet 0

Affichage direct dans la console :

sniff(iface="wlan1", prn= lambda x : x.summary(), count=30)

Il est egalement possible de faire des traceroutes. On envoie le paquet et on acceptede ne recevoir qu’un seul paquet en reponse avec la commande sr1().Exemple :

sr1(IP(dst=’192.168.0.1’)/ICMP())

Envoi de plusieurs paquets :

srloop(IP(dst=’192.168.0.1’)/ICMP())

Si adresse non existante : ErreurApres avoir teste de nombreux outils, Scapy est sans conteste le logiciel le plus

pratique a prendre en main et le plus abouti. En effet il permet entre-autres deforger, de sniffer et d’envoyer des paquets. Il est egalement multiplateforme. Le seulbemol est le manque d’informations sur cet outil.

3.3 Bilan sur l’etude

Apres avoir teste les principaux outils d’attaque, nous sommes en mesure d’ef-fectuer un bilan. Dans le cadre de tests sur un vrai reseau, le logiciel le plus aboutiest Scapy. En effet pour pouvoir mener a bien des tests, il est necessaire de recupererles paquets transitant sur le reseau, de traiter le contenu et de les reinserer dans lereseau. Le traitement des paquets avec des logiciels ayant une interface graphique(comme Wireshark) n’est pas efficace et rapide. Concernant les outils d’attaques enligne de commande, notre choix s’est dans un premier temps porte sur TCPDUMPqui semblait le plus adapte dans le cadre du projet. En effet, TCPDUMP possede denombreux filtres qui permettent de selectionner les paquets qui nous interessent avecprecision. Apres avoir etudie en details son fonctionnement, nous avons decouvert

18

que TCPDUMP ne permettait pas d’etablir ses propres paquets et surtout emettreles paquets. L’outil Scapy, quant a lui, nous a semble le logiciel le plus en adequationavec notre sujet car il permet de recevoir, de creer, de manipuler et d’envoyer despaquets reseau. Le fait d’avoir eu de nombreux problemes au niveau du proxy al’universite (ping impossible en Wifi) et quelques manques d’informations precisessur l’outil SCAPY ne nous a pas permis de l’utiliser pour la suite du projet. Pourresoudre ce probleme, nous avons decide de passer a un autre mode de fonctionne-ment qui permet sur un reseau filaire de mettre en place une infrastructure de testde protocoles pour des attaques de type man-in-the-middle. Nous allons voir cetteinfrastructure de tests dans la partie suivante.

19

Chapitre 4

Le protocole Needham SchroederPublic Key

La derniere partie de notre projet consiste a concretiser la generation de test surles suites de messages qu’un intrus envoie et recoit (ou intercepte) sur le reseau. Laphase recherche d’implementation de protocole ainsi que l’etude de leur testabilitenous ont amenes a nous focaliser sur le protocole Needham Schroeder Public Key,egalement connu par son acronyme NSPK. Faute de ne pas avoir trouve d’autresimplementations d’autres protocoles, celui-la fera donc l’objet de notre etude. Deplus il a ete considere comme sur pendant de nombreuses annees avant que Lowemontre une attaque qui sera expliquee plus en details dans cette partie.

4.1 Implementation du protocole NSPK

Suite a nos recherches, une premiere implementation du protocole NSPK enJAVA est recuperable a cette adresse : http ://fluffymachappy.com/nspk.shtml

Parmi les fichiers sources, on y trouve :– Server.java qui permet de creer la socket serveur en attente de connexion d’un

client pour ensuite executer les methodes contenues dans la classe Server-Thread.java

– ServerThread.java qui sert a coder les envois et receptions de message de Bobet a generer les nonces et les cles publiques et privees d’Alice et Bob

– Client.java qui va se connecter au socket serveur de Server.java et sert a coderles envois et receptions de message d’Alice et a generer les nonces et les clespubliques et privees d’Alice et Bob

– Data.java les donnees qui seront contenues dans les messages envoyes et recuspar le client et le serveur. Ces donnees sont caracterisees par le type de donnees(String, byte[], BigInteger ou encore int), la taille des donnees et les donneesbrutes en elles-memes.

Pour comprendre les tests realises dans la prochaine partie, il est necessaire de sa-voir la facon dont les informations avaient ete codees. Nous avons garde l’implementationtelle qu’elle l’etait : les messages envoyes entre les participants sont une liste Array-List de Data. Pour le chiffrement et le dechiffrement, une methode de la classe Datapermet grace a un parametre de type Cipher de chiffrer ou dechiffrer la liste. Suivantla cle voulue, la creation d’une variable de type Cipher se fait avec un parametre

20

de type PublicKey ou PrivateKey. Ce sont ces deux objets qui nous permettent decreer les cles publiques et privees d’Alice et Bob.

Concernant les donnees, un nonce est type en BigInteger et l’identite est unechaıne de caracteres. Par exemple, la creation de l’identite d’Alice se fait de lamaniere suivante :

Data A = new Data("Alice");

Par le biais du constructeur, les attributs de la classe Data vont prendre auto-matiquement les valeurs suivantes :

A.typeData = 0

A.lengthData = 5

A.currentData = Alice

Le premier travail fourni concerne le refactoring, a chaque envoi de messages, oncree une methode et on attribue un numero d’etape suivant le schema suivant :

A : Alice ; B : Bob

ETAPE 1 : A → B : {NA,A}KB

ETAPE 2 : B → A : {NA,NB,B}KA

ETAPE 3 : A → B : {NB}KB

Le schema precedent montre uniquement les envois de messages. Or dans notreimplementation en JAVA, il est important de rajouter une etape qui permette a lapersonne qui recoit le message, de le dechiffrer et de realiser ses tests sur les donnees.On etend donc le schema precedent au schema suivant :

A : Alice ; B : Bob

ETAPE 1.1 : A → B : {NA,A}KB

ETAPE 1.2 : B recoit et dechiffre {NA,A}KB

ETAPE 2.1 : B → A : {NA,NB,B}KA

ETAPE 2.2 : A recoit et dechiffre {NA,NB,B}KA

ETAPE 3.1 : A → B : {NB}KB

ETAPE 3.2 : B recoit et dechiffre {NB}KB

4.2 Codage de l’environnement pour le modele

d’intrus de Dolev-Yao

Avant de jouer des attaques il a ete necessaire de coder un intrus. Nous avonsdonc insere dans ce modele un troisieme participant : Igor qui va etre l’intrus deDolev-Yao. On code Igor pour qu’il ait un role ”passif”, il ne fait qu’ecouter les mes-sages. En effet, il est capable d’intercepter, memoriser et envoyer les messages sousn’importe quelle fausse identite. Ainsi, dans ce modele, toutes les communicationsentre les acteurs sont transmises sans modification par un environnement hostile,represente par l’intrus :

21

A : Alice ; B : Bob ; I : IgorNA, NB, NI les nonces d’Alice, de Bob et d’IgorKA, KB, KI les cles publiques d’Alice, Bob et IgorLe terme X(Y) signifie que l’intrus ou la donnee X joue le role de

l’agent ou la donnee Y.

ETAPE 1.1 : A → I(B) : {NA,A}KB

ETAPE 1.1.1 : I recoit {NA,A}KB

ETAPE 1.1.2 : I(A) → B : {NA,A}KB

ETAPE 1.2 : B dechiffre {NA,A}KB avec sa cle privee

ETAPE 2.1 : B → I(A) : {NA,NB,B}KA

ETAPE 2.1.1 : I recoit {NA,NB,B}KA

ETAPE 2.1.2 : I(B) → A : {NA,NB,B}KA

ETAPE 2.2 : A dechiffre {NA,NB,B}KA avec sa cle privee

ETAPE 3.1 : A → I(B) : {NB}KB

ETAPE 3.1.1 : I recoit {NB}KB

ETAPE 3.1.2 : I(A) → B : {NB}KB

ETAPE 3.2 : B dechiffre {NB}KB avec sa cle privee

Le protocole NSPK realise est la version du protocole corrige, celle abordee dansla partie 2.3 du rapport. Pour rappel, la modification est l’ajout de l’identite de Bobdans le message contenu dans l’etape 2.1. La communication se fait donc entre Alice,Bob et Igor n’est qu’un intrus qui sait qu’Alice veut communiquer avec Bob, il neconnaıt donc aucune cle publique. Igor ne fait que transiter les messages (etapes enrouge), le resultat montre ainsi qu’Alice et Bob recoivent bien les messages attendusalors qu’Igor a les messages mais chiffres.

Pour l’execution du programme, a chaque message recu ou envoye, on affiche al’ecran les messages de la maniere suivante :

ETAPE X.X :

Type de donnees :

Longueur des donnees :

Donnees :

22

Figure 4.1 – Execution d’Alice Figure 4.2 – Execution de Bob

Figure 4.3 – Execution d’Igor

Dans la figure 4.1, Alice demarre le protocole en envoyant dans l’etape 1.1 sonnonce et son identite. La figure 4.3 montre l’interception du message par Igor. L’etape1.1.1 est la lecture du message recu qu’il ne peut pas dechiffrer et l’etape 1.1.2 estle message qu’il envoie (le meme qu’il a recu). Nous ne nous attarderons pas plussur les actions d’Igor car tout au long du protocole Igor intercepte et renvoie lemessage recu de la meme maniere. On voit ensuite dans la figure 4.2 lors de l’etape1.2 l’affichage du message dechiffre par Bob et qu’il obtient bien les memes donneesque celles qu’Alice a envoye. L’etape 2.1 consiste a renvoyer le nonce NA d’Alice,de rajouter son nonce NB et son identite. Tant qu’Igor ne modifie aucun message,l’execution du programme montre que les etapes s’enchaınent correctement.

23

4.3 L’execution des tests

L’execution des tests s’effectuent sur l’attaque de Lowe que l’on a vu dans lapartie 2.3. Nous nous proposons d’etendre l’environnement du modele de Dolev-Yaode telle sorte a simuler l’attaque de Lowe. Supposons qu’Alice veut initier une sessionavec Igor, Igor en profite pour jouer l’attaque sur Bob, les etapes correspondantessont :

A : Alice ; B : Bob ; I : IgorNA, NB, NI les nonces d’Alice, de Bob et d’IgorKA, KB, KI les cles publiques d’Alice, Bob et IgorLe terme X(Y) signifie que l’intrus ou la donnee X joue le role de

l’agent ou la donnee Y.

ETAPE 1.1 : A → I : {NA,A}KI

Alice envoie donc un message a Igor contenant son nonce et son identite chiffreavec la cle publique KI de Igor.

ETAPE 1.1.1 : I recoit et dechiffre {NA,A}KI

ETAPE 1.1.2 : I(A) → B : {NA,A}KB

Au lieu de repondre a Alice, Igor dechiffre le message avec sa cle privee et chiffrele message avec la cle publique KB de Bob pour l’envoyer a Bob.

ETAPE 1.2 : B recoit et dechiffre {NA,A}KB

ETAPE 2.1 : B → I(A) : {NA,NB,B}KA

Bob receptionne le message et pense qu’Alice veut initier une session avec lui,alors il suit le protocole en renvoyant le nonce d’Alice NA, son nonce NB et sonidentite B, le tout chiffre avec la cle publique NA d’Alice.

ETAPE 2.1.1 : I recoit {NA,NB,B}KA

ETAPE 2.1.2 : I → A : {NA,NB(NI),B}KA

Ce message est chiffre avec KA, or Igor ne possede pas la cle privee d’Alice,malgre l’interception du message il ne pourra rien en faire donc envoie une copieconforme de ce message a Alice.

ETAPE 2.2 : A : {NA,NB(NI),I}ETAPE 3.1 : A → I : {NB(NI)}KI

Alice confond donc NB avec NI , suit le protocole en renvoyant NB a Igor (puis-qu’Alice est authentifie avec Igor).

ETAPE 3.1.1 : I recoit et dechiffre {NB}KI

ETAPE 3.1.2 : I(A) → B : {NB}KB

Igor recoit NB chiffre avec KI alors il peut dechiffrer le message sans problemeet deduire NB. Pour que le protocole finit correctement, Igor envoie NB chiffre avecKB a Bob.

ETAPE 3.2 : B : {NB}KB

Au final, Alice s’est authentifiee avec Igor, Igor connaıt le nonce NB sans queBob ne le sache car Bob croit avoir initie une session avec Alice.

24

Igor est un participant de la session avec Alice vu qu’elle demarre une sessionavec lui. Il sait donc comment former un message alors il n’y a aucun test sur lastructure des messages. Le seul test que l’on a mis en place est celui qui permet demettre en valeur l’intrusion d’Igor et a lieu lors de l’etape 2.2 quand Alice recoit{NA,NB,I}. Ce message n’a pas pu etre edite par Igor car il a ete chiffre avec la clepublique KA. Nous allons donc jouer nos tests sur ce message, particulierement avecla donnee I. Si le protocole s’etait correctement deroule, Alice devrait decouvrir quela valeur I est egale a l’identite d’Igor or c’est l’identite de Bob qu’elle va trouver. Lesfigures 4.4 et 4.5 montrent l’execution du programme d’Alice selon les tests qu’Alicefait ou non.

Figure 4.4 – Test sur les donnees Figure 4.5 – Aucun test sur les donnees

Dans la figure 4.4, Alice verifie la donnee I de {NA,NB,I}. Elle decouvre que lavaleur attendue n’est pas ”Igor” mais ”Bob”, elle ne continue plus l’acheminementdes messages. On voit dans la figure 4.5 que le protocole finit bien si la verificationde l’identite n’est pas faite.

Ce test montre avec evidence que l’attaque de Lowe a une faille dans le cas ouAlice fait un test sur l’identite d’Igor. Dans le cas contraire, le protocole se deroulenormalement jusqu’a la fin.

Pour une visualisation du test dans le code, la figure 4.6 montre comment l’etape2.2 est codee avec la verification sur l’identite d’Igor.

25

Figure 4.6 – Tests d’Alice sur les donneees

26

Chapitre 5

Conclusion

5.1 Bilan du projet

La premiere etape consistait a faire un travail de recherche sur les techniqueset outils d’attaques sur des canaux de communication non securises. Nous avonsmene a bien cette partie en testant chaque outil trouve en faisant un bilan de notreavancement a chaque reunion. L’etude de nombreux outils nous a ainsi permis detrouver le logiciel qui etait le plus en adequation avec notre projet. Comme nousl’avons vu precedemment, pour des raisons techniques nous avons mis de cote Scapypour passer a la partie de developpement de ce projet en mettant en place uneinfrastructure de tests en local.

Alors que des cas de tests ont ete calcules a partir d’un modele du protocole decritdans un langage dedie nomme HLPSL, ils restaient au niveau abstrait. Malgre unlong moment passe a la recherche d’implementation de protocoles, la seule qui etaitexploitable etait une implementation du NSPK initialement developpee en JAVA.Nous avons donc reussi a concretiser quelques tests sur celle-ci. L’attaque realisee estl’attaque de Lowe, dans laquelle les echanges sont representes sous la forme de suitede messages entre deux participants Alice et Bob, et l’interception de ces messagespar un intrus Igor. Les cas de tests se jouent directement dans le code de l’un desparticipants (Alice dans notre cas), nous avons ainsi pu jouer avec les verificationssur les donnees pour influencer sur le deroulement du protocole.

5.2 Bilan personnel

Concernant le travail en binome, meme si nous avions deja effectue un projet enMaster 1 ensemble, ce projet nous a permis de developper nos capacites d’ecoute etd’organisation. En effet, nous nous sommes partages les taches a effectuer (surtoutsur le travail de recherche), pour pouvoir avancer plus vite et pour ne pas developperla meme partie. Nous nous sommes rencontres a differents moments du projet pourpouvoir d’une part, mettre en commun les sources et d’autre part, effectuer des testsen commun. Ce projet nous a egalement permis de travailler sur un sujet assez peudeveloppe dans le cadre de la formation et d’avoir une derniere vision de la gestionde projet en groupe avant de partir en stage en entreprise.

Ce sujet nous a permis de mieux assimiler les notions vues en Licence 3 dans lecadre du module Securite et cette mise en pratique avec une phase de recherche suiviede developpement est un vrai plus pour notre emploi futur. Quant au developpement,

27

il nous a permis d’une part, de renforcer nos acquis en JAVA, d’autre part de revoirles notions sur les systemes client-serveur, particulierement les sockets et les threads.

5.3 Perspectives

Bien que le cahier des charges ait ete respecte, il est possible de continuer ledeveloppement de nouveaux cas de tests (par exemple sur la mutation des messages).Il est egalement possible de continuer les recherches sur SCAPY pour la recuperationdes paquets qui transitent entre les participants de l’application trouvee.

28

Netographie

Cours protocoles cryptographiques : http ://www.lsv.ens-cachan.fr/Projects/anr-dots/20080605/PDF/JM-20080605.pdf

Wikipedia Cryptographie : http ://fr.wikipedia.org/wiki/Cryptographie

Cours cryptographie : http ://www.hsc.fr/ressources/cours/crypto/crypto.pdf

Site officiel Ettercap : http ://ettercap.sourceforge.net/

Documentation officielle de Wireshark : http ://www.wireshark.org/docs/

Wiki Whireshark : http ://wiki.wireshark.org/

Explications Whireshark : http ://blog.nicolargo.com/2007/07/tutoriel-wireshark-ex-ethereal.html

Site officiel Aircrack-ng : http ://www.aircrack-ng.org/

Site officiel TCPDump : http ://www.tcpdump.org/

Tutoriel TCPDump : http ://blog.nicolargo.com/2007/02/tutorial-tcpdump.html

Site officiel WinDump : http ://www.winpcap.org/windump/

Site officiel Scapy : http ://www.secdev.org/projects/scapy/

Tutoriel Scapy : http ://www.lestutosdenico.com/tutos-de-nico/scapySources NSPK : http ://fluffymachappy.com/nspk.shtml

29

Bibliographie

[1] Stephen Northcutt, Judy Novak, Detection d’intrusion de reseau, Vuibert, 3e

edition, 2004.

Cours de Licence 3 : Securite informatique et modelisation de Pierre-Cyril Heamet Olga Kouchnarenko

Cours de Specification, Verification et Test de Frederic Dadeau.

30

Table des figures

2.1 Schema representant la cryptologie . . . . . . . . . . . . . . . . . . . 7

3.1 Datagramme IP . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

4.1 Execution d’Alice . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.2 Execution de Bob . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.3 Execution d’Igor . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234.4 Test sur les donnees . . . . . . . . . . . . . . . . . . . . . . . . . . . . 254.5 Aucun test sur les donnees . . . . . . . . . . . . . . . . . . . . . . . . 254.6 Tests d’Alice sur les donneees . . . . . . . . . . . . . . . . . . . . . . 26

31

Resume

Test d’implementations de protocoles cryptographiques

De nos jours avec le developpement des services sur Internet, de plus enplus de transactions sont effectuees. Pour eviter tout probleme au niveau desechanges de donnees, de nombreuses solutions ont ete mises en places. Cepen-dant, des failles sont presentes dans ces solutions et peuvent par consequentservir a un intrus. Il est primordial de verifier et de valider la surete au niveaudu code developpe. Cependant de nouvelles failles sont trouvees regulierement,meme sur des protocoles connus et developpes depuis de longue date. Il est parconsequent necessaire de faire des tests sur ces protocoles, ce qui est l’objetde notre etude.

Ce projet tutore finit notre Master 2 avant de partir en stage. Une par-tie de ce projet a ete consacree a des recherches sur des techniques et desoutils d’attaques sur des canaux communications non securises. Apres avoirtrouve une implementation de protocoles, nous avons pu passer a la phase dedeveloppement et de tests a coder.

Mots cles : tests, outils d’attaque, wifi, protocoles, cryptographie, NSPK

Abstract

Test of implementations of cryptographic protocols

Today, the development of services on the Internet is important, more andmore transactions are made. To avoid problems in data flows, many solutionsexits. However, security breach can’t be deny in these solutions and moreover,it can be used by intruders. It is really important to check and validate thesafety of the code developed. However, new security breach are regulary found,even on protocols known and developed long ago. It is necessary to test theseprotocols, that is why, we chose it as the subject of our study.

This project ends our second year of my Master Degree before going oninternship. A part of this project was to focus on research of techniques andtools for attacks on non-secure communications channels. After finding animplementation of protocols, we went on stage 2 of the project which was thecoding of the development and the test of these protocols.

Keywords : tests, attack tools, wifi, protocols, cryptography, NSPK