TP Réseaux et Sécurité des Données Sébastien Gambs et Nicolas Prigent 21 octobre 2011 Ce TP vous permettra de mettre en pratique certains des aspects des cours Réseaux et Sécurité des Données. Les manipulations auront lieu sous Linux. Plus précisément, nous utiliserons plusieurs outils en ligne de commande et un navigateur Internet. N oubliez pas que vous pouvez à chaque instant demander des informations sur une commande du terminal en tapant man commande. N oubliez pas non plus que vous pouvez aussi utiliser l Internet et particulièrement wikipedia tout au long de ce TP pour obtenir des informations complémentaires. 1 Découverte de la configuration réseau Nous allons commencer par observer la configuration réseau sur notre machine locale en utilisant la commande ifconfig (pour InterFace CONFIGurator). Ouvrez un terminal, et tapez cette commande. Observez ce qui s affiche. En vous basant sur ce que vous avez vu en cours, qu apprenez-vous? Nous allons maintenant nous intéresser à la table de routage de la machine locale. Pour ce faire, utilisez la commande route. Quelles sont les informations qui s affichent? Que signifient-elles? Que pouvez-vous en déduire? 2 Utilisation d outils réseaux Après avoir observé la machine locale, nous allons nous intéresser à sa connexion à l Internet, et à sa possibilité d atteindre les serveurs de Google. Pour cela, nous allons utiliser la commande ping. Cette commande permet d utiliser le protocole Internet Control Management Protocol (ICMP) qui est un protocole de même niveau que UDP et TCP et fonctionne donc au dessus d IP. La commande ping machine envoie un message ICMP Echo à machine. Cette machine est alors supposée retourner un message ICMP Echo reply. La commande ping va notamment mesurer le temps mis par la communication pour faire l aller-retour 1, le ttl du paquet reçu, etc. Essayez maintenant de pinguer www.google.com et observez les résultats. Vous pouvez aussi tester la commande ping sur d autres machines et comparer les résultats. 1 Cette donnée est souvent abrégée RTT pour Round-Trip Time. 1
Comme nous pouvons le constater, la commande ping a transformé d elle même les noms d hôtes en adresse IP. L outil nslookup permet d interroger les DNS en ligne de commande. Essayez d obtenir les adresses IP des sîtes www.google.com et www.nicolas-prigent.net. Quelles différences apparaissent? En sachant que l un de ces deux domaine appartient à une multinationale qui utilise en fait de nombreux serveurs pour répondre à vos requêtes sur l Internet, que pouvez vous déduire de ces réponses? Nous avons vu en cours que nos paquets traversent plusieurs routeurs avant d atteindre leur destination. La commande traceroute permet d obtenir la liste des routeurs présents sur la route entre la source (c est à dire notre machine) et la destination. Pour ce faire, traceroute se base sur le ttl des paquets IP. Rappelons que lorsque le ttl d un paquet atteint 0, le routeur drop ce paquet. Il est alors censé prévenir la source de ce fait en envoyant un message ICMP Exceeded 2. Essayez de trouver la route vers www.nicolas-prigent.net, et vers d autres serveurs de votre choix. Que constatez vous? 3 Un logiciel de chat très simple en netcat netcat est un outil qui réalise les même fonctions que l outil Unix cat, mais sur le réseau. Il est ainsi possible de lire et d écrire dans un socket, de rediriger les informations venant du réseau dans un fichier, d envoyer les informations d un fichier via le réseau, etc. Nous allons commencer par utiliser netcat localement. Autrement dit, nous allons lancer deux fois netcat sur la même machine, une fois en mode serveur, et une fois en mode client. Ouvrez deux terminaux. En vous basant sur les informations fournies par man netcat 3, lancez dans une des fenêtre netcat en mode serveur sur un port de votre choix. Ensuite, lancez netcat en mode client dans l autre fenêtre en lui demandant de se connecter au même port. Comme adresse IP, vous pouvez utiliser soit l adresse que ifconfig vous a retournée, soit le nom de machine localhost 4, soit l adresse 127.0.0.1 5. Lorsque la connexion réussira, vous noterez que le texte que vous tapez dans une des fenêtre est envoyé par le réseau (même si c est ici une communication locale) et s affiche dans l autre fenêtre. Ceci fait, choisissez un binôme sur une autre machine et établissez un canal de chat entre vos deux machines. Ensuite, fabriquez un logiciel très simple de transfert de fichier en utilisant netcat et les redirection de fichier Unix (avec < et >). 2 Ces messages ne sont parfois pas envoyés pour éviter des attaques ou préserver la confidentialité de l architecture réseau. Ils peuvent aussi être filtrés par certains routeurs. Si trois étoiles apparaissent sur la ligne, cela signifie que les messages ICMP Exceeded n ont pas été émis ou ont été filtrés. Dans tous les cas, l expérience ne fonctionne pas, c est ainsi. 3 Notez que sur certains systèmes tels Mac OS X, netcat s appèle nc. 4 localhost est, par convention, le nom de la machine locale, quelle que soit cette machine. 5 Dans le standard IP, 127.0.0.1 est l adresse de la machine locale, quelle que soit sa ou ses autres adresses IP. 2
4 Communiquer avec un serveur web à l aide de netcat Nous avons vu en cours que le protocolehttp fonctionne en mode texte. Nous allons donc utiliser netcat pour communiquer avec le serveur http://www.nicolas-prigent.net. En vous souvenant qu un serveur http écoute sur le port80 et en vous servant des informations de la page wikipedia http://fr.wikipedia.org/wiki/hypertext_transfer_protocol, essayez de communiquer avec le serveur. Tentez de récupérer quelques pages, et éventuellement quelques fichiers. Essayez aussi de récupérer une page qui n existe pas et observez la réaction du serveur. 5 Cryptographie Dans cette question, nous allons réaliser quelques opérations cryptographiques avec l outil openssl ainsi qu un petit programme xor qui réalise un xor sur deux fichiers passés en paramètres. Commencez par compiler le programme xor.c : gcc xor.c -o xor 5.1 La commande openssl La commande openssl peut être utilisée de deux manières : Soit de manière interactive comme un interpréteur de commande, en lançant simplement la commande openssl sans argument. On bénéficie alors d un prompt auquel on peut passer des commandes. L ensemble des commandes disponibles peut-être affiché via la commande help. Soit de manière non-interactive en passant directement une commande en paramètre à openssl accompagnée des arguments sur lesquels elle s applique. Commencez par consulter la page de manuel afin de découvrir les diverses commandes disponibles. 5.2 Scénario Vous appartenez à une agence de renseignement, et vous venez de recevoir une des instructions dans le fichier chiffré mission.txt.enc. 5.3 Fonctions de hachage Commencez par vérifier que le fichier est intègre. Pour cela, vérifiez grâce à openssl que son résumé cryptographique SHA-1 vaut bien la valeur qui vous a par ailleurs été transmise par un autre canal sécurisé (c est à dire sur le tableau de la salle de TP). 5.4 Chiffrements symétrique Le fichier étant intègre, vous pouvez maintenant le déchiffrer. Il a été chiffré avec la clé ch0c0l47 en utilisant le chiffrement AES sur 128 bits en mode CBC. 3
Le contenu de ce document vous donnera les instructions à suivre pour la suite de ce BE. Poursuivez tout de même la lecture du sujet pour avoir quelques informations supplémentaires sur les outils à votre disposition. 5.5 Attaque de RC4 non diversifié par clair connu Pour vous aider dans votre mission, vous avez à votre disposition le programme xor qui prend en paramètres les deux fichiers qu il faut XORer et sort le résultat sur la sortie standard. Pensez éventuellement à rediriger la sortie standard vers un fichier grâce à l opérateur >. 6 Où êtes vous localisé? L adresse IP de votre machine peut servir à tracer vos intérêts sur Internet (par exemple en les inférant à partir des sites web que vous consultez) mais elle permet aussi de déduire d autres informations comme par exemple votre localisation. Afin de vous en convaincre, essayez de vous connecter au site web qui permet à partir de l adresse IP d une machine d en déduire sa localisation : http://www.geobytes.com/iplocator.htm?getlocation Afin de cacher votre adresse IP (et donc votre localisation), une des solutions les plus simples est de passer par un proxy qui joue le rôle d intermédiaire et fait les requêtes à votre place. Essayez par exemple de vous connecter sur un anonymisateur (tel que Scroogle) et retenter de vous connecter sur le service IpLocator. Quelle est la localisation retournée par ce service? 7 Aggrégateur de données Un aggrégateur de données est un service qui collecte en un seul endroit toutes les traces numériques disponibles reliées à un individu et permet de les visualiser. Ces traces peuvent être aussi bien les documents, les sites webs, les blogs ou les images où le nom de cette personne apparaît que leur adresse physique ou courriel, leur compte sur des réseaux sociaux ou encore un nuage de tags résumant leur intérêts. Ce type d outil est souvent utilisé lors d un recrutement pour vérifier le profil digital d un potentiel employé mais peut aussi servir pour un individu à faire de la veille sur ses propres traces. Afin de vous en convaincre, essayer par exemple l aggrégateur de données 123people pour vous en convaincre. À votre avis, est ce légal de collecter ce type de données? Si jamais vous trouver une trace liée à votre identité qui ne vous plaît pas, quelles sont les solutions disponibles pour effacer cette trace? (Exercice supplémentaire: voir sur le site de la CNIL pour un petit jeu montrant les traces numériques montrant les traces laissées par un individu.) 8 Sécurisation d une porte de garage Supposons que je souhaite créer un système qui me permet d ouvrir mon garage à distance sans sortir de ma voiture en utilisant une télécommande. En partic- 4
ulier, je veux éviter qu un potentiel cambrioleur puisse utiliser ce système pour s introduire chez moi. Comment faire? Est ce que si je chiffre les communications entre ma télecommande et ma porte cela règle le problème? Est ce que l authentification suffirait? Aussi comment éviter les risques de rejeu? 9 Utiliser le paradoxe de l anniversaire pour trouver une collision Expérience 1 : Quelle est la probabilité dans une classe de 23 étudiants qu ils y aient deux qui soient nés le même jour? Expérience 2 : Supposons qu il y ait n boules dans une urne avec des étiquettes différentes. Question : combien de fois est ce que je dois piocher au hasard en moyenne dans l urne pour espérer tomber deux fois sur la même boule si à chaque fois que je pioche une boule, je la remets ensuite dans l urne? Réponse (paradoxe de l anniversaire): environ n de fois en moyenne pour avoir une probabilité de succès d au moins 1 2. Revenons au scénario de la classe d étudiants. Soit une année qui compte 365 jours (on ne s occupe pas des années bissextiles). Parmi n individus (on suppose n < 365), on veut savoir s il existe au moins une paire d individus qui ont le même anniversaire, soit p(n) la probabilité de cet événement. Soit p(n), la probabilité que n individus aient des dates d anniversaire différentes. p(n) = 1 (1 1 365 ) (1 2 n 1 365 )... (1 365 ) = 365! 365 n (365 n)!, p(n) = 1 p(n), dès que n 23 p(n) > 50% (et même 99% si n 57). (Extrait de wikipedia) Algorithme pour générer une collision pour une fonction de hachage : i 0, x j choisi au hasard dans le domaine de h, Rencontre {} Répéter Rencontre Rencontre+(x j,h(x j )) i i+1, x j choisi au hasard dans le domaine de h Tant que(x j,h(x j )) Rencontre ouh(x j ) n apparaît pas dansrencontre Retourner (x i,x j ) tel que x i x j et (x j,h(z j )) Rencontre Question: combien de tours de boucle (c est-à-dire de temps) faut t il à l algorithme en moyenne avant de trouver une collision à la fonction de hachage h si le nombre de bits de sortie de la fonction est de k bits? 5